По разным оценкам, от 11% до 23% из выпущенных на сегодноя биткоинов — порядка 3,7–3,8 миллиона BTC — находится в кошельках, доступ к которым потерян навсегда: забытые фразы, уничтоженные резервные копии, смерть владельца без плана наследования доступа. При текущем курсе это больше 120 миллиардов долларов, которые просто лежат в блокчейне и никогда никуда не переместятся.
Здесь стоит сразу закрыть главное заблуждение. Обычно советы по безопасности криптокошельков накачивают людей относиться к seed‑фразе бинарно: либо помнишь все слова и кошелёк живой, либо нет — и всё потеряно. В реальности, однако, это не бинарная история, а комбинаторная. Ответ на вопрос «можно ли восстановить» зависит не от везения, а от простой математики количества забытых слов, и далеко не все сценарии забытой seed‑фразы относятся к «невозможно физически».

Из чего физически состоит seed‑фраза
Стандарт BIP39, по которому работает подавляющее большинство некастодиальных кошельков, использует список из ровно 2048 слов. Число не случайное: 2048 равно 2 в 11 степени, а значит каждое слово в фразе кодирует ровно 11 бит информации. 12-словная фраза даёт 132 бита, 24-словная, 264 бита.
Но не все эти биты это случайная энтропия. Последние несколько бит в фразе — это контрольная сумма (checksum), которая математически зависит от всех предыдущих слов. Для 12 слов это 4 checksum‑бита из 132 (128 бит энтропии плюс 4 бита контроля), для 24 слов это 8 checksum‑бит из 264 (256 плюс 8). Логика внутри стандарта примерно такая:
entropy = random_bytes(128) # или 256 для 24 слов
checksum = sha256(entropy)[:entropy_bits / 32]
mnemonic_bits = entropy + checksum
words = split_into_11bit_chunks(mnemonic_bits) # каждый chunk → слово из списка 2048
Эта контрольная сумма и есть первый инструмент восстановления. Она не подтверждает, что фраза принадлежит именно вашему кошельку, только то, что комбинация слов теоретически валидна по стандарту BIP39. Финальную проверку делает derivation path (BIP44): из фразы детерминированно выводится дерево ключей, и только сверка полученного адреса с реально известным балансом на цепочке подтверждает, что найдена именно нужная комбинация, а не просто валидная по чек‑сумме.
Одно забытое слово, не проблема вообще
Если забыто ровно одно слово из двенадцати или двадцати четырёх, при этом известна его позиция в фразе, перебор тривиален. Кандидатов ровно 2048, по числу слов в словаре. Checksum для 12-словной фразы отсеивает 15 из 16 неверных вариантов сразу, для 24-словной, 255 из 256. Оставшиеся несколько десятков кандидатов, прошедших проверку контрольной суммы, за секунды проверяются через derivation path на совпадение с реальным адресом. Обычный ноутбук справляется с этим быстрее, чем человек успевает заварить чай.
Два‑три слова, уже инженерная задача
Пропуск двух слов даёт 2048 в квадрате, это чуть больше 4,19 миллиона комбинаций. Checksum по‑прежнему режет львиную долю мусора, но абсолютное число кандидатов, требующих полной BIP44-деривации и сверки с адресом, вырастает на порядки. На CPU это уже не секунды, а минуты‑часы, на GPU‑кластере с параллельным вычислением деривации, речь идёт о минутах в большинстве случаев.
Три забытых слова это 2048 в кубе, порядка 8,6 миллиарда комбинаций. Здесь принципиально важно, сколько checksum‑бит доступно для фильтрации. У 24-словной фразы 8 checksum‑бит отсекают 255 из 256 неверных претендентов ещё до дорогой операции деривации ключа, у 12-словной фразы всего 4 бита, фильтр слабее в 16 раз. Именно поэтому на практике восстановление трёх слов в 12-словной фразе может занимать заметно дольше, чем в 24-словной, при формально одинаковом количестве пропущенных позиций. Такие кейсы уже требуют выделенного GPU‑кластера и работы в изолированной offline‑среде, потому что промежуточные кандидаты, по сути, черновики приватного ключа, и их нельзя гонять через сеть или облачные вычисления. Именно так на практике устроено восстановление seed‑фразы с утерянными словами: чем меньше checksum‑бит в запасе, тем дороже обходится каждое дополнительное забытое слово.
Где проходит стена
Четыре забытых слова, это уже 2048 в четвёртой степени, порядка 17,6 триллиона комбинаций. Если неизвестны ещё и позиции слов в фразе, а не только сами слова, сложность умножается на число перестановок, и задача переходит из категории «долго, но реально» в категорию «не окупается никаким железом за разумное время». Это и есть та самая математическая стена, а не произвольно назначенный порог.
Стена не абсолютная, но штурмовать её можно только инженерными средствами, а не терпением.
Кейс на $900 000, услышанный от ребят из KarCrypto
Этим примером поделились специалисты KarCrypto, которые занимаются такими восстановлениями на практике. Баланс кошелька клиента составлял около 900 000 долларов. Seed‑фразу из 24 слов клиент хранил на бумаге, но три слова оказались утрачены: страница резервной копии несколько лет пролежала в условиях, где чернила частично выцвели, и три позиции стали нечитаемыми. Сами позиции в списке остались известны точно, поскольку соседние слова сохранились, а вот какие именно слова стояли на этих трёх местах, было неизвестно.
Формально это 2048 в кубе, порядка 8,6 миллиарда кандидатов на три позиции. 8-битный checksum 24-словной фразы отсекает 255 из 256 неверных претендентов ещё до дорогой операции деривации ключа, оставляя после первого прохода не миллиарды, а единицы миллионов кандидатов, которым имеет смысл считать полный BIP44-путь и сверять получившийся адрес с известным балансом на цепочке. На выделенном GPU‑риге такой перебор с нуля до совпадения адреса занял около суток. По словам специалистов KarCrypto, ключевым фактором была именно известность позиций утраченных слов, без этого условия пришлось бы дополнительно перебирать все варианты их расстановки, а это уже кратно увеличивает пространство поиска и отодвигает результат на порядок дальше по времени.
Аппаратные кошельки, совсем другая математика
Ledger и Trezor работают по принципиально другой модели восстановления, и здесь комбинаторика seed‑фразы почти не при чём. PIN‑код устройства проверяется не перебором на внешнем компьютере, а secure element'ом внутри самого чипа, и после ограниченного числа неверных попыток (обычно счётного, единицы) устройство либо блокируется на нарастающую задержку, либо полностью стирает ключ. Брутфорс PIN здесь не тот же самый процесс, что подбор слов seed‑фразы, это отдельная, куда более узкая задача, упирающаяся не в комбинаторику, а в защиту самого чипа. На практике восстановление доступа к аппаратному кошельку почти всегда идёт через исходную 24-словную фразу резервного восстановления, а не через попытки обойти PIN на самом устройстве.
wallet.dat, наследие другой эпохи
Старые файлы wallet.dat от Bitcoin Core устроены иначе, чем современные BIP39-кошельки, и уязвимы по другой причине. Приватные ключи в них зашифрованы AES-256-CBC, но ключ шифрования получается из пользовательского пароля через устаревшую функцию OpenSSL EVP_BytesToKey, без современного work‑factor, который есть в scrypt или Argon2. Это значит, что перебор идёт не по списку из 2048 слов, а напрямую по пространству паролей, и скорость перебора здесь определяется не блокчейн‑математикой, а обычной стойкостью пароля пользователя. Инструменты вроде hashcat с режимом 11 300 умеют брутфорсить wallet.dat напрямую, и если пароль был коротким или человекочитаемым, восстановление занимает часы, а не годы, в отличие от честной комбинаторики BIP39 с четырьмя и более пропущенными словами.
Что это значит на практике
Разница между «восстановим» и «невозможно» редко упирается в готовность платить или ждать. Она упирается в то, сколько бит энтропии реально отсутствует и какой checksum есть в запасе для фильтрации. Один‑два слова, это часы работы. Три, это уже серьёзный проект с GPU и строгим протоколом изоляции. Четыре и больше, это не про деньги и не про время, а про то, что вселенная не оставила достаточно вычислительных ресурсов до конца существования солнечной системы. Restoration seed‑фразы работает не потому, что кто‑то очень старается, а потому, что честно посчитанная математика иногда оставляет шанс, и умеет его отказать так же честно.
Подробнее о том, как устроено восстановление кошельков на практике — в материалах про восстановление доступа к кошельку, восстановление Ledger и Trezor и отдельно про восстановление wallet.dat.