1. Главная
  2. / Как работает BIP39

Как работает BIP39: от энтропии к словам

Посмотрите, как случайные биты становятся сид-фразой: энтропия, её контрольная сумма SHA-256, группы по 11 бит и слова, на которые они указывают. Начните с официального тест-вектора или создайте новую тестовую энтропию.

Длина фразы

Только для обучения: никогда не вводите здесь энтропию или слова настоящего кошелька.

Шаг 1. Энтропия

128 случайных бит, разбитых на группы по 11. Последняя группа пока неполная: её дополнит контрольная сумма.

00000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000····

Шаг 2. Контрольная сумма

SHA-256 от энтропии. Первые 4 бит хеша становятся контрольной суммой и дописываются к энтропии.

SHA-256
374708fff7719dd5979ec875d56cd2286f6d3cf7ec317a3b25632aab28ec37bb
Контрольная сумма (4 бит)
0011

Шаг 3. Группы по 11 бит

Каждая группа — число от 0 до 2047, номер слова в списке. Наведите на группу или нажмите на неё, чтобы увидеть её биты выше.

Шаг 4. Фраза

Слова по порядку и есть мнемоническая фраза. Затем кошелёк превращает её в сид с помощью PBKDF2.

abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about

Тестовая фраза: никогда не отправляйте на неё средства.

Посмотреть её сид и ключи в конвертереПроверить фразу по контрольной сумме

Четыре шага BIP39

Спецификация BIP39 превращает случайное число в слова за четыре шага, одинаковых во всех совместимых кошельках:

  1. Энтропия. Кошелёк берёт от 128 до 256 случайных бит с шагом 32. Это число, ENT, и есть весь секрет.
  2. Контрольная сумма. Кошелёк хеширует энтропию функцией SHA-256 и берёт первые ENT/32 бит хеша — это CS. Для 128 бит энтропии получается 4 бита.
  3. Группы. Контрольная сумма дописывается к энтропии, и результат режется на группы по 11 бит. Каждая группа — число от 0 до 2047.
  4. Слова. Каждое число — номер слова в списке из 2048 слов, считая с нуля. Слова по порядку и есть мнемоническая фраза.
СловЭнтропия (ENT)Контрольная сумма (CS)Всего бит
12128 бит4 бит132 = 12 × 11
15160 бит5 бит165 = 15 × 11
18192 бит6 бит198 = 18 × 11
21224 бит7 бит231 = 21 × 11
24256 бит8 бит264 = 24 × 11

Почему последнее слово особенное

Контрольная сумма всегда оказывается в конце, внутри последнего слова. В фразе из 12 слов последнее слово содержит 7 бит энтропии и 4 бита контрольной суммы, поэтому, когда первые 11 слов уже выбраны, закончить фразу могут только 128 слов из 2048. В тест-векторе выше SHA-256 от 16 нулевых байтов начинается с 0x37, в двоичном виде 0011 0111, значит, контрольная сумма равна 0011, а последний номер — 3, то есть about. Калькулятор последнего слова покажет все допустимые окончания для тестового начала фразы, а проверка сид-фразы проверит контрольную сумму целой фразы.

От слов к сиду

Слова не используются как ключ напрямую. Кошелёк пропускает фразу через PBKDF2-HMAC-SHA512 с 2048 итерациями, а солью служит текст mnemonic плюс необязательная парольная фраза; получается 512-битный сид. По BIP32 из сида получается главный ключ, а путь деривации выбирает ключи для каждого счёта и адреса. Все эти значения для тестовой фразы показывает конвертер сид-фразы в приватный ключ.

Тест-векторы для проверки

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

Энтропия (hex)Мнемоническая фраза
00000000000000000000000000000000abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about
7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7flegal winner thank year wave sausage worth useful legal winner thank yellow
80808080808080808080808080808080letter advice cage absurd amount doctor acoustic avoid letter advice cage above
ffffffffffffffffffffffffffffffffzoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong
0000…0000 (256 бит)23 раза abandon, затем art

Самое рискованное — создавать энтропию самому: люди плохо придумывают случайные числа. Сколько слов выбрать, разбирает статья 12 или 24 слова, а что такое сама сид-фраза — статья что такое сид-фраза.

Как работает BIP39 — частые вопросы

Почему в BIP39 ровно 2048 слов?

Потому что 2048 — это 2 в 11-й степени, и одно слово хранит ровно 11 бит. Энтропия вместе с контрольной суммой всегда даёт число бит, кратное 11: 132 бита для 12 слов и 264 для 24.

Контрольная сумма защищает фразу?

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

Можно ли сделать фразу из своей энтропии?

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

В других языках всё так же?

Да. Биты и номера те же, отличается только список из 2048 слов. Номер 0 — это abandon в английском и ábaco в испанском, поэтому одна и та же энтропия даёт на разных языках разные фразы и разные сиды. Русского списка в BIP39 нет.