皆さんはビットコインのアドレスがどのように生成されているか知っていますか?

実は、HDウォレットと呼ばれる面白い仕組みで大量のアドレスが作られています。


今回は、そんなHDウォレットの仕組み、メリット、デメリットを詳しく、わかりやすくて解説します!

ビットコインを安心して管理するために、少しでも知っておくべき内容です!

HDウォレット(階層的決定性ウォレット)とは​​

ビットコインを取引するとき、自分で意識してアドレスを作ることはありません。ウォレットや取引所が自動でアドレスを生成して、与えてくれます。

このように、ビットコインなど仮想通貨のウォレットは“何らかの仕組み”でビットコインアドレスを生成してくれます。この“何らかの仕組み”を表した言葉がHDウォレットです!

HDとは階層的決定性(Hierarchy Deterministic)​の略であり、非常に簡単にまとめると、たった一つの文字列だけを元に、無限のビットコインアドレスを生成するウォレットです。元々は一つの種からなる一本の枝であったのに、枝分かれを繰り返して大量の末端を作る樹木のようなイメージです。

​いわゆるウォレットの種類ではない

勘違いしやすのですが、HDウォレットは「いわゆるウォレットの種類」ではありません。よく言われる「ウォレットの種類」は、モバイルウォレットやハードウォレットなど、操作する端末がなんであるかというところに注目したものです。

HDウォレットはそういう意味での種類ではありません。前述のように、どのようにビットコインアドレスを生成するかを示した言葉です。

HDウォレットと並べられる存在としては、ランダムウォレットがあります。そして、既存のあらゆる仮想通貨ウォレットはランダムウォレットもしくはHDウォレットのどちらかに分類されます。


↓いわゆるウォレットの種類についての記事はこちら↓

「ウォレットを使ってみたいけど、どう使うのかが分からない」コインチェックのハッキング騒動があったから、自分の仮想通貨は安全な場所に保管したいけど、どうしたらいいか分からない。そんなあなたに朗報です。この記事を読めばウォレットの仕組み、種類、通貨別おすすめウォレットなどを短時間で知ることができます。そして、ウォレットを利用し自分の仮想通貨を安全に保管することが出来るようになります。また、セキュリティを大幅にアップさせる仮想通貨を安全に保管する4つのコツも紹介していきます!ウォレットのことをしっかりと理解し、自分の資産を安全に保管しましょう!目次そもそも仮想通貨ウォレットとは?ウォレットの種類一覧ウォレット作成のメリットウォレット作成の注意点通貨別のおすすめウォレット【セキュリティ大幅アップ】仮想通貨を安全に保管する4つのコツ!まとめそもそも仮想通貨ウォレットとは?ウォレットとは文字通り仮想通貨の「財布」であり、仮想通貨の保管ができ他のウォレットに送金したりすることができます。秘密鍵と公開鍵ウォレットとは秘密鍵と公開鍵と仮想通貨アドレスを管理するものです。秘密鍵とは約70桁の数字とアルファベットをランダムに選んだ文字列のことです。桁があまりにも大きいため他人とは絶対に被らないというのがポイント!その秘密鍵から公開鍵、そして公開鍵からアドレスが作られるのですが、秘密鍵が他人に知られてしまうと勝手に送金されてしまう可能性があるため絶対に知られてはいけません。そのためウォレットについて考える時には秘密鍵を誰が保持しているかというのが重要になります。(詳細は後ほど)コールドウォレットとホットウォレットウォレットはネットに繋がっているホットウォレットとネットに繋がっていないコールドウォレットの二つに大きく分けられます。ネットに繋がっているホットウォレットは取引を頻繁にする人にとっては便利ですが、インターネット経由でハッキングされたりウイルス感染するリスクがあります。一方ネットに繋がっていないコールドウォレットはすぐに取引は出来ないものの、ハッキングリスクはほぼ0と言えるでしょう。ウォレット比較の時の重要な視点秘密鍵を誰が持っているのかウォレットがネットに繋がっているのかどうか 

 

1つのシードから無限にアドレスを生成する

