Слова восстановления не придумываются кошельком из воздуха — это представление случайного числа, записанное в удобной для человека форме, и устройство генерирует набор случайных битов, разбивает его на группы по одиннадцать и переводит каждую в слово из фиксированного списка. Обратная операция точно так же восстанавливает исходное число, и потому порядок слов имеет значение.
Откуда берётся число слов
Каждое слово кодирует одиннадцать бит, поскольку список содержит ровно 2048 вариантов, а это два в одиннадцатой степени, а двенадцать слов несут 132 бита, из которых 128 составляют саму случайность, а четыре служат контрольной суммой. Для двадцати четырёх слов исходная последовательность вдвое длиннее: 256 бит плюс восемь бит проверки.
Отсюда и разница между вариантами. Фраза из 24 слов опирается на более длинное случайное число, хотя для практических целей защиты хватает и двенадцати.

Как устроено преобразование
| Этап | Что происходит |
|---|---|
| Генерация | Устройство создаёт случайную последовательность из 128 или 256 бит |
| Контрольная сумма | От последовательности берётся хеш, первые биты добавляются в конец |
| Разбиение | Результат делится на группы по 11 бит |
| Подстановка слов | Каждая группа заменяется словом из списка по её номеру |
Зачем нужна контрольная сумма
Она ловит ошибки при записи и вводе, при этом случайный набор слов из списка почти наверняка не пройдёт проверку, поэтому кошелёк сразу сообщит о неверной фразе вместо того, чтобы молча открыть пустой кошелёк. Это защищает от опечаток, но не от перестановки слов местами, если обе фразы случайно окажутся корректными.
Почему список именно такой
Слова в списке подобраны так, чтобы первых четырёх букв хватало для однозначного определения, причём это упрощает ввод на устройствах с ограниченным экраном и снижает вероятность ошибки при чтении рукописной записи. Похожие по написанию слова из списка исключены намеренно.
Списки существуют на нескольких языках. Но фразы с них не взаимозаменяемы: восстановление требует того же языка, на котором фраза была создана.
Что следует из устройства стандарта
- Порядок слов критичен: перестановка даёт совершенно другой кошелёк
- Фраза не привязана к производителю и работает в любом совместимом кошельке
- Записывать нужно сами слова, а не их номера или сокращения
- Одна ошибка в слове обычно выявляется контрольной суммой при вводе
Ко мне обращался человек, записавший фразу без нумерации строк, а потом восстанавливавший кошелёк по памяти о порядке, тогда как слова были верными, но две строки он переставил, и кошелёк открылся пустым. Контрольная сумма при этом совпала случайно, и никакого предупреждения он не получил.
От фразы к ключам
Слова преобразуются в длинное число — семя, из которого по правилам родственного стандарта выводятся все приватные ключи и адреса кошелька, и процесс детерминированный: одна и та же фраза всегда даёт один и тот же набор адресов, и именно поэтому восстановление работает в кошельке любого производителя.
Масштаб защиты в цифрах
Фраза из двенадцати слов соответствует 128 битам случайности — это число с тридцатью девятью нулями вариантов. Перебор такого пространства недостижим для любых существующих и обозримых вычислительных мощностей, и подбор фразы не входит в число реальных угроз.
Опасность приходит с другой стороны. Фотография записи в телефоне, фраза в облачной заметке или ввод на фишинговом сайте обесценивают всю эту математику мгновенно, и именно так происходит подавляющее большинство потерь.
Роль дополнительной парольной фразы
Стандарт допускает добавление произвольной строки, которая участвует в вычислении семени наравне со словами, а любая такая строка даёт корректный кошелёк, то есть неверно введённая фраза не вызовет ошибки — вы увидите пустой баланс. Это свойство делает её мощным инструментом защиты и одновременно частой причиной потери доступа.
Запись и проверка фразы
Нумеруйте строки при записи — это единственная защита от перестановки, которую контрольная сумма не ловит, и пишите слова полностью, без сокращений: четырёх букв достаточно для определения слова по списку, но восстанавливать запись по обрывкам через годы неудобно и чревато ошибкой.
Чего стандарт не обещает
Он описывает кодирование и проверку, но не защищает фразу от компрометации, при этом любой, кто увидит слова, получит полный доступ к средствам независимо от производителя устройства и его защитных механизмов. Вся безопасность сводится к тому, насколько надёжно вы храните эту запись.
Смежные темы разобраны у нас. Вот основные. Общий раздел — кошельки и хранение. Шире — статьи про криптокошельки. Проверку копии разбирает материал как проверить резервную копию кошелька, а долгосрочное хранение — статья как организовать хранение криптовалюты.
Вопросы и ответы
Что надёжнее: 12 слов или 24?
Обе длины дают защиту, недостижимую для перебора при нынешних вычислительных возможностях, причём разница между 128 и 256 битами случайности имеет теоретическое значение, но практически выбор определяется удобством записи и требованиями конкретного устройства.
Можно ли придумать слова самому?
Технически фраза пройдёт проверку, если угадать контрольную сумму, но делать так нельзя категорически. Человек выбирает слова предсказуемо, и такая фраза подбирается несопоставимо быстрее случайной. Генерацию всегда оставляют устройству.
Работает ли фраза от одного кошелька в другом?
Да, если оба поддерживают стандарт и используют совпадающие правила вывода адресов, и иногда адреса отображаются не сразу из-за разных путей деривации по умолчанию, и тогда нужный тип выбирается в настройках вручную.
Вердикт
Фраза — это запись случайного числа, а не набор символов от производителя: она работает в любом совместимом кошельке, а порядок слов критичен, и перестановка даёт другой кошелёк без всякого предупреждения. Контрольная сумма ловит опечатку, но не перестановку. И помните, что стандарт описывает кодирование, а не защиту: безопасность целиком зависит от того, как вы храните запись.
Стандарт проверяйте по первоисточнику. Официальное описание стандарта BIP-39 и справка Ledger по восстановлению кошелька содержат полный список слов и порядок процедур.
Обсуждение
Добавить комментарий