Большинство владельцев Ledger Nano в какой-то момент начинают задаваться вопросом, есть ли возможность настроить их фразу восстановления. Некоторые могут пойти еще дальше и попытаться использовать случайно выбранные слова в процессе восстановления. В таких случаях после подтверждения последнего слова они почти наверняка увидят сообщение:

"Recovery phrase is invalid, retry"

Означает ли это, что создание нового кошелька с собственным набором слов невозможно?
И вот приятный сюрприз: это возможно, хотя и с определённым ограничением. Но давайте начнем с самого начала.

Первым ограничением является требование о том, чтобы все слова находились в стандартном списке BIP39. (Предложение по улучшению Биткойна — номер 39). Подробнее узнать о том, что такое предложения по улучшению Bitcoin, можно в этой статье Википедии. BIP39 — это не что иное, как набор из 2048 слов, выбранных таким образом, что первые 4 буквы каждого слова уникальны. Это правило применимо даже к трехбуквенным словам. Это свойство облегчает их запоминание при создании последовательности из нескольких слов, которая и является вашим начальным числом.

Второе ограничение — это требование к последнему слову вашей последовательности. Это определенная контрольная сумма, определяемая всеми остальными элементами последовательности, и вы не можете просто выбрать его самостоятельно. Именно поэтому мы видим сообщение об ошибке каждый раз, когда мы пытаемся ввести случайно выбранные слова в качестве начального значения для нашего Ledger Nano. Обычно условию контрольной суммы соответствует более чем одно слово; однако шанс найти действительный вариант, просто угадав, невероятно мал. Количество слов, удовлетворяющих условию контрольной суммы, строго связано с общим количеством начальных слов. В случае начального числа из 24 слов (наиболее безопасный вариант) всегда есть ровно 8 возможных слов, которые могут служить контрольной суммой. Таким образом, вероятность случайного извлечения действительного слова из набора BIP39 из 2048 слов составляет ровно 8 в 2048 году, или всего 0,39%. Неудивительно, что вы увидели сообщение об ошибке.

Тогда как мы можем найти правильную контрольную сумму для выбранной нами последовательности? Например, возьмем случайный набор из 23 слов, соответствующих стандарту BIP39:

У каждого слова есть индекс, который представляет собой число, основанное на его алфавитном порядке. Важно начинать нумерацию с 0. Затем каждый индекс должен быть выражен как двоичное значение. Поскольку список BIP39 содержит 2048 элементов, индекс каждого слова должен состоять из 11 бит. Таким образом мы находим:

amount
00001000000
bone
00011001010
ceiling
00100100111
cake
00100000010
cause
00100100100
cost
00110000101
credit
00110011000
cupboard
00110101110
dinosaur
00111110011
dragon
01000010000
drum
01000011100
error
01001100110
fault
01010011111
fatal
01010011100
fog
01011010010
foam
01011010000
hold
01101100100
green
01100110010
hold
01101100100
kick
01111010001


На следующем шаге мы объединяем все индексы, сохраняя порядок их появления. Это дает нам 253-битную двоичную последовательность:

0000100000011111111101000110001100001100101000100100111001000000100010010010000110000101001100110000011010111000111110011010000100000100001110001001100110010100111110101001110001011010010010110100000110110010001100110010011011001000111100000101111010001

Полученный результат дополняем дополнительными 3 битами по своему выбору. Помните, мы говорили, что фраза восстановления из 24 слов имеет ровно 8 возможных результатов контрольной суммы? Число 8 — это всего лишь простое следствие этих трех битов. Все 8 результатов мы получим, просто поместив здесь 000, 001, 010, 011, 100, 101, 110 и 111.
Для этого примера мы выбираем: 000.
В конце мы объединяем его, в результате чего получается 256-битное двоичное слово:

0000100000011111111101000110001100001100101000100100111001000000100010010010000110000101001100110000011010111000111110011010000100000100001110001001100110010100111110101001110001011010010010110100000110110010001100110010011011001000111100000101111010001000

Следующим шагом является вычисление хеша SHA256 таких подготовленных двоичных данных. Алгоритм SHA256 (алгоритм безопасного хеширования, 256-битный вывод) является важной частью технологии блокчейн. Подробнее о том, что такое SHA256, можно узнать в статье Википедии об алгоритме SHA-256.
В результате такого расчета мы получим следующее шестнадцатеричное слово:

Следующий шаг — извлечь первые 8 бит из приведенного выше результата. Таким образом, мы берем первые 2 шестнадцатеричных символа - 27.
Они соответствуют:

Мы снова используем те же 3 бита, которые выбрали ранее. На этот раз мы соединяем их в начале извлеченной двоичной строки. Следовательно, мы получаем:

это двоичное значение 39. Это индекс BIP39 слова контрольной суммы, которое мы пытаемся найти. Не забывайте, что нумерация индексов начинается с «0». Итак, если вы используете список слов BIP39 со стандартной нумерацией, начинающейся с "1", тогда фактический индекс будет 40. Мы находим правильный индекс на Список BIP39 и мы получаем слово: agent Наконец, фраза восстановления из 24 слов, содержащее 23 слова по нашему выбору :

Для остальных 3-битных комбинаций последнее слово контрольной суммы:

001
coil
010
faculty
011
hospital
100
middle
101
recall
110
ten
111
tragic

Калькулятор семян:

Используйте ТОЛЬКО для тестирования и образовательных целей.
Заполните текстовое поле 23 словами, соответствующими BIP39 стандарт:

подробнее о нестандартных фразах восстановления...

custom seed generation

Стоит ли настроить фразу восстановления?

Начнем с того, что производитель не предоставляет такой возможности. И это не случайно. Безопасная фраза восстановления — это то, о котором никто не может угадать. Если да, то оно должно быть объективно случайным. читать...

offline security vault

Как это сделать безопасным способом?

При поиске решения приходится соблюдать два противоречивых условия – последовательность должна быть мнемонической, но в то же время совершенно случайной. Невозможный? Не обязательно. читать...