1. Главная
  2. / BIP39 по-русски
  3. / Что такое сид-фраза (seed-фраза) и как она работает
Опубликовано

Что такое сид-фраза (seed-фраза) и как она работает

Сид-фраза — это 12–24 слова, обычно английских, которые криптокошелёк показывает при создании и просит записать. Её называют также seed-фразой, мнемонической фразой, фразой восстановления или секретной фразой. Из этих слов вычисляются все приватные ключи и адреса кошелька, поэтому сид-фраза — не пароль от кошелька, а сам кошелёк: кто знает слова, тот распоряжается средствами с любого устройства. Разберём, как сид-фраза устроена по стандарту BIP39, как из случайного числа получаются слова, а из слов — ключи, почему в ней нет русских слов и как с ней обращаться.

Сид-фраза простыми словами

Монеты записаны в блокчейне, а кошелёк хранит ключи, которыми подписываются переводы. Чтобы не делать резервную копию каждого ключа отдельно, кошелёк выводит все ключи из одного случайного секрета, а сам секрет записывает словами: слова проще переписать без ошибок, чем длинное шестнадцатеричное число. Так устроен стандарт BIP39, описанный в 2013 году. Ему следует большинство кошельков.

Английское seed означает «семя»: из одного числа, как из зерна, вырастает целое дерево ключей. Строго говоря, сидом в BIP39 называют 512-битное число, которое кошелёк вычисляет из слов, а сами слова — мнемоникой. В обиходе же «сид», «сид-фраза» и «мнемоника» означают одно и то же.

Чем сид-фраза отличается от обычного пароля:

Пароль от аккаунтаСид-фраза
Кто создаётВы самиКошелёк, из случайных чисел
Что открываетОдин аккаунт в одном сервисеВсе адреса кошелька в любом совместимом приложении
Можно ли сброситьДа, через поддержку сервисаНет
Если узнал постороннийДостаточно сменить парольНужно перевести средства в новый кошелёк

Пароль или PIN-код приложения защищает кошелёк только на одном устройстве, а на новом телефоне кошелёк восстанавливают именно по сид-фразе. Если же монеты лежат на бирже, сид-фразы от них у вас нет: ключами управляет биржа, а вход в аккаунт защищают пароль и двухфакторная аутентификация.

Как работает сид-фраза

BIP39 описывает два этапа: как превратить случайность в слова и как превратить слова в ключи.

  1. Энтропия. Кошелёк берёт у криптографического генератора от 128 до 256 случайных бит. Это и есть секрет.
  2. Контрольная сумма. От энтропии вычисляется хеш SHA-256, и его первые биты дописываются в конец — по одному биту на каждые 32 бита энтропии.
  3. Слова. Все биты делятся на группы по 11. Каждая группа — число от 0 до 2047, то есть номер слова в списке из 2048 слов: от abandon (0) до zoo (2047).
  4. Сид. Чтобы получить ключи, кошелёк пропускает фразу через функцию PBKDF2-HMAC-SHA512 с 2048 итерациями. Паролем служат сами слова, солью — строка «mnemonic» плюс необязательная парольная фраза. Результат — 512-битный сид.
  5. Ключи. Из сида по стандарту BIP32 получается корневой ключ, а из него — дерево приватных ключей. Положение каждого ключа в дереве задаёт путь деривации: например, m/44'/0'/0'/0/0 — первый адрес Bitcoin по BIP44. Подробнее — в статье о том, что такое путь деривации.

Длина фразы зависит от объёма энтропии:

СловЭнтропияКонтрольная сумма
12128 бит4 бита
15160 бит5 бит
18192 бита6 бит
21224 бита7 бит
24256 бит8 бит

Из этой схемы следуют три практических вывода.

  • Последнее слово случайно лишь отчасти. В фразе из 12 слов оно несёт 7 случайных бит и 4 бита суммы, поэтому после любых 11 слов фразу правильно завершают только 128 слов из 2048. Придуманные человеком 12 слов проходят проверку примерно в одном случае из 16.
  • Опечатку кошелёк обычно замечает. Неверное слово, как правило, ломает контрольную сумму, и кошелёк сообщает об ошибке. Но сумма короткая: в фразе из 12 слов примерно одна случайная ошибка из 16 проходит проверку незамеченной.
  • Подобрать фразу невозможно. Возможных фраз из 12 слов 2¹²⁸, это около 3,4 × 10³⁸. Средства теряют не из-за перебора, а из-за слабых генераторов случайности и небрежного обращения с фразой.

Вот официальная тестовая фраза стандарта BIP39: «abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about». Она получена из энтропии, состоящей из одних нулей. Первые одиннадцать номеров равны нулю, то есть это слово abandon, а последнее слово about (номер 3) сложилось из оставшихся нулевых бит и контрольной суммы. Тестовые фразы опубликованы, поэтому хранить на них средства нельзя. Зато с ними можно посмотреть, как из слов получаются ключи и адреса, в конвертере сид-фразы в приватный ключ. Вводите туда только тестовые фразы, никогда настоящую.

Почему в сид-фразе английские слова

