メインコンテンツにスキップ

鍵導出ツール チュートリアル: BIP-44 パスエクスプローラー

Hierarchical Deterministic(HD)ウォレットは、現代の暗号資産鍵管理の中核です。1つのシードから、HDウォレットは鍵ツリー全体を導出します。複数のブロックチェーンにまたがる何十億もの一意なアドレスを生成でき、それらはすべて元のシードフレーズから復元可能です。SafeSeed の鍵導出ツールを使うと、このツリーを可視化して探索し、導出パスの仕組みを理解し、ウォレットの挙動が期待通りでないときに原因を診断できます。

今すぐ試す

safeseed.app/tools/key-derivation/ で BIP-44 導出パスを探索できます。完全クライアントサイドで、オフラインでも動作します。

鍵導出とは?

鍵導出とは、既存の鍵から新しい暗号鍵を生成するプロセスです。暗号資産では、これはシードフレーズから始まり、BIP-32(Hierarchical Deterministic Wallets)で定義された deterministic アルゴリズムに従い、BIP-44(Multi-Account Hierarchy)で体系化されます。

最も重要な性質は determinism(決定性) です。同じシードは常に同じ鍵ツリーを生成します。これは次を意味します。

  • シードフレーズだけでウォレット全体を復元できる
  • 同じシードを使う複数デバイスでは同じアドレスが表示される
  • 最初のシード生成後にランダム要素は関与しない

鍵ツリー

鍵導出をツリーとして考えてみましょう。

