Можно ли взломать биткойн-адрес, чтобы украсть деньги?

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

Возможно ли (и выгодно) кому-то найти коллизии в адресном пространстве биткойна, чтобы украсть деньги?

Чтобы дать вам представление о задействованных числах: в цепочке блоков 1 921 075 различных адресов. Это менее 0,0000000000000000000000000000000000000001 % всех адресов, которые могут быть сгенерированы.
@Artefact2 Artefact2 Да, в настоящее время существует 2 миллиона разных адресов. Если мы хотим, чтобы Биткойн масштабировался до 7 миллиардов, 8 миллиардов, 9 миллиардов или 10 миллиардов человек, каждый из которых генерирует 10 тысяч разных адресов в день, это 100 триллионов адресов, создаваемых ежедневно.
@Pacerier Зачем каждому пользователю нужно 10 тысяч разных адресов в день?
@Murch, 10k может быть серьезной недооценкой . В любом случае, сейчас не лучшее время для ответа на этот вопрос, по той же причине 4 десятилетия назад было не лучшее время для ответа на вопрос «Почему у нас закончатся IP-адреса?».
@Pacerier: Это интересное заявление, но меня больше интересует, почему вы ожидаете, что это произойдет, чем то, какой может быть точная цифра в конце. ;) Я открыл для этого новый вопрос здесь: зачем нам вообще нужно 10 тысяч новых адресов в среднем в день?
Джеймс Д'Анджело создал видео, чтобы визуализировать величину пространства закрытых ключей Биткойн: Биткойн 101 - Quindecillions & The Amazing Math of Bitcoin's Private Keys
один парень сделал сайт, который генерирует случайные приватные ключи. Вы должны посетить bitcoindoubler.cf

Ответы (11)

Это может быть «теоретически» возможно, но в действительности это вряд ли будет достигнуто — как маловероятно подсчет количества атомов в офисном здании.

Биткойн-адреса на самом деле представляют собой 256-битный SHA - хэш открытого ключа ECDSA , поэтому любые уязвимости в этих алгоритмах представляют собой уязвимость в самом биткойне. Однако на самом деле для взлома этого уровня шифрования требуется огромная вычислительная мощность. По совпадению, для этого требуется точно такая же вычислительная мощность, как и для майнинга биткойнов, и почти в каждом сценарии майнить будет намного выгоднее, чем взламывать.

Редактировать: на самом деле это RIPEMD-160 (SHA-256 (открытый ключ)), а не просто SHA-256 (открытый ключ), как я упоминал изначально, поэтому это 160-битный хеш 256-битного хэша открытого ключа. Хотя целевое пространство ключей (160 бит) меньше благодаря этому последнему шагу, это также дополнительные вычисления, которые должен сделать потенциальный хакер. Хотя дополнительная вычислительная сложность даже близко не отменяет удаление 96-битного пространства ключей, следует отметить, что обнаружение коллизии в 160-битном пространстве ключей по-прежнему невероятно сложно и требует много времени. Что еще более важно, это сложнее и требует больше времени, чем добыча такого же количества монет.

