快傑Zの仮想通貨遊戯

仮想通貨で遊ぶをモットー!投資で儲け度外視! 投資以外で消耗中・・・。誰かお恵みを

やはり人間じゃないと分からない!ビットコインで利用される公開鍵暗号技術

仮想通貨は、正式にはCryptoCurrency(暗号通貨)と呼ばれています。
それは 暗号技術が使われているものだからです。

 

f:id:Zbaron:20180309014058j:plain

 

仮想通貨を語る上で公開鍵暗号技術を理解しておく必要があります。
自分のアドレスの生成、コインの送受信、マイニング、承認アルゴリズムなどに必要な技術ですが、全部説明するのは面倒なので

アドレスの生成ビットコインの送金に絞って説明します

 

目次

はじめに

暗号とは、古来より存在するものです。
例えば、忍者同士が、味方を識別するとして使われた「山」と言われたら「川」と答えたりフリーメイソン同士が握手を交わすときに、特別な握り方があるそうですが、

f:id:Zbaron:20180309005639j:plain
お互いに共通の鍵を持っている。。。それを共通鍵暗号と呼びます。


「共通の鍵」の問題点としては相手に鍵を渡すときに、どのようにセキュリティを保つかが重要で「共通鍵」を途中で漏れた場合は、作戦が読まれて戦争に負けるなどのエピソードもあったほどです。

インターネットの普及によりネットショッピング、ネットバンキングなどで暗号処理をする場合には、安全に複数の人との「鍵」のやり取りをすることが困難な時代になりました。
 そこで考えられたのが公開鍵暗号という概念です。

キーポイントは「秘密鍵」と「公開鍵」の表裏一体 陰と陽の鍵の存在です!

 その名の通り、片一方の公開鍵はみんなに公開されているので相手に引き渡す手前がありません。漏洩しても問題ないのです!

 それではビットコインで「公開鍵暗号」がどのように使われているのかかなりゆるーい感じで説明します。

 

 

1.ビットコインを送信する=署名をする

ビットコインを送信する」とは、実際にビットコインをウォレット間で送受信しているのではなく、ブロックチェーン上に書き込まれたビットコインの所有権を相手に移譲したことを署名(サイン)しているというのが正しいのです。
(ここテストに出ます!)


以下は暗号技術の基本である公開鍵暗号を利用した「電子署名」を図説したものです。

IPA(情報処理推進機構)サイトより画像借用

f:id:Zbaron:20180226004008p:plain
ビットコインの送信も上図の原理とほぼ同じです。

Aさんが、ビットコインをBさんに送る時の話です。

①Bさんのアドレスにビットコインを送信するというメッセージ」がハッシュ関数で変換されます。(ダイジェストが作成)

②ダイジェストにAさんの秘密鍵で署名をします。

③②で署名された暗号メッセージをBさんが受け取ります。

④Bさんは、Aさんの「公開鍵」で暗号化された署名を復号します。(ダイジェストが解放される)

⑤暗号化されたメッセージをハッシュ関数で変換します。(ダイジェクトが作成)

⑥④で解除された「ダイジェクト」と⑤で作成された「ダイジェスト」が一致。


 

以上の流れで、署名が正しいと判断され、無事にAさんからBさんにビットコインの所有権が移譲されることになるのです。

 このハッシュ関数というのもキーポイントで、AさんとBさんで実行したハッシュ関数で利用する数字は、別の数字を使って計算しているにも関わらず秘密鍵と公開鍵で処理をすると、同じ「ダイジェスト」が作成されるので、署名が正しいと証明されるのです。
 不思議ですね!!

 


2.ビットコインアドレスの生成方法

みなさんもビットコインのアドレスを所有していると思いますが、どのように生成されるのかは、見る機会はないと思います。(ウォレットなどで自動で作成されてしまうので・・・)
大雑把に、かなりざっくりとした例えを使って説明します。

①ランダムな文字列の「秘密鍵」を生成します。

こんな文字列「xksorgdi19pdsj94sf484pefnznfd5695mlmkgfngahsvfjugj648774achea
②「秘密鍵」をsecp256k1曲線変換※1で変換し「公開鍵」が作成されます。

※1:楕円曲線暗号ハッシュ技術です。文字列を複雑な関数でシャッフルするイメージです。
そうですね・・・バーテンがカクテルをシェイクして混ぜ混ぜするような感じです(w)

f:id:Zbaron:20180228000758j:plain
ハッシュ関数を何度も繰り返して※2「公開鍵」を別の文字列として置き換えます
※2:
SHA-256ハッシュ化 ⇒ RIPEMD-160 ⇒ SHA-256 x2回 
ハッシュ関数を繰り返しはトランプカードのシャッフルをイメージしてください。

f:id:Zbaron:20180228001201j:plain

チェックサム ⇒ Base58エンコード ※3 処理を加えます。
※3  美容院で見映えよく、さっぱりしてもらいますよね? 
チェックサムで間違いないかチェックし整えて、エンコードで長い文字列を人間に見やすいように短くし見映えを良くします。

f:id:Zbaron:20180308234058j:plain

こんな見覚えのあるアドレスが生成されます!! 17383qeec4ZhyHx9AYDX8aYW17ZPn1tb2D

※↑は、私のビットコインアドレスです。(正確にはカウンターパーティーアドレス)
ここにビットコインやPepecash、XCP、レアペペカードを恵んでください!!

 

 

かなり大雑把ですが、上記の工程を経て
秘密鍵」⇒「公開鍵」⇒「ビットコインアドレス」

の流れでビットコインアドレスが生成されます。

 

ハッシュをするということは、不可逆的で元に戻すことが出来ないということです。
カクテルのシェイクやカードのシャッフルをして、元の状態に戻せないですよね?
それを何度も繰り返すので、アドレスの文字列をすべての組み合わせを試して
秘密鍵を解読しようとするのは、考えるだけでも頭が痛くなりませんか?

そうです。現在はアドレスから秘密鍵の解読はほぼ不可能なのです!!

 

もう少し専門用語に使うと公開鍵暗号にはRSA、DSA、ECDSAなどの種類があります。どれも大きな整数の因数分解の難しさで、ECDSAでは楕円散対数問題に基づいて強固なセキュリティを担保しています。

 

3.だからビットコインはセキュリティが高い

ビットコインは、公開台帳ネットワークと言われているように、アドレスが公開されているので、誰でも、アドレスから保有額、送金履歴などのトランザクションを見ることが出来ます。
 また送金した時のトランザクションに署名されると公開鍵がブロックチェーン上で明らかになるため、
「アドレスや公開鍵をどうにかして秘密鍵を導き出すことが出来てしまうのではないか?」
誰でも思いつきそうですよね?

しかしご安心ください。

 

人間の計算処理能力は当然ですが、現在のコンピューター処理能力でも、ビットコインなど仮想通貨の秘密鍵を解読することは天文学的な確率ですのでほぼ不可能なのです。

 

しかし 秘密鍵を失くしてしまうと 永遠に仮想通貨がブロックチェーンという亜空間に彷徨ってしまうので、セルフGOXしてしまいますので自己責任です。

 

仮想通貨を扱うということは暗号技術の使い手になるということなので、多少は勉強してみるのも面白いと思います!!

 

 これブロックチェーンビットコインを理解するのに図解で分かり易いと思いました!

「いちばんやさいい ブロックチェーンの教本」

f:id:Zbaron:20180309012557j:plain

 

 やはり、勉強するなら王道はこちらのシリーズ

MAsteringBitcoin(ビットコインブロックチェーン

f:id:Zbaron:20180309012947j:plain