公開鍵・秘密鍵

秘密鍵と公開鍵・アドレスを知る【Bitcoinを理解する-2】

前回ではマイニングについてお伝えしましたが、所有の所在は鍵・アドレス・署名によります。今回はそれらについてお伝えしていきます。なお、前回の投稿についてはこちらです。

 

 

 

1.概要

 

 

はじめに述べたように、Bitcoinの所有の所在は、次の3つに基盤があります。それは、デジタルキービットコインアドレス署名です。デジタルキーはビットコインネットワークの中に保持されているものではありません。それらはそれぞれのユーザーによって生成・保存されています。

 

特にデジタルキーはビットコインの仕組みの流れ(アルゴリズム)の中に組み込まれているものではなく、「ウォレットの中」に存在しています。つまりこれは、オンラインではなくとも、ユーザーはデジタルキーの作成・管理が可能となっていると言い換えることができるものです。

 

この「鍵」こそがBitcoin(暗号通貨)における1つのハードルになっています。この鍵の存在こそがブロックチェーンやビットコインネットワークへの「信用」となり、通貨たりうる存在の要を担うのです。

 

以前、マイニングの仕組みでお伝えした通り、トランザクションがブロックチェーンへ組み込まれるためには、アクティベートな署名が必須です。その署名は、アクティベートな鍵でしか作り出すことは不可能です。つまり、鍵のコピーを持つ人であれば自身の口座ではなくとも容易に管理することが可能です

 

しかし、みなさんの銀行口座におけるセキュリティー番号(パスワードや暗証番号)などは他人に預けないように、デジタル鍵も口座の中に組み込まれているため、ほとんどのユーザーはデジタルキーを意識することはほぼありません

 

 

2.公開鍵暗号

 

 

公開鍵暗号とはいつごろから始まったものでしょうか。それは1960年ごろに提案され、初めて論文が発表されたのは1970年頃と言われています。 公開鍵暗号が発表されてからは、暗号に適した関数が多数発見されてきています。Bitcoinでは、Bitcoinへのアクセスをコントロールするキーペアを作成するために、公開鍵暗号を利用します。この「キーペア」と呼ばれるものは、「秘密鍵」とそれに対応する「公開鍵」(秘密鍵から一意に生成されるもの)で構成しています。

 

 

みなさんが銀行口座でキャッシュを受け取る際に、口座番号を相手に伝えるのと同じように、ビットコインではこの「公開鍵」と呼ばれるものを相手に伝え、ビットコインを受け取ることが可能になります。秘密鍵はビットコインで支払いを済ませる際にトランザクション情報へ署名(サイン)するために利用されます。

 

 

ビットコインネットワークでは、このトランザクション情報の中に「公開鍵」と「署名」があることでネットワークへ参加することができ、マイナーはそのトランザクションを検証し、「有効」なものと判断された場合に初めてブロックチェーンへ取り込まれます。

 

 

3.秘密鍵

 

 

秘密鍵と呼ばれるものは、完全にランダムに選ばれた数値です。秘密鍵のコントロールはアドレスにある資金(ビットコイン)に対する所有権とももいえるでしょう。秘密鍵はトランザクションへの署名に利用され、そのコントロールが自身に帰着することを証明するために必要なものとなっています。

 

そのため、絶対にこの秘密鍵は他者へ伝えてはいけません。また、この秘密鍵を紛失した場合、復元は不可能です。同時にそれは「資金の喪失」を意味します。必ずこの秘密鍵は自身で大切に保管しなければなりません。

 


※秘密鍵とは、完全ランダムに選出された数字と述べましたが、みなさんも現実世界でそれと同様なことが可能です。たとえば、コインを256回投げて、その裏表を2進数で作ることができます。ランダムである以上、その「256回投げられた結果」は「偶発的」なものです。


 

鍵を生み出す際に、もっとも重要なことは「十分なランダム性」を担保することです。なぜなら選び出した結果やその方法を予測可能にしてしまうものであれば、それは「ランダム」とは言えないものだからです。

 

