中学生でもわかる、ブロックチェーンを支える「暗号」技術について②(読了5分)

本記事では、公開鍵暗号を中学生でもわかるように説明します。

 

ごきげんよう。

本日は、ビットコイン、イーサリアムなどのブロックチェーンをささえる暗号技術「公開鍵暗号」と「ハッシュ関数」について解説したいと思います。(ちなみに出典:現代暗号入門です)本日は第2回ということで公開鍵暗号について。第一回 ハッシュ関数 については下記のリンクより

https://samuraiico.io/blog/archives/698

 

ちなみに、ブロックチェーンのどこで使われているのか?でいくと、

公開鍵暗号は電子署名(トランザクションなどで利用)で使われています。

 

公開鍵暗号とは?

 

公開鍵と聞いて最初「鍵を公開するって意味わからなくない?」と感じた方もいるかもしれません。

直感的にはわかりづらいので丁寧に説明していきます。

 

普通の暗号は共通鍵暗号(締める鍵と開ける鍵が同じ)

 

家の鍵をイメージして頂ければわかりやすいですね。

締めるときも開けるときも同じ鍵を使う方法は共通鍵暗号と言われます。

共通鍵暗号は事前に相手との間で鍵を共有する必要があります。

そして、公開したら当然誰にでもわかってしまうので暗号の意味がありません(笑)

 

公開鍵暗号は「締める鍵」と「開ける鍵」が異なる

 

公開鍵暗号は「締める鍵」と「開ける鍵」が異なります。

すごいむずかしいのですが、簡単に図解すると、

 

 

概念的に言えば、

南京錠の締め方(押せば閉まる)を教えて、それで封をしてもらう。

②自分だけ南京錠の鍵を持っているので封を開けられる

みたいな感じでしょうか。

相手に鍵を教えることなく、暗号化された内容をやりとりすることができるという意味で画期的ですね。

 

公開鍵暗号には、数式的な一方後の関係性が成立する必要がある

 

ちなみにこの秘密鍵と公開鍵が成立する条件としてとしては、

この締める鍵と開ける鍵の間にはある数式的な一方向の関係性が成立している必要があります。

簡単にRSA暗号もどき(素因数分解と掛け算の数学的な一方後の関係性)を用いて紹介しましょう。

 

 

掛け算は簡単だけど、素因数分解は難しい。こういう一方向性があれば、

締めるのは簡単だけど、開けるための鍵を見つけるのは超困難といった関係性を作れるわけですね。

 

ただ、公開鍵だけでは、みんなが鍵の締め方を持っているので相手先が正しいかわからない

間に悪意のある第三者が装って暗号化して送ってきた場合は、相手先が正しいかどうか不明です。

そこで使われるのが電子署名であり、公開鍵が第三者機関に認証が必要な理由です。

 

 

 

ビットコインで使われているのは「楕円曲線暗号」

 

RSAとは違いますが、ビットコインでは楕円曲線を利用した公開鍵暗号が使われています(詳細は割愛)

(ぶっちゃけどの暗号でも一方向性が担保されていればよい)

AさんからBさんへのトランザクション(例えば送金)において、公開鍵を用いた電子署名の確認をしているわけですね。

電子署名を作れるのはAさんの秘密鍵を持っていなければ作れないわけですから、誰かへの送金を偽装すること、取引を改ざんすることは不可能となります。そして逆に送金したという事実は署名している以上、拒否することもできません。

まさにトラストレスに取引を管理する手法としては合理的な方法であると言えると思います。

 

コラム:コールドウォレットとは?

 

この秘密鍵を用いた電子署名ですが、トランザクションのハッシュに対して秘密鍵を用いて署名するだけなので、オフラインでも当然可能なわけです。

 

なので、秘密鍵をオフラインで管理して、電子署名されたトランザクションだけをオンラインに持っていくことで、サーバーにたいする秘密鍵へのオンラインハッキングを受けづらくなるということなわけですね。

 

 

まとめー公開鍵はブロックチェーンを支える超大事な技術。

 

公開鍵がなければ、トラストレスにトランザクションをすることはできないので、

こちらもブロックチェーンを利用する上で超大事な技術になります。

 

楕円曲線暗号を現実的な時間で解くことができるようになっちゃうなどが来れば

こちらもブロックチェーン時代が否定される時代となるので、こちらの技術的なニュースには配慮しておいたほうが良いと思います。

 

 

そして、取引所にお金を預けている皆さん。

この辺の技術より、取引所のサーバーが安泰だと思っているなら、

仮想通貨を資産として持つのはヤメたほうがいいですよ。

(投機的な賭場として使う分には全然いいと思いますが笑い)

%d人のブロガーが「いいね」をつけました。