Спецификация адреса находится по адресу en.bitcoin.it/wiki/Protocol_specification#Addresses , если кто-то захочет перепроверить мои правки :)
Дважды проверьте и опубликуйте то, что вы найдете, этот сайт лучше, чем вики, давайте размещать информацию здесь, а не там.
Проголосовали против, потому что такое использование «возможного» не похоже на то, что предположил бы любой читатель.
Изменил мое вступительное предложение, чтобы указать, что «возможно» подразумевается только в самом строгом научном смысле этого слова.
@DavidPerry Хэш открытого ключа RIPEMD не обеспечивает безопасность. Я бы обновил ваш ответ (не нужно оставлять абзац редактирования). Открытый ключ — это SHA256 закрытого ключа. Если злоумышленник скомпрометирует это, он может сгенерировать адрес (хэш RIPEMD) из открытого ключа тривиально, поскольку это был его собственный ключ.
@theUnhandledException Если бы мы пытались создать конфликт адресов, все шаги были бы необходимы, поскольку может быть несколько открытых ключей, которые будут RIPEMD в один и тот же адрес — если адрес является единственным битом данных, доступным злоумышленнику, RIPEMD- Хэш 160 был бы необходимым шагом, поскольку они не могут получить открытый ключ из адреса.
@ Дэвид Перри. RIPEMD имеет меньшее адресное пространство, чем открытый ключ (2^160 против 2^256). Для каждой попытки требуется немного больше времени (закрытый ключ -> общедоступный -> адрес) по сравнению с (закрытый -> общедоступный), но вероятность обнаружения коллизии при каждой попытке в 792281625142643000000000000000 раз выше (8E28). Теперь это несколько академично, потому что 2 ^ 160 и 2 ^ 256 оба находятся за пределами наших вычислительных возможностей для грубой силы, но хеширование открытого ключа SHA-256 с адресом RIPEMD-160 снижает безопасность. В качестве примера представьте, что открытый ключ имеет длину 256 бит, но адрес был 8-битным, будет ли трудно найти коллизию?
Я хочу сказать, что для того, чтобы иметь возможность потратить содержимое адреса x, мы должны знать privkey y и pubkey z. Я имею в виду, что x = RIPEMD160(z) и что без вычисления RIPEMD160(z) невозможно определить, соответствует ли данный открытый ключ x нашему целевому адресу. Поскольку все в цепочке блоков хранится со ссылкой на x, а не на y или z, нам необходимо вычислить RIPEMD160(z) для каждого значения z, чтобы проверить его баланс или сравнить его с известным адресом, с которого мы собираемся украсть. Нам нужно будет вычислить RIPEMD160(SHA256(z)) для каждого значения z, тем самым увеличивая мощность, необходимую для BF.
@DavidPerry Я думаю, ты упускаешь суть. Вам не нужно искать закрытый ключ . Вам нужно только найти закрытый ключ, который соответствует открытому ключу с правильным 160-битным хешем. Это в 2^(256-160) раз проще, чем найти закрытый ключ, соответствующий правильному открытому ключу. И хотя добавление дополнительного шага хеширования заставит процесс выполняться вдвое дольше, фактор 2^106, уменьшающий сложность, сводит на нет все это.
@DavidPerry Ваша ошибка заключается в том, что «чтобы иметь возможность потратить содержимое адреса x, мы должны знать privkey y и pubkey z». Чтобы потратить содержимое адреса, вам нужно только удовлетворить scriptPubKey, который обычно говорит: "OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG" - т.е. убедитесь, что хеш, указанный во входных хэшах, имеет те же 160 бит, что и <pubKeyHash>, а затем убедитесь, что данная подпись была создана данным хэшем. Он ни в коем случае не проверяет, был ли использован «правильный» публичный ключ, поскольку мы даже не знаем, что такое «правильный» публичный ключ, только его 160-битный хэш.
Боже мой, люди все еще спорят по этому вопросу? Некромантия, люди, это плохо. Я уступаю точку зрения только для того, чтобы больше не спорить об ответе 7-месячной давности. Еще и потому, что ты прав. В любом случае майнить намного выгоднее, чем охотиться за парами ключей, и пока это правда, мы, вероятно, можем считать систему безопасной. Подобно тому, как не невозможно ограбить банк, но обычно (в долгосрочной перспективе) безопаснее и выгоднее устроиться на легальную работу.
@DavidPerry Вы сказали, что майнить выгоднее, чем взламывать. Но возможно ли это в будущем, когда все монеты уже добыты и единственная «прибыль» — это комиссия за транзакции?
@Pacerier, хотя трудно предсказывать будущие переменные (количество ключей, удерживающих баланс и т. д.), шансы найти приватный ключ, содержащий средства, возмутительно низки. Умножьте вероятность нахождения такого ключа (фактически нулевая) на средний баланс (невозможно угадать), и пока эта сумма меньше стоимости эквивалентного времени, затраченного на майнинг, мы все должны быть в безопасности — в основном до тех пор, пока квантовые вычисления застряли в лаборатории.
@DavidPerry Ic. Но квантовые вычисления не застрянут в лаборатории, не так ли? Компьютеры не задерживались в лабораториях слишком долго.
@Pacerier, просто к вашему сведению, стоимость дневных усилий по созданию приватных ключей равна n u a, где n — количество сгенерированных ключей, u — процент всех фактически используемых ключей, а a — средний баланс данной учетной записи. Прямо сейчас n~=2 030 400 000 000 для хорошей карты Radeon, u~=3,28*e-43 и a~=19,22 BTC, что означает, что полный день взлома карты Radeon 5xxx стоит ~1,28e-29 BTC или 1,28. e-21 сатоши - размер безопасности составляет 2 ^ 160, никакое количество используемых адресов, вероятно, никогда не будет представлять сколько-нибудь значительный процент от такого большого числа.
@Pacerier, если квантовые вычисления когда-нибудь покинут лабораторию и станут доступными, Биткойн — не единственная технология, зависящая от шифрования, у которой проблемы. Даже тогда появится новая криптография, устойчивая к алгоритму Шора, и Биткойн может переключиться с ECC на что-то другое. Прелесть в том, что он достаточно гибкий, чтобы избежать подобных проблем.

