Двенадцать слов — это не пароль, и никто их не выбирал за их значение. Это число — то же самое число, которое описывалось в предыдущем уроке, — записанное так, чтобы человек мог его переписать вручную без ошибок. Замена цифр на слова ничего не ослабляет: это всего лишь форма записи.
Начало всего — это розыгрыш. Кошелек запрашивает у операционной системы или у чипа, специально предназначенного для этой задачи, 128 непредсказуемых битов. Этот набор битов — это энтропия, и это единственное, что в этом уроке должно оставаться секретным. Все остальное — это публичный рецепт.
Эти 128 битов затем разрезаются на куски по одиннадцать. Одиннадцать битов считаются от нуля до 2047, и именно поэтому в списке BIP-39 2048 слов: каждое слово — это имя числа из одиннадцати битов, и ничего больше. Двенадцать слов содержат в общей сложности 132 бита — 128 случайных и еще четыре, которые мы еще объясним.

Список был составлен с заметной тщательностью. Он упорядочен в алфавитном порядке, в нем нет двух похожих слов, и первые четыре буквы каждого слова уже отличают его от всех остальных — кто записал только четыре буквы, записал все слово. Стандарт был предложен в 2013 году Мареком Палатинусом, Паволом Руснаком, Аароном Вуазином и Шоном Боу, и с тех пор стал форматом, который понимает почти каждый кошелек в мире.
Оставшиеся четыре бита — это контрольная сумма, и здесь последнее слово перестает быть свободным. Вычисляется SHA-256 энтропии, берутся первые четыре бита результата, и они прикрепляются в конец перед разрезанием на одиннадцать. Поэтому двенадцатое слово не может быть любым: оно несет в себе проверку предыдущих одиннадцати. Фраза с одним неправильным словом отклоняется в пятнадцати из шестнадцати случаев, и это то сообщение, которое кошелек показывает, когда говорит, что семя недействительно.

Отсюда и причина, по которой порядок важен так же, как и слова. Фраза — это не набор, это последовательность. Два слова, поменявшиеся местами, образуют другое число, которое генерирует другой кошелек с другим балансом — почти всегда нулевым. Записать двенадцать слов в неправильном порядке — это то же самое, что записать номер телефона с перемешанными цифрами.
Последний шаг превращает фразу в семя, и он намеренно медленный. Слова, написанные текстом, вводятся в функцию, называемую PBKDF2, которая применяет HMAC-SHA-512 две тысячи сорок восемь раз подряд. Результат — это число из 512 битов: семя. Повторение существует, чтобы удорожить работу тем, кто пытается угадать фразы — каждая попытка стоит в две тысячи раз больше, чем стоила бы с одним проходом.

Обратите внимание на странное и важное следствие этого последнего шага. Вычисление использует текст слов, а не их положение в списке. Список служит для того, чтобы вы могли записать и проверить; семя выходит из букв. Именно поэтому фраза на итальянском или японском, которые также предусмотрены BIP-39, дает другое семя, чем что-либо на английском, и поэтому лишний пробел или другой акцент портят весь результат.
А что происходит, если не хватает одного слова? Случай не потерян, хотя и трудоемкий: для этой позиции есть 2048 возможностей, и контрольная сумма отбрасывает почти все. Инструменты восстановления делают это за секунды. Если не хватает двух или трех, количество комбинаций растет, и задача становится серьезной; если не хватает половины фразы, восстановления не существует. Это разница между неполной записью и потерянной записью — и это аргумент в пользу проверки бумаги до того, как она понадобится.
Это семя из 512 битов еще не является ключом. Это корень, из которого выходят тысячи ключей, организованных в дерево с адресами, которые кажутся заклинанием, типа m/84'/0'/0'/0/0. В следующем уроке мы разберем, что означает каждый символ этого пути.