Джон Кантрелл, разработчик мессенджера Juggernaut, который работает на Lightning Network, «разгадал» мнемоническую фразу (сид) методом полного перебора (брутфорс) для адреса с 1 BTC. Это была не кража, а конкурс, в котором он победил. В своем блоге на Medium Кантрелл рассказал, как он это сделал.
Алистер Милн, директор по информационным технологиям в Altana Digital Currency Fund, в своем Твиттере объявил конкурс с призом в 1 BTC. С мая он периодически публиковал подсказки к сиду из 12 слов.
Чтобы предотвратить возможный брутфорс, Милн планировал «опубликовать последние три или четыре слова сразу», но его план провалился. Имея восемь слов, Кантрелл смог подобрать остальные и забрать биткоин.
Он начал подготовку к брутфорсу перед публикацией восьмого слова. В своем посте он написал, что восемь слов дадут «примерно 1,1 триллиона возможных вариантов», которые необходимо будет проверить.
После написания специальной программы и выполнения нескольких тестов оказалось, что его оборудование не подходит для выполнения этой задачи.
Ноутбук Кантрелла мог проверять только около 1250 сидов в секунду (или 108 миллионов в день). «Это означает, что моему процессору (двухъядерный Intel Core i7, 2.5 GHz) потребуется около 25 лет, чтобы сгенерировать и проверить 1 триллион возможных сидов, зная только 8 слов», ― отметил он.
Для решения этой проблемы Кантрелл использовал облачные вычисления. Он арендовал несколько десятков GPU в Microsoft Azure. Когда было опубликовано восьмое слово, он запустил свою программу.
«На пике я проверял около 40 миллиардов мнемоник в час. Это значит, что для тестирования 1 триллиона мнемоник потребовалось бы около 25 часов. Я знал, что в среднем это займет около 50% времени», ― написал Кантрелл.
Но ему невероятно не повезло. После проверки 85% возможных комбинаций он так и не смог подобрать сид. Он подумал, что допустил какую-то критическую ошибку. Его план основывался на том, что опубликованные слова записаны в правильном порядке, а этого нельзя было гарантировать. Спустя день интенсивных вычислений Кантрелл «почти потерял надежду, что это сработает».
«Но я не мог заставить себя остановить вычисления, так как зашёл слишком далеко. К моему удивлению, немного позже тем вечером (на 91%), после почти 30 часов и 1 триллиона проверок (1 000 710 602 752) решение нашлось!», ― сказал Кантрелл.
Затем он заплатил очень высокую комиссию в 0,01 BTC ($94) за перевод на свой адрес, чтобы застраховать себя от возможных конкурентов, которые также могли подобрать сид.