暗号化については、複雑な理論があるんでしょうが、そういう話ではなく。
暗号化のタイプについての話です。
暗号化には「鍵」を使います。
鍵には2種類あります。
「秘密鍵」と「公開鍵」です。
秘密鍵とは、特定の人しか持っていない鍵です。
家の鍵は、家の人しか持っていません。
人に渡しちゃったら困ったことになってしまいます。
公開鍵とは、誰でも持つことができる鍵のことです。
でも、そんなの鍵として役に立たないんじゃないかと思います。
鍵というと、開ける鍵と閉める鍵は同じ・・・と思ってしまいます。
そうすると確かに意味がないです。
でも、これは別だと考えてください。
ある鍵は閉めることしかできないし、ある鍵は開けることしかできないということです。
ここからは「閉める、開ける」を、「暗号化する、復号する」と言います。
まずは、共通鍵暗号方式というものです。
秘密の暗号鍵を持っている人しか暗号化できない。
秘密の復号鍵を持っている人しか復号できない。
暗号鍵と復号鍵は同じものにして良いので、「共通鍵」暗号方式です。
家の鍵方式、一番分かりやすい方法です。
問題は、暗号通信をする相手が増えた時に、いちいち鍵を渡さなきゃいけないことです。
日本中の人と暗号通信をしようと思ったら、1億2千万個の鍵を作らなきゃいけないです。
「だったら、暗号化のための鍵は公開してしまえ」というのが次。
公開鍵暗号方式です。
誰でも暗号化できる。
秘密の復号鍵を持っている人しか復号できない。
だから、1億2千万人が自分宛に暗号文を送りたいときでも単純です。
1個の秘密鍵と、対応する1個の公開鍵で済みます。
これは、南京錠方式です。
誰でも鍵を閉めることはできるけれど、開けることができるのは鍵を持っている自分だけです。
・・・またしても問題が出てきます。
先の共通鍵暗号方式では、暗号も復号も同じ鍵でできたので、お互いに暗号文を送りあうことができます。
公開鍵暗号方式では、自分から1億2千万人に暗号文を送ることができません。
一長一短・・・。
でも、この二つは組み合わせることができます。
鍵に鍵をかけるんです。
共通鍵A(秘密鍵)を公開鍵Bで暗号化して送るんです。
公開鍵Bで暗号化した文章は、秘密鍵Bで復号できます。
お互いに秘密鍵Aを手に入れたわけなので、秘密鍵で暗号通信ができます。
部屋の合鍵を箱に入れて、南京錠をかけて送る。
届いた南京錠を開けて、部屋の合鍵を手に入れる。
こんなイメージです。
こうすれば、安全に秘密鍵を共有できます。
Webサイトを開いていて、たまに出てくるSSLとはこんなような方式です。
「秘密鍵→秘密鍵」、「公開鍵→秘密鍵」だけじゃありません。
「公開鍵→公開鍵」・・・?
さすがにこれは駄目です。
誰でも閉めれて誰でも開けれるのでは、意味がないです。
最後のパターン、「秘密鍵→公開鍵」はディジタル署名と言います。
公開鍵で正しく復号できるということは、暗号化した人が正しい秘密鍵を持っているということです。
・・・うーん。
凄く感動したのだけれど、上手く説明できないものです。
コメント