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 слов. Процесс генерации мнемонической фразы включает несколько этапов:
- Генерация энтропии: Сначала создаётся случайная последовательность битов (энтропия) длиной от 128 до 256 бит, кратная 32 битам. Чем больше бит, тем выше криптографическая стойкость, но длиннее фраза.
- Вычисление контрольной суммы: К энтропии добавляется контрольная сумма (первые несколько бит хеша SHA-256 энтропии). Длина контрольной суммы равна длине энтропии, делённой на 32 (например, для 128 бит — 4 бита).
- Разделение на группы: Полученная последовательность битов (энтропия + контрольная сумма) делится на группы по 11 бит. Каждая группа представляет собой число от 0 до 2047.
- Сопоставление со словарём: Каждое число используется как индекс для выбора слова из словаря 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 →