Некоторые биткойн-адреса можно взломать методом грубой силы, потому что некоторые люди генерируют свои закрытые ключи небезопасным способом. Любые (ненулевые) 32 байта могут быть закрытым ключом. Таким образом, запуск sha256 по кодовой фразе дает явно случайный, но пригодный для перебора закрытый ключ.

Возьмем, например, sha256 ("колбаса"):

$ echo -n 'sausage' | sha256sum
30caae2fcb7c34ecadfddc45e0a27e9103bd7cfc87730d7818cc096b1266a683  -

Загрузите бит -адрес и вставьте этот закрытый ключ на вкладку «Информация о кошельке», чтобы получить соответствующий биткойн-адрес, затем найдите его в blockexplorer :

$ GET http://blockexplorer.com/q/getreceivedbyaddress/1TnnhMEgic5g4ttrCQyDopwqTs4hheuNZ; echo
0.01000000

и вы увидите, что в феврале 2012 года адрес удерживал один битцент около 2 дней.

Смотрите также: «fuckyou», державший 2,5 битцента в течение 12 праздничных дней на рубеже прошлого года.

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

При создании этого ответа ни один адресный баланс не пострадал.

+1 за интересный (хотя и практически бесполезный) вариант, за колбасу и за крутое заключительное предложение.
Действительно хорошее объяснение «детерминированных кошельков». Спасибо!
что, если вместо использования таких простых фраз-паролей (на основе словаря и не более 2 слов) можно было бы основывать свой адрес на кодовой фразе из 6 слов, при этом большинство слов не существует в языковых словарях?
Это, очевидно, было бы безопаснее, чем использование «колбасы» в качестве парольной фразы, но не так безопасно, как использование полностью случайного 256-битного закрытого ключа. Подбор парольной фразы из 6 слов проще, чем подбор произвольного 256-битного ключа. Допустим, ваш список слов имеет длину 64 КБ (16 бит на слово). Тогда ваша фраза из 6 слов имеет 16 * 6 = 96 бит энтропии. Случайный ключ имеет полные 160 бит (адреса биткойнов получаются из 160-битного хэша закрытого ключа).
Это заняло у меня три минуты... Я до сих пор не оправился от опыта... "бесплатные биткойны", ребята, "бесплатные биткойны". Все строчными буквами, с пробелом и без знаков препинания. Вы можете найти всю историю здесь: igor.host/index.php/goldendustproject , с картинками и всем остальным... Фу! сам не могу объяснить

Чтобы потратить деньги, отправленные на биткойн-адрес, вам просто нужно найти открытый ключ ECDSA, хэш которого соответствует тому же 160-битному значению. Это займет, в среднем, 2 160 генерации ключей.

