本文へ移動

ウォレット導出パス:標準、探索、復元

ウォレットの導出パスがどのように決定論的な子キーを選択するか、強化レベルやアカウントの慣習がどのように異なるか、そしてリカバリー中にパスをどのように検証するかを学びましょう。

更新日

教育目的の参考情報であり、投資助言ではありません。投資には損失が生じる可能性があります。

要点

ウォレットの導出パスは、決定的な鍵派生アルゴリズムが鍵ツリーのどのノードを選択するかを示す、順序付けられた子インデックスの列です。一般的なBIP-32表記では、m/84'/0'/0'/0/7はマスター秘密ノードmから始まり、5つの子を通過します。アポストロフィは強化されたBIP-32子を示します。パスはルーティングメタデータです:秘密鍵ではなく、シードを暗号化せず、それ自体ではブロックチェーンの残高を識別せず、正しいルート素材と派生アルゴリズムがなければ何も復元できません。

BIP-44スタイルのウォレットでは、テンプレートはm / purpose' / coin_type' / account' / change / address_indexです。各レベルには合意された意味があり、任意のラベルではありません。purposeはウォレットの方式を選択し、coin_typeは登録された資産の名前空間を分離し、accountは論理アカウントを分離し、changeは通常、外部受信用アドレス(0)と内部釣銭用アドレス(1)を区別し、address_indexは1つのリーフを選択します。BIP-44は最初の3つのレベルを強化し、最後の2つのレベルを非強化のままにすることで、アカウントの拡張公開鍵が秘密鍵を持たなくても受信アドレスおよび釣銭アドレスを導出できるようにします。

同じニーモニックでも、多くの有効だが無関係なアドレスセットにつながることがあります。Bitcoinの場合、一般的な単一キーのパスには、P2PKH用のm/44'/0'/account'/change/index、P2SHにネストされたP2WPKH用のm/49'/0'/account'/change/index、ネイティブSegWit P2WPKH用のm/84'/0'/account'/change/index、単一キーTaproot P2TR用のm/86'/0'/account'/change/indexがあります。ウォレットはまた、出力やスクリプトの構成も知っている必要があります。パスだけでは完全なBitcoinウォレットポリシーにはなりません。

他のエコシステムは、この表記法の一部を再利用していますが、同一の意味論を保証するものではありません。EtherはBIP-44として登録されており、コインタイプは60で、m/44'/60'/0'/0/indexは一般的な外部所有アカウントの慣習ですが、ウォレットの実装では複数のアカウントレイアウトが使用されています。同じEVMキーは、残高や取引履歴がチェーン固有であるにもかかわらず、複数のEVMネットワークで同じアカウントアドレスを生成することができます。EthereumバリデータBLSキーはBIP-32ではなく、ERC-2333およびERC-2334を使用します;その m/12381/3600/account/useパスにはアポストロフィがなく、BIP-32ツリーとは相互運用できません。そのため、復旧には正確な実装、曲線、シードまたはパスフレーズ、パスの規則、ネットワーク、アドレス生成が必要で、見かけがそれらしい文字列だけでは不十分です。

導出パスを特定・検証する方法

1. ルート情報と導出アルゴリズムを確認する

ニーモニック形式、単語リスト、任意のパスフレーズ、生のシードまたは拡張キー、そしてウォレットを作成したソフトウェアまたはハードウェアの実装をインベントリします。BIP-39は128256ビットのエントロピーに変換してニーモニックに変換し、そのニーモニックと正確なパスフレーズから512-bitシードを導出します。パスフレーズごとに文法的には有効だが異なるシードが生成されます。BIP-32はそのシードからsecp256k1拡張キーを導出します。他のウォレットファミリーは異なるニーモニックスキーム、曲線、鍵導出関数、またはマスターキー規則を使用する場合があるため、単語が一致してもルートが一致していることを証明するわけではありません。

2. 規格、ネットワーク、鍵の用途を確認する

