Web

レポート098 復元フレーズ、HDウォレットの仕組み

レポート「アルトコイン図鑑」では30種類以上のコインの概要と見通しを解説(詳しく)

復元フレーズ、HDウォレットの仕組み

今週のレポートでは、復元フレーズとウォレットの仕組みや関係について解説します。
復元フレーズがいったいどういう仕組みになっているのかについては、過去にも質問を多く頂いていたのですが、回答が複雑になるため後日レポートでということにしておりました。
今回は、そのあたりの復元フレーズにまつわる仕組みや謎について解説、お答えします。

会員のみなさんから寄せられた質問を抜粋します

「複数通貨に対応しているウォレットのパスフレーズについて質問で、1つのパスフレーズしか発行されない(=1つのパスフレーズで複数通貨の秘密鍵が復元できる)技術的な仕組みを知りたいです」

「時々ウォレットの復元とか、パスフレーズ、シード、BIP39/44準拠等の話題がでるかと思いますが、この辺りを歴史を含めて包括的に解説いただくようなレポートをお願いできたらと思っています。ネットではもちろん情報はいろいろあるのですが、これを見れば基礎からすべて理解できる、といったようなものはなく….
元々の秘密鍵-公開鍵というシンプルな体系から、現在主流のHDウォレットのニューモニックのフレーズ→シード→親秘密鍵→….への流れや、仕組み、BIP32/39/44それぞれのプロトコルの意味するところ、等です。」

「質問特集で、ウォレットのレポートを書かれるとありましたが、それに加えてほしい質問です。各アドレスに対する秘密鍵の集合体が復元フレーズである、といった感じの表現がどこかにありましたが、ピンときません。復元フレーズ作成後にアドレスが新規作成されても、そのアドレスの秘密鍵を復元できるのが不思議です。また、Trezorの一つのシードで、BitcoinやEtheriumの全アドレスの秘密鍵を復元できるのも不思議です」

このあたりの踏み込んだ質問に関しても、お答えできるレポートになるかとおもいます。

まずおさらい、秘密鍵

まず、秘密鍵についておさらいします。
秘密鍵は、ご存知の通りコインのコントロールの権利であり、コインそのもであるといえます。
コインの保有者だけが秘密鍵を知っている、そして、その秘密鍵で電子署名を行うことができ、その署名が正しいことが誰もが検証できる、この2つのことによって、コインの正当な保有や移動というものが行えるということでした。

次に、秘密鍵について抑えておく2点を述べます。
秘密鍵とアドレスの関係性
秘密鍵はどのように生成されるのか?
の2点です

秘密鍵とアドレスの関係性ですが、マルチシグなどの例外をのぞき、基本的には1対1対応だといえます。あるアドレスにつき、秘密鍵は1つが対応しています。

アドレスというのは、ビットコインの場合公開鍵のハッシュになっています。つまり、アドレスを生成するということは、公開鍵と秘密鍵のペアを作り、その公開鍵をハッシュしてアドレスの形式に変換する、ということにほかなりません。
ですので、アドレスの数だけ、対応する秘密鍵が存在するということになります。
多くのビットコインウォレットでは受け取り毎に自動的に新しいアドレスが生成されますので、使っているアドレスは100、200にも及ぶことがあります。すると、100、200のアドレスに対応するそれぞれの秘密鍵が存在する(ウォレット内で管理されている)ということになります。

次に、秘密鍵自体はどうやって生成するのかという点です。
秘密鍵自体はどのように生成してもかまいません。技術的なことをいうと、多くのコインでは、これは256ビットのランダムな数です。256ビットというのは1と0が256ならんだものですので、

0101110101110101000111010101101101011101011101010001110101011011010111010111010100011101010110110101110101110101000111010101101101011101011101010001110101011011010111010111010100011101010110110101110101110101000111010101101101011101011101010001110101011011

というものです。
これが最も原始的な秘密鍵です。

これを生成する方法は、単純には、乱数を用いて256個の1と0を作り出せばよいのです。それが秘密鍵になります。
アナログに作る方法としてはは、サイコロを振る方法もあります。サイコロを用意して、偶数がでたら0、奇数がでたら1として、256回のサイコロを振れば、秘密鍵ができあがるということになります。

(秘密鍵ですが、表示上はエンコードされて、
KxYVFenMofKpHVHNWMZGShLsEBuNPyxPa4uVs2ZKkSkAD4fhqgbp
といったようにアドレスのような形で扱うことができるようになっています)
いくつかのコインのアドレス、公開鍵、秘密鍵の形式をみてみましょう。

◯ビットコイン

秘密鍵
KxYVFenMofKpHVHNWMZGShLsEBuNPyxPa4uVs2ZKkSkAD4fhqgbp

公開鍵
03b87c7986515e33a8ac51dce7a1f1ff77bf47772d0a37a45a9faaa27d5b6e47b3

アドレス
1Gm9W9SZfVxWzvVbud4PRMkq9P6K8CYkLC

◯イーサリアム

秘密鍵
07936bc93c1d42e745cdb553c86321890c02a8adb0b5a5e096d4674b27bb8b1e

公開鍵
0x7e5f4552091a69125d5dfcb7b8c2659029395bdf

アドレス
0xC96B53F0964dB096816B0655E9F2196dd840F8dA

※(なお上記は形式のサンプルです。実際には利用できない数値です)
ここまでが前提知識です。次にいきましょう。

つづきは、ビットコイン研究所(有料版)内で配信しています。
https://lounge.dmm.com/detail/828/

<レポート内容>
まずおさらい、秘密鍵
初期のウォレット(ランダムウォレット)
HDウォレットの登場
シードから、すべての鍵を生成する
HDウォレットの階層構造
複数コインを扱えるBIP44の規格
派生パスとツール
イーサリアムウォレットの互換性の話
アドバンスド: 鍵を導出するアルゴリズムについて
HDウォレットの仕組みであらゆるコインが一元管理できるの?
ウォレットの互換性について
おまけ:復元フレーズの単語列はどのように作成されているか?

ビットコイン研究所(有料版)
https://lounge.dmm.com/detail/828/

・おしらせ
ビットコイン研究所の有料版サロンでは、平易な言葉で最近の技術や業界事情などについて解説するレポートを毎週配信しています。

暗号通貨について、もっと知りたい、勉強をしたいというかたに情報を提供しています。サロン内では疑問点も質問できます。

一度登録いただけると100本以上の過去レポートが読み放題で、大変お得です。レポート一覧がこちらのページありますので、よろしければいちど目をとおしてみてください。
(詳細情報)

Ledger Nano S - The secure hardware wallet