- Главная
- / BIP39 по-русски
- / Что такое сид-фраза (seed-фраза) и как она работает
Что такое сид-фраза (seed-фраза) и как она работает
Сид-фраза — это 12–24 слова, обычно английских, которые криптокошелёк показывает при создании и просит записать. Её называют также seed-фразой, мнемонической фразой, фразой восстановления или секретной фразой. Из этих слов вычисляются все приватные ключи и адреса кошелька, поэтому сид-фраза — не пароль от кошелька, а сам кошелёк: кто знает слова, тот распоряжается средствами с любого устройства. Разберём, как сид-фраза устроена по стандарту BIP39, как из случайного числа получаются слова, а из слов — ключи, почему в ней нет русских слов и как с ней обращаться.
Сид-фраза простыми словами
Монеты записаны в блокчейне, а кошелёк хранит ключи, которыми подписываются переводы. Чтобы не делать резервную копию каждого ключа отдельно, кошелёк выводит все ключи из одного случайного секрета, а сам секрет записывает словами: слова проще переписать без ошибок, чем длинное шестнадцатеричное число. Так устроен стандарт BIP39, описанный в 2013 году. Ему следует большинство кошельков.
Английское seed означает «семя»: из одного числа, как из зерна, вырастает целое дерево ключей. Строго говоря, сидом в BIP39 называют 512-битное число, которое кошелёк вычисляет из слов, а сами слова — мнемоникой. В обиходе же «сид», «сид-фраза» и «мнемоника» означают одно и то же.
Чем сид-фраза отличается от обычного пароля:
| Пароль от аккаунта | Сид-фраза | |
|---|---|---|
| Кто создаёт | Вы сами | Кошелёк, из случайных чисел |
| Что открывает | Один аккаунт в одном сервисе | Все адреса кошелька в любом совместимом приложении |
| Можно ли сбросить | Да, через поддержку сервиса | Нет |
| Если узнал посторонний | Достаточно сменить пароль | Нужно перевести средства в новый кошелёк |
Пароль или PIN-код приложения защищает кошелёк только на одном устройстве, а на новом телефоне кошелёк восстанавливают именно по сид-фразе. Если же монеты лежат на бирже, сид-фразы от них у вас нет: ключами управляет биржа, а вход в аккаунт защищают пароль и двухфакторная аутентификация.
Как работает сид-фраза
BIP39 описывает два этапа: как превратить случайность в слова и как превратить слова в ключи.
- Энтропия. Кошелёк берёт у криптографического генератора от 128 до 256 случайных бит. Это и есть секрет.
- Контрольная сумма. От энтропии вычисляется хеш SHA-256, и его первые биты дописываются в конец — по одному биту на каждые 32 бита энтропии.
- Слова. Все биты делятся на группы по 11. Каждая группа — число от 0 до 2047, то есть номер слова в списке из 2048 слов: от abandon (0) до zoo (2047).
- Сид. Чтобы получить ключи, кошелёк пропускает фразу через функцию PBKDF2-HMAC-SHA512 с 2048 итерациями. Паролем служат сами слова, солью — строка «mnemonic» плюс необязательная парольная фраза. Результат — 512-битный сид.
- Ключи. Из сида по стандарту BIP32 получается корневой ключ, а из него — дерево приватных ключей. Положение каждого ключа в дереве задаёт путь деривации: например,
m/44'/0'/0'/0/0— первый адрес Bitcoin по BIP44. Подробнее — в статье о том, что такое путь деривации.
Длина фразы зависит от объёма энтропии:
| Слов | Энтропия | Контрольная сумма |
|---|---|---|
| 12 | 128 бит | 4 бита |
| 15 | 160 бит | 5 бит |
| 18 | 192 бита | 6 бит |
| 21 | 224 бита | 7 бит |
| 24 | 256 бит | 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.
Как обращаться с сид-фразой
- Создавайте фразу в кошельке — лучше всего на аппаратном кошельке или на компьютере без интернета. Не придумывайте слова сами: человек выбирает их неслучайно, и такую фразу проще подобрать. Генератор сид-фразы на этом сайте подходит для обучения и тестов, но не для кошелька с деньгами.
- Запишите слова от руки, по порядку и с номерами, и сверьте каждое со списком. Не фотографируйте фразу и не храните её в заметках, облаке, почте или мессенджерах. Бумагу, металл и другие способы сравнивает статья о том, как хранить сид-фразу.
- Проверьте восстановление до первого крупного перевода: восстановите кошелёк по записи на сброшенном устройстве или во втором приложении и сравните первый адрес для получения.
- Вводите фразу только в сам кошелёк — в официальное приложение или на аппаратное устройство. Никогда не вводите её на сайтах, в формах, ботах и чатах: сид-фразу не должен спрашивать никто, включая службу поддержки. Порядок действий описан в статье о том, как восстановить кошелёк по сид-фразе.
- Если фразу мог увидеть посторонний, создайте новый кошелёк с новой фразой и переведите туда средства. Сменить фразу у существующего кошелька нельзя.
Частые вопросы
Чем сид-фраза отличается от приватного ключа?
Приватный ключ управляет одним адресом, а сид-фраза — всем кошельком: из неё вычисляются ключи для всех адресов и монет. Обратного пути нет. Преобразование фразы в сид одностороннее, поэтому по приватному ключу сид-фразу не восстановить.
Можно ли поменять сид-фразу?
Нет. Фраза и есть кошелёк: другие слова — это другие ключи и другие адреса. Чтобы «сменить» фразу, создают новый кошелёк и переводят в него все средства.
Подходит ли одна сид-фраза для разных монет?
Да, если кошелёк поддерживает эти монеты по BIP39: Bitcoin, Ethereum и другие сети получают ключи из разных ветвей одного дерева. Исключение — монеты со своим форматом фразы, например Monero.
Что будет, если потерять сид-фразу?
Пока кошелёк открывается на вашем устройстве, средства доступны: сразу создайте новый кошелёк, надёжно запишите его фразу и переведите туда всё. Если потеряно и устройство, а других копий фразы нет, доступ не восстановить: у разработчиков некастодиального кошелька её нет.
Сколько слов лучше: 12 или 24?
При хорошем генераторе случайности надёжны оба варианта. 12 слов дают 128 бит энтропии, что соответствует уровню безопасности кривой secp256k1, на которой построены ключи Bitcoin и Ethereum. 24 слова дают 256 бит и запас на долгий срок.