対象がBitcoin支払いキー、EVM外部所有アカウント、バリデーターキー、マルチシグ署名者、コントラクト管理者、あるいはその他の権限であるかどうかを判断してください。チェーンとネットワーク、適用される標準とバージョン、キー曲線、出力またはアドレスタイプ、ウォレットアプリケーションを記録します。SLIP-0044コインタイプ登録は名前空間を割り当てるものであり、その資産のすべてのウォレットがBIP-44に従うことや、プロジェクトを承認すること、他のチェーンが同じキーを別の場所で導出することを防ぐことを証明するものではありません。

3. パスの各要素を正確に解析する

/を親子境界として扱い、すべてのインデックス、深さ、およびハードニングマーカーを保持してください。BIP-32の下では、通常の子は0から2^31 - 1までのインデックスを使用します。強化された子は2^31から2^32 - 1までを使用し、一般的には'h、またはHで書かれます。したがって、7'は通常の子7ではなく、子番号2^31 + 7をエンコードします。インポートインターフェースがルートをどのように表すか、完全なパスを受け入れるか相対的なサフィックスを受け入れるか、またはエクスポートされた拡張キーがすでにそのパスの一部の下にあるかを確認してください。

4. パスをアドレスまたは出力の意味に結び付ける

BIP-44ファミリーのBitcoinウォレットの場合、purposecoin_typeaccountchange、およびaddress_indexを確認し、その後、意図したスクリプトタイプとネットワークを個別に確認してください。BIP-49、BIP-84、およびBIP-86は、互換性のない出力タイプが1つのアカウントに自動的に現れないように、意図的に異なる目的値を使用しています。マルチシグまたはディスクリプタウォレットの場合、各キーの起源、マスターフィンガープリント、導出サフィックス、しきい値、キーの順序、スクリプト構造、およびチェックサムを保持してください。1つのパスだけでは完全なポリシーを再構築することはできません。

5. アカウントとアドレスの探索を再現する

1つの空のデフォルトアカウントから損失を推測しないでください。BIP-44の探索はアカウントを順番にチェックし、外部チェーンをスキャンします。その際、20連続して未使用のアドレスをアドレスギャップ制限として使用します。そのギャップを超えてアドレスを作成したウォレット、内部ブランチを通常と異なる方法で使用したウォレット、アカウントをスキップしたウォレット、あるいは独自のレイアウトを適用したウォレットは、デフォルトスキャンでは見つからない可能性があります。信頼できるウォッチオンリーデータやオフラインでの導出のみを使用して検索し、明確な範囲を設定し、検索したすべてのブランチを記録し、ニーモニックまたは拡張秘密鍵をウェブサイトにアップロードすることは避けてください。

6. 残高に頼る前にウォレット識別情報を検証する

マスターフィンガープリント、必要に応じてアカウントレベルの拡張公開鍵、完全なオリジンパス、そして複数の以前に記録された受信およびチェンジアドレスを比較してください。Bitcoinの場合、期待される出力スクリプトまたはデスクリプタを導出し、使用済み出力を含む取引履歴について正しいネットワークに問い合わせてください。アカウントベースのチェーンでは、正確なchainId、アドレス、トークン契約、および過去の活動を確認してください。残高が空の場合は証拠として弱いです:アドレスが間違っている可能性がある、ネットワークやインデックスが異なる、または資産がすでに移動している可能性があります。

7. 管理された手順で復元または移行する

信頼できる環境で、検証済みの互換性のあるソフトウェアを使用してください。署名情報を公開する前に、ウォッチ専用のディスクリプタまたはアカウント公開鍵をインポートして検出することを推奨します。署名と復元を、隔離されたアカウントまたは小額の取引でテストし、その後、派生したアドレス、オンチェーン履歴、出力の所有権、手数料、最終状態を照合してください。秘密情報が信頼できない復元ツールに入力された場合、それらは漏洩したものと見なし、すべての資産、コントラクトの役割、承認、バリデータ業務、および復元権限を復元したウォレットを使い続けるのではなく、新しいルートに移行してください。

