Энтузиаст разработал мобильное приложение для взлома забытого Bitcoin-кошелька с миллионами долларов
Разработчик-энтузиаст, а также по совместительству читатель «Кода Дурова» Денис Карпенко выпустил приложение на iOS, которое пытается взломать один очень старый биткоин-кошелёк методом подбора приватных ключей. Приложение доступно для скачивания в AppStore.
Приложение подбирает ключ к старому кошельку, баланс которого на данный момент составляет 31 000 BTC ($630 млн). Сам кошелёк, известный как №967, находится в категории забытых, потому что его монеты не двигались уже больше 10 лет. Его первая и последняя транзакции состоялись в 2010 году.
Любой пользователь может скачать приложение, чтобы присоединиться к попытке взломать этот кошелёк. Шанс подобрать приватный ключ катастрофически мал, но всё же не равен нулю. В теории, если кому-то очень сильно повезёт и ему удастся найти правильный ключ, он получит $630 млн или более 40 млрд. рублей. Принцип работы приложения разработчик описал в своём Instagram (принадлежит запрещённой в РФ организации).
Одна из ключевых особенностей шифрования биткоина – это использование двух криптографических функций: SHA-256 и RIPEMD-160. Из приватного ключа с их помощью получается публичный биткоин-адрес. При этом шифрование невозможно в обратную сторону, поэтому, зная публичный адрес биткоина, получить его ключ невозможно.
Приложение работает по принципу алгоритма шифрования биткоина, поэтому ему не нужен интернет для работы. Оно генерирует случайный ключ ECDSA, а затем проводит его через весь алгоритм шифрования. В конечном результате получается публичный биткоин-адрес, и если вдруг сгенерированный адрес совпадает с адресом нужного кошелька, тогда приватный ключ успешно подобран.
При запуске приложение проводит постоянный цикл следующего алгоритма создания BTC-адреса:
- Генерируется случайный ключ ECDSA.
- Проводится хеширование SHA-256 на сгенерированном ключе.
- Затем проводится хеширование RIPEMD-160 на предыдущем результате. Так получается центральная основная часть адреса BTC.
- К основной части добавляется сетевой байт версии блока в качестве префикса.
- Выполняется ещё одно хеширование SHA-256 предыдущего результата хеширования SHA-256 (получен во 2-ом этапе). Затем из полученного хеша берутся первые 4 байта и добавляются в конец адреса (это контрольная сумма).
- Из префикса, основной части и контрольной суммы получается контрольный адрес BTC, который затем преобразуется в Base58 строку, используя кодировку Base58check.
- Итоговый результат и есть тот самый публичный адрес BTC.
В конце программа сравнивает полученный результат. Если в итоге получится 12ib7dApVFvg82TXKycWBNpN8kFyiAN1dr, а именно этот кошелёк и взламывается, то приватный ключ найден успешно. Шанс этого крайне мал, но по теории вероятности существует.
Читать первым в Telegram-канале «Код Дурова»