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.