Сид-фраза — это адаптированное для человека представление сида: длинного случайного числа, из которого выводятся все ключи кошелька. Двенадцать или двадцать четыре обычных слова — и есть весь ваш кошелёк. Основа: Что такое сид-фраза?.
При использовании кошелька с одной подписью сид-фраза — последний рубеж обороны: если она скомпрометирована, скомпрометированы и ваши биткоины.
Откуда взялся стандарт
Проблема, которую решает сид-фраза, старше самого стандарта. Если следовать лучшим практикам и генерировать новый адрес под каждый платёж, безопасное хранение и резервное копирование десятков отдельных приватных ключей быстро становится обременительным. Основа: Изобретаем Биткоин, глава 7.
- 2012 год, BIP-32 — предложение об иерархически детерминированных кошельках. Идея в том, что из одного случайного числа (сида) можно непрерывно генерировать огромное количество пар ключей. Резервировать нужно только один мастер-ключ.
- 2013 год, BIP-39 — резервное копирование стало ещё проще: вместо случайного числа ключи выводятся из случайного набора человекочитаемых слов.
Так появился привычный формат вида witch collapse practice feed shame open despair creek road again ice least. Записать такую строку на бумаге и положить в сейф может кто угодно; переписать без ошибок двоичную строку из ста с лишним нулей и единиц — уже нет.
Как устроена сид-фраза
Кошельки, следующие BIP-39, берут слова из списка длиной ровно в 2048 уникальных слов. Каждое слово представляет собой диапазон битов в том длинном случайном числе, которое является вашим сидом. Порядок слов — часть секрета.
Список составлен не случайно. Спецификация перечисляет три требования к идеальному словарю:
- первых четырёх букв достаточно для однозначного определения слова — поэтому при хранении сид-фразы можно записывать только их и порядок;
- похожие слова исключены — пары вроде build / built или woman / women не только труднее запомнить, но и чаще приводят к ошибкам;
- список отсортирован — это позволяет реализациям использовать двоичный поиск вместо линейного.
Слова могут содержать национальные символы, но должны быть закодированы в UTF-8 в форме нормализации NFKD.
Важное практическое предупреждение из самого стандарта: поскольку подавляющее большинство кошельков поддерживает только английский словарь, использовать локализованные списки настоятельно не рекомендуется.
Из сида разворачивается вся остальная конструкция:
- Сид используется для генерации приватного мастер-ключа.
- Мастер-ключ лежит в основе остальных приватных ключей.
- Приватные ключи порождают соответствующие публичные ключи.
- Публичные ключи используются по отдельности или в сочетании с другими (мультиподпись) для построения биткоин-адресов.
Обратите внимание на направление: процесс односторонний и полностью детерминированный. Одна и та же сид-фраза всегда даёт один и тот же набор адресов — это и есть «детерминированность» в HD-кошельке.
12 или 24 слова
Оба варианта поддерживаются стандартом, и оба безопасны. Разница — в запасе прочности и в трудоёмкости резервного копирования.
Практическая рекомендация из гида по SeedSigner: 24 слова надёжнее, но с ними придётся больше повозиться при переносе резервной копии.
Этот запас прочности не декоративный, и стоит понимать, зачем он нужен. Число слов задаёт ёмкость кодировки, но не гарантирует, что она заполнена настоящей случайностью. На практике источник энтропии почти всегда чуть хуже идеального: кость слегка несбалансирована, грани скруглены, бросок вышел вялым. Каждый такой изъян снижает энтропию на бросок — и вместо расчётных 256 бит вы получаете, скажем, 230. Снаружи фраза при этом выглядит абсолютно так же.
Вот здесь запас и решает. Просевшие 230 бит всё равно несопоставимо больше, чем 128 бит безупречно сгенерированного сида из 12 слов: разница между ними — множитель порядка 10³⁰. Иными словами, двадцать четыре слова на неидеальной кости надёжнее, чем двенадцать на идеальной.
Отсюда практический вывод: экономить здесь время и усилия не стоит. Разовое неудобство при переносе резервной копии покупает постоянный запас, который однажды может оказаться решающим.
Разница видна и на технической стороне. При резервном копировании сида в виде QR-кода размеры отличаются заметно:
| Количество слов | Формат | Размер сетки |
|---|---|---|
| 12 | стандартный | 25 × 25 |
| 12 | компактный | 21 × 21 |
| 24 | стандартный | 29 × 29 |
| 24 | компактный | 25 × 25 |
Стандартный QR хранит сид в виде двенадцати или двадцати четырёх четырёхзначных чисел — индексов слов в списке BIP-39. Это делает его читаемым любым биткоин-кошельком, что удобно при восстановлении и опасно при хранении: отсканировать такой код камерой может кто угодно. Компактный формат хранит те же данные в двоичном виде, не распознаётся обычными сканерами и потому лучше подходит для бумажного или металлического бэкапа.
Сколько бит в сид-фразе
Длина фразы — это не эстетический выбор, а прямое следствие объёма закодированной энтропии:
| Энтропия | Контрольная сумма | Всего бит | Слов |
|---|---|---|---|
| 128 | 4 | 132 | 12 |
| 160 | 5 | 165 | 15 |
| 192 | 6 | 198 | 18 |
| 224 | 7 | 231 | 21 |
| 256 | 8 | 264 | 24 |
Именно эти 128 или 256 бит и есть весь ваш кошелёк — всё остальное производно.
Арифметика сходится ровно: контрольная сумма занимает (длина энтропии / 32) бит, сумма режется на отрезки по 11 бит, и каждый отрезок отображается в слово из списка. 132 / 11 = 12 слов, 264 / 11 = 24. Отсюда же видно, что 12 и 24 — не единственные допустимые длины: стандарт задаёт и промежуточные варианты.
Из таблицы следует важное практическое правило: число слов говорит о ёмкости кодировки, а не о качестве содержимого. Двенадцать слов, кодирующих 128 бит, безопасны только если эти 128 бит действительно случайны.
Как мнемоника превращается в сид
Слова — не сам сид, а его кодировка. Полный путь из девяти шагов задан BIP-39:
- Сгенерировать случайную последовательность длиной 128–256 бит.
- Взять первые (длина / 32) бит от её SHA-256 — это контрольная сумма.
- Приписать контрольную сумму в конец.
- Разрезать результат на отрезки по 11 бит.
- Отобразить каждый 11-битный отрезок в слово из словаря на 2048 слов.
- Последовательность слов и есть сид-фраза.
- Подать энтропию на вход функции удлинения ключа PBKDF2.
- Вторым параметром подать соль: строковую константу
"mnemonic", к которой присоединена необязательная парольная фраза. - PBKDF2 выполняет 2048 раундов хеширования HMAC-SHA512 и выдаёт 512-битное значение. Это и есть сид.
Функция удлинения ключа замедляет перебор программными средствами, но на специализированное оборудование влияет слабо. Её польза не в защите всей фразы целиком — 128 бит и так достаточно, — а в случае, когда атакующий узнал небольшую часть вашей фразы: тогда каждая проверка кандидата обходится ему дороже. Параметры BIP-39 считались слабыми по современным меркам уже на момент публикации, что было следствием требования работать на маломощных процессорах аппаратных подписывающих устройств.
Существенное следствие девятого шага: парольная фраза входит в соль, а не в контрольную сумму. Поэтому любая парольная фраза даёт валидный сид, и ошибиться в ней нельзя — можно лишь получить другой кошелёк. Сама спецификация называет это свойство правдоподобным отрицанием: каждая парольная фраза порождает валидный сид, но только правильная открывает нужный кошелёк.
Ещё одна деталь, объясняющая логику стандарта: преобразование мнемоники в сид полностью независимо от процедуры её генерации. Формально можно взять любую последовательность слов — но стандарт требует, чтобы программа вычислила контрольную сумму и предупредила, если она не сходится.
Признанные недостатки
Авторы стандарта перечисляют слабые места сами:
- Сид зависит от словаря. Преобразование использует саму фразу, а не исходную энтропию, поэтому перевод мнемоники на другой язык даёт совершенно другой сид.
- Преобразование одностороннее. Произвольный сид BIP-32 нельзя представить фразой BIP-39 — только наоборот.
- Контрольная сумма короткая. Она даёт лишь умеренные шансы поймать случайную ошибку: примерно одна ошибка из 256 пройдёт незамеченной. Исправлять ошибки она не умеет вовсе.
- Нет схемы версионирования. Изначально не было способа понять, какой формат адресов использовать с данным ключом; сегодня это во многом решается дескрипторными кошельками.
Преемником, исправляющим часть этих проблем, авторы называют SLIP-0039.
Контрольная сумма
Контрольная сумма — не отдельный довесок, а часть тех самых 132 или 264 бит: энтропия нарезается на слова по правилам BIP-39, и последнее слово содержит контрольную сумму. Именно поэтому при вводе слов кошелёк способен сказать, что вы ошиблись, — случайный набор из 2048 слов почти наверняка не образует валидную мнемонику.
Из этого следуют два практических факта:
- Устройство, которому вы задаёте энтропию вручную, рассчитывает контрольную сумму за вас. SeedSigner именно так и работает: вы бросаете кости, устройство считает контрольную сумму и выдаёт готовую фразу. У него есть и отдельный инструмент для вычисления контрольной суммы существующего сида.
- Опечатка в последнем слове почти всегда обнаруживается сразу — но опечатка в середине фразы может дать другую валидную мнемонику, то есть другой кошелёк. Поэтому проверять нужно не «принял ли кошелёк слова», а совпал ли адрес.
Может ли кто-то угадать сид
Это распространённое заблуждение: «это же всего двенадцать слов». Однако угадать фразу из двенадцати слов в правильном порядке — всё равно что угадать число от единицы до 5 444 517 900 000 000 000 000 000 000 000 000 000 000.
Число находится примерно в той же области, что и предполагаемое количество атомов в видимой Вселенной. Самым мощным суперкомпьютерам мира потребовалось бы неисчислимое время, чтобы подобрать сид простым перебором комбинаций.
Здесь важна оговорка, без которой этот вывод неверен: он справедлив только если слова действительно случайны. Пространство в 2048¹² существует лишь тогда, когда сид взят из источника с достаточной энтропией. Если генератор случайных чисел выдал предсказуемое число, слова всё равно будут выглядеть нормально, контрольная сумма сойдётся, адрес сгенерируется, но реальное пространство перебора окажется на много порядков меньше заявленного. Слова не несут информации о том, насколько случайным было число, которое они кодируют.
Это не умозрительный сценарий. В 2026 году ошибка в сборке прошивки COLDCARD увела генерацию сида на программный запасной генератор, и реальное пространство поиска сжалось со 128 бит примерно до сорока — при внешне безупречных двенадцати словах. Разбор: инцидент с ГСЧ COLDCARD.
Совместимость и восстановление
Сид-фраза совместима с кошельками любых производителей, поддерживающими BIP-39. Это ключевое свойство: при должном хранении сида аппаратный кошелёк перестаёт быть единой точкой отказа — если с устройством что-то случится, доступ восстанавливается в любом другом кошельке.
Производитель оборудования всегда может допустить ошибку, которая скомпрометирует ваши средства, или внести изменения в программное обеспечение, доставляющие неудобства при самостоятельном хранении. Сид-фраза даёт выход из обеих ситуаций.
Оговорки:
- Не все аппаратные кошельки используют BIP-39, а часть тех, кто использует, делает это не вполне корректно или плохо документирует процедуры резервного копирования и восстановления. Сверяться стоит с ресурсом WalletsRecovery.
- Кошелёк Electrum применяет собственный подход к генерации сид-фраз. Восстановить созданные им кошельки можно во множестве приложений, а сам Electrum поддерживает восстановление кошельков стандарта BIP-39.
Отпечаток кошелька (XFP)
После создания сид-фразы устройство показывает отпечаток — восемь букв и цифр, однозначно идентифицирующих этот кошелёк. Его следует записать рядом с сид-фразой.
Отпечаток решает практическую задачу: он позволяет убедиться, что вы работаете с тем самым ключом. Это особенно важно при использовании парольной фразы — при её добавлении отпечаток меняется, потому что это, по сути, совершенно новый кошелёк. Проверяйте соответствие отпечатка при каждом вводе парольной фразы.
При экспорте публичного ключа в наблюдающий кошелёк устройство показывает три вещи: отпечаток, путь деривации и xpub. Все три нужны программному кошельку, чтобы правильно вывести ваши адреса — сама по себе сид-фраза не говорит, в какой ветке дерева искать. Разбор этой конструкции — на странице HD-кошельки: BIP-32 и пути деривации.
Изменить фразу нельзя
Существующую сид-фразу изменить невозможно. Единственный способ — создать новый кошелёк с новой сид-фразой и переместить средства на него.
Если сид-фраза скомпрометирована — или есть основания считать, что она создана из ненадёжного источника случайности, — переносить средства нужно как можно быстрее. Иначе контроль над ними будет утерян. Разумная практика: подготовить запасной кошелёк заранее, чтобы в форс-мажоре не генерировать ключи в стрессе.
Хранение и альтернативные схемы
Сид-фраза — это резервная копия, и обращаться с ней нужно соответственно. Подробные рекомендации — в материале о безопасности сид-фраз и на странице хранение биткоинов.
Ключевые модели самостоятельного хранения:
- Одна подпись — одна сид-фраза, одна физическая резервная копия. Наиболее распространённая и наиболее уязвимая схема.
- Одна подпись + парольная фраза — промежуточный вариант; повышает защиту от кражи, но не устраняет единую точку отказа при потере.
- Мультиподпись — несколько ключей по схеме
m-из-n; компрометация одной сид-фразы не угрожает средствам. - Схема разделения секрета Шамира (SSSS) — сид-фраза разделяется на набор шардов по стандарту SLIP-0039 (использующему словарь, отличный от BIP-39). Восстановление требует собрать определённое количество частей.
Отдельная возможность — BIP-85: генерация дочерних сид-фраз на основе мастер-сида. Так можно создать до 10 000 новых кошельков, каждый из которых восстанавливается из одного основного сида. Функцию поддерживают COLDCARD и SeedSigner.
Пробелы
Использованные источники задают критерии составления словаря, но не разбирают, как конкретно отбирались эти 2048 английских слов и как устроены локализованные списки. Не разобран и формат SeedQR, упоминаемый здесь как практика резервного копирования.
Источники
- Что такое сид-фраза?
- Как обезопасить свои сид-фразы?
- SeedSigner: аппаратный кошелёк своими руками
- Что такое Coldcard?
- Сравнение аппаратных кошельков
- Изобретаем Биткоин — глава 7
- Сид на костях: как создать ключ, не доверяя генератору
- Mastering Bitcoin, 3rd edition — Chapter 5: Wallet Recovery (CC BY-SA 4.0)
- BIP-39: Mnemonic code for generating deterministic keys (MIT)