ブッロクチェーン技術のコア暗号化技術の「秘密鍵」と「公開鍵」がいまいちしっくりこなかったので、調べてまとめた話
こんにちはおがじゅんです。
( https://twitter.com/junki0000 )
10本記事の3本目です。
ブロックチェーンを調べていると、暗号化の話で【公開鍵】と【秘密鍵】がたびたび登場します。
これはインターネット上でも安全のために使われ、SSL通信(Secure Socket Layer)にも使われる、暗号化技術の基礎の基礎です。
しかし、何回も調べ納得しているつもりがどうもしっくりこないし、人に説明できない。(つまり理解していない)
そもそも南京錠みたいなものって説明がいまいちしっくりこない。
今回はそいつを調べ、自分の言葉で噛み砕くことで「完全に理解」したので、いままで妙にしっくりこなかった人にも伝わるかもしれないということで、記事にしました。
技術のコアは「暗号化と複合化の鍵が異なる」ところにありました。
ってことで解説です。本題は下になります。
途中は飛ばしてもらっても大丈夫です。
まず暗号化とは?
暗号化とは、簡単にいうと見られてはいけないものを視覚的にみられても判別がつかないようにすることです。えっちなビデオのモザイクのイメージですが、厳密には違います。
何が違うかというと、復元ができます。
モザイクがとれるのです。鍵があれば!!
鍵付きの箱を用意して、そこに見られてはいけないエロ本をいれて鍵をかけて管理するイメージです。
しかも、そも箱は、一見「ニーチェの哲学本」に見える箱です。他人から見たら、完全に哲学書を読んでいるようにしか見えません。これが暗号化です。
それを友達と共有したい時は、合鍵を渡します。友達は合鍵で無事に中身を見ることができます。周りの人から見たら、哲学書を渡し合う意識の高い学生です。
暗号化・・・鍵をかけること
復号化・・・鍵を外すこと
鍵は共通。
Pythonで暗号化してみる
インターネット上では、物理的なものではないので、「エロ本」も「鍵」も文字です。ためしにPythonで暗号化してみます。
「エロ本」を我らが「ELO」として
「鍵」は「mozaikumozaikumozaikumozaikumozaiku」(モザイク)
として、暗号化してみると
#暗号化結果
'U/VOO4qYJ/acw8p+7ynJq2CjEfi3ijIr1segK7mEWLExCtLQaMG42bH0DDuQzWVR'
#複合化結果
'ELO'
「ELO」は「U/VOO4qYJ/acw8p+7ynJq2CjEfi3ijIr1segK7mEWLExCtLQaMG42bH0DDuQzWVR」
と無事一見しても意味のわからない文字列になりました。
「鍵」を用いて、複合化すると、無事に「ELO」になりました。
さて本題
暗号化には「共通鍵暗号」と「公開鍵暗号」というものがあります。二種類あります。
共通鍵暗号
共通鍵暗号とは、さっきの例のように、ある箱に鍵をかけて、開けられる鍵をみんなに配っておくことで管理するようなものです。
この鍵を「共通鍵」と言います。
鍵は当然ネット上で送る必要があるので、校庭の端から端の人に投げて渡すもんです。その際に悪い奴がいて、途中で鍵を取られたらおしまいなので、安全に渡す必要があります。また、人ごとに渡すものが違う場合、その度に違う鍵が必要です。
そこがデメリットです。
公開鍵暗号
共通鍵暗号には
・渡すことがリスク
・人ごとに違う鍵が必要
という2つのデメリットがあります。
それを解決したのが公開鍵暗号です。
何が大きく違うかというと、
共通鍵暗号は暗号化する鍵(鍵をかける鍵)と複合化(鍵をあける鍵)の鍵が一緒であるのに対して,
公開鍵暗号は「暗号化する鍵と、複合化する鍵は異なる」のです。
そうすることで
・公に渡してもリスクにならない
・同じ鍵をみんなに渡せば良い
と共通鍵暗号のデメリットが消えます。
暗号化する鍵を「公開鍵」といい。
複合化する鍵を「秘密鍵」と言います。
ポイント
・「秘密鍵」と「公開鍵」は2つセットです。
「秘密鍵」は
①「公開鍵」を生み出す能力を持つ。
② 生み出した「公開鍵」で鍵をかけられた鍵を外すことができる。
「公開鍵」は
①鍵をかける能力をもつ。
使い方はこうです。
⓪「秘密鍵」をつくる
①「秘密鍵」で「公開鍵」を生産する
②「公開鍵」を周りに配りまくる
③ 相手は「公開鍵」を使って大事なデータに鍵をかける(暗号化する)
④ 相手は鍵をかけたデータを自分に送る
⑤ 自分はもらったデータを「秘密鍵」であける(複合化)
⑥ データ見えてハッピー!
ここでお分かりだと思いますが、
「公開鍵」はどの人にも渡してもなんの問題もない鍵。つまりは公開しても良い鍵です。むしろ「配るもの」なのです。
一方で、「秘密鍵」はバレたらおしまいです。つまり秘密にしておかないといけません。基本的に自分のパソコン上でオフラインで管理します。
以上です。
以上おがじゅんでした。
( https://twitter.com/junki0000 )
いままでしっくりこなかった人の助けになれば幸いです。
投げ銭スタイルをとるので、おにぎり一個分のためになったなと思ってくれれば幸いです。
ここから先は
¥ 100
技術とビジネスをつなげて世界をSFにしたい大学院生。AI関連、webアプリケーション(node.react.ROR)。現在、シリコンバレーでインターンしたいマン。