Предположим, вы можете генерировать миллиард (2 30 ) в секунду, вам потребуется 2 130 секунд.

Для параллельного выполнения этого с использованием миллиарда машин требуется всего 2 100 секунд.

Если к вам присоединится миллиард ваших самых богатых друзей, это займет всего 2 70 секунд.

В году примерно 2 25 секунды, поэтому вам нужно 2 45 года.

Возраст Вселенной пока около 2 34 лет — пора ломать голову!

Можно ли отменить RIPEMD-160 (SHA-256 (открытый ключ)) только с помощью разных открытых ключей или есть более эффективный способ (при условии отсутствия слабости)?
Отвечу себе: нет. Однако, если адрес ранее использовался для отправки биткойнов, то полный открытый ключ можно найти во входных данных этой транзакции. Это сводит проблему к вычислению закрытого ключа из открытого ключа, и есть более эффективные способы сделать это, чем случайное угадывание. Но вам придется подождать не менее 30 лет, пока закон Мура не сработает. Смотрите мой вопрос здесь.
Ваш расчет предполагает, что правильный ключ будет самым последним ключом, который вы сгенерируете, верно? Я бы подумал, что через 2 ^ 23 года у вас будет 50% шанс взломать его ...
@ Питер, у тебя есть смысл ..
@Peter На самом деле я так не думаю. Всякий раз, когда вы добавляете или удаляете немного безопасности, вы фактически удваиваете или уменьшаете вдвое пространство поиска соответственно. Перебор половины пространства поиска означает поиск по 2 ^ 44, а не по 2 ^ 23.
Вот это правильный ответ.
На этот раз нужно взломать 1 закрытый ключ или взломать их все?

Нет, это невозможно по двум причинам.

Во-первых, вам придется сгенерировать и хешировать невообразимо большое количество пар ключей ECDSA, чтобы иметь разумный шанс найти коллизию. При нынешних вычислительных мощностях это займет больше времени, чем возраст Вселенной.

Во-вторых, как указано в других ответах, намного выгоднее генерировать биткойны, если у вас много вычислительной мощности.