計算例

Bitcoin の強化導出パスを解析する

m/84'/0'/2'/1/17 を例にすると、各フィールドはネイティブSegWitのpurpose 84'、Bitcoinのコインタイプ 0'、アカウント 2'、内部すなわち釣銭の枝 1、アドレスインデックス 17 を表します。BIP-32の強化インデックスには 2^31 = 2,147,483,648 を加えるため、シリアライズされる子番号は 84' = 2,147,483,7320' = 2,147,483,6482' = 2,147,483,650 です。最後の二つは通常インデックス 117 のままです。アポストロフィを一つ落とすと、同じ表記の別形式ではなく異なるサブツリーが選ばれます。

使用済みアドレスを見落とすアドレスギャップ

外部枝でインデックス 05 のアドレスが使用済みで、その後ウォレットが 6 から 25 を走査して未使用アドレスを 20 個連続で検出したとします。BIP-44のアドレスギャップ規則では探索は 25 で停止するため、インデックス 26 の使用済みアドレスは停止条件の先にあり見落とされます。記録した明確な上限まで走査を広げれば発見できますが、原因は元のウォレットが途中の利用なしに標準ギャップを越えてアドレスを作成したことです。

範囲を限定した復元探索の件数

復元記録からは、Bitcoinのpurposeが 4 種類(44'49'84'86')のどれか、また 3 アカウント、2 枝、先頭 20 インデックスのどこかしか分からないとします。初期探索は 4 × 3 × 2 × 20 = 480 個の葉候補です。既知アドレスが一つ一致しても候補パスを特定しただけで、ウォレット全体の復元とは限りません。釣銭、後続インデックス、他のアカウント、ディスクリプタの詳細、取引履歴も確認します。探索次元を明示すれば再現可能になり、無制限な試行を避けられます。

アカウント xpub が通常の公開データではない理由

非強化BIP-32子鍵では、秘密スカラーに child = parent + tweak (mod n) の関係があります。法を 101 とする簡略例で、アカウント拡張公開鍵から分かる導出データが tweak = 37、対応する子秘密スカラーの漏えい値が 12 なら、parent = 12 - 37 mod 101 = 76 です。実際のBIP-32はsecp256k1の群位数とHMAC導出値を使いますが、代数上の結果は同じです。親 xpub と対応する非強化の子孫秘密鍵が一つあれば、親拡張秘密鍵とそのサブツリーが漏れる可能性があります。強化アカウント境界はこの障害を封じ込めるためにあります。