Master Key (root)
├── Purpose 44' (Legacy)
│ ├── Bitcoin (0')
│ │ ├── Account 0'
│ │ │ ├── External (0)
│ │ │ │ ├── Address 0
│ │ │ │ ├── Address 1
│ │ │ │ └── Address 2 ...
│ │ │ └── Internal/Change (1)
│ │ │ ├── Address 0
│ │ │ └── Address 1 ...
│ │ └── Account 1'
│ │ └── ...
│ ├── Ethereum (60')
│ │ └── Account 0'
│ │ └── ...
│ └── Litecoin (2')
│ └── ...
├── Purpose 49' (SegWit)
│ └── ...
├── Purpose 84' (Native SegWit)
│ └── ...
└── Purpose 86' (Taproot)
└── ...

このツリーの各ノードには、秘密鍵と公開鍵の両方があります。Address Generator は末端ノード(個別アドレス)を導出し、鍵導出ツールはツリー全体の任意ノードを検査できます。

導出パスを理解する

導出パスは、マスターキーから特定の子キーへ移動する手順を表すインデックス列です。標準的な記法は次のとおりです。

m / 84' / 0' / 0' / 0 / 0

これを完全に分解して見ていきます。

パス構成要素

ComponentMeaningExample Values
mマスター(ルート)キー常に m
purpose'どの BIP 標準か44', 49', 84', 86'
coin_type'どの暗号資産か0' (BTC), 60' (ETH), 2' (LTC)
account'アカウント分離0', 1', 2'
change外部/内部0(受取), 1(お釣り)
address_indexアドレス番号0, 1, 2, ...

Hardened 導出と通常導出

アポストロフィ(')は hardened 導出 を示します。これは HDウォレットの根本的なセキュリティ概念です。

通常(non-hardened)導出m/0/1/2):

  • 親公開鍵からすべての子公開鍵を導出できる
  • 子秘密鍵と親公開鍵の両方が漏えいすると、親秘密鍵を計算できる
  • changeaddress_index レベルで使用される

Hardened 導出m/0'/1'/2'):

  • 親秘密鍵だけが子キーを導出できる
  • 子キーが漏えいしても親は露出しない
  • purposecoin_typeaccount レベルで使用される

セキュリティ上の理由: 最初の3レベル(purpose'coin_type'account')は hardened 導出を使って防火壁を作ります。たとえ攻撃者がアドレスレベルの子秘密鍵を取得しても、hardened 境界を越えて逆算し、マスターキーや他アカウント・他通貨の鍵を見つけることはできません。

ウォレット別の標準導出パス

ウォレットソフトによって導出パスは異なる場合があります。主要ウォレットの参照表は以下です。

WalletBitcoin PathEthereum PathNote
Ledger Livem/84'/0'/0'/0/xm/44'/60'/0'/0/xNative SegWit がデフォルト
Trezor Suitem/84'/0'/0'/0/xm/44'/60'/0'/0/xNative SegWit がデフォルト
Electrumm/84'/0'/0'/0/xN/ANative SegWit がデフォルト
MetaMaskN/Am/44'/60'/0'/0/xEthereum 専用
BlueWalletm/84'/0'/0'/0/xN/ANative SegWit がデフォルト
Exodusm/84'/0'/0'/0/xm/44'/60'/0'/0/xマルチチェーン
Trust Walletm/84'/0'/0'/0/xm/44'/60'/0'/0/xマルチチェーン
Coinbase Walletm/44'/0'/0'/0/xm/44'/60'/0'/0/xBTC は Legacy
Myceliumm/84'/0'/0'/0/xN/ABitcoin 専用
Wasabim/84'/0'/0'/0/xN/Aプライバシー重視

資金復旧時には、元のウォレットがどのパスを使っていたかを知ることが重要です。鍵導出ツールは、鍵の所在を見つけるための系統的なパス探索を支援します。

ステップ別: 鍵導出ツールの使い方

ステップ 1: ツールを開く

safeseed.app/tools/key-derivation/ にアクセスします。SafeSeed の他ツールと同様、処理はすべてブラウザ内で実行されます。

セキュリティ注意: 実資金のシードフレーズを入力する場合は、air-gapped マシンを使用してください。Offline Usage Guide を参照してください。

ステップ 2: シードフレーズを入力する

12語または24語の BIP-39 mnemonic フレーズを入力します。必要に応じてパスフレーズも入力できます。ツールはフレーズを検証し、PBKDF2 によって導出されたマスターシード(512-bit hex)を表示します。

ステップ 3: マスターキーを確認する

有効なシードフレーズ入力後、ツールは マスターキー 情報を表示します。

  • Master Private Key (xprv): すべての鍵の起点となるルート秘密鍵。鍵階層の中で最も機密性の高いデータです。
  • Master Public Key (xpub): 対応する公開鍵。この鍵からすべての子公開鍵を導出できます(non-hardened パスの場合)。
  • Master Chain Code: 導出関数で鍵と併用される 256-bit 値。子キー導出に追加の予測困難性を与えます。

ステップ 4: 導出ツリーを移動する

鍵導出ツールは鍵階層をインタラクティブなツリーとして表示します。次が可能です。

  1. ツリーノードをクリック して展開し、子キーを見る
  2. パス入力欄に カスタムパスを入力(例: m/84'/0'/0'/0/0
  3. 秘密鍵表示と公開鍵表示を切り替え
  4. 任意の鍵やパスをコピー して他ツールやウォレットで使用

ステップ 5: 特定の鍵を検査する

ツリーでノードを選ぶと、その鍵の完全情報が表示されます。

  • Derivation Path: マスターからその鍵までの完全パス
  • Private Key: そのレベルの鍵(拡張形式および該当時は WIF)
  • Public Key: 対応公開鍵(圧縮形式)
  • Chain Code: そのレベルのチェーンコード
  • Fingerprint: その鍵の4バイト識別子(拡張鍵シリアライズに使用)
  • Derived Address: 暗号資産アドレス(末端レベルの鍵)

ステップ 6: 異なる purpose を探索する

異なる BIP 標準をたどることで、同じシードが異なるアドレス種別を生む仕組みを理解できます。

BIP-44 (Legacy): m/44'/0'/0'/0/0

  • 1 で始まる Legacy アドレスを生成
  • 取引手数料が最も高い
  • 旧システムとの互換性が最大

BIP-49 (SegWit): m/49'/0'/0'/0/0

  • 3 で始まる SegWit アドレスを生成
  • 取引手数料は中程度
  • 互換性が高い

BIP-84 (Native SegWit): m/84'/0'/0'/0/0

  • bc1q で始まる Native SegWit アドレスを生成
  • 取引手数料が低い
  • 現代ウォレットの標準

BIP-86 (Taproot): m/86'/0'/0'/0/0

  • bc1p で始まる Taproot アドレスを生成
  • 取引手数料が最も低い
  • 最新標準で高度なスクリプトに対応

深掘り: BIP-32 導出の仕組み

鍵導出の数学的背景を理解しなくてもツールは使えますが、ウォレットのセキュリティを本質的に理解したい場合には非常に有用です。

HMAC-SHA512 子キー導出

BIP-32 は子キー導出に HMAC-SHA512 を使います。処理は hardened と通常導出で異なります。

通常の子キー導出:

HMAC-SHA512(
key = parent_chain_code,
data = parent_public_key || child_index
) → (child_key_data, child_chain_code)

child_private_key = parent_private_key + child_key_data (mod n)

Hardened 子キー導出:

HMAC-SHA512(
key = parent_chain_code,
data = 0x00 || parent_private_key || child_index
) → (child_key_data, child_chain_code)

child_private_key = parent_private_key + child_key_data (mod n)

重要な違い: hardened 導出は入力として 秘密鍵 を使い、通常導出は 公開鍵 を使います。つまり hardened 子キーは親公開鍵だけからは導出できません。

拡張鍵シリアライズ

拡張鍵(xprv/xpub)は複数の情報をエンコードしています。

FieldSizeDescription
Version4 bytesネットワークと鍵種別(xprv は 0488ADE4、xpub は 0488B21E
Depth1 byteマスターキーから何レベル下か
Parent fingerprint4 bytes親鍵ハッシュの先頭4バイト
Child index4 bytesどの子か(hardened ビット含む)
Chain code32 bytesチェーンコード
Key data33 bytes秘密鍵または公開鍵

構造全体は Base58Check エンコードされ、見慣れた xprv... または xpub... 文字列になります。バージョンバイトが異なると、SegWit 用の ypub、Native SegWit 用の zpub になります。

実用例

応用 1: ウォレット復旧のデバッグ

シナリオ: 新しいウォレットでシードフレーズを復元したが、Bitcoin 残高が 0 と表示される。

鍵導出ツールでの診断:

  1. シードフレーズを鍵導出ツールに入力
  2. m/84'/0'/0'/0/0(Native SegWit、最も一般的な現代パス)へ移動
  3. アドレスを確認し、mempool.space でチェック
  4. 残高がなければ m/44'/0'/0'/0/0(Legacy)を試す
  5. m/49'/0'/0'/0/0(SegWit)を試す
  6. m/86'/0'/0'/0/0(Taproot)を試す
  7. まだなければ account 1' を試す: m/84'/0'/1'/0/0
  8. 外部(change=0)と内部(change=1)の両チェーンを確認

この系統的な探索で、導出ツリーのどこに資金があるかを正確に特定できます。

応用 2: Watch-Only ウォレットの理解

シナリオ: 秘密鍵を公開せずに Bitcoin 残高を監視する watch-only ウォレットを設定したい。

鍵導出ツールの使い方:

  1. シードフレーズを入力(air-gapped マシンで)
  2. アカウントレベル m/84'/0'/0' へ移動
  3. このレベルの extended public key (zpub) をコピー
  4. この zpub を watch-only ウォレットソフト(例: Electrum、BlueWallet)にインポート
  5. watch-only ウォレットはこのレベル以下の受取・お釣りアドレスをすべて導出可能
  6. 秘密鍵の導出やトランザクション署名はできない

鍵導出ツールは、ツリーのどのレベルをエクスポートすべきか、拡張公開鍵に何が含まれるかを明確に示します。

応用 3: マルチアカウント構成

シナリオ: 1つのシードフレーズを使いつつ、Bitcoin 保有を複数アカウント(例: 貯蓄、取引、事業)に分けたい。

鍵導出ツールの使い方:

  1. Account 0: m/84'/0'/0' — 個人貯蓄
  2. Account 1: m/84'/0'/1' — 取引
  3. Account 2: m/84'/0'/2' — 事業

各アカウントは独自のアドレス集合と拡張鍵を持ちます。アカウントレベルの hardened 導出により、1アカウントの鍵が漏えいしても他へ影響しません。

応用 4: クロスチェーン鍵探索

シナリオ: 1つのシードフレーズから Bitcoin と Ethereum 両方のアドレスが生成される仕組みを理解したい。

鍵導出ツールの使い方:

  1. シードフレーズを入力
  2. m/44'/0'/0'/0/0 へ移動 — これは Bitcoin の鍵
  3. m/44'/60'/0'/0/0 へ移動 — これは Ethereum の鍵
  4. 観察: 同じシード由来でも鍵は完全に異なる
  5. ツリーが分岐するのは coin_type レベル(0'60'

これは、BIP-44 階層が単一シードでの復元性を保ちながらチェーン間の重複を防ぐことを示しています。

応用 5: ハードウェアウォレット挙動の検証

シナリオ: ハードウェアウォレットが本当に制御アドレスを正しく表示しているか確認したい。

鍵導出ツールの使い方:

  1. air-gapped マシンで、ハードウェアウォレット初期化時に使ったシードフレーズを入力
  2. ハードウェアウォレットと同じパスで先頭10アドレスを導出
  3. 各アドレスをハードウェアウォレット表示と比較
  4. すべて一致すれば、ハードウェアウォレットは BIP-32/44 導出を正しく実装
  5. 異なる場合、ファームウェア問題、別パスフレーズ、または導出パス不一致の可能性

お釣りアドレス(Change Address)の理解

新規ユーザーにとって HDウォレットで最も混乱しやすい概念の1つが お釣りアドレス です。鍵導出ツールはこれを分かりやすくします。

お釣りアドレスとは?

Bitcoin(および類似の UTXO ベースチェーン)では、あるアドレスから送金すると通常、そのアドレスの「未使用トランザクション出力」(UTXO)全体を消費します。たとえば 0.5 BTC を送りたいが UTXO が 1.0 BTC の場合、トランザクションは2つの出力を作ります。

  1. 受取人アドレスへ 0.5 BTC
  2. 自分が管理する お釣りアドレス0.5 BTC(手数料差し引き)

このお釣りアドレスは導出パスの 内部チェーン(change = 1)から生成されます。

  • 受取アドレス: m/84'/0'/0'/0/x
  • お釣りアドレス: m/84'/0'/0'/1/x

鍵導出ツールでお釣りアドレスを表示する

change 要素を 1 に設定して、お釣りチェーンへ移動します。

PathTypePurpose
m/84'/0'/0'/0/0External最初の受取アドレス
m/84'/0'/0'/0/1External2番目の受取アドレス
m/84'/0'/0'/1/0Internal最初のお釣りアドレス
m/84'/0'/0'/1/1Internal2番目のお釣りアドレス

お釣りアドレスの理解はウォレット復旧で重要です。外部アドレスだけをスキャンすると、お釣りアドレス上の資金を見落とすことがあります。鍵導出ツールは両チェーンを表示します。

SLIP-44 Coin Types

BIP-44 パスの coin_type レベルは SLIP-44 の登録値を使います。よく使われる値は次のとおりです。

CoinSLIP-44 TypePath Prefix
Bitcoin0'm/84'/0'/...
Bitcoin Testnet1'm/84'/1'/...
Litecoin2'm/84'/2'/...
Dogecoin3'm/44'/3'/...
Ethereum60'm/44'/60'/...
Ethereum Classic61'm/44'/61'/...
Bitcoin Cash145'm/44'/145'/...
Stellar148'm/44'/148'/...
Ripple (XRP)144'm/44'/144'/...
Cardano1815'm/1852'/1815'/...
Solana501'm/44'/501'/...
Polkadot354'm/44'/354'/...
Cosmos118'm/44'/118'/...
Tron195'm/44'/195'/...
Avalanche9000'm/44'/9000'/...

鍵導出ツールは暗号資産選択時にこれら登録値を使いますが、カスタムパスの手動入力も可能です。

完全な一覧は Supported Blockchains を参照してください。

上級: Gap Limit とアドレス発見

ウォレットがシードフレーズから復旧する際、どのアドレスが使われたかを判定する必要があります。そのために、インデックス 0 から順にアドレスをスキャンし、ブロックチェーン上のトランザクション履歴を確認します。

gap limit は、ウォレットが停止するまでにスキャンする「連続未使用アドレス数」です。BIP-44 は gap limit を 20 と推奨しています。つまり、アドレス 0-15 が使用済みで 16-35 が未使用なら、ウォレットはアドレス 35(16 + 20 gap)までスキャンして、以降に使用済みがないと判断します。

影響:

  • SafeSeed の Address Generator で連続20件超のアドレスを生成し、非連続に使った場合(例: index 5 から 30 へ飛ぶ)、復旧時に一部ウォレットが後半アドレスを発見できない可能性がある
  • 多くのウォレットは設定で gap limit を増やせる
  • 鍵導出ツールで、どのインデックスが導出され使用された可能性があるかを正確に把握できる

FAQ

BIP-32、BIP-44、BIP-49、BIP-84、BIP-86 の関係は?

BIP-32 は階層型 deterministic 鍵導出の中核アルゴリズム、つまり親鍵から子鍵へ進む方法を定義します。BIP-44 は得られる鍵ツリーの標準構造(purpose/coin/account/change/index)を定義します。BIP-49、BIP-84、BIP-86 は同じ BIP-32 アルゴリズムと BIP-44 構造を使う拡張で、purpose 値(49、84、86)とアドレス符号化形式(それぞれ SegWit、Native SegWit、Taproot)を指定します。

鍵導出ツールで失われた暗号資産を見つけられますか?

正しいシードフレーズはあるが導出パスが不明な場合、鍵導出ツールで標準パスを系統的に探索できます。各パス組み合わせでアドレスを導出し、ブロックチェーンエクスプローラーで確認してください。これはウォレット復旧デバッグの最も一般的な用途です。

実運用で "hardened" 導出とは何を意味しますか?

hardened 導出とは、子キーが親秘密鍵でしか導出できないことを意味します。実際にはセキュリティ境界を作り、hardened ノード配下の子キーを誰かが入手しても、逆算して親秘密鍵を特定できません。これが BIP-44 パス最初の3レベル(purpose、coin_type、account)が hardened である理由です。アドレスレベル侵害からマスターキー露出を防ぎます。

なぜウォレットは xpub ではなく zpub を表示するのですか?

プレフィックス(xpub、ypub、zpub)は、その拡張公開鍵が想定するアドレス形式を示します。xpub は Legacy(BIP-44)、ypub は SegWit(BIP-49)、zpub は Native SegWit(BIP-84)用です。いずれも同種データ(chain code を含む拡張公開鍵)を保持しますが、期待されるアドレス形式を示すため version byte が異なります。鍵導出ツールは各レベルで適用形式を表示します。

BIP-84 パスで Ethereum 鍵を導出できますか?

技術的には任意パスで鍵導出は可能ですが、慣例として Ethereum は BIP-44(m/44'/60'/...)を使います。BIP-84 は Native SegWit アドレス向けの Bitcoin 固有標準です。鍵導出ツールは標準 Ethereum パスで正しく Ethereum アドレスを導出します。非標準パスでも有効な鍵は得られますが、ウォレットソフトは認識しません。

account index を間違えるとどうなりますか?

account 0' から導出したが資金が account 1' にある場合、標準ウォレットスキャンでは表示されません。鍵導出ツールで account index を切り替えて、どの account に資金があるか確認できます。多くのウォレットは既定で account 0' を使いますが、追加 account 作成を許可するものもあります。

鍵導出ツールで passphrase はどう扱われますか?

passphrase(25語目)は、BIP-32 鍵導出の前段である初期シード導出(BIP-39)時に適用されます。異なる passphrase は完全に異なるマスターシードを生み、結果として鍵ツリー全体が変わります。鍵導出ツールは passphrase 適用後のマスターシードを表示するため、正しいシードで作業しているか確認できます。

鍵導出に最大深度はありますか?

BIP-32 は理論上任意深度まで対応しますが、BIP-44 は5レベル(purpose/coin/account/change/index)を標準化しています。5レベル超は非標準で、一般的なウォレットソフトは対応しません。鍵導出ツールは標準5レベルをサポートし、上級探索向けにカスタムパスも許可します。

関連ガイド