​ビットコインのやりとりにおいて、「1人につき1つのビットコインアドレスがある」と勘違いされることが多くあります。実際は異なり、取引ごとに異なるアドレスを使います。1人につき、無限のアドレスがあります。

ビットコインは匿名性が低く、どのアドレスからどのアドレスへ何BTC送られたかが全て公開されています。取引記録を追えば1つのアドレスに今いくら保管されているかを調べることができてしまうのです。(こちらのページでアドレスを検索すると調べられてしまいます。)

そのため、取引ごとに新たな未使用アドレスを用意することが推奨されます。


ビットコインのアドレスは、自分だけが知っている秘密鍵から、他人にバレてもよい公開鍵を生成し、公開鍵からビットコインアドレスを生成しています。ここの対応は全て1対1です。この、「秘密鍵をどのように作るのか」というのが今回の話題です。


​HDウォレットは、HD(階層的決定性)というように、ある1つの文字列から、層を成すように秘密鍵・公開鍵・アドレスを生成していきます。

ここがそれまでのウォレットと決定的に異なる点です。全ての層はその上の層によって自動的に決定されます。

初に決められるシードだけによって、その下全ての秘密鍵・公開鍵・アドレスが決定されることになります。

​ランダムウォレット(非決定性ウォレット)との比較​

​HDウォレットが採用されるまでは、ランダムウォレットという形式が利用されていました。ここでは、ランダムウォレットがどのようなものであったかを解説します。

​ランダムウォレットとは

​ランダムウォレット(非決定性ウォレット)は、その名前の通り、秘密鍵がランダムに生成されます。アドレス1つにつき秘密鍵が1つ必要になるので、アドレス分だけ秘密鍵を作る必要があります。

秘密鍵間での関係性はなく、全ての鍵を別々に管理しなければいけません。

そのため、秘密鍵の数は膨大な数になり、管理が困難になってきます。また、アドレスを増やすたびにバックアップを取る必要があるという問題点がありました

​ランダムウォレットでのアドレス生成の仕組み

ランダムウォレットのイメージを上の図で示しました。非常にシンプルですね。

ランダムに秘密鍵を大量に生み出し、それぞれビットコインアドレスに変換します。使い切ったらまた秘密鍵を生成する、という流れです。

重要なことは、それぞれの秘密鍵が結びついておらず、スタート地点が無数にあるということです。このことが、秘密鍵を適切に管理することを難しくしています。

前述の通り、アドレスを減らすことはプライバシーを損なうことに繋がってしまいます。そのため大量に別々の秘密鍵を作らざるを得ないのです。

HDウォレットの仕組み

​前項でHDウォレットをざっと紹介しましたが、ここからは少し具体的にその仕組みを解説していきます。

技術的な話ではありますが、専門用語をなるべく避けて解説します!

アドレス生成に必要なものは変わらない!

あらゆるウォレットに共通で、ビットコインのアドレスは、秘密鍵・公開鍵・ハッシュ関数といった技術を用いて作られています。

どんなウォレットであれ、最初に秘密鍵を作ります。これは自分が定めて自分だけが知っているという必要がある、パスワードのようなのです。安全な乱数生成器を用いて作られます。

秘密鍵は、ビットコインの送金の時に必要となります。電子署名と呼ばれる本人確認を秘密鍵で行います。


秘密鍵にハッシュ関数をかけて、公開鍵にします。ハッシュ関数とは一方向的に値を変える関数であり、結果から代入したものを求めるのが極めて困難に作られています。つまり公開鍵から秘密鍵を求めることは現実的にはできません。


公開鍵ができたら、ビットコインアドレスに加工していきます。公開鍵にハッシュ関数をかけ、base58checkエンコーディングをして、ヘッドに1か3の文字をつけて、ビットコインアドレスが出来ます。

ビットコインアドレスはビットコインの受取の時に必要となります。口座番号のようなものです


まとめると、秘密鍵を作った後は、秘密鍵から公開鍵を、公開鍵からビットコイアドレスを作る、ということです!

 

↓秘密鍵・公開鍵や電子署名などについての詳しい記事はこちら↓

