145 / 736BIP85

BIP85

一つの親バックアップから複数のウォレットへ

BIP85では、親ウォレットから、それぞれ独自の復元単語を持つウォレットを作れます。用途を分けるのに役立ちますが、派生したウォレットも共通の土台の保護に依存します。

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はデータを16進文字で表し、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.

DOC · 001BIP 85 — Deterministic Entropy From BIP32 Keychains仕様 DOC · 002BIP 32 — Hierarchical Deterministic Wallets仕様 DOC · 003BIP 39 — Mnemonic code for generating deterministic keys仕様 DOC · 004COLDCARD — Export Deterministic Entropy (BIP-85)文書 DOC · 005Bitcoin Developer Guide — Wallets文書
改訂日: 一次資料を優先 · 投資助言ではありません