前回、セキュリティの基礎(暗号化・認証・アクセス制御)を整理しました。今回は、暗号化の中でも特に出題されやすい「共通鍵暗号方式」と「公開鍵暗号方式」の違いを整理します。
共通鍵暗号方式とは
共通鍵暗号方式は、データを暗号化するときと、元に戻す(復号する)ときに、同じ鍵を使う方式です。
送る側と受け取る側の両方が、同じ鍵をあらかじめ共有しておく必要があります。仕組みがシンプルで、処理も比較的速いという利点がありますが、「その鍵を、どうやって安全に相手に渡すか」という課題があります。鍵そのものが途中で盗まれてしまえば、暗号化の意味がなくなってしまうためです。
公開鍵暗号方式とは
公開鍵暗号方式は、暗号化に使う鍵と、復号に使う鍵が、別々に用意されている方式です。
「公開鍵」と「秘密鍵」という、対になった2つの鍵を使います。公開鍵は誰に渡しても構わない鍵で、秘密鍵は本人だけが持っておく鍵です。公開鍵で暗号化したデータは、対になる秘密鍵でしか復号できない、という仕組みになっています。
このため、データを送る側は、相手の公開鍵を使って暗号化するだけでよく、共通鍵暗号方式のように「鍵をどう安全に渡すか」という課題を避けることができます。
2つの方式を比較する
自分は、次のように整理して覚えるようにしています。
- 共通鍵暗号方式:鍵は1つだけ。処理は速いが、鍵の受け渡しが課題
- 公開鍵暗号方式:鍵は公開鍵と秘密鍵の2つ。鍵の受け渡しの課題は解決するが、処理は共通鍵暗号方式より遅い
「鍵が1つか2つか」という違いが、そのまま利点と課題の違いにつながっている、と捉えると整理しやすくなりました。
実際にはどちらも組み合わせて使われる
実際の通信では、公開鍵暗号方式で共通鍵を安全に受け渡し、その後のやり取りは処理が速い共通鍵暗号方式で行う、というように、両方の方式を組み合わせて使うことが一般的です。
以前整理したHTTPS(暗号化されたHTTP)も、こうした仕組みを使って、安全性と処理速度の両方を実現しています。
学習してみた感想
共通鍵暗号方式と公開鍵暗号方式は、名前が似ているため、最初は違いがあいまいなまま覚えてしまっていました。「鍵が1つか2つか」という一点に絞って比較したことで、それぞれの利点と課題がセットで理解できるようになりました。
次回は、科目Bに戻り、配列の多次元操作(行列計算など)を整理します。
