ШКОЛА
КРИПТОВАЛЮТЫ
Журнал о цифровых деньгах
Знания. Инструменты. Практика.
Все материалы ↗

Сид-фраза: что она открывает и как избежать её утечки

Что такое сид-фраза, почему она открывает все ключи кошелька, как устроен стандарт BIP-39 и как отличить легитимное восстановление от фишинговой формы. Разбор шести ситуаций.

На тёмном деревянном столе лежат 12 пустых карточек; в кадре рука в чёрной перчатке тянет одну к металлической коробке.
Редакционная иллюстрация · OpenAI
В этом материале

Сид-фраза (её также называют фразой восстановления или секретной фразой) – это набор слов, чаще всего 12 или 24, из которого кошелёк заново вычисляет ключи созданных из неё аккаунтов. Кто знает фразу, обычно может получить контроль над этими аккаунтами с любого устройства. Поэтому правило одно: фразу вводят только в сам кошелёк при восстановлении, и никогда в сайт, форму, бота, чат или по просьбе «поддержки».

У этого правила есть границы, которые полезно знать заранее. Стандарт BIP-39 допускает фразы из 12, 15, 18, 21 и 24 слов. Фраза восстанавливает только аккаунты, которые были выведены именно из неё, и только при тех же условиях: с тем же дополнительным паролем (passphrase), если он был задан, и в кошельке, который поддерживает нужную сеть и тот же путь вывода ключей. Справка MetaMask разделяет два способа импорта: по фразе восстанавливается кошелёк со связанными аккаунтами, а по приватному ключу только один аккаунт. Аккаунты, импортированные отдельным ключом или другой фразой, не появятся при восстановлении основной фразой, их придётся импортировать снова. Аппаратный кошелёк, подключённый к приложению, хранит ключи в самом устройстве и восстанавливается своей фразой, а не фразой приложения.

Что именно открывает сид-фраза

Ethereum.org в разделе о безопасности называет фразу восстановления главным ключом к кошельку: тот, у кого она есть, получает доступ ко всем аккаунтам и может вывести все активы. Приватный ключ работает так же, но для одного аккаунта. Там же сказано, что ни один настоящий сервис, сотрудник поддержки или сайт никогда не попросит у вас фразу или ключ.

Отсюда несколько неочевидных следствий.

  • Фраза важнее устройства. Потеряли телефон или аппаратный кошелёк, но фраза цела, значит доступ к выведенным из неё аккаунтам можно восстановить на новом устройстве. Сохранили устройство, но фраза утекла, и эти аккаунты под угрозой. Если вы задавали дополнительный пароль BIP-39, злоумышленнику понадобится и он, но полагаться только на это не стоит.
  • Фраза работает не только в одном приложении. Её можно ввести в другой кошелёк, и он покажет те же адреса, если поддерживает тот же стандарт, тот же путь вывода ключей и вы указали тот же дополнительный пароль. BIP-44 описывает такой путь в виде m / purpose' / coin_type' / account' / change / address_index, а Trezor поясняет, что номер coin_type у Bitcoin 0', у Ethereum 60'. Если путь в кошельках разный, адреса из одной фразы тоже будут разными, а MetaMask среди причин «восстановились не те аккаунты» называет фразу, созданную другим кошельком. Злоумышленнику при этом не нужен ваш телефон: ему достаточно слов и совместимой программы.
  • Сменить фразу у существующего кошелька нельзя. Бюллетень для инвесторов Комиссии по ценным бумагам США отмечает, что созданный приватный ключ нельзя изменить или заменить. При утечке остаётся создать новый кошелёк с новой фразой и перевести туда средства.

Как фраза соотносится с адресом и приложением, показано в материале «Как работает криптокошелёк».

Как устроена фраза: стандарт BIP-39

Распространённый стандарт таких фраз – BIP-39. Trezor, например, прямо пишет, что создаёт фразу из 12, 18 или 24 слов по BIP-39, а MetaMask при создании кошелька выдаёт фразу из 12 слов. Логика стандарта проверяема и помогает понять, почему случайно созданную фразу практически невозможно подобрать перебором и почему часть ошибок при вводе кошелёк замечает.

  1. Кошелёк генерирует случайное число длиной от 128 до 256 бит (энтропию).
  2. К нему добавляется контрольная сумма: первые биты хеша SHA-256 этого числа, по одному биту на каждые 32 бита энтропии.
  3. Результат делится на группы по 11 бит. Каждая группа – номер слова от 0 до 2047 в стандартном списке.
  4. Из фразы и необязательного дополнительного пароля функция PBKDF2 (HMAC-SHA512, 2048 итераций) вычисляет 512-битный seed, из которого выводятся ключи.
