BIP-39 (Bitcoin Improvement Proposal 39) — спецификация, которая превратила абстрактные «256 бит случайности» в двенадцать или двадцать четыре английских слова, с помощью которых почти любой современный кошелёк делает резервную копию ключей. Авторы — Марек Палатинус, Павол Руснак, Аарон Войсин и Шон Боу, стандарт принят в 2013 году. Сегодня это фактический стандарт для Ledger, Trezor, Coldcard, Keystone, MetaMask, Rabby и десятков других кошельков.

Три вещи, которые стандартизировал BIP-39

Первое — словарь. Фиксированный английский список из 2048 слов, подобранных так, чтобы первые четыре буквы каждого слова были уникальны: это удобно, если выбивать фразу на небольших стальных пластинах, где полное слово не помещается. Есть словари и для других языков (японского, корейского, испанского, французского и нескольких других), но английский поддерживается шире всего и рекомендуется по умолчанию.

Второе — превращение случайности в слова. Кошелёк хеширует исходную случайность, добавляет биты контрольной суммы (один бит на каждые 32 бита случайности) и режет результат на 11-битные блоки; каждый блок — номер слова в словаре. Получается 12 слов для 128 бит, 15 — для 160, 18 — для 192, 21 — для 224 и 24 — для 256 бит.

Третье — превращение слов в seed. Слова пропускаются через PBKDF2-HMAC-SHA512 с 2048 итерациями, а необязательная парольная фраза служит солью. На выходе — 512-битный seed, из которого по путям деривации BIP-32 получаются приватные ключи.

Контрольная сумма, которая незаметно ловит ошибки

Если вы записали слова с ошибкой, контрольная сумма не сойдётся, и кошелёк откажется восстанавливаться. Одиночную замену слова в 12-словной фразе она пропускает лишь примерно в одном случае из 16 и почти всегда ловит замену нескольких слов. Это одна из самых недооценённых защит пользователя в криптовалюте — и причина, по которой «вроде бы записал правильно» можно хотя бы частично проверить на чистом устройстве.

Чем BIP-39 не является

BIP-39 — это не BIP-32 (дерево деривации) и не BIP-44 (структура путей для разных счетов и монет). Это три отдельных стандарта, которые работают вместе: BIP-39 превращает слова в seed, BIP-32 — seed в дерево ключей, BIP-44 раскладывает дерево по счетам и монетам. Почти каждый современный кошелёк поддерживает все три.

Оговорка: BIP-39 преобладает, но не универсален. Cardano использует другую схему (спецификация Icarus / Yoroi). Старые кошельки Solana работают с фразой напрямую, без шага деривации BIP-32. Перед переездом всегда проверяйте, что новый кошелёк использует ту же комбинацию BIP-39, BIP-32 и BIP-44.

Дополнительное чтение: Мнемоническая фраза, BIP-32, BIP-44, Путь деривации.