情報の送信元(Aとします)と受け取り側(Bとします)でお互いに公開鍵を交換し、AはBに情報を送信する際に、Aの秘密鍵で署名を、Bの公開鍵でデータの暗号化をするとします。
このとき、
1. 公開鍵は漏洩しても問題ないこと
2. 暗号がBの秘密鍵で複合化できること
3. Aの公開鍵で署名の検証ができること(確かにAから送られたデータであることの証明)
ができることを説明したいです。たとえ話など、実際の実装とは違っても問題ありません。わかりやすい説明を知りたいです。
Aさんがサインした収納箱に、Bさんから借りた南京錠で鍵を閉め、その収納箱をAさんからBさんに渡す、と言う説明はどうでしょう?
1. 南京錠自体は誰が持っていても構いません
2. 鍵を開けられるのはBさんだけです。
3. Aさんのサインは独特で一目見れば彼のモノだと分かるのですが、書くのが難しく他人は真似できません。
私も大学で少し学んだ程度の素人ですが、こちらのサイトの南京錠の例えが分かりやすいと感じました。
3に関しては、こちらのサイトの「4. その公開鍵は本物か?」の項目が分かりやすいと思います。
なるほど、南京錠の例えはいいですね。
なるべく、公開鍵や秘密鍵といった言葉は使わないで説明したいです。
普通の金庫は、右に回して閉めたら、同じ鍵で左に回して開ける必要がある。
つまり、閉める鍵と開ける鍵が同じだから、鍵を盗まれたらおしまいだ。
でもここに、新しい鍵ができたとしよう。
鍵Aで、右にひねると鍵が閉まる・・・というのは、いままでと同じ。
ところが開けるときは、別の鍵Bで、さらにもう一段、右にカチッとひねらなきゃいけないんだ。
さて、この鍵Aで鍵をかけておいて、鍵Aをばらまいて、金庫をみんなの前に置いても問題ないだろ?
鍵Aは金庫の鍵を閉めることにしか使えない。開ける鍵Bを手に入れない限り、金庫は開けられないから。
ところで今の金庫は、
「みんなにばらまいている鍵」で閉め、「金庫の持ち主しか持ってない鍵」で開けた。
だから、金庫に鍵をかけることは誰にでもできるけど、開けることは持ち主にしかできなかった。
これとは逆の金庫を作ることもできる。
つまり、鍵を閉めるときに「金庫の持ち主しか持ってない鍵」で閉め、
鍵を開けるときには「みんなにばらまいている鍵」で開くような金庫だ。
この金庫は、本人しか閉められないが、みんなが開けることができる。
そんな金庫が何の役に立つかって?
あなたの家のチャイムがなる・・・宅配便のお兄さんだ。
「チィーッス、しなもんさんからの宅配便です・・・小さな金庫と大きな金庫ですね。ご確認お願いしまーす」
さて、これら金庫が、ホントにしなもんさんから送られたものだと知るためにはどうすればいい?
後者のタイプの金庫(小さい金庫)が役に立つのは、まさにこんなとき。
届いた金庫のうち小さなほうは、後者のタイプで、しなもんさんしか閉められない。
だから自分の署名を書いた紙を入れられるのはしなもんさんだけだ。
しなもんさんがばらまいている鍵でその金庫を開けたら、
しなもんさんの署名が入っていたら、この金庫はたしかにしなもんさんから届いたものだ。
他にそんなことができる人はいないんだから。
小さな金庫を開けて納得したあなたはこう思う・・・ふうむ、たしかにしなもんさんだな。
ところでしなもんさんの自分宛の荷物って何?
宅配便のお兄さんは、もうひとつの大きな金庫を渡す。
その大きな金庫は、しなもんさんが、あなたのばらまいている鍵で閉めた金庫だ。
あなたは、宅配便のお兄さんを帰らせた後、自分が大切にしまっている鍵でそれを開ける。
そしてしなもんさんの秘密の贈り物を見るってわけさ。
素敵な物語ありがとうございます。
Aさんがサインした収納箱に、Bさんから借りた南京錠で鍵を閉め、その収納箱をAさんからBさんに渡す、と言う説明はどうでしょう?
1. 南京錠自体は誰が持っていても構いません
2. 鍵を開けられるのはBさんだけです。
3. Aさんのサインは独特で一目見れば彼のモノだと分かるのですが、書くのが難しく他人は真似できません。
シンプルでわかりやすくて良いです!
前提として、このようなルールがある。
使い方として、このようなケースを紹介する:
鍵の開け閉めを暗号・復号と置き換えてね。
と説明してみてはいかがですか?
シンプルでわかりやすくて良いです!