Что произойдет, если ваш биткойн-клиент создает адрес, идентичный другому человеку?

Вот сценарий «что-если»:

Лицо A имеет биткойн-адрес с 25BTC. Лицо B открывает свой клиент Bitcoin:

  • , который может иметь или не иметь целую цепочку (последний означает отсутствие копий транзакций Лица А).

Лицо B нажимает «Новый адрес», и каким-то образом создается какой-то адрес Person A. Теперь блок-цепочка завершает синхронизацию.

Что происходит? Возможно ли это, без удивительной невероятности? В конце концов, на формирование случайных чисел могут влиять.

53 голоса | спросил Austin Burk 17 FebruaryEurope/MoscowbSun, 17 Feb 2013 00:23:36 +0400000000amSun, 17 Feb 2013 00:23:36 +040013 2013, 00:23:36

5 ответов


31

Если это произойдет, то Person B сможет провести биткойны человека А. Однако это может произойти только двумя способами:

a) Лицо B генерирует ту же ключевую пару (закрытый ключ) как лицо A

или b) Лицо B генерирует другую пару ключей, которая (публичный ключ) хеширует на адрес человека А (хеш-столкновение)

Взгляните на спецификацию на адрес биткойна: https://en.bitcoin.it/wiki/Technical_background_of_Bitcoin_addresses

  

Биткойн-адрес - это 160-битный хэш общедоступной части   государственная /частная ключевая пара ECDSA

Чтобы «а» произошло, человеку B пришлось бы сломать «secp256k1». Я не эксперт в этой области, но из того, что я могу найти на bitcointalk.org , тогда «сила» этого составляет 2 ^ 128 бит. И если вам интересно, насколько это сильная сторона, то посмотрите видео «Исчерпывающие поисковые атаки» из Дэн Бонех . 11 минут в видеоролике он говорит: « все, что больше 2 ^ 90, считается достаточно безопасным » (его об атаке 3DES, который является симметричным блочным шифром, поэтому я не уверен, что он действительно применяется к secp256k1 , но у меня действительно нет лучшего аргумента в пользу того, почему 2 ^ 128 является « настолько безопасным, что вы никогда не будете когда-либо генерировать тот же ключ, что и кто-то еще »

И для того, чтобы «b» произошло, вам нужно будет найти столкновение на RIPEMD-160 (SHA-256 (pk)). Насколько я знаю, ни у RIPEMD-160, ни у SHA-256, как известно, нет никаких уязвимостей для атак с хеш-атаками. Таким образом, каким-то образом разрушая оба или случайное поколение, ключ, хэш которого точно совпадает с другим адресом биткойна, маловероятен.

Существует также шанс, что компьютер будет загореться, а некоторые из материалов, чтобы расплавиться вместе в лото-купон с выигрышными номерами (и действительным штрих-кодом), но этого просто не произойдет из-за шанса настолько невелик (он совпадает с кликом « и создает другой адрес биткойнов человека »).

EDIT Woops, одна важная вещь: все это предполагает, что все адреса биткойнов правильно генерируются с использованием «истинного случайного». Все мозговые адреса и адреса, сгенерированные с использованием плохого PRG, могут быть легко найдены либо с использованием недостатка в PRG, либо с использованием (недостатков) человеческого мозга.

ответил Nicolai 17 FebruaryEurope/MoscowbSun, 17 Feb 2013 03:55:29 +0400000000amSun, 17 Feb 2013 03:55:29 +040013 2013, 03:55:29
22

Так я его вижу. Общее количество биткойнов, которые когда-либо будут добыты, составляет 21 миллион. Самый маленький биткойн - сатоши (0,00000001 BTC). Если мы поместим все возможные сатоши в собственный кошелек, мы получим максимальное количество кошельков, которые могут иметь любой баланс для них (поэтому фактическое количество кошельков с биткойнами явно меньше). Это 21x10 ^ 6 (BTC) x 10 ^ 8 (сатоши /БТК) = 21 x10 ^ 14 кошельков. Это огромное количество, но затмевается 2 ^ 256 возможных кошельков. Таким образом, в этом худшем случае вероятность угадать кошелек с одним сатоши равна 21x10 ^ 14 /(2 ^ 256) = 1,813595x10 ^ -62. Невероятно маленькое число.

ответил user4805 3 Mayam13 2013, 06:48:10
1

Небольшое дополнение к существующим ответам:

Если B не загрузил достаточно блок-цепочки, чтобы увидеть транзакцию A, тогда ситуация будет такой, как описано выше. Когда блоки загружаются клиентом кошелька, транзакции в нем проверяются, чтобы узнать, отправляет ли кто-либо из них монеты на адреса, хранящиеся в этом кошельке. Если это так, эти монеты добавляются к балансу кошелька. Таким образом, B увидит, что в его кошельке появится еще 25 BTC. Как упоминалось в других ответах, он сможет тратить их так, как если бы они были его собственными. Итак, это гонка между А и В, чтобы увидеть, кто их проводит в первую очередь - и может это сделать.

Если B уже загрузил соответствующие транзакции перед созданием встречного адреса, ситуация немного отличается. Насколько я знаю, большинство клиентов Bitcoin при генерации нового случайного адреса не будут повторно проверять цепочку блоков, чтобы увидеть, содержит ли она какие-либо транзакции, отправляющие монеты на этот адрес. (Как описано выше, вероятность этого события бесконечно мала, поэтому для всех практических целей такое сканирование будет просто пустой тратой времени и ресурсов.) Поэтому, хотя у B теперь есть закрытый ключ, который может потратить биткойны, он будет не забудьте об этом, если /до тех пор, пока он вручную не запустит повторное сканирование цепочки блоков (например, с помощью опции -rescan Bitcoin Core)) или проверит его баланс адреса с помощью онлайн-блокатора или что-то в этом роде.

Конечно, за исключением ошибок RNG, этот вопрос похож на вопрос: «Если бы все 50 губернаторов штатов США были одновременно поражены молнией, как повлияет фондовый рынок?» Это основано на таком невероятном предположении, что абсурдно делать какие-либо выводы.

ответил Nate Eldredge 8 J000000Wednesday15 2015, 09:48:08
0

Я подозреваю, что простой ответ заключается в том, что Person B сможет потратить биткойны Person A, поскольку он будет отображаться в книге как владеющий ими. Не отличается от простого предоставления кому-то вашего кошелька.

ответил Karl 3 Maypm13 2013, 14:54:45
-7

Забавно, как люди, требующие знать о криптографии, не могут вычислять вероятности.

Адресное пространство 2 128 - это не вероятность или «сила» чего-либо (кроме вероятности выбора значения в адресном пространстве).

Вероятность того, что 2 человека, имеющих один и тот же адрес биткойна, на самом деле намного выше, чем люди могут подозревать (ошибочной) интуицией.

Фактически вероятность столкновения связана с вопросом рождения (читайте об этом) .

По мере увеличения количества людей и адресов вероятность столкновения возрастает близко к экспоненциальному.

Учитывая, что каждый миллион пользователей каждый генерирует новый адрес в месяц, вероятность столкновения такова, что это может происходить несколько раз за всю жизнь, тем более что мы имеем дело с хэшами (или хешами хэшей).

Сделайте это миллиардом пользователей, и у вас появятся регулярные истории о столкновениях.

ответил vishnuchips 17 FebruaryEurope/MoscowbSun, 17 Feb 2013 06:22:18 +0400000000amSun, 17 Feb 2013 06:22:18 +040013 2013, 06:22:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132