BIP39 добавляет ENT/32 бит checksum SHA-256, делит поток на 11-битные индексы списка из 2 048 слов и применяет PBKDF2-HMAC-SHA512, 2 048 итераций, к NFKD mnemonic/passphrase. 64 байта идут в BIP32; пути, accounts и scripts хранятся отдельно.
Авторы Palatinus, Rusnak, Voisine и Bowe; BIP39 назначен 10.09.2013, статус Deployed. Он переносит машинную случайность. Придуманная фраза — brainwallet. Узлы его не проверяют, в транзакции слов нет. [BIP 39 — Mnemonic code for generating deterministic keys]
ENT=128/160/192/224/256, CS=ENT/32 начальных бит SHA256, MS=(ENT+CS)/11 даёт 12/15/18/21/24 слова. 12 слов несут 128 случайных+4 контрольных бита, 24 — 256+8. Защита зависит от RNG. [BIP 39 — Mnemonic code for generating deterministic keys]
Каждые 11 бит выбирают одно из 2 048 упорядоченных слов. Это код потока, не отдельные keys; синоним меняет биты. Первые четыре буквы уникальны. Сортировка, перевод или догадка создают иные данные, иногда другую valid phrase. [BIP 39 — Mnemonic code for generating deterministic keys] [BIP 39 official wordlists]
Mnemonic/passphrase кодируются UTF-8 и NFKD. Диакритика может разлагаться; пробелы, порядок, регистр и каждый символ важны. Японские vectors это проверяют. Другая normalization даёт другой valid wallet. [BIP 39 — Mnemonic code for generating deterministic keys] [Trezor python-mnemonic reference implementation] [BIP 39 official test vectors]
PBKDF2: password=mnemonic, salt=‘mnemonic’+passphrase, HMAC-SHA512, 2 048 раундов, 64 байта. Без passphrase suffix пуст. Функция необратима. 2 048 раундов не спасают слабую passphrase после утечки слов. [BIP 39 — Mnemonic code for generating deterministic keys] [RFC 8018 — PBKDF2]
BIP39 заканчивается seed. BIP32 с ‘Bitcoin seed’ создаёт master key/chain code; BIP44/49/84/86 задают paths/scripts. Неверные account/change/gap/type показывают ноль. Нужны descriptor и wallet metadata. [BIP 32 — Hierarchical deterministic wallets] [BIP 44 — Multi-account hierarchy] [BIP 84 — Native SegWit derivation] [BIP 86 — Single-key Taproot derivation] [BIP 380 — Output script descriptors] [Bitcoin Core — Output descriptors]
Любая passphrase даёт valid seed, ошибки нет; опечатка открывает пустой wallet. Украденные слова позволяют offline перебор по публичной активности. Нужны высокая энтропия, trusted input и отдельный надёжный backup. [BIP 39 — Mnemonic code for generating deterministic keys] [Trezor — passphrases and hidden wallets]
Checksum: 4 бита для 12 слов, 8 для 24; случайный проход 1/16 либо 1/256. Он ловит часть ошибок, не исправляет/аутентифицирует; атакующий вычисляет валидный. Не вводите слова на online-сайте. [BIP 39 — Mnemonic code for generating deterministic keys]
Проверьте offline recovery до внесения средств. Сохраните порядок, точную passphrase, исходный wallet, derivation/script, multisig/descriptor. Фото, cloud, printer и clipboard раскрывают право траты. Бумага не от огня/воды, металл не от кражи. [BIP 380 — Output script descriptors] [Trezor — passphrases and hidden wallets] [Bitcoin Core — Output descriptors]
Неанглийские списки нежелательны из-за совместимости; перевод меняет seed. Native Electrum seeds не BIP39. Нет version/address type. SLIP39 — отдельный несовместимый threshold с 1 024 словами; деление BIP39 слов не Shamir. [BIP 39 — Mnemonic code for generating deterministic keys] [Electrum documentation — seed version system] [SLIP 39 — Shamir's Secret-Sharing for Mnemonic Codes]
Слова, контрольная сумма и seed
BIP 39 объединяет 128 бит энтропии с 4 контрольными битами: 132 бита образуют 12 групп по 11 бит, определяющих слова. PBKDF2-HMAC-SHA512 за 2 048 итераций выводит 512-битовый seed из нормализованной фразы и необязательной passphrase. Контрольная сумма не добавляет случайности.
Для полной картины прочитайте эту статью вместе с Seed Phrase, HD Wallet, BIP39 passphrase, Trezor, Bitcoin, BIP39 checksum. На эту статью также ссылаются Seed Phrase, HD Wallet, Cold Storage, Trezor.
01Входит ли BIP 39 в консенсус Bitcoin?+
Нет. Это соглашение кошельков для записи случайности и получения seed. Узлы Bitcoin проверяют транзакции и блоки, не зная, были ли ключи созданы с помощью BIP 39.
02Любая ли фраза из 12 или 24 слов совместима с BIP 39?+
Нет. Числа слов недостаточно: должны совпадать список и порядок, контрольная сумма, нормализация NFKD и получение seed. Для восстановления исходного кошелька также нужны правильная passphrase, если она использовалась, и соответствующие пути деривации и типы скриптов.