489 / 691PBKDF2

PBKDF2

Выведение seed в BIP39

PBKDF2 преобразует входной текст и соль в производный ключ повторными вычислениями. BIP39 использует его для преобразования словесной фразы и passphrase в seed; новой случайности он не создаёт.

Password-Based Key Derivation Function 2 — детерминированная функция с параметрами входа, соли, числа итераций, псевдослучайной функции и длины выхода. BIP39 задаёт конкретный профиль PBKDF2-HMAC-SHA512, а не все возможные применения PBKDF2.

Вход, называемый password, — словесная фраза в UTF-8 NFKD. Соль — mnemonic + passphrase, также в UTF-8 NFKD; без passphrase добавляется пустое значение. BIP39 требует HMAC-SHA512, 2048 итераций и 64 байта, то есть 512 битов выхода. [BIP39 — Mnemonic generation and seed conversion]

PBKDF2 создаёт первый промежуточный результат из парольного входа, соли и индекса выходного блока. Следующие результаты вычисляются той же псевдослучайной функцией из предыдущего результата и объединяются через XOR. При HMAC-SHA512 блок имеет 64 байта, поэтому BIP39 нужен один блок. Просто применить SHA-512 к тексту 2048 раз недостаточно. [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]

Одинаковые нормализованные входы и параметры дают тот же seed. Произвольно увеличить 2048 итераций или сменить функцию при восстановлении — не улучшение безопасности существующего кошелька: результат перестаёт соответствовать заданному выведению BIP39. Перевод слов в другой словарь также не является нейтральным изменением. [BIP39 — Mnemonic generation and seed conversion]

Итерации увеличивают работу на одну попытку, но не добавляют независимой секретной случайности. Имея слова и данные для сравнения кошелька, атакующий может пробовать слабые passphrase офлайн. Выход из 512 битов поэтому не означает защиту, эквивалентную 512 битам энтропии, а 2048 — не универсальная рекомендация для новых систем. [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]

Checksum BIP39 помогает обнаружить ошибки в словах до использования. Само преобразование PBKDF2 отделено от создания и проверки фразы; оно не подтверждает принадлежность passphrase нужному кошельку. Затем seed могут использовать BIP32 или другие детерминированные методы как следующий шаг. [BIP39 — Mnemonic generation and seed conversion]

Публичные векторы BIP39 содержат энтропию, слова и ожидаемый seed с тестовой passphrase TREZOR. Правильная реализация должна воспроизводить весь выход и соблюдать NFKD. Эти известные входы никогда не должны быть собственной копией для средств; совпадение теста само по себе также не проверяет безопасность всего приложения. [BIP39 — Mnemonic generation and seed conversion]

Для полной картины прочитайте эту статью вместе с BIP 39, BIP39 passphrase, Seed Generation, HD Wallet. На эту статью также ссылаются BIP39 passphrase.

DOC · 001BIP39 — Mnemonic generation and seed conversionСпецификация ↗DOC · 002RFC8018 — PBKDF2 constructionСпецификация ↗
Сначала источники · Не является инвестиционной рекомендацией