暗号化方式

暗号化については、複雑な理論があるんでしょうが、そういう話ではなく。
暗号化のタイプについての話です。

暗号化には「鍵」を使います。
鍵には2種類あります。
「秘密鍵」と「公開鍵」です。

秘密鍵とは、特定の人しか持っていない鍵です。
家の鍵は、家の人しか持っていません。
人に渡しちゃったら困ったことになってしまいます。

公開鍵とは、誰でも持つことができる鍵のことです。
でも、そんなの鍵として役に立たないんじゃないかと思います。
鍵というと、開ける鍵と閉める鍵は同じ・・・と思ってしまいます。
そうすると確かに意味がないです。

でも、これは別だと考えてください。
ある鍵は閉めることしかできないし、ある鍵は開けることしかできないということです。

ここからは「閉める、開ける」を、「暗号化する、復号する」と言います。

まずは、共通鍵暗号方式というものです。


秘密の暗号鍵を持っている人しか暗号化できない。
秘密の復号鍵を持っている人しか復号できない。

暗号鍵と復号鍵は同じものにして良いので、「共通鍵」暗号方式です。
家の鍵方式、一番分かりやすい方法です。

問題は、暗号通信をする相手が増えた時に、いちいち鍵を渡さなきゃいけないことです。
日本中の人と暗号通信をしようと思ったら、1億2千万個の鍵を作らなきゃいけないです。

「だったら、暗号化のための鍵は公開してしまえ」というのが次。
公開鍵暗号方式です。


誰でも暗号化できる。
秘密の復号鍵を持っている人しか復号できない。

だから、1億2千万人が自分宛に暗号文を送りたいときでも単純です。
1個の秘密鍵と、対応する1個の公開鍵で済みます。

これは、南京錠方式です。
誰でも鍵を閉めることはできるけれど、開けることができるのは鍵を持っている自分だけです。

・・・またしても問題が出てきます。
先の共通鍵暗号方式では、暗号も復号も同じ鍵でできたので、お互いに暗号文を送りあうことができます。
公開鍵暗号方式では、自分から1億2千万人に暗号文を送ることができません。

一長一短・・・。
でも、この二つは組み合わせることができます。
鍵に鍵をかけるんです。

共通鍵A(秘密鍵)を公開鍵Bで暗号化して送るんです。
公開鍵Bで暗号化した文章は、秘密鍵Bで復号できます。
お互いに秘密鍵Aを手に入れたわけなので、秘密鍵で暗号通信ができます。

部屋の合鍵を箱に入れて、南京錠をかけて送る。
届いた南京錠を開けて、部屋の合鍵を手に入れる。
こんなイメージです。

こうすれば、安全に秘密鍵を共有できます。
Webサイトを開いていて、たまに出てくるSSLとはこんなような方式です。

「秘密鍵→秘密鍵」、「公開鍵→秘密鍵」だけじゃありません。

「公開鍵→公開鍵」・・・?
さすがにこれは駄目です。
誰でも閉めれて誰でも開けれるのでは、意味がないです。

最後のパターン、「秘密鍵→公開鍵」はディジタル署名と言います。


公開鍵で正しく復号できるということは、暗号化した人が正しい秘密鍵を持っているということです。

・・・うーん。
凄く感動したのだけれど、上手く説明できないものです。

コメント

タイトルとURLをコピーしました