​「公開鍵・秘密鍵って何だろう?」「どうして鍵が2つもあるの?」このような疑問を持ったことはありませんか?この記事を読めば公開鍵・秘密鍵の基本を理解することができます。普通に考えれば、1つの錠に対して鍵は1つです。しかし、仮想通貨取引において用いられるこの2つの鍵は性質が全く異なります。鍵が2つあることは情報を保護する上で非常に重要な意味を持っています。一般の鍵のイメージは公開鍵・秘密鍵を理解する中で邪魔になるかもしれません。一旦はそのイメージを脇において読むといいと思います!目次公開鍵・秘密鍵とは​​​​秘密鍵の管理に注意!​秘密鍵の管理方法は?​まとめ​仮想通貨の公開鍵・秘密鍵とは​​​​​公開鍵​公開鍵とは一般に公開されている鍵で、後で説明する秘密鍵から作成されます。流れとしては秘密鍵→公開鍵→アドレスという感じです。しばしば公開鍵とアドレスは同じものとして扱われるのですが、違うものなので注意してください。アドレスは銀行口座で例えるなら口座番号です。例えばA君からB君に1BTC送るとしましょう。B君は1BTCを受け取る際、自分のアドレスをA君に教えればいいだけです。このトランザクションではB君の秘密鍵も公開鍵も必要ありません。現在の銀行を介した取引と仕組みは同じです。一方で、公開鍵は取引の検証のために用いるものです。つまり公開鍵でトランザクション内容が本当に正しいのかを検証することができるということです。上の例でA君の公開鍵を使えば、「A君が自分の秘密鍵を使って送金したこと」「送金額が1BTCのままであること」「B君のアドレスに送金されていること」を誰もが確認することができます。詳しくは電子署名の図で説明します。秘密鍵から公開鍵を作ることは比較的容易にできますが、公開鍵から元の秘密鍵を類推することは非常に困難です。​公開鍵から秘密鍵を作れてしまってはこの暗号方式の意味がありません。この一方向性が非常に重要で、歴史的にみると1960年代、一方向性をもつアルゴリズムが見つからなかったので、公開鍵と秘密鍵を用いた暗号方式は理論の段階にとどまっていました。しかし条件を満たすアルゴリズムが見つかったことで、現在の2つの鍵を用いた暗号方式が可能になりました。とにかく公開鍵を知られたと言って、別に自分のお金が盗まれるというわけではないので安心してください!​秘密鍵​秘密鍵は

 

​HDウォレットでのアドレス生成の仕組み

HDウォレットの鍵生成の全体像を上で示しました。

シードから、最初の秘密鍵とチェインコードを作り、それに複数のインデックスを加えて次の秘密鍵とチェインコードの組み合わせを作っていきます。


秘密鍵・公開鍵に加えて、シードとチェインコードとインデックスという、これまで出てこなかった単語がありますね。

シードは前述の通り、このウォレット全体の元となる文字列です。

チェインコード(Chain Code)は、その下の階層でのシードのようなものです。次の階層を作るために必要です。

インデックス(Index)は、子秘密鍵が何個目であるかを示す数字です。同じ世代間で枝分かれさせることができます。


HDウォレットのアドレス生成までの流れの概略を先に示すと、

HDウォレットのアドレス生成

  • シードを生成する
  • シードから秘密鍵とチェインコードを生成する
  • 子秘密鍵or親公開鍵から子公開鍵を生成する
  • 公開鍵からビットコインアドレスを生成する
  • 親公開鍵とチェインコードとインデックスから子秘密鍵とチェインコードを生成する

のようになります。以下では、それぞれの段階について、説明していきます。 


​シードを生成する(BIPの話、12個の英単語とかの話)

HDウォレットの大元であるシードを生成します。シードは乱数生成器によって作られます。

シードは複雑さを保つために、非常に長い文字列で表されます。これを覚えたり記録することは困難なので、ニーモニックという英単語や日本語単語の配列に置き換えて記憶します。


シードから秘密鍵とチェインコードを生成する

​シードをHMAC-SHA512​というハッシュ関数を用いて、512bitの文字列にします。この時、前半256bitを秘密鍵とし、後半256bitをチェインコードとします