リスクと確認漏れ

  • ニーモニックまたはパスフレーズの誤り: 単語、語順、Unicode正規化規則、またはパスフレーズが一つでも違えば、見かけ上は有効な別のルート鍵が生成されます。
  • 導出方式の誤り: 別のニーモニック方式、曲線、KDF、またはマスター鍵アルゴリズムを使ったウォレットに BIP-32 を適用すると、無関係な鍵が導出されます。
  • ネットワークまたはコインタイプの誤り: 別の名前空間の正しいルートからも妥当な形式のアドレスは得られますが、目的のチェーンは未探索のままです。
  • purposeまたはスクリプトの誤り: 44'49'84'86' を取り違えると、実際に資金がある Bitcoin 出力形式を見落とします。
  • 強化導出マーカーの欠落: 77'7h7H はソフトウェアごとに異なる解釈や拒否の対象となり得ます。強化子鍵と通常子鍵は交換できません。
  • アカウントインデックスの誤り: アカウント 0' だけを確認すると、後続の論理アカウントにある資金や権限を見落とします。
  • 外部枝と釣銭枝の混同:0 だけを走査すると、枝 1 の釣銭出力やウォレット固有の枝構成を見落とします。
  • アドレスインデックスの誤り: 既知の先頭アドレスが一致しても、後続、欠番、またはインポート済みのアドレスまで確認できた証拠にはなりません。
  • アドレスギャップによる見落とし: 未使用の外部アドレスが 20 個連続すると、標準 BIP-44 探索はその先の非標準な使用箇所より前で停止する場合があります。
  • アカウント飛ばしによる見落とし: 順次アカウント探索は、未使用アカウントで停止し、その後に作成されたアカウントを見落とす場合があります。
  • Bitcoinポリシーの不足: ディスクリプタ、スクリプト、閾値、鍵順序、フィンガープリント、チェックサムがなければ、パスだけで入金済み出力を再現できない場合があります。
  • ウォレット固有の規則: アプリは、汎用復元ツールが列挙しない旧式、独自、または移行用のパス構成を使うことがあります。
  • 拡張公開鍵によるプライバシー漏えい: xpub はアドレス群、取引履歴、残高、および将来の非強化子アドレスを明らかにする可能性があります。
  • 拡張秘密鍵の過剰露出: xprv のインポートは、取引に必要な一つの葉ではなく、サブツリー全体を露出させる可能性があります。
  • BIP-32親鍵の漏えい:xpub と対応する非強化子秘密鍵が一つ漏れると、親拡張秘密鍵とそのサブツリーを復元される可能性があります。
  • アドレス形式への過信: 構文上有効なアドレスでも、意図したシード、パス、ネットワーク、スクリプト、または所有権の証明にはなりません。
  • 同一アドレスのチェーン混同: 同じ EVM 鍵は複数ネットワークで同一アドレスになりますが、残高、nonce、トークン、リスクは別々です。
  • 悪意ある復元ソフトウェア: ウェブサイト、拡張機能、画面共有ツール、クリップボード監視、キーロガー、または偽造端末がルート秘密を盗む可能性があります。
  • インポートとスイープの混同: 鍵のインポートでは旧権限が残ります。スイープや移行では取引が作成されるため、手数料と送信先の確認が必要です。
  • 復元範囲の不足: 残高一つを見つけても、署名、釣銭、トークンコントラクト、ロール、承認、バリデータ鍵、バックアップを検証しなければ、資産が隠れたまま、または露出したままになる可能性があります。

よくある誤解

導出パスはパスワードや秘密情報ですか?

いいえ。パスは通常、公開構造を示すものであり、復元メタデータとして保持されるべきです。それはニーモニック、パスフレーズ、シード、秘密鍵、またはウォレットポリシーの代わりにはなりません。パスを公開することで組織に関する情報が明らかになる可能性がありますが、パスだけを持っていても署名権限は与えられません。

同じニーモニックなら常に同じウォレットが自動復元されますか?

いいえ。結果は、ニーモニック方式、正確なパスフレーズ、シード処理、導出アルゴリズム、パス、曲線、ネットワーク、アドレスやスクリプトの構築にも依存します。ウォレットソフトウェアは、同じ言葉を受け入れる場合でも、異なるデフォルトを選択することがあります。

コインタイプは他チェーンでの鍵利用を防ぎますか?

いいえ。コインのタイプは派生名前空間および互換性の慣例であり、プロトコル権限ではありません。ソフトウェアはキーを他の場所で派生させたり再利用したりすることができ、EVMネットワークは同じ秘密鍵に対して同じアカウントアドレスを公開することが一般的です。

復元したアカウントの残高がゼロなら資産消失の証拠ですか?

いいえ。それは、現在照会された特定のアドレスとネットワークに検出された残高がないことだけを示しています。間違った経路、アカウント、ブランチ、スクリプトタイプ、探索の制限、トークンのインデックス作成、またはネットワークの選択はすべて、意図した履歴を隠す可能性があります。

復元ツールで考えられる全パスを安全に試せますか?

いいえ。探索空間は大きくなる可能性があり、ウォレットの慣習は完全に普遍的ではなく、信頼できないツールにルートシークレットをさらすこと自体が損失につながります。探索を絞り込むためには、由来、記録されたフィンガープリントとアドレス、制限されたオフライン探索、そして検証済みソフトウェアを使用してください。

関連トピック

出典

ナビゲーション

Wiki を検索...