Открыть сервис

BIP-39

BIP-39 (Bitcoin Improvement Proposal 39) — это стандарт, определяющий способ генерации мнемонической фразы (набора легко запоминающихся слов) для восстановления детерминированных кошельков в криптовалютах. Он был предложен разработчиками Мареком Палатинусом, Павлом Руснаком, Аароном Воисом и Шоном Брайаном в 2013 году и принят как часть экосистемы Биткойна, а затем и многих других криптовалют. Основная цель BIP-39 — заменить сложные последовательности шестнадцатеричных или двоичных чисел (сид-фразы) на читаемый и удобный для записи человеком набор слов, что снижает риск ошибок при хранении и восстановлении доступа к средствам.

История и контекст

До появления BIP-39 восстановление доступа к криптовалютным кошелькам требовало хранения приватных ключей в виде длинных строк символов, что было неудобно и подвержено ошибкам. В 2012 году был предложен BIP-32 (иерархические детерминированные кошельки), который позволил генерировать множество ключей из одного начального значения (сида). Однако сид по-прежнему оставался числом. BIP-39, опубликованный 10 сентября 2013 года, стал решением для кодирования этого числа в мнемоническую фразу. Стандарт был включён в Bitcoin Core начиная с версии 0.6.0 и быстро распространился на другие проекты, включая Ethereum, Litecoin и многие альткойны.

Принцип работы

BIP-39 основан на использовании заранее определённого словаря (словника) из 2048 слов. Процесс генерации мнемонической фразы включает несколько этапов:

  1. Генерация энтропии: Сначала создаётся случайная последовательность битов (энтропия) длиной от 128 до 256 бит, кратная 32 битам. Чем больше бит, тем выше криптографическая стойкость, но длиннее фраза.
  2. Вычисление контрольной суммы: К энтропии добавляется контрольная сумма (первые несколько бит хеша SHA-256 энтропии). Длина контрольной суммы равна длине энтропии, делённой на 32 (например, для 128 бит — 4 бита).
  3. Разделение на группы: Полученная последовательность битов (энтропия + контрольная сумма) делится на группы по 11 бит. Каждая группа представляет собой число от 0 до 2047.
  4. Сопоставление со словарём: Каждое число используется как индекс для выбора слова из словаря BIP-39. В результате получается последовательность слов, которая и является мнемонической фразой.

Например, энтропия в 128 бит даёт 12 слов, 160 бит — 15 слов, 192 бита — 18 слов, 224 бита — 21 слово, 256 бит — 24 слова. Контрольная сумма позволяет обнаружить ошибки при вводе фразы.

Словарь BIP-39

Словарь BIP-39 состоит из 2048 слов, отобранных на основе нескольких критериев:

  • Слова легко запоминаются и не слишком длинны (обычно 4–8 букв).
  • Слова не имеют похожих написаний, чтобы избежать путаницы (например, «abandon» и «abandoned» не включены одновременно).
  • Словарь доступен на нескольких языках: английском, китайском (упрощённом и традиционном), французском, итальянском, японском, корейском, испанском, чешском, португальском, русском и других. Однако английский является наиболее распространённым и рекомендуется для совместимости.

Каждое слово в словаре уникально и имеет фиксированный индекс. Например, слово «abandon» имеет индекс 0, «ability» — 1, «aboard» — 2 и так далее. Это позволяет однозначно преобразовывать числа в слова и обратно.

Применение

BIP-39 используется в большинстве современных криптовалютных кошельков, включая аппаратные (Ledger, Trezor), программные (Electrum, MetaMask) и мобильные приложения. Основные сценарии:

  • Создание нового кошелька: Пользователю предлагается записать мнемоническую фразу, которая затем используется для генерации всех ключей кошелька через BIP-32.
  • Восстановление доступа: При потере устройства или переустановке приложения фраза вводится для восстановления всех средств.
  • Перенос между кошельками: Фраза, созданная в одном кошельке, может быть импортирована в другой, поддерживающий тот же стандарт.

Критика и ограничения

Несмотря на широкое распространение, BIP-39 имеет несколько недостатков:

  • Уязвимость к физическому доступу: Если злоумышленник получает физический доступ к записанной фразе, он может украсть все средства. Поэтому рекомендуется хранить фразу в безопасном месте, например, в сейфе.
  • Отсутствие защиты от социальной инженерии: Пользователи могут быть обмануты и раскрыть фразу мошенникам.
  • Ограниченная длина энтропии: Максимальная энтропия в 256 бит считается достаточной для криптографической стойкости, но некоторые эксперты считают, что для долгосрочного хранения может потребоваться больше.
  • Зависимость от словаря: Если словарь изменён или нестандартен, восстановление может стать невозможным. Однако BIP-39 является открытым стандартом, и его словарь зафиксирован.

Альтернативы и развитие

Существуют другие стандарты мнемонических фраз, такие как BIP-32 (использует сид в виде числа), SLIP-39 (Shamir’s Secret Sharing, позволяющий разделить фразу на несколько частей) и Electrum Seed (собственный формат кошелька Electrum). BIP-39 остаётся наиболее популярным благодаря простоте и совместимости.

В 2020-х годах появились предложения по улучшению, например, BIP-39 с дополнительной фразой-паролем (passphrase), которая добавляет дополнительный уровень защиты: даже если злоумышленник знает мнемоническую фразу, без пароля он не сможет получить доступ к средствам.

Примеры

  • 12-словная фраза: «abandon ability able about above absent absorb abstract absurd abuse access accident» (энтропия 128 бит).
  • 24-словная фраза: «zoo zero zone zoom zoom zoom zoom zoom zoom zoom zoom zoom» (энтропия 256 бит, контрольная сумма включена).

Интересные факты

  • Слово «abandon» (индекс 0) часто используется в тестовых фразах, так как оно первое в словаре.
  • BIP-39 не является частью протокола Биткойна, а лишь рекомендацией для кошельков, что позволяет разработчикам реализовывать его по-своему.
  • В 2023 году было обнаружено, что некоторые кошельки используют нестандартные словари, что приводит к несовместимости.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →