【入門編】公開鍵を使った暗号化の仕組み
公開鍵を使った暗号化
いまここに、白猫 とトラ猫 がいる。
白猫は最近、仲良くしている魚屋から「実はくじらって、美味しいんだよ」ということを教えてもらったそうだ。
このことを友達のトラ猫に教えてあげたいと思った白猫は、「そうだ、手紙で教えてあげよう」と思いついた。
トラ猫にだけ教えないと、みんながくじらの美味しさに気付いてしまうかもしれないので、こっそり手紙で教えたい。
このこっそりやり取りする方法の一つに、公開鍵を使った暗号化がある。
公開鍵を使った暗号化のことを「公開鍵暗号方式」と呼ぶのだが、仕組みの説明に入る前に、いくつか前提を押さえておこう。
登場人物は、情報をあげたい白猫 と、情報をもらうトラ猫 である。
まず情報をこっそりやり取りするには、情報をもらう側 で、秘密鍵と公開鍵をセットで事前に準備しておく必要がある。
ここでは分かりやすく考えるため、公開鍵は南京錠、秘密鍵は南京錠の鍵とイメージしよう。
この秘密鍵と公開鍵はペアになっていて、南京錠でロックしたものは、南京錠の鍵でだけロックを外せるのと同様に、公開鍵で暗号化したものは、秘密鍵でだけ復号できる。
なお公開鍵は世界中の色んな人とやりとりするためにばら撒く一方で、秘密鍵は、トラ猫だけが使えるように(絶対に他の人に使われないように)大切にしまっておく必要がある。
では以上のことを踏まえて、公開鍵を使った暗号化について説明しよう。
1. まずトラ猫が用意しておいた公開鍵を、事前に白猫にあげる
2. 白猫はもらった公開鍵で、手紙の中身を暗号化する
3. 白猫はもらった公開鍵で暗号化した手紙を、トラ猫にあげる
4. トラ猫は公開鍵で暗号化された手紙を、秘密鍵で復号する
するとトラ猫は、誰にも知られずに「へえ、くじらって美味しいんだ」ということを知ることができる。
これが公開鍵を使った暗号化だ。
これで、悪い猫がいてもくじらの美味しさは誰にもばれない。
例えばここに、悪いことを考える黒猫 がいたとする。
もし「1. トラ猫が準備しておいた公開鍵を、白猫にあげる」場面で、黒猫 が公開鍵を奪ったとしても、そもそも公開鍵は世界中にばら撒く鍵であるため、奪われて問題ない。
また「3. 白猫は暗号化した手紙を、トラ猫にあげる」場面で、黒猫 が公開鍵で暗号化した手紙 を奪ったとしても、公開鍵で暗号化した手紙 は秘密鍵でしか復号できない。
こうしてくじらの美味しさの秘密は守られるわけだ。
よかったな、白猫よ。