Длина фразы по BIP-39, пересчитано в Python
Энтропия, битКонтрольная сумма, битСловДоля случайных наборов слов, проходящих проверку
1284121 из 16
1605151 из 32
1926181 из 64
2247211 из 128
2568241 из 256

Что проверено расчётом

Реализация из BIP-39 была воспроизведена в Python по описанию стандарта и сверена с официальными тестовыми векторами, на которые ссылается BIP-39 (файл vectors.json). Все 24 английских вектора совпали: и слова, полученные из энтропии, и итоговый seed. Тестовые векторы публичны и предназначены только для проверки программ, поэтому сами фразы здесь не приводятся: использовать их для хранения средств нельзя.

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

  • Контрольная сумма ловит часть ошибок, но не все. В модели одно слово тестовой фразы заменялось на каждое другое слово из списка. Для 12-го слова контрольную сумму прошли 127 неверных вариантов из 2047, для 1-го 132, для 6-го 119, то есть около 6%. Это оценка только для такой модели: замена на другое допустимое слово списка. Бытовые ошибки бывают другими. Слово, которого нет в списке, вообще не соответствует никакому номеру, а перестановку слов местами расчёт не моделировал. Если же искажённая фраза прошла проверку, кошелёк откроет другой набор ключей, обычно пустой, без сообщения об ошибке.
  • Дополнительный пароль меняет всё. BIP-39 прямо указывает, что любой пароль даёт корректный seed, но нужный кошелёк откроет только верный. Расчёт подтвердил: одна и та же фраза с паролем и без пароля даёт разные seed. Если вы используете такой пароль и ошиблись в нём, ошибки входа не будет: кошелёк откроет другой набор ключей, обычно пустой. Поэтому пароль хранят так же бережно, как фразу, но отдельно от неё.

Как хранить фразу

  • На бумаге или металле, офлайн. Ethereum.org предупреждает: снимок экрана с фразой может синхронизироваться в облако, а извлечение ключей из облачных хранилищ – распространённый способ кражи.
  • Без заметок, почты, мессенджеров и менеджеров буфера обмена. Всё, что синхронизируется, расширяет круг мест, где фраза может оказаться.
  • В нескольких надёжных местах. Bitcoin.org советует хранить резервные копии в разных безопасных местах, чтобы одна авария не уничтожила все сразу.
  • С планом на случай, если вас не будет. Тот же источник напоминает: если никто не знает, где кошелёк и пароли, средства станут недоступны навсегда.
  • Проверьте копию. Аккуратно сверьте записанные слова с показанными при создании. Порядок слов имеет значение.

Как распознать фишинговую форму

Почти все кражи фразы устроены одинаково: вас приводят туда, где фразу «нужно» ввести. Легитимное восстановление происходит только в установленном вами кошельке, когда вы сами решили восстановить доступ. Всё остальное – повод остановиться.

Учебный разбор: шесть ситуаций

Учебный пример. Ситуации составлены по типам мошенничества, описанным в разделе безопасности ethereum.org и в гайде о поддельных токенах. Это обобщённые сценарии без привязки к конкретным случаям.

Восстановление или фишинг
СитуацияВердиктПризнак
Вы купили новый телефон, сами установили кошелёк с официального сайта и выбрали «Восстановить»ЛегитимноДействие начали вы, фраза вводится только в приложение кошелька
В чате сообщества вам пишет «сотрудник поддержки» и предлагает «синхронизировать кошелёк» по ссылкеФишингEthereum.org: сотрудники не пишут в личные неофициальные каналы и не просят фразу
На адрес пришёл незнакомый токен, а в его названии ссылка «получить награду»ФишингСхема airdrop-мошенничества: сайт просит подключить кошелёк и подписать разрешение или ввести фразу
Сайт кошелька из поисковой рекламы отличается одной буквой в домене и просит «подтвердить фразу для обновления»ФишингEthereum.org советует проверять домен и открывать сервисы через закладки
Пост от «известного человека»: отправьте ETH и получите вдвое большеМошенничествоКлассическая раздача «2 к 1», описанная на ethereum.org
Приложение просит подтвердить, что вы записали фразу, и предлагает выбрать слова по порядку сразу после создания кошелькаОбычно легитимноПроверка записи внутри самого кошелька при создании; фраза никуда не отправляется

