ロンゲストくじら

バーに行きたいエンジニアが、本の紹介をしたり、技術ぽいコラムを投稿していくブログ

【入門編】公開鍵を使った暗号化の仕組み

公開鍵を使った暗号化

いまここに、白猫 f:id:sherrys:20200810155833p:plain とトラ猫 f:id:sherrys:20200810155848p:plain がいる。

白猫は最近、仲良くしている魚屋から「実はくじらって、美味しいんだよ」ということを教えてもらったそうだ。

このことを友達のトラ猫に教えてあげたいと思った白猫は、「そうだ、手紙で教えてあげよう」と思いついた。

トラ猫にだけ教えないと、みんながくじらの美味しさに気付いてしまうかもしれないので、こっそり手紙で教えたい。

このこっそりやり取りする方法の一つに、公開鍵を使った暗号化がある。

公開鍵を使った暗号化のことを「公開鍵暗号方式」と呼ぶのだが、仕組みの説明に入る前に、いくつか前提を押さえておこう。

 

登場人物は、情報をあげたい白猫 f:id:sherrys:20200810155833p:plain  と、情報をもらうトラ猫 f:id:sherrys:20200810155848p:plain である。

まず情報をこっそりやり取りするには、情報をもらう側 f:id:sherrys:20200810155848p:plain で、秘密鍵と公開鍵をセットで事前に準備しておく必要がある。

            f:id:sherrys:20200812200806p:plain

ここでは分かりやすく考えるため、公開鍵は南京錠f:id:sherrys:20200810160158p:plain秘密鍵は南京錠の鍵f:id:sherrys:20200812193943p:plainとイメージしよう。

この秘密鍵と公開鍵はペアになっていて、南京錠でロックしたものは、南京錠の鍵でだけロックを外せるのと同様に、公開鍵で暗号化したものは、秘密鍵でだけ復号できる。

            f:id:sherrys:20200812195803p:plain

なお公開鍵f:id:sherrys:20200810160158p:plainは世界中の色んな人とやりとりするためにばら撒く一方で、秘密鍵f:id:sherrys:20200812193943p:plainは、トラ猫だけが使えるように(絶対に他の人に使われないように)大切にしまっておく必要がある。

 

では以上のことを踏まえて、公開鍵を使った暗号化について説明しよう。

 

1. まずトラ猫が用意しておいた公開鍵を、事前に白猫にあげる

f:id:sherrys:20200812234126p:plain

 

2. 白猫はもらった公開鍵で、手紙の中身を暗号化する

f:id:sherrys:20200812234303p:plain

3. 白猫はもらった公開鍵で暗号化した手紙を、トラ猫にあげる

f:id:sherrys:20200812234341p:plain

 

4. トラ猫は公開鍵で暗号化された手紙を、秘密鍵で復号する

f:id:sherrys:20200812234359p:plain

するとトラ猫は、誰にも知られずに「へえ、くじらって美味しいんだ」ということを知ることができる。

これが公開鍵を使った暗号化だ。

これで、悪い猫がいてもくじらの美味しさは誰にもばれない。

 

 例えばここに、悪いことを考える黒猫 f:id:sherrys:20200831182944p:plain がいたとする。

もし「1. トラ猫が準備しておいた公開鍵を、白猫にあげる」場面で、黒猫 f:id:sherrys:20200831182944p:plain が公開鍵f:id:sherrys:20200810160158p:plainを奪ったとしても、そもそも公開鍵は世界中にばら撒く鍵であるため、奪われて問題ない。 

f:id:sherrys:20200831183218p:plain

また「3. 白猫は暗号化した手紙を、トラ猫にあげる」場面で、黒猫 f:id:sherrys:20200831182944p:plain が公開鍵で暗号化した手紙 f:id:sherrys:20200831183446p:plain を奪ったとしても、公開鍵で暗号化した手紙 f:id:sherrys:20200831183446p:plain は秘密鍵f:id:sherrys:20200812193943p:plainでしか復号できない。

f:id:sherrys:20200831183248p:plain

こうしてくじらの美味しさの秘密は守られるわけだ。

よかったな、白猫よ。