Это возможно, просто крайне маловероятно и непрактично.
Возможно ли сделать что-то, на что уйдет больше времени, чем возраст Вселенной? Ни в каком значении этого слова я не знаком. Я проголосовал за этот ответ, поэтому нулевой балл означает, что кто-то, должно быть, проголосовал против него. Я бы очень осторожно проголосовал за главного разработчика BitCoin на бирже стека BitCoin ;) .
@eMansipate Я считаю, что среднее или ожидаемое время больше, чем возраст Вселенной, но, тем не менее, будет астрономически малая вероятность (достаточно малая, чтобы ее можно было полностью игнорировать для любых практических целей) закончить за меньшее время.
Если бы кто-нибудь спросил в обмене физическими данными: «Возможно ли, что мое тело самопроизвольно взорвется», вы бы ответили «да»? В конце концов, теоретически все атомы в вашем теле могут внезапно изменить квантовое состояние и разлететься...
Да, я бы, и любой, у кого есть приличное знание физики, поддержал бы меня в этом. Мы никогда не должны сбрасывать со счетов что-то как невозможное только потому, что это очень маловероятно. Если бы вы спросили об этом на бирже физического стека, какой-нибудь поклонник Копенгагенской интерпретации, вероятно, сказал бы вам, что Биткойн уже был взломан, просто не в этой «развилке» вселенной. Кто-то все еще может попробовать, и у него все еще может получиться, просто маловероятно, что вероятность настолько мала, что ее можно не принимать во внимание, но «нет» по-прежнему является неправильным ответом.
О, и @eMansipate: у меня нет ничего, кроме уважения к Гэвину и всему, что он сделал, Биткойн — потрясающий проект, и я рад, что он работает над ним. Он, безусловно, потрясающий программист и очень умный человек, но все это не делает вас невосприимчивым к ошибкам время от времени. Я не принимаю свои отрицательные голоса или закрытые вопросы на свой счет, и я надеюсь, что Гэвин тоже.
@David Perry: Вы только что сделали слово «возможный» синонимом «непротиворечивого» и аннулировали его наиболее распространенное использование. Бьюсь об заклад, вы на самом деле не используете это слово так, как не делает ни один здравомыслящий человек. «Можете ли вы подстричь мою лужайку в воскресенье?» «Да», неделю спустя, «Почему ты не косил мою лужайку?» — Я только сказал, что это возможно.
@David Schwartz: Это не совсем подходящее место для этого обсуждения, но я действительно использую это слово именно так. Я также говорю «у меня есть гипотеза», когда на самом деле у меня нет чего-то, что можно было бы назвать теорией. Возможно, это педантизм, но языковая эрозия — серьезная проблема. В любом случае это не по теме здесь, так что я не буду спорить дальше.
@eMansipate вы не можете определить продолжительность конкретного испытания, только среднее испытание или некоторый диапазон вероятности. Например, это крайне маловероятно, но я мог бы сгенерировать коллизию между двумя хэшами SHA-256 подряд, общее время выполнения <1 секунды. Учитывая текущую вычислительную мощность, чтобы иметь РАЗУМНУЮ вероятность создания столкновения, потребуется огромное количество времени, однако это не делает его невозможным, потому что можно сформировать столкновение за одно испытание.
@theUn Я не могу поверить, что у этого ответа пять голосов против, когда он четко и точно отвечает на вопрос , как на самом деле задано . Когда вводится такая фраза, как «чтобы украсть деньги», становится совершенно ясно, что речь идет о практической возможности, а не о теоретической. Если бы Security SE спросили, возможно ли взломать SSL-сертификаты для подделки веб-сайта, ответ был бы «нет, это невозможно», потому что до тех пор, пока не будет изобретена новая математика/аппаратное обеспечение, человечеству в целом не хватает этого. способность. То же самое относится и к «текущей вычислительной мощности».
Или, для более прямого сравнения, рассмотрим вопрос: «Можно ли зарабатывать на жизнь, играя в рулетку в казино?» Любой, кто говорит «да», потому что вы просто можете выигрывать каждый раз до конца своей жизни, дает неправильный ответ — контекст, требуемый «зарабатывать на жизнь», ясно дает понять, что мы говорим о практических возможностях, а не о теоретических.
@eMansipater Я думаю, что это скорее строка «Во-первых, вам придется сгенерировать и хешировать невообразимо большое количество пар ключей ECDSA», это утверждение неверно. 100% ложь. Вы можете сгенерировать коллизию с небольшим количеством хэшей, возможно, даже с 1 хэшем. Точно так же «при нынешней вычислительной мощности это займет больше времени, чем возраст Вселенной». Минимальное количество времени для обнаружения коллизии не может быть определено.
Мне просто интересно, откуда вы знаете возраст Вселенной?
Shoelessjoe: Было бы лучше сказать, что наше солнце окутает Землю до того, как это произойдет. DeathAndTaxes: Минимальное время определить нельзя, но среднее время можно. Тем не менее, среднее время не определяет, является ли что-то «возможным» - определяет минимальное время, и минимальное время в этом случае составляет один хэш. eMansipater: Мой ответ по поводу рулетки будет «возможен, но крайне маловероятен», поскольку, называя что-то невозможным, вы выглядите очень глупо, когда кто-то действительно это делает.
И да, Гэвин, мое тело может внезапно взорваться, особенно в канун Нового года... чувак, это была настоящая вечеринка.... :-)

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

Павол Руснак создал coinkit, библиотеку Python для взаимодействия с вещами, связанными с биткойнами. Там есть пример того, как его использовать, который делает именно то, что вы просите.

Он генерирует случайную пару ключей и ищет баланс на blockchain.info.

Я запустил его около месяца назад с небольшими изменениями примерно на 1 миллионе адресов и не обнаружил ни одного конфликта.

