Продвинутый Урок 2 4 мин чтения

Что уже было решено, и как каждый упал

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

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

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

Начиная с пятидесяти с лишним бит, ситуация меняется. Ступени начинают сбивать люди с фермами видеокарт, и интервал между одной ступенью и следующей перестаёт измеряться неделями и начинает измеряться годами. Каждый бит удваивает работу, и лестница становится всё более крутой именно с предсказанной скоростью.

Каждая ступень требует вдвое больше, чем предыдущая, и очередь прибывающих уменьшается.

В этом списке сосуществуют две семьи результатов, и путаница между ними — самая распространённая ошибка тех, кто впервые читает таблицу.

В первой семье находятся ступени с более низкими номерами, атакуемые чистым перебором. Известен только адрес, нет никаких сокращений, и решение — это грубая сила на видеокартах, как описано в Уроке 2 предыдущего модуля. Время пропорционально всему интервалу.

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

Размер замка ничего не решает. Решает, можно ли до него добраться.

Стоит также рассказать о некрасивой стороне, потому что она является частью истории и учит больше, чем победы. В более чем одном случае, тот, кто нашёл ключ, не получил награду. Транзакция, перемещающая монеты, должна быть передана в сеть и становится видимой в mempool до подтверждения — и существуют программы, следящие за mempool именно в ожидании этого. Увидев ключ, раскрытый в подписи, наблюдатель создаёт конкурирующую транзакцию с гораздо большей комиссией, и сеть подтверждает её. Это называется кражей в пути, и это уже случалось с теми, кто сканировал в течение месяцев.

Защита известна: заранее договориться с майнером, чтобы транзакция вошла в блок, минуя публичный mempool. Это требует усилий, предварительного контакта, и те, кто узнаёт об этом после потери, учатся дорого.

Между нахождением и получением есть участок пути, и он небезопасен.

В конце концов, вся хронология учит трем вещам.

Первое: прогресс экспоненциально медленный. Десятилетия улучшения аппаратного обеспечения купили несколько десятков бит, и купят ещё несколько десятков в том же темпе — что оставляет 256 бит вне любого вообразимого горизонта.

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

Третье: ни один из этих результатов не коснулся криптографии. Ни одна кривая не была сломана, ни один хеш не был инвертирован. То, что упало, — это то, что всегда падает — маленькие пространства поиска, специально выбранные теми, кто создал задачу.

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