みなさん、こんにちは。
前回に引き続き、今回も、第4次産業革命の一つ、ブロックチェーンについてご紹介していきます。
前回は、仮想通貨としての利用において、
中央に管理者がいないことからくる、信用というものが、
ブロックチェーンの技術によって担保が取られている、
ということをご紹介しました。
その理由は、
から、というものでした。
今回からは、前回説明できなかった、これらのブロックチェーンの技術内容について、具体的に、詳しくご紹介していきます。
是非、ご覧ください。
ブロックチェーンの技術【2つの暗号化技術】
まず、ブロックチェーンを知る上で極めて重要な、暗号化技術について、知っておきましょう。
ブロックチェーンで、使用されている暗号化技術には、下記の2つがあります。
それぞれ、ブロックチェーンを理解するには、とても大事ですので、
誰にでも理解してもらえるよう、丁寧にご紹介していきます。
公開鍵と秘密鍵
暗号化技術の一つ目は、公開鍵と秘密鍵です。
公開鍵は、その名の通り、みんなに公開される鍵のことです。
だれもが、それを使って鍵をかけたり、開けたりすることができます。
一方、秘密鍵は、それを持っている人しか、開けたり、鍵をかけたりすることができません。
因みに、ここでいう、鍵をかけるというのは、暗号化する、ということであり、
鍵を開けるということは、その暗号化されたものを開ける、ということで、復号、と呼ばれます。
鍵といっても、かけたり、開けたり、があってわかり辛いので、
ここでは、分かりやすいように、かける方を、南京錠、開ける方を、それを開ける鍵、として表現します。
公開鍵暗号方式
それでは、公開鍵暗号方式 の場合を、ご説明します。
公開鍵暗号方式では、イメージとして、
- 公開鍵:南京錠
- 秘密鍵:それを開ける鍵
と考えて下さい。
例えば、まことが、Aさんに、データを送りたい、とします。
データを送りたいんだけど。
↓
了解。私の公開鍵を送るわね。
↓
↓
(おっ、Aさんの公開鍵が届いた。それじゃあ、送るか。)
データを中に入れ、Aさんの公開鍵を使って、鍵をかける。
↓
↓
(あっ、まことからきた。)
自分の公開鍵に、自分の秘密鍵を使って開ける。
このように、公開鍵暗号方式では、誰でも鍵をロックすることはできますが、
開けて中身を見ることができるのは、秘密鍵を持っている持ち主しかできない、ということになります。
どういったときに、この公開鍵暗号方式が使われるかというと、
例えば、ECサイトなどを利用して、個人情報や、カード情報などを送信する際に使われます。
まず、ECサイトにアクセスして、サイト側に、公開鍵を送ってもらいます。
個人情報などのデータを入力後、そのサイトの公開鍵を使って鍵をかけ、サイトに送信します。
サイトへの送信の際、万が一、宝箱が盗まれたとしても、開けるための秘密鍵は、サイトにしかないため、データが流出することはありません。
宝箱を入手後、サイトだけが、自身の持っている秘密鍵を使って鍵を開けることができ、データを安全に受け取れる、ということになります。
ただ、この方法では、暗号化や複合に時間がかかるため、
実際は、もっとスムーズな取引ができるよう、この方法に、共通鍵、というのを加えて行われているのですが、今回は、説明を割愛させていただきます。
電子署名
一方、電子署名の場合は、公開鍵暗号方式の逆のパターンになります。
電子署名では、イメージとして、
- 秘密鍵:南京錠
- 公開鍵:それを開ける鍵
と考えて下さい。
例えば、Aさんが、まことに、電子署名を送るとします。
そうだ、まことに、電子署名を送ろう。
データを中に入れ、自分の秘密鍵を使って、鍵をかける。
↓
↓
(あっ、Aさんから、電子署名が届いた。)
Aさんの秘密鍵に、Aさんの公開鍵を使って開ける。
このように、電子署名では、誰でも鍵を開けて中身を見ることができますが、鍵は、持ち主しかかけることができない、ということになります。
つまり、みんなに、中のデータは、間違いなくAさんのものである、ということが保証されるわけです。
また、データには、Aさんが鍵をかけた際、Aさんしかできない署名(このデータ全体の情報を圧縮したもの)がされます。
このため、データは見られるものの、これを不正に修正しようとすると、Aさんの署名と一致しないことによりバレるため、改ざんすることはできません。
実は、ブロックチェーンでは、まず最初に、この電子署名を使用して、
データを、秘密情報ではなく、公開情報として、誰もが読める形で送信されます。
冒頭でもご紹介した、ブロックチェーンの信用の理由の一つである、
①みんなにオープンにしている
というのは、この電子署名を使っているから、ということになります。
◇ ◇ ◇
因みに、この公開鍵や秘密鍵を使って、鍵をかけたり、開けたりというのは、一方向関数を使用しています。
例えば、323という素数を素因数分解すると、17×19になるのですが、
17×19が、323になる、というのは簡単です。
ですが、反対の、323が、17×19である、と計算することは、難易度が高くなります。
このように、一方向は簡単にできるが、反対は難しい、というものが、一方向関数です。
あてはめると、公開鍵が、323で、秘密鍵が、(17、19)という訳です。
秘密鍵(17、19)を、公開鍵323を使って開けることは簡単にできますが、
公開鍵323から、秘密鍵(17、19)を想像することは困難です。
もっと膨大な桁数の素数を使用すれば、公開鍵から秘密鍵を推測するには、さらに膨大な計算時間がかかります。
実際は、これをもっと複雑にした、RSA暗号というアルゴリズムを使用していますが、基本的な考えは、この手法と違いはありません。
ところで、上記の電子署名の図で、
Aさんが、まことにデータを送る際、Aさんの公開鍵が()になっていますが、
これは、Aさんが、自分の公開鍵をわざわざ送らなくても、Aさんの秘密鍵をみれば、誰でも開けられるから、という理由です。
一方向関数の説明でわかりますね。
ハッシュ関数
暗号化技術の二つ目は、ハッシュ関数です。
ハッシュ関数とは、NIST(米国標準技術局)が規定を定めている、SHA-256と呼ばれる計算方法のことです。
ブロックチェーンでは、このハッシュ関数 SHA-256が多用されています。
この計算方法では、結果がすべて、256ビットとなり、16進数で表示すると、64ケタになります。
つまり、データそのものの、文字や数字がどれだけ長くても、ハッシュ関数では、すべて、64ケタで表せる、というものです。
データ1
送信先:まこと
送金額:20万円
↓
(SHAー256)
↓計算
8D3102E500F9B73
30AF489ABB10CE2
BE471E428EF3293
CEA654C5E5BEC1C
E147
データ2
送信先:まこと
送金額:200万円
↓
(SHAー256)
↓計算
B74EAA0FA9A66A0
147C31FA3859E48
39F56D99123ECC6
5C70997117D8B14
C954
図のように、データが、1文字でも違うと、全く別のハッシュ値に変わります。
なお、ハッシュ値だけからは、元のデータを復元することはできません。
じつは、ブロックチェーンでは、あらゆるところで、このハッシュ値計算を行い、これが変わらないことを理由に、中のデータは保たれている、ということを保証しています。
この点については、次回のブロックチェーンの全体像の際に、改めてご紹介します。
まとめ
ブロックチェーンの技術【2つの暗号化技術】
公開鍵と秘密鍵
公開鍵暗号方式
使用例:ECサイトの利用など
- 公開鍵:南京錠
- 秘密鍵:それを開ける鍵
誰でも鍵をかけることはできるが、開けて中身を見ることができるのは、秘密鍵を持っている持ち主しかできない。
電子署名
使用例:ブロックチェーンなど
- 秘密鍵:南京錠
- 公開鍵:それを開ける鍵
誰でも鍵を開けて中身を見ることはできるが、持ち主しか、鍵をかけることはできない。
公開鍵や秘密鍵には、一方向関数を使用している。
ハッシュ関数
- SHA-256で、データをすべて、64ケタで表す。
- データを少しでも変えると、ハッシュ値も変わる。
- ハッシュ値からは、データを復元できない。
でした。
今回は、ブロックチェーンで使用されている、暗号化技術
について、ご紹介しました。
さて、いよいよ、次回は、ブロックチェーン本体のご紹介です。
今回の内容を踏まえていただければ、ブロックチェーンの全体像を把握するのは簡単ですよ。
お楽しみに。
コメント