Блокчейн/Уровень II · Механика/2.1 Криптография/Урок 7
Сид-фразы (BIP39)
Двенадцать слов, контрольная сумма и 512-битный сид, который контролирует всё
МатериалыСписок английских слов BIP39 (github.com/bitcoin/bips)Тетрадь
Любопытство
- Почему случайная последовательность битов превращается в двенадцать английских слов, а не остаётся в шестнадцатеричном виде?
- Что произойдёт с кошельком, если одно слово фразы заменить другим словом из того же списка?
- Как одни и те же двенадцать слов могут породить два совершенно разных кошелька?
Исследование
- BIP39, написанный в 2013 году разработчиками, в том числе командой аппаратного кошелька Trezor, преобразует исходную криптографическую энтропию в удобочитаемую мнемоническую фразу. Ручное копирование 32 или 64 шестнадцатеричных символов чревато ошибками; слова проще записать, прочитать вслух и сверить. Стандарт задаёт детерминированное соответствие между двоичными последовательностями и словами из фиксированного словаря, позволяя пользователям восстановить всю иерархию ключей, запомнив или записав короткий список.
- Процесс начинается с энтропии — случайной последовательности длиной 128, 160, 192, 224 или 256 бит. К ней добавляется контрольная сумма: первые N бит её хеша SHA-256, где N равно длине энтропии, делённой на 32. Для стандартной фразы из 12 слов (энтропия 128 бит) это 4 бита, для 24 слов (энтропия 256 бит) — 8 бит. Контрольная сумма позволяет программе кошелька сразу при импорте обнаружить большинство ошибок переписывания.
- Объединённая строка из энтропии и контрольной суммы делится на 11-битные сегменты, каждый из которых указывает на слово в английском списке BIP39 из 2 048 уникальных слов. Список составлен так, что никакие два слова не совпадают по первым четырём буквам, — это снижает неоднозначность при ручном переписывании. Поскольку последний сегмент включает часть контрольной суммы, случайно выбранные слова обычно не проходят проверку: лишь примерно 1 из 16 случайных последовательностей из 12 слов проходит проверку контрольной суммы (1 из 256 — для 24 слов).
- Чтобы получить сид, из которого генерируются ключи, мнемоническое предложение и необязательная парольная фраза подаются в PBKDF2-HMAC-SHA512 с 2 048 итерациями. Соль составляется из буквальной строки 'mnemonic', за которой следует парольная фраза (или просто 'mnemonic', если парольной фразы нет). Эта функция растяжения ключа выдаёт детерминированный 512-битный сид. Если используется парольная фраза, злоумышленник, завладевший всеми двенадцатью словами, всё равно не сможет получить сид без неё — при условии, что парольная фраза достаточно стойка к подбору.
- Этот механизм создаёт двухуровневую модель безопасности. Мнемоническая фраза обеспечивает возможность восстановления и базовое обнаружение ошибок, а парольная фраза служит слоем «скрытого кошелька». Некоторые пользователи держат небольшой кошелёк-приманку под одними словами, а основные средства — за парольной фразой. Однако это и источник риска потери: если парольная фраза забыта или утеряна, доступ к средствам утрачивается навсегда, поскольку восстановить её по одной лишь мнемонической фразе невозможно.
- Не все кошельки следуют BIP39: Electrum использует собственную схему, а SLIP-0039 разделяет секреты на доли Шамира для хранения несколькими сторонами. Тем не менее BIP39 остаётся доминирующим стандартом благодаря широкой совместимости с аппаратными устройствами и программными приложениями. Полученный здесь 512-битный сид служит корневыми входными данными для иерархической детерминированной деривации ключей по BIP32, а значит, каждый приватный ключ в кошельке в конечном счёте восходит к этой конкретной комбинации фразы и парольной фразы.
Ключевые факты
- BIP39 преобразует 128–256 бит энтропии вместе с контрольной суммой SHA-256 в 12–24 слова из списка, содержащего 2 048 слов.
- Английский список слов составлен так, что первые четыре буквы однозначно определяют каждое слово.
- PBKDF2-HMAC-SHA512 с 2 048 итерациями растягивает мнемоническую фразу и парольную фразу в 512-битный сид.
- Другая парольная фраза с той же мнемонической фразой создаёт совершенно другой, полностью рабочий кошелёк.
- Потеря мнемонических слов или связанной с ними парольной фразы приводит к безвозвратной потере доступа к средствам.
- SLIP-0039 — отдельный, несовместимый стандарт, который разделяет секрет на доли Шамира для порогового восстановления.
Упражнение девять, шесть, три, один
9СобратьПеречислите 9 кошельков или устройств для подписи и отметьте, использует ли каждое из них BIP39, собственную схему или SLIP-39.
6СгруппироватьРаспределите 9 вариантов по 6 группам по способу резервного копирования ключей: 12 слов, 24 слова, слова плюс парольная фраза, доли Шамира, конфигурация мультиподписи или другое.
3Выделить главноеСведите 6 групп к 3 компромиссам между простотой восстановления и защитой от кражи.
1КристаллизоватьНапишите одно предложение о том, почему последнее слово фразы BIP39 математически отличается от предыдущих одиннадцати.
Проверка фактов
Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.