子秘密鍵or親公開鍵から子公開鍵を生成する

​HDウォレットにおいては、公開鍵を作る方法が2通りあります。


①子秘密鍵から、子公開鍵を作る

これは通常通りの流れです。秘密鍵から楕円暗号曲線を用いて公開鍵が得ます。


②親公開鍵から、子公開鍵を作る

これはHDウォレット特有です。公開鍵、チェインコード、インデックスを用いて、子公開鍵を得られます。


②の方法に注目してください。秘密鍵を必要としていませんね。図示すると下のようになります。

秘密鍵を外部に置くことなく、公開鍵があれば無限にビットコインアドレスを作ることができます!

これだけで次の世代を作れるように見えますが、アドレスは受け取り専用です。送金のためには秘密鍵の署名が必要なので、別の方法で秘密鍵自体も作っていく必要があります。


公開鍵からビットコインアドレスを生成する

​ここは通常通りの流れです。

実は公開鍵はその名前の通り世界中に公開しても良いものです。しかし、人間にとって読みやすくし、曖昧さを避け、転写時のエラーを防具ために、一方向ハッシュ関数によってエンコードされたものに加工されます。これがビットコインアドレスです。


親公開鍵とチェインコードとインデックスから子秘密鍵と子チェインコードを生成する

​​これがHDウォレット最大の特徴です。親公開鍵とチェインコードに、インデックスを指定して、ハッシュ関数をかけ、子秘密鍵と子チェインコードを得ます。

​インデックスは同じ公開鍵とチェインコードから作られた鍵の中での、何本目かを表すだけなので、こちらで指定します。


この方法では子秘密鍵を作っていますね。秘密鍵があれば公開鍵も得られます。つまり、この工程は次の階層を作ることを意味しています。

​HDウォレットのメリット

​ここまで HDウォレットの仕組みや概要を説明してきましたが、ここではその目的やメリットを説明したいと思います。

​ビットコインアドレスの保管を簡単にする

HDウォレットの目的はほとんどこれに集約されます。

​これまで述べてきたように、HDウォレットではランダムに決定されるのはシードだけです。シードから全ての秘密鍵が自動的に生成され、そこから公開鍵、アドレスが生成されます。

ランダムウォレットでは全ての秘密鍵を覚えていなければいけませんでした。しかし、 HDウォレットではシードだけを覚えていれば、ウォレット全体を同じように再現することができます。

前述のニーモニックを用いることでシードを記憶する難易度を下げ、かつ管理する対象が少なくできます、

ウォレット全体を自分自身だけで管理することが極めて容易になります。

アドレスを用途別に分類できる

​HDウォレットでは、それぞれのアドレスを識別するために、パスフレーズという形式を使います。

詳しい話はここでは避けますが、BIP33やBIP44といった規格に沿って、目的やコインの種類、インデックスを指定していってアドレスを特定します。

パスフレーズを用いると、用途に合わせてアドレスを分類することができます。

一つのシードからなるHDウォレットに多機能を与えられるようになります。

​HDウォレットのデメリット​

​管理が極めて簡単なHDウォレットですが、その分セキュリティ上のデメリットが当然あります。

​シードがバレると盗まれてしまう

​ランダムウォレットは秘密鍵を、無関係に大量に用意し、それぞれを秘密鍵で鍵をかけられた小さな財布としました。

HDウォレットは、シードによって鍵をかけられた大きな財布のような状態です。そのシードを奪われた場合、ウォレットの中身は全て持っていかれます。

シードを紛失すると凍結してしまう

​HDウォレットを使っている時、リカバリーフレーズなどのシードを求めるためのものは覚えるようにするかもしれません。しかし、その分秘密鍵そのものを保管することはないと思います。

そのため、万が一シードやリカバリーフレーズを忘れてしまった場合、ウォレットの一部さえも復旧することができなくなってしまいます。

​おまけ:おすすめ仮想通貨ウォレット

ウォレットの仕組みついて解説してきましたが、ここでHDウォレットの中でも、特におすすめのウォレットをご紹介します!

