1. Главная
  2. / BIP39 по-русски
  3. / Парольная фраза BIP39: что такое «25-е слово» сид-фразы
Опубликовано

Парольная фраза BIP39: что такое «25-е слово» сид-фразы

Парольная фраза BIP39 — необязательное дополнение к сид-фразе, которое задаёт сам владелец. Её называют «25-м словом»: самые длинные сид-фразы состоят из 24 слов, а парольная фраза как будто дописывается следующей. На деле это не слово из списка, а любая строка — слово, предложение или набор символов. В интерфейсах Trezor и Ledger она называется passphrase, в Electrum — seed extension, «расширение сида». Если вы ещё не знаете, как устроена сама сид-фраза, начните со статьи что такое сид-фраза.

Как парольная фраза попадает в сид

Стандарт BIP39 превращает слова в 512-битный сид функцией PBKDF2, и парольная фраза входит в её соль:

сид = PBKDF2-HMAC-SHA512(
    пароль   = слова сид-фразы (UTF-8, NFKD),
    соль     = "mnemonic" + парольная фраза (UTF-8, NFKD),
    итераций = 2048,
    длина    = 64 байта
)

Если парольной фразы нет, вместо неё берётся пустая строка и соль равна просто “mnemonic”. Из сида по BIP32 получается главный ключ, а из него по путям деривации — все ключи и адреса. Поэтому другая парольная фраза меняет не один адрес, а весь кошелёк.

Это хорошо видно на официальных тестовых векторах BIP39: все они рассчитаны с парольной фразой TREZOR. Публичная тестовая фраза abandon abandon … about (одиннадцать слов abandon и about) с парольной фразой TREZOR даёт сид, который начинается с c55257c3, а без парольной фразы или с trezor строчными буквами получаются совсем другие сиды. Проверить это можно в конвертере сид-фразы в приватный ключ: введите тестовую фразу и измените в парольной фразе одну букву — сменятся все адреса. Только с тестовыми фразами: фразу кошелька с деньгами не вводят ни на одном сайте.

Любая парольная фраза открывает кошелёк

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

Кошелёк-обманка

Из этого же свойства следует то, что BIP39 называет правдоподобным отрицанием (plausible deniability). В кошельке без парольной фразы или под второй парольной фразой держат небольшую сумму, а основные средства — под настоящей. Если вас заставят открыть кошелёк, можно показать подставной: как поясняют авторы SLIP-39, доказать, что он не настоящий, невозможно. Переоценивать приём не стоит: о парольных фразах знают и злоумышленники, а Ledger называет такую защиту ограниченной.

Регистр, пробелы и Юникод

Слова сид-фразы кошельки обычно приводят к нижнему регистру, а парольную фразу — нет: она учитывается посимвольно. Единственное преобразование по стандарту — нормализация Юникода NFKD. Один и тот же видимый символ можно закодировать по-разному, и NFKD приводит такие варианты к одной форме, но регистр, пробелы и алфавит не трогает:

Отличие при вводеТот же кошелёк?
TREZOR и trezorнет
пробел в начале или в конценет
два пробела подряд вместо одногонет
кириллическая «Е» вместо латинской Eнет
«ё» вместо «е»нет
«é» одним символом или «e» со знаком ударенияда
неразрывный пробел вместо обычногода

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

Надёжнее всего ограничиться латинскими буквами, цифрами и обычными знаками — печатными символами ASCII. Trezor Suite поддерживает стандартный набор ASCII, а SLIP-39 допускает в парольной фразе только печатные символы ASCII (коды 32–126). Кириллица коварна ещё и двойниками: русские «а», «е», «о», «р», «с», «х» выглядят как латинские, но это другие символы. Русского списка слов в BIP39 нет, сама сид-фраза почти всегда английская (словарь с переводом и транскрипцией помогает с ней работать), и парольная фраза на русском только добавит путаницы.

Как её вводят Trezor, Ledger и Electrum

КошелёкНазваниеГде вводить
Trezorpassphraseна устройстве (Safe 7, Safe 5, Safe 3, Model T) или в Trezor Suite; у Model One — только в Suite
Ledgerpassphraseна устройстве: временно или с привязкой ко второму PIN-коду
Electrumseed extensionв приложении: флажок Extend this seed with custom words