В BIP39 десять официальных списков слов: английский, японский, корейский, испанский, китайский (упрощённый и традиционный), французский, итальянский, чешский и португальский. Русского среди них нет. Спецификация настоятельно не рекомендует неанглийские списки, потому что подавляющее большинство кошельков поддерживает только английский. Сменить язык потом тоже нельзя: сид вычисляется из самих слов, поэтому та же энтропия, записанная испанскими словами, откроет другой кошелёк.

Английский список составлен так, чтобы слова было трудно перепутать. В нём 2048 слов длиной от 3 до 8 букв, и каждое однозначно определяется первыми четырьмя буквами. Из похожих пар вроде build и built или woman и women в список попало только одно слово.

Если английский вам непривычен, пользуйтесь списком слов BIP39 с транскрипцией и переводом: у каждого слова там есть произношение и перевод на русский. Но записывайте фразу только английскими словами, потому что обратный перевод неоднозначен. «Рука» — это и arm, и hand, «масло» — и butter, и oil, а все четыре слова есть в списке.

Не всякая фраза из слов — BIP39

Чаще всего кошельки создают 12 или 24 слова; фразы из 15, 18 и 21 слова поддерживает не каждый кошелёк. При этом слова из того же английского списка ещё не значат, что фраза подойдёт любому кошельку:

  • Electrum создаёт 12 слов из списка BIP39, но по собственной схеме: вместо контрольной суммы BIP39 у фразы есть номер версии.
  • Классическая фраза TON — 24 слова из списка BIP39, но ключ из них вычисляется по правилам TON.
  • Monero использует 25 слов из собственного списка в 1626 слов.
  • Shamir Backup у Trezor (стандарт SLIP-39) — это 20 или 33 слова из отдельного списка в 1024 слова.

Такие фразы восстанавливают в кошельке, который поддерживает именно их формат. Если кошелёк пишет «неверная сид-фраза», разобраться поможет статья о том, как найти и исправить ошибку в сид-фразе.

Парольная фраза — необязательное 25-е слово

К сид-фразе можно добавить парольную фразу (passphrase), которую часто называют 25-м словом. Она входит в соль при вычислении сида и не имеет контрольной суммы. По спецификации любая парольная фраза даёт действительный сид, то есть рабочий кошелёк. Поэтому опечатка, лишний пробел или другая заглавная буква не вызывают ошибки: просто открывается другой, пустой кошелёк. Парольная фраза защищает от того, кто нашёл ваши слова, но если её забыть, средства не вернёт никто. Как ею пользоваться и где хранить, рассказано в статье о парольной фразе BIP39.

Как обращаться с сид-фразой

  1. Создавайте фразу в кошельке — лучше всего на аппаратном кошельке или на компьютере без интернета. Не придумывайте слова сами: человек выбирает их неслучайно, и такую фразу проще подобрать. Генератор сид-фразы на этом сайте подходит для обучения и тестов, но не для кошелька с деньгами.
  2. Запишите слова от руки, по порядку и с номерами, и сверьте каждое со списком. Не фотографируйте фразу и не храните её в заметках, облаке, почте или мессенджерах. Бумагу, металл и другие способы сравнивает статья о том, как хранить сид-фразу.
  3. Проверьте восстановление до первого крупного перевода: восстановите кошелёк по записи на сброшенном устройстве или во втором приложении и сравните первый адрес для получения.
  4. Вводите фразу только в сам кошелёк — в официальное приложение или на аппаратное устройство. Никогда не вводите её на сайтах, в формах, ботах и чатах: сид-фразу не должен спрашивать никто, включая службу поддержки. Порядок действий описан в статье о том, как восстановить кошелёк по сид-фразе.
  5. Если фразу мог увидеть посторонний, создайте новый кошелёк с новой фразой и переведите туда средства. Сменить фразу у существующего кошелька нельзя.

Частые вопросы

Чем сид-фраза отличается от приватного ключа?

Приватный ключ управляет одним адресом, а сид-фраза — всем кошельком: из неё вычисляются ключи для всех адресов и монет. Обратного пути нет. Преобразование фразы в сид одностороннее, поэтому по приватному ключу сид-фразу не восстановить.

Можно ли поменять сид-фразу?

Нет. Фраза и есть кошелёк: другие слова — это другие ключи и другие адреса. Чтобы «сменить» фразу, создают новый кошелёк и переводят в него все средства.

Подходит ли одна сид-фраза для разных монет?

Да, если кошелёк поддерживает эти монеты по BIP39: Bitcoin, Ethereum и другие сети получают ключи из разных ветвей одного дерева. Исключение — монеты со своим форматом фразы, например Monero.

Что будет, если потерять сид-фразу?

Пока кошелёк открывается на вашем устройстве, средства доступны: сразу создайте новый кошелёк, надёжно запишите его фразу и переведите туда всё. Если потеряно и устройство, а других копий фразы нет, доступ не восстановить: у разработчиков некастодиального кошелька её нет.

Сколько слов лучше: 12 или 24?

При хорошем генераторе случайности надёжны оба варианта. 12 слов дают 128 бит энтропии, что соответствует уровню безопасности кривой secp256k1, на которой построены ключи Bitcoin и Ethereum. 24 слова дают 256 бит и запас на долгий срок.