ビットコインセキュリティ 中級

12個の単語に、あなたの全ビットコインが入っている

12個または24個の単語が、どうやって無限のビットコイン鍵を代わりに保管するのか。BIP-39ニーモニック、BIP-32 HDウォレット、派生パス、そしてシードを安全にバックアップする実践原則。

· 6分

ビットコインの秘密鍵はこのような形をしています。

e9873d79c6d87dc0fb6a5778633389f4453213303da61f20bd67fc233aa33262

64桁の16進数の文字列を正確に紙に書き写し、一文字も間違えずに保管できるでしょうか。しかも、プライバシーのために取引ごとに新しいアドレス(新しい鍵)を使うことが推奨されています。そうなると鍵は数十、数百個に増えます。これらすべての鍵を別々にバックアップするのは現実的に不可能です。シードフレーズとHDウォレットは、まさにこの問題を解くために登場しました。

シードフレーズ:人が読めるバックアップ

今日のほとんどのウォレットは、最初に作るときに12個または24個の英単語を表示します。

witch collapse practice feed shame open despair creek road again ice least

これをシードフレーズ(seed phrase) またはニーモニック(mnemonic、記憶補助フレーズ) と呼び、標準はBIP-39です。仕組みはこうです。

  1. ウォレットが128ビット(12単語)または256ビット(24単語)のランダムなエントロピーを生成します。
  2. その数字を2048個の決められた単語リストに対応させて単語に変換します。
  3. 最後の数ビットはチェックサムで、単語を間違えて書くとウォレットがエラーを検知します。

つまりシードフレーズは、巨大な乱数を人が書き写しやすい形にエンコードしたものです。16進数よりも単語のほうが、覚えるのも、手で書くのも、誤りを見つけるのも簡単です。

HDウォレット:一つの種から育つ鍵の木

シードフレーズは単なるバックアップではありません。それ自体がすべての鍵を生む種です。この構造をHDウォレット(Hierarchical Deterministic Wallet) と呼び、標準はBIP-32です。

  • シードフレーズ → マスターシードマスター秘密鍵
  • 一つのマスター鍵から、決定論的(deterministic) に子鍵を無限に派生

「決定論的」という言葉が核心です。同じシードからは、いつも同じ順序で同じ鍵たちが出てきます。だからウォレットアプリを消したり、ハードウェアを失くしたりしても、シードフレーズ12単語さえあれば、新しい端末ですべてのアドレスと残高をそのまま復元できます。鍵を一つひとつバックアップする必要はありません。種一つで木全体がまた育つのです。

シードフレーズ(12/24単語)

マスター鍵
   ├── アドレス 0
   ├── アドレス 1
   ├── アドレス 2
   └── …(無限)

派生パスと拡張公開鍵

子鍵は派生パス(derivation path) というアドレスで識別されます。よくある形式(BIP-44)は次のとおりです。

m / 44' / 0' / 0' / 0 / 5
│    │     │    │   │   └ アドレス番号
│    │     │    │   └ 外部(受取)/内部(お釣り)
│    │     │    └ アカウント番号
│    │     └ コインの種類(0' = ビットコイン)
│    └ 目的(44' = BIP-44)
└ マスター

ウォレットごとに既定のパスが決まっているため、同じシードを別のウォレットに復元しても同じアドレスが出るよう互換性が保たれます。

ここで強力ですが危険な道具が拡張公開鍵(xpub) です。xpubは秘密鍵なしで、そのウォレットのすべての将来のアドレスを事前に計算できるようにします。おかげで残高だけを見る監視専用(watch-only)ウォレットを作れます。しかし言い換えれば、xpubを公開すると、あなたのすべての取引履歴が一度に明らかになります。 xpubは決して軽々しく共有しないでください。

パスフレーズ:25番目の単語

BIP-39には任意のパスフレーズ(passphrase)、よく「25番目の単語」と呼ばれる機能があります。シードフレーズに自分だけが知る追加の秘密フレーズを足すと、まったく別の独立したウォレットが作られます。

  • シードフレーズだけが露出しても、パスフレーズを知らなければ資金にアクセスできません。
  • 強要される状況で、パスフレーズなしの「おとりウォレット」を見せることができます(もっともらしい否認)。

ただしパスフレーズを忘れると、そのウォレットの資金も永遠に消えます。セキュリティが強くなるぶん、責任も大きくなります。

シードを守る実践原則

シードフレーズを持つ人が、そのビットコインの持ち主です。したがってシードの保管はビットコインセキュリティの核心です。

  • オフラインにのみ書き留めてください。 紙に手で書き、長期保管には燃えない金属バックアップを推奨します。
  • 決してデジタルで保存しないでください。 写真、スクリーンショット、クラウド、メモアプリ、メールはすべてハッキングの対象です。
  • どんなウェブサイトにも入力しないでください。 正常なウォレットはシードを再び尋ねません。シードを要求するサイトは100%フィッシングです。
  • 復元を一度検証してください。 書き留めたフレーズで実際に復元できるか、少額で確認してから本格的に使ってください。
  • 中古ハードウェアウォレットの「事前設定されたシード」を使わないでください。 必ず新しい端末で自分でシードを生成してください。
  • 分散保管と相続を考慮してください。 一か所に置けば火災・盗難に弱く、誰も知らなければ死亡時に永遠にロックされます。

関連する概念

関連記事