Общие признаки

  • Срочность: «доступ будет заблокирован через час», «акция заканчивается».
  • Инициатива не ваша: вам написали, позвонили, прислали токен или ссылку.
  • Фразу просят ввести в браузерную форму, бота, документ или сообщить голосом.
  • Просят удалённый доступ к компьютеру. Ethereum.org прямо советует никогда его не давать.
  • Обещают вернуть потерянные средства. Ethereum.org поясняет, что в децентрализованной сети нет механизма, через который «агент» мог бы вернуть ETH в обмен на ваши ключи.

Когда фраза не нужна, а риск остаётся

Современный фишинг часто вообще не просит фразу. Вас просят подписать разрешение, после которого контракт злоумышленника может списывать ваши токены. Ethereum.org описывает это в разделе об airdrop-мошенничестве. Механика разрешений и способы их отозвать разобраны в статье «Смарт-контракт: что он делает и чего не гарантирует».

Почему не стоит хранить половины фразы в разных местах

Иногда советуют разрезать фразу на две части и спрятать их отдельно. Расчёт по правилам BIP-39 показывает слабость этой идеи. У 12-словной фразы 128 бит случайности. Если злоумышленник нашёл первые 6 слов, неизвестными остаются 6 слов, то есть 66 бит, из которых 4 бита контрольной суммы вычисляются автоматически. Остаётся 62 бита, около 4,6 × 1018 вариантов вместо 2128. Защита падает в 266 раз, а потеря любой из половин при этом лишает доступа и вас. Если нужна схема, устойчивая и к краже, и к потере одной копии, логичнее смотреть на мультиподпись, о которой рассказано в материале о бирже и личном кошельке.

Пароль приложения и сид-фраза: в чём разница

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

Если фраза могла утечь

  1. Создайте новый кошелёк с новой фразой на устройстве, которому доверяете. Запишите фразу офлайн.
  2. Переведите средства со старых адресов на новые как можно быстрее. Начните с самых ценных активов. Отдельно импортированные по приватному ключу аккаунты проверьте тоже, если ключи от них хранились рядом с фразой.
  3. Не вводите старую фразу больше никуда, в том числе на «сайты проверки».
  4. Если с устройства мог утечь ключ, проверьте его на вредоносные программы перед дальнейшей работой.
  5. Сохраните хеши своих переводов. Как их найти и прочитать, описано в инструкции по проверке транзакции.

Если перевод злоумышленника уже подтверждён сетью, отменить его вы не сможете. Об инциденте имеет смысл сообщить в правоохранительные органы своей страны и в сервисы, куда ушли средства, но гарантий возврата это не даёт.

А если средства на бирже?

У биржевого аккаунта сид-фразы обычно нет: ключи держит сервис, а вы входите по логину, паролю и второму фактору. Это снимает с вас хранение фразы, но добавляет зависимость от сервиса. Разница подробно разобрана в материале «Биржа или личный кошелёк». Пароль и коды от биржи защищаются по тем же правилам: никому их не сообщать и вводить только на проверенном домене.

Коротко

  • Сид-фраза открывает аккаунты, выведенные из неё. Кто знает фразу (и дополнительный пароль, если он задан), получает контроль над ними.
  • Импортированные по отдельному ключу аккаунты и аппаратный кошелёк этой фразой не восстанавливаются: для них нужны свои резервные копии.
  • Вводите её только в кошелёк, который сами установили, и только когда сами решили восстановить доступ.
  • Храните офлайн, в нескольких местах, без фото и облаков.
  • Любой запрос фразы со стороны считайте мошенничеством, кто бы его ни прислал.

Источники и подготовка

Материал подготовлен с помощью Claude по указанным источникам. Учебные примеры отмечены в тексте. Как мы работаем.

Следующий вопрос

Кошельки8 мин.

Как работает криптокошелёк: адрес, приватный ключ и доступ к средствам

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

Читать материал