今回共通鍵認証、公開鍵認証、デジタル署名についてややこしいなあと思ったんでまとめてみます。
Table of Contents
初めに
まず盗聴、改ざん、なりすましの可能性が通信をする上であるので、何とか防がないといけません。
そこで考えられるのが、暗号化と復号です
暗号化することによって、復号するまでは内容を見ることができません。
暗号化された内容を復号してやっと理解できるわけですね。
ではそれを利用して秘密のやり取りをしていくのが以下の3つになります。
共通鍵認証
では初めに共通鍵認証というものがあります。
それは同じ鍵を使って暗号化と復号を行います。
家のドアを閉めるのにも開けるのにも同じ鍵でしかできないのと同じ考えですね。
クライアント側とホスト側どちらも同じ鍵を持つ必要があって、その鍵で開け閉めしているわけですね。
はい、これはわかりやすい。
ちなみに、秘密鍵という鍵を使っています。
公開鍵認証
公開鍵認証はその名の通り、公開するように鍵があるわけです。
ここで鍵の種類が2つになります。
公開鍵と秘密鍵。
秘密鍵は自分で持っておく一つしかない鍵です。
公開鍵はたくさん作って、同じものを配ることができます。
さて、ここでどんなふうにして暗号化、復号していくのでしょうか。
暗号化と復号
暗号化する際には通信する相手の公開鍵を使って暗号化します。
すでに相手の公開鍵をもらっている状態ですね。公開鍵を使って暗号化して、相手に送りましょう。
そして、受け取った相手は自分の秘密鍵を使って復号します。
ここで大切なのは公開鍵は秘密鍵で復号されたものしか復号できません。秘密鍵は公開鍵で暗号化されたものを復号します。
暗号化されたあいてから送られてくるものを見ることができるのは、公開鍵と対になる秘密鍵を持つ自分しかいないわけですね。
公開鍵認証は共通鍵認証と比べて、暗号化や復号に時間はかかるようになっています。
通信を送る際にはこんな感じになっています。↓
相手Aさんの公開鍵(暗号化)→→ 送信 →→ 自分Aさんの秘密鍵(復号)
デジタル署名
こちらは公開鍵認証を応用してできたものになっています。
「改ざんされていませんか??」っていうのをチェックできるようになっています。
公開鍵認証のメッセージに加えて、デジタル署名を送ります。
これで改ざんされていないかどうかわかるんですね。では、どんなふうにしたら改ざんされていないのかわかるのでしょうか?
公開鍵認証とデジタル署名
先ほど公開鍵認証では公開鍵で暗号化すると、対になる秘密鍵を使わないと復号できないということがわかりましたね。ということは逆に自分の秘密鍵を使って暗号化すると対になる公開鍵を使わないと復号できないことがわかります。
公開鍵(暗号化)→秘密鍵(復号)
秘密鍵(暗号化)→公開鍵(復号)
対になる鍵を使うと暗号化も復号もできるわけです。
けど、公開鍵で暗号化されたものは公開鍵では復号できません。
では再度振り返ると、まず秘密鍵は一つしかありません。ということはだれが暗号化したのかというのがわかりますよね。
それを利用すると、メッセージを送るとき、内容を相手の公開鍵で暗号化します。そしてそれにプラスして、自分の秘密鍵でメッセージの要約を暗号化します。
送り元が現在持っているのは、公開鍵で暗号化したメッセージ+秘密鍵で暗号化したメッセージの要約です。
これを相手に送ります。
すると相手はまず自分の秘密鍵を使い、公開鍵で暗号化されたメッセージを復号します。
その次にそのメッセージと送り主が間違えていませんよね?という確認を含めて、秘密鍵で暗号化されたメッセージの要約を公開鍵を使って復号します。
それで、メッセージを送ってきた人と、要約を送ってきた人が同一であれば改ざんされていないことがわかります。
自分が受け取り側と仮定 自分=A 相手=B
--送信--
自分Aの公開鍵でメッセージを暗号化
相手Bの秘密鍵でメッセージの要約を暗号化(秘密鍵を持っているのはBだけ)
--受け取り--
自分Aの秘相手密鍵でメッセージを復号
相手Bの公開鍵でメッセージの要約を復号
メッセージの要約とメッセージの送り主を確認して同じだったら改ざんされていない!
こんな感じでデジタル署名ができているわけですね。
まとめ
何かわかりにくかったけど、自分でまとめてみたら意外と理解はしやすかった。
ただ、いったん止まって考えないといけない….