よく、Bitcoinは「インターネット上にあるものだから危険」などと誤解されがちですが、むしろ銀行口座の暗証番号や、みなさんがみなさんの意思によって生成したパスワードよりも安全であると言っても過言ではないでしょう。なぜなら人間の意思はそこからは排除され、システム(仕組み)によってのみ生成されているものだからです。

 

4.公開鍵

 

 

公開鍵は楕円曲線上のスカラー倍算というものを使用して、秘密鍵から計算されるものです。そして、秘密鍵から算出された公開鍵から、秘密鍵を導き出すことはできません。この計算については「離散対数問題」といいます。秘密鍵から公開鍵を生成した結果をもとに、公開鍵から秘密鍵を特定することが難しいという問題です。

 

秘密鍵を公開鍵に変換することは可能ですが、公開鍵を秘密鍵に戻すことは不可能です。これは秘密鍵から公開鍵への変換が、数学的に一方向になっているからです。これをしっかり理解するには、楕円曲線暗号におけるスカラー倍算の理論を理解する必要があります。

 

なお、エンジニアの方はコチラを参考にしてみてください。

 

5.アドレス

 

ビットコインアドレスは、みなさんが送金したい人に対して誰にでも共有してよい文字列です。その文字列は、数字と文字で構成され、公開鍵から作られるビットコインのアドレスは、1から始まる文字列です。

 

小切手を例に考えてみましょう。

 

ビットコインアドレスと呼ばれるものは、小切手でいうところの「受領者名」です。みなさんにおなじみの銀行では銀行口座の持ち主の名前=小切手の受取人となりますが、場合によっては組織の名称である場合もあります。しかし支払い者は小切手で口座を特定する必要はなく資金の受取人は抽象的な名前を使用することができ、より幅広く支払いに使えるものですが、ビットコインのトランザクションでもこれは類似しています。

 

ビットコインアドレスも小切手同じように抽象的な名前を使用することができ、ビットコイントランザクションを利用しやすい形に実現しています。

 


※Bitcoinアドレス≠公開鍵です。あくまでBitcoinアドレスは公開鍵によって生成されるものです。


 

ここで技術的にどのような流れが発生しているかのプロセスを確認してみましょう。

 

 

ビットコインアドレスは通常、「Base58Check」と呼ばれる形にエンコードされた状態で使用されます。

 

それでは、Base58Checkとはなんなのでしょうか。それは、Base58にチェックサムが組み込まれたものです。Base58はビットコインで使うために開発されたものであり、テキストがベースとなっているエンコード形式なため、コンパクトでわかりやすく、かつエラーを簡単にみつけること・防ぐことができる優れものです。これは他の暗号通貨でも広く利用されています

 

これが利用されていることにより、例えばビットコインアドレスの入力を間違えたとしても、エラーとして示してくれたり、お金(ビットコイン)の消失を防いでくれる優れものです。

 

いかがでしたでしょうか。まだまだ奥が深いBitcoinですが、少しずつ理解して、制度をより理解していくと暗号技術への理解や、ブロックチェーンへの理解が進んでいきます。特に暗号化における楕円曲線についての理論の情報源はぜひ参考にしてみてください。

日本で一番簡単にビットコインが買える取引所 coincheck bitcoin
bitFlyer ビットコインを始めるなら安心・安全な取引所で
日本で一番簡単にビットコインが買える取引所 coincheck bitcoin

おすすめ記事

最近の記事

  1. 【概要と結果を簡単理解】分散型台帳技術に関する共同調査【日本…
  2. トランザクションのscriptとScript言語とは?【Bi…
  3. 【ICOを読み解く】ChangeはERC20トークン準拠・A…
  4. マクロの視点でBlockchainの動向を理解する。
  5. Dapps(自律分散型アプリケーション)とは何か。
  1. 開発

    プログラマー必見!Ethereumのマイニング・送金方法【2017年8月30日最…
  2. マイニング

    Bitcoinにおけるマイニング(採掘)とはそもそも何なのか。【Bitcoinを…
  3. ブロックチェーン

    トランザクションのscriptとScript言語とは?【Bitcoinを理解する…
  4. ICO解説

    【ICOを読み解く】ChangeはERC20トークン準拠・APIを投資家向けに公…
  5. 開発

    プログラマー必見!Gethの環境構築について【2017年8月25日更新版】
PAGE TOP