Кто-нибудь может объяснить, почему за этот ответ проголосовали? Я хотел бы избежать ошибок в будущем, и я не знаю.
Деннис, хотя я не был тем, кто понизил ваш ответ, я понимаю, почему кто-то может. На самом деле он не добавляет ничего, что еще не описано в другом ответе, не дает никаких математических расчетов и даже немного грубо по отношению к ОП.
О, грубость была моим намерением, и я искренне извиняюсь. Это скорее должно было быть своего рода забавным. В любом случае, что касается «не добавления», я не согласен, это указывает на ссылку, по которой вы можете увидеть на практике то, что теоретизировано выше. Применение вещей на практике всегда ценно. Вы бы не согласились? Я отредактировал свой ответ на основе ваших отзывов. Благодарю вас!
Вы ссылались на ссылки, которых нет в других местах, и обновили свой ответ отзывами. Спасибо! Проголосовал.

Если вы предпочитаете диаграммы: http://i.imgur.com/ag3KQ0L.png (адресов в адресном пространстве больше, чем зептометров, 1/1 000 000 000 000 000 000 метра в ширине вселенной) .

Если вы предпочитаете математику: http://download.wpsoftware.net/bitcoin-birthday.pdf (автор Andrew Poelstra ) говорит (слегка отредактировано):

Используя [математику атаки дня рождения], мы подсчитали [выше], что для вероятности коллизии 0,1% нам потребуется 5,4 × 10 ^ 22 существующих адресов. Для вероятности 99,9999% нам потребуется 6,35 × 10^24 адресов.

Таким образом, даже если было сгенерировано 10^22 биткойн-адреса, коллизии просто не произойдет. Но если бы было сгенерировано 10 ^ 25 адресов, коллизия обязательно произошла бы.