Trezor. Функция по умолчанию выключена. Устройство не хранит парольную фразу, поэтому её вводят каждый раз, когда открывают этот кошелёк. Длина — до 128 символов, на Model One — до 50. Trezor советует по возможности вводить её на самом устройстве: всё, что набрано на компьютере или телефоне, может перехватить вредоносная программа. Изменить, удалить или восстановить парольную фразу нельзя.

Ledger. Парольная фраза — до 100 символов, с учётом регистра. Её вводят на устройстве как временную (действует, пока Ledger включён) или привязывают ко второму PIN-коду: при включении выбранный PIN определяет, какие счета откроются. Ledger предупреждает, что вводить парольную фразу на компьютере или смартфоне нельзя, а сама компания её не хранит и не резервирует. Привязка к PIN не заменяет запись: после трёх неверных попыток ввода PIN устройство сбрасывается, и счета восстанавливают из сид-фразы.

Electrum. При создании или восстановлении кошелька кнопка Options открывает окно с флажком Extend this seed with custom words, а при создании приложение ещё и просит повторить расширение. Для фраз BIP39 это обычная парольная фраза BIP39. У собственных фраз Electrum формула другая: в соли стоит “electrum” вместо “mnemonic”, а расширение перед расчётом приводится к нижнему регистру и очищается от лишних пробелов. Electrum предупреждает, что расширение нужно сохранить наряду с самим сидом.

Включение парольной фразы не переносит средства. Как подчёркивает Ledger, открывается отдельный набор счетов с новыми адресами, и он пуст. Кошелёк без парольной фразы остаётся на месте и по-прежнему открывается одними словами, поэтому деньги переводят обычной транзакцией.

Как хранить парольную фразу

  1. Запишите её посимвольно: регистр, пробелы, знаки — чётко и печатными буквами.
  2. Храните отдельно от слов: ни одно место не должно содержать оба секрета, но вы и наследники должны суметь найти каждый. Потеря любого из них — потеря средств.
  3. Держите запись офлайн. Правила из статьи как хранить сид-фразу относятся и к парольной фразе.
  4. Проверьте до пополнения. Откройте кошелёк заново по записанной парольной фразе и убедитесь, что попали в тот же кошелёк. Запишите его первый адрес получения: по нему потом сразу видно, что открыт нужный кошелёк. Как пройти восстановление целиком, рассказано в статье как восстановить кошелёк по сид-фразе.
  5. Убедитесь, что кошелёк для восстановления её поддерживает: вводить парольную фразу BIP39 умеют не все приложения.

Когда она помогает, а когда добавляет риск

Парольная фраза помогает, если:

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

Она добавляет риск, если:

  • существует только в памяти: забытую парольную фразу никто не восстановит;
  • наследники о ней не знают — для них средства потеряны;
  • она слабая: имя или дата рождения плохо защищают от того, у кого уже есть слова, ведь каждую попытку перебора замедляют лишь 2048 итераций PBKDF2; Trezor советует выбирать парольную фразу по-настоящему случайно;
  • её набирают на заражённом компьютере.

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

Чем она отличается от PIN-кода и пароля приложения

Парольная фраза BIP39PIN-код устройстваПароль приложения
Участвует в вычислении ключейданетнет
Нужна при восстановлении на новом устройстведанет, задаётся новыйнет, задаётся новый
Что защищаетсам кошелёк, даже если слова найденыдоступ к конкретному устройствуданные в конкретном приложении
Если забылисредства под ней недоступнысброс и восстановление по словампереустановка и восстановление по словам

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

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

Почему парольную фразу называют 25-м словом?

Самые длинные сид-фразы BIP39 состоят из 24 слов, а парольная фраза как бы дописывается к ним. Но это не слово из списка: у неё нет контрольной суммы, а длину ограничивает только кошелёк — у Ledger, например, это 100 символов.

Можно ли восстановить забытую парольную фразу?

Нет. Trezor и Ledger не хранят парольные фразы пользователей, и их поддержка её не восстановит. Остаётся вспоминать варианты и пробовать их в своём кошельке. Сайты и «сервисы восстановления», которые просят слова, — верный способ потерять и остальное.

Можно ли добавить парольную фразу к существующему кошельку?

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

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

BIP39 допускает любые символы Юникода, но это лишний риск: Trezor Suite поддерживает стандартный набор ASCII, SLIP-39 допускает только печатные символы ASCII, а кириллицу легко спутать с похожими латинскими буквами. Используйте латиницу, цифры и знаки.

Нужно ли вводить парольную фразу каждый раз?

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