При выведении BIP39 seed словесная фраза служит входом PBKDF2-HMAC-SHA512, а строка mnemonic, соединённая с passphrase, образует соль. Это не PIN устройства и не дополнительное обязательное слово из списка; без passphrase используется пустая строка.
Словесная фраза и соль mnemonic + passphrase обрабатываются как UTF-8 с нормализацией NFKD. PBKDF2-HMAC-SHA512 выполняет 2048 итераций и возвращает seed длиной 512 битов, то есть 64 байта. Длина выхода не означает 512 битов исходной секретной случайности. [BIP39 — Mnemonic generation and seed conversion]
Регистр букв и пробелы могут изменить результат. При этом разные записи Unicode после NFKD могут дать одинаковый вход: например, é и e с последующим комбинируемым акутом. Поэтому утверждение, что каждый иначе записанный текст обязательно создаёт другой кошелёк, неточно. [BIP39 — Mnemonic generation and seed conversion]
BIP39 не содержит checksum passphrase. Опечатка может вывести действительный seed и показать другой, обычно пустой кошелёк; исходные средства от этого не удаляются. Приложение может потребовать повторный ввод или сравнить известные данные. PIN, который только разблокирует устройство, не заменяет passphrase. [BIP39 — Mnemonic generation and seed conversion] [Trezor — What is a passphrase]
Имея словесную копию, атакующий может проверять варианты passphrase офлайн и сравнивать выведенные данные с известным кошельком. Достаточно непредсказуемая passphrase, которая не утекла, может затруднить атаку. Короткая цитата, повторно используемый пароль или только 2048 итераций не гарантируют защиту. [BIP39 — Mnemonic generation and seed conversion]
Если смена passphrase выводит другой seed, это не меняет условия подписания существующих выходов. Поэтому переход к новому кошельку требует настоящей транзакции. Аналогично пустой баланс сам по себе не доказывает потерю: сначала проверьте правильность входа и параметры восстановления. [Trezor — What is a passphrase] [BIP380 — Output Script Descriptors]
Надёжно сохраните копию passphrase и проверьте восстановление доверенным способом. Хранение отдельно от слов уменьшает совместную утечку, но должно позволять законное восстановление и наследование. Вернуть сильную забытую passphrase без копии может оказаться невозможно. Помимо слов и passphrase, могут потребоваться пути выведения и описания скриптов; Output Descriptor помогает сохранить эти данные. [Trezor — What is a passphrase] [BIP380 — Output Script Descriptors]
Другая passphrase может служить для отдельного кошелька или кошелька-приманки. Это не гарантирует, что атакующий поверит показанному балансу, и не устраняет следы платежей и копий. Разделение кошельков, устойчивость к подбору и безопасность при принуждении — разные свойства. [BIP39 — Mnemonic generation and seed conversion]
Регистр букв может изменить кошелёк
Те же мнемонические слова с passphrase «alpha» и «Alpha» дают разные seed по BIP 39. Это короткие примеры, не безопасные пароли. В спецификации нет контрольной суммы passphrase; опечатка может открыть другой, обычно пустой кошелёк. Приложение может добавить собственную проверку.
Для полной картины прочитайте эту статью вместе с BIP 39, PBKDF2, BIP39 checksum, Самостоятельное хранение. На эту статью также ссылаются Seed Phrase, BIP 39, Cold Storage, BIP85.
01Является ли passphrase тем же, что мнемонические слова или PIN?+
Нет. Слова и необязательная passphrase — два входа для получения seed по BIP 39, оба с нормализацией NFKD. Если passphrase использовалась, одних слов недостаточно. PIN устройства её не заменяет. Для полного восстановления также могут потребоваться пути деривации и данные скрипта.
02Защищает ли passphrase раскрытые мнемонические слова?+
Достаточно непредсказуемая passphrase, не утёкшая вместе со словами, может затруднить получение правильного seed. Но владеющий словами атакующий может перебирать варианты офлайн; короткая или предсказуемая passphrase — ненадёжная защита. Потеря сильной passphrase без резервной копии может означать невосстановимую потерю доступа.