Должны ли мы беспокоиться об этом? Нет, по этим независимым причинам:

  1. Вероятность конкретной коллизии, скажем, коллизии с одним из ваших адресов, по-прежнему составляет 1 из 2^160 или 1 из 10^48. Таким образом, даже если у вас есть миллион миллионов миллионов адресов, ни у кого нет шансов столкнуться с вами.

  2. На момент написания этой статьи в сети используется менее 10^7 адресов. Таким образом, любой, у кого 10 ^ 25 адресов, будет сталкиваться только со своими собственными адресами.

  3. Каждый адрес занимает около 100 байт для хранения. (На самом деле примерно вдвое меньше, но нас интересуют только порядки.) Таким образом, чтобы сеть поддерживала 10^25 адресов, потребовалось бы 10 миллионов миллионов терабайт памяти только для их записи. (И это даже не касается проблемы поиска в таком огромном хранилище данных.

  4. По данным sipa, если текущая сеть майнинга (которая составляет 25 THash и является самой мощной вычислительной сетью в истории мира) была переключена на генерацию адресов, сеть могла бы генерировать 2,5 × 10 ^ 12 адресов в секунду (один генерация адреса, соответствующая примерно 10 хэшам). При такой скорости потребуется 127 000 лет, чтобы получить столько адресов. Спорный вопрос, так ли долго ходил по земле homo sapiens.

  5. При 21 миллионе биткойнов, когда-либо существовавших, и 8 знаках после запятой, не более 2,1 × 10^14 могут иметь деньги одновременно. Но в пространстве из 10 ^ 24 адресов это означает, что только один из 10 ^ 12 адресов может иметь деньги. Таким образом, злоумышленник, совершивший 3 триллиона раз физически невозможное, имеет только один шанс из триллиона получить хотя бы один сатоши.

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

Согласно статье Motherboard от апреля 2017 года, LBC обнаружил более 30 закрытых ключей биткойнов.

Эти закрытые ключи не являются «настоящими». Они были «подброшены» создателем LBC, т.е. он финансировал эти закрытые ключи с единственной целью, чтобы они были найдены LBC. Эти закрытые ключи на самом деле не использовались людьми для реальных транзакций. Эти закрытые ключи также были очень короткими и имели высокую вероятность быть найденными.
@AndrewChow, ты можешь доказать это «подброшенное» обвинение? Если вы возьмете номер страницы внутренних страниц, добавите смещение номера строки и пропустите этот номер через алгоритм, вы точно получите Wif и адрес.
@Michael Это буквально в ветке LBC на Bitcointalk: bitcointalk.org/index.php?topic=1877935.msg18672178#msg18672178 . Баунти были созданы исключительно для LBC.

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

Возможно: Да.

Вероятно: Нет.

Многие события возможны, даже если они маловероятны. Вероятность подбора закрытого ключа биткойна настолько маловероятна, что с современными вычислительными стандартами это практически невозможно.

По мере развития науки о криптографии и по мере того, как брутфорс становится все более мощным, базовая инфраструктура биткойнов будет улучшаться, чтобы идти в ногу с совершенствующимися технологиями. Это может потребовать доступа к вашему биткойн-кошельку с использованием улучшенного клиента в будущем для поддержания высокого уровня безопасности.

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

-1 минус. Технически конфликт открытого ключа аннулирует безопасность закрытого ключа. Скажем, у вас есть пара закрытый ключ и открытый ключ xy. Если я обнаружу такую ​​коллизию, что новый закрытый ключ z имеет тот же открытый ключ y, я МОГУ подписывать транзакции, как и вы. Подписав транзакцию (включая ваши биткойны) с ключом z, они будут проверены сетью так же, как если бы они были подписаны с помощью x. Оба кажутся одинаково действительными. Только ваш последний абзац неверен. Если вы измените ответ, я удалю отрицательный голос.
«разрешить злоумышленнику отправить вам монеты»? Любой может отправить вам монеты. Чтобы потратить ваши монеты, «все» злоумышленнику нужен закрытый ключ, такой, чтобы соответствующий открытый ключ имел тот же хэш RIPEMD-160 (SHA-256 (x)), что и ваш открытый ключ.

Да, следуя технологическому прогрессу, как только станет доступным оборудование, способное выполнять 1 Тэш/сек и выше, становится возможным начать поиск коллизий с разумной вероятностью успеха. По моим оценкам, примерно через 2-3 года это станет жизнеспособным, а вот удастся ли кому-нибудь, кто попытается получить адрес, с которым связано приличное количество BTC, это другой вопрос, и вопрос о том, будет ли это даже быть прибыльным еще дальше.

Я совершенно уверен, что шансы намного меньше, чем показывает базовая математика. пара.

Пропустите десятилетие вперед, и это будет гораздо более реалистичным беспокойством, или в тот момент, когда Тэш станет нормальным, а Фаш появится на картах ... точно так же, как графические процессоры сейчас бездействуют и ищут применение, так же будет майнинговое оборудование, которое даже не было изобретено еще через несколько лет.

Должен признаться, я недостаточно знаю, сколько адресов можно сгенерировать с помощью компьютера с производительностью 1 Th/s, но однажды я вычислил вероятность коллизии, когда у каждого человека на этой планете есть 100 адресов. Если я правильно помню, это все еще было в диапазоне 10 ^ -27, поэтому утверждение о том, что поиск столкновений становится правдоподобным при 1 Th/s , кажется ошибочным на несколько величин. Кроме того, если технология достаточно прогрессирует, адреса могут быть просто увеличены до большего пространства.
Я, наверное, не ясно выразился, сейчас вполне возможно иметь оборудование Ghash/s дома, когда возможно иметь дома оборудование Thash/s, которое уже не выгодно использовать для майнинга биткойнов, тогда будет стимул для запускать пулы коллизий с возможностями xxx Tash/s. Оборудование для майнинга быстро становится бесполезным для майнинга биткойнов, добыча биткойнов становится сложнее, вознаграждение становится меньше - поиск коллизий становится проще, поскольку (а) больше пар ключей/адресов используется с течением времени (б) больше дешевой хеш-мощности (в) нет увеличение сложности когда-либо.
Это не было проблемой, я следую за вами в этом. Мои вопросы: 1) Можно ли повторно использовать майнеры ASIC для генерации адресов, и 2) Я думаю, что ваше предложение сильно недооценивает сложность обнаружения коллизий.
Что касается (2), нужно будет обработать некоторые цифры, переменные: скорость, с которой злоумышленник(и) может создавать открытые ключи ECDSA и проверять их по списку, количество финансируемых биткойн-адресов, для которых будет ключ. полезно - некоторые части уравнения хорошо известны, например, мы можем разумно предположить, что распределение ключей будет довольно равномерным по всему пространству (таким образом, атака только части пространства будет жизнеспособной) и что существует примерно 2 ^ 96 частных ключи для каждого адреса.
Что касается (1), для любого адреса, который израсходовал входные данные и имеет оставшиеся неизрасходованные входные данные, открытый ключ ECDSA находится в цепочке блоков, что значительно упрощает проверку для любого адреса, который только получил, но не потратил, тогда 160 в цепочке блоков, что требует 2 дополнительных шагов ripemd-160(sha256(ecdsa-public-key)), что делает его значительно более затратным в вычислительном отношении, гораздо меньше, чем вычисление полного адреса при создании тщеславного адреса.
Существует ли подключаемая криптотехнология, встроенная в архитектуру BitCoin, которая может обойти неизбежное?
Можете ли вы обосновать свои расчеты, пожалуйста? Если RIPEMD-160 безопасен, 2^80для обнаружения коллизии должны потребоваться грубые ключи. Генерация ключа занимает гораздо больше времени, чем хэш SHA-256 (и стандартные ASIC для майнинга этого не сделают), поэтому «THash» не является полезным измерением. Но даже если бы вы могли делать 1 тераключ в секунду, вам нужно было бы делать 2^40ключи, чтобы усреднить одно столкновение — по моим расчетам, это около 34 000 лет — и даже тогда вы, вероятно, только что нашли столкновение с другим ключом, который вы сгенерировали, который на самом деле не содержит ничьих монет.
И не могли бы вы объяснить свое замечание о совпадении из 20 символов? Похоже, вы утверждаете, что 2^256возможные закрытые ключи сопоставляются только с возможными адресами 2^117или около того 2^160- это может показаться огромной слабостью используемых алгоритмов хеширования, если это правда, и должно быть опубликовано в ведущем криптографическом журнале.

