BIP85 — способ повторно создавать новые секреты для кошельков из главного секрета одного кошелька. Например, телефон получает собственную Seed Phrase, то есть слова восстановления, вместо слов от основных сбережений. Одинаковый исходный секрет и одинаковые настройки всегда дают тот же результат. Это называют детерминированным выводом. BIP85 не переводит биткоины, не делит резервную копию на доли и не заменяет потерянную главную копию.
Анна надёжно хранит главную резервную копию и хочет отдельный кошелёк для небольших платежей. Кошелёк — приложение или устройство для получения и отправки биткоинов. BIP85 может создать другую фразу восстановления; только её Анна импортирует в телефон. Приватный ключ — секретное числовое значение, с помощью которого кошелёк создаёт цифровую подпись, разрешающую потратить средства. Технически процесс начинается с расширенного приватного корня BIP 32, начала дерева ключей. Он мог быть получен из слов BIP 39: слова и возможная passphrase сначала создают seed, секретные входные данные для расчёта корня. Это разные этапы, а не взаимозаменяемые названия. BIP85 вычисляет из корня новые секретные данные; обратить процесс и вернуть исходные слова он не может. [1] [2] [3] [5]
Анне нужно записать и выбранные параметры. Derivation Path точно описывает последовательность этих шагов. Пример m/83696968'/39'/0'/12'/0' выбирает BIP85, применение BIP 39, английский словарь, 12 слов и индекс 0. Применение здесь означает определённый способ обработки результата, а не конкретную программу на телефоне. Индекс 1 создаёт другого потомка, то есть другую производную фразу; это не номер платёжного адреса внутри телефона. Код чешского словаря — 8', независимо от языка этой страницы. Смена словаря или количества слов меняет путь и результат. Это не перевод тех же слов восстановления. [1]
Промежуточные данные называют энтропией: здесь это данные, рассчитанные из секретной основы, которые не должны быть предсказуемы без её знания. Для 12 слов используют первые 128 бит результата, для 24 слов — первые 256 бит. BIP 39 добавляет контрольную сумму, помогающую обнаружить некоторые ошибки записи, и преобразует данные в слова. Затем из них создаются seed и ключи нового кошелька. Сам BIP85 не задаёт тип адресов, их путь или способ поиска старых платежей. Более длинный результат также не спасёт исходный секрет, который легко угадать: вывод не добавляет новой независимой случайности. [1] [3]
Passphrase — необязательный дополнительный секрет для слов BIP 39. Это не PIN устройства и не пароль для открытия приложения. Если Анна использовала её с главной фразой, она нужна и для восстановления того же входного корня BIP85. Другая родительская passphrase создаст других потомков. Вторую, независимую passphrase можно применить уже к производным словам в телефоне. Она меняет seed целевого кошелька, а не уже созданные слова. BIP85 не сохраняет резервную копию этой целевой passphrase. Поэтому восстановить слова без неё ещё не означает восстановить исходный кошелёк. [3] [4]
При правильной конструкции и достаточно сильном исходном секрете вычислить главный корень либо секреты других производных кошельков из одной производной фразы практически невозможно. Поэтому утечка слов из телефона сама по себе не раскрывает главную копию. Обратное направление работает: тот, кто получил главный приватный корень и нужные параметры, может воспроизвести потомков. Дополнительная целевая passphrase, если она есть, остаётся отдельным секретом. Потеря главной основы угрожает потомкам без собственной пригодной копии. Таким образом, BIP85 сосредоточивает часть ответственности в одном месте. Он не исправляет компрометацию главного корня, а экспорт потомка не делает заражённый телефон безопасным. [1] [4]
Все шаги вывода — hardened: им требуется приватная часть родительского ключа. Одного xpub, расширенного публичного ключа для вывода публичных ключей, недостаточно. Полученный приватный ключ k содержит 32 байта. Затем BIP85 обрабатывает его функцией HMAC-SHA512 — криптографическим вычислением, принимающим сообщение и ключ. Сообщением здесь служит k, а ключом — постоянный текст bip-entropy-from-k; результат содержит 64 байта. Значит, секретность обеспечивается приватным входом k, а не общеизвестным текстом. Преобразование отделяет полученный материал от выведенного ключа. Оно не рекомендует одновременно использовать этот промежуточный ключ для подписания платежей. [1] [2]
Применение XPRV позволяет создать новый расширенный приватный ключ. В примере m/83696968'/32'/0' первые 32 байта образуют chain code, дополнительные данные для дальнейшего вывода, а следующие 32 байта — приватный ключ. Это порядок, обратный обычному созданию корня BIP 32. Если полученное число не является допустимым ключом, программа должна сообщить об ошибке, а пользователь — выбрать следующий индекс; молча принимать такое значение нельзя. HEX записывает данные шестнадцатеричными символами, WIF — формат приватного ключа, а другие применения создают пароли. У каждого свои правила. Внешне похожие строки не доказывают одинаковое содержимое или совместимость. [1] [2]
Документация COLDCARD описывает вывод и экспорт BIP 39, WIF, XPRV и HEX. Поддержка BIP85 не означает, что каждая версия устройства поддерживает все его применения. Запишите формат, словарь, длину и индекс, а также сведения о том, из какого главного кошелька вы начали; возможные passphrase защищайте как отдельные секреты. Прежде чем полагаться на процедуру, проверьте, воспроизводит ли она те же производные слова и соответствующие адреса целевого кошелька. Публичные тестовые векторы — известные входные данные с ожидаемыми результатами — помогают проверить программу, а не вашу приватную копию. BIP85 может упростить управление, но дополнительная сложность оправдана лишь тогда, когда вы понимаете собственный порядок восстановления. [4] [1]
Для полной картины прочитайте эту статью вместе с HD Wallet, BIP 39, BIP39 passphrase, Derivation Path, Hardware Wallet, Seed Phrase. На эту статью также ссылаются Duress Wallet.