​ LedgerNano S:セキュリティ抜群のハードウェアウォレット

LedgerNano Sは、ハードウェアウォレットと呼ばれる、ビットコインをオフラインで保管できるウォレットです。秘密鍵をハードに保管するので、抜群のセキュリティを誇ります。

ちなみに、LedgerNano Sを使用する際、リカバリーフレーズとして英単語の配列を記録することになります。このリカバリーフレーズがニーモニックです。これを用いて、シードを求めることができ、ウォレット全体を復旧することができます。


 ↓Ledger Nano Sについて詳しくまとめた記事はこちらです↓​ 

 「取引所に資産を預けているのって危ないって聞いて、Ledger Nano Sを買うか迷ってるんだけど買い方がわからない。。。」「Ledger Nano Sって人気あるらしいんだけど高いらしくてどこで購入するのが一番安いんだろう・・・?」「リップル(XRP)が預けれるのはLedger Nano Sだけらしいんだけど、購入しようかな?」なんてなかなかLedger Nano Sの購入に踏み切れてない人が多いのではないでしょうか。今回はLedger Nano Sを購入場所ごとに比較して、それぞれについて購入方法を詳しく解説しました!!これを読めばあなたにピッタリの購入場所がみつかり、購入方法も分かります!!この記事でわかることLedger Nano Sの購入場所ごとの特徴Ledger Nano Sの購入方法 目次いまハードウェアウォレットが人気な理由Ledger Nano Sの特徴Ledger Nano Sを購入する前に気をつけること! Ledger Nano Sはどこで購入するのがおすすめ?Ledger Nano Sの購入方法(買い方)〜正規代理店編〜Ledger Nano Sの購入方法(買い方)〜公式サイト編〜Ledger Nano S 

 

↓LedgerNano Sの購入はこちらから↓

LedgerNano Sの購入はこちらから!

Ginco:安心の日本発スマホウォレット​

​Gincoは、仮想通貨ウォレットとしては珍しく、日本の企業によって作られたものです。

もちろん日本語完全対応で、公式から発表される情報も全て日本語です。英語に不安がある方でも安心して使えますね。


 ↓Gincoについて詳しくまとめた記事はこちらです↓

​「Ginco」というウォレットを知っていますか?安心と信頼の数少ない日本産の仮想通貨ウォレットですMt.Goxやcoincheckの仮想通貨流失事件があったように、取引所に仮想通貨を置きっ放しにすることは大変危険です!少しでもリスクを下げたい方は、ウォレットを使用するようにしましょう。今回は、そんなウォレットの中でもコインオタクがオススメするGincoをご紹介したいと思います!目次​Ginco(ギンコ)とは​Gincoの特徴、他のウォレットと比較しました!​Gincoのデメリット​​iPhoneでのGincoの登録方法​Gincoの使い方​Gincoについての気になるQ&Aまとめ​​​Ginco(ギンコ)とは「Ginco」​は、日本企業からリリースされた、仮想通貨のクライアント型モバイルウォレットです。2018年4月24日にビットコインに対応させると同時に、本格リリースされました。仮想通貨を真の意味で”所有”することを目指して開発されています。「Ginco」公式サイトはこちら「そもそもウォレットって何?」という方は、下の記事をご覧ください。ウォレットは「仮想通貨を保管する財布」とよく例えられます。 仮想通貨ウォレットとは?スマホアプリでも保管できる?仕組みや使い方、オススメのウォレットまで徹底解説! |


↓Gincoの登録はこちらから↓

Gincoの登録はこちらから!

​まとめ

​今回は、現在の主流のウォレットシステムである、HDウォレットについてまとめました。いかがでしたでしょうか。

HDウォレットについてまとめ

  • HDウォレットはビットコインアドレス生成の仕組み
  • たった一つのシードからウォレット全体を作る
  • 管理は簡単だが、リスクも大きい

 

もちろん、技術的背景を何も知らなくても、便利に利用することはできます。しかしそれでは、トラブルが発生した時に、何も対処できなくなり危険です。

正しい判断、正しい対処をするために、背景のことは知っておきましょう!