Я прочитал на bitcoin.org, что закрытый ключ $d_A$ — это любое целое число от $1$ до $n-1$. Также $n=FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE 0x00 = 18 446 744 073 709 551 615 0d00 $. Предположим, что существует 100 миллионов различных адресов, что составляет $5,42 e^{-12}$ вероятности выбора используемого адреса. Если у нас есть $x$ догадок, нам нужны закрытые ключи $x=$frac{1}{5.42e^{-12}}$, чтобы гарантировать их нахождение. Это составляет $5,42 e^{12}$ генерации адреса, тогда для всех 5,42 триллиона сгенерированных случайным образом закрытых ключей вам нужно будет умножить $G$ на каждый закрытый ключ $d_n$ в эллиптическом поле, чтобы получить $Q_n$, затем выполнить поиск цепочка блоков биткойнов для этого $Q_n$. После 5,42 трлн из них вы почти наверняка найдете один и сможете украсть его биткойны.

Вы можете решить это с помощью компьютерных наук, например, как долго умножать $d_n \times G$ и как долго искать в цепочке блоков. Поскольку почти все не будет в нем, это будут все поиски в худшем случае.

Я чувствую, что это может происходить время от времени, однако очень редко, чтобы считаться серьезной угрозой, по крайней мере, на данный момент, поскольку эта проблема не будет масштабироваться, как это делает цепочка блоков. Также вы можете даже усреднить сумму, содержащуюся в кошельке BTC, и вычислить прибыльность, и я подозреваю, что она низкая. Как будто ты бы прошел через все это только ради шанса украсть, может быть, 500 долларов.