公開鍵暗号方式は「暗号化と復号で異なる2つの鍵を使う」方式です。共通鍵暗号の鍵配送問題を鮮やかに解決します。RSAや楕円曲線暗号のしくみを正確に理解しましょう。
公開鍵暗号って、鍵が2つあるんだよね? なんでわざわざ2つ使うの?
公開鍵暗号方式は、公開鍵と秘密鍵という対になる2つの鍵を使うの。
片方で暗号化したら、もう片方でしか復号できないという性質があるのよ。
だから非対称鍵暗号方式とも呼ばれるわ。
つまり、公開鍵で暗号化して、対応する秘密鍵で復号する、という流れですね。
その通り。
受信者は自分の公開鍵を誰にでも配ってよくて、送信者はそれで暗号化する。
復号できるのは、受信者だけが持つ秘密鍵を持つ本人だけ。
だから鍵を安全に配送する鍵配送問題が起きないの。
ここが最大の利点よ。
公開する鍵は誰に見られても平気なんですねぇ。
じゃあ共通鍵暗号より優れてるじゃん! なんで両方あるの?
公開鍵暗号は計算が複雑で処理速度が遅いのが弱点なの。
だから実務では、データ本体は高速な共通鍵暗号で暗号化し、その共通鍵だけを公開鍵暗号で安全に送る、というハイブリッド暗号方式が使われるわ。
SSL/TLSがまさにこの方式よ。
代表的なアルゴリズムというとRSAですね。
ええ。
RSAは、桁数の大きな数の素因数分解が現実的な時間では困難であることを安全性の根拠にしているの。
二つの巨大な素数の積は簡単に作れるけれど、その積から元の素数を求めるのはとても難しい、という一方向性を利用しているのよ。
楕円曲線暗号っていうのも聞いたことある!
楕円曲線暗号(ECC)ね。
楕円曲線上の離散対数問題の困難さを安全性の根拠にしていて、RSAより短い鍵長で同等の強度が得られるのが特長なの。
だからスマホやICカードなど処理能力の限られた機器で重宝されているわ。
鍵の使い分けも重要ですね。
暗号化と署名で、使う鍵が逆になると習いました。
鋭いわね。
機密性を守る暗号化では「受信者の公開鍵」で暗号化するけれど、デジタル署名では「送信者の秘密鍵」で署名し、受信者は「送信者の公開鍵」で検証するの。
目的によって使う鍵が変わるから、試験で狙われるポイントよ。
暗号化は受信者の鍵、署名は送信者の鍵…しっかり区別しますぅ。
確認クイズ
AさんがBさんに、Bさんだけが読める暗号文を公開鍵暗号方式で送りたい。Aさんが暗号化に使う鍵はどれか。
- Aさんの公開鍵
- Aさんの秘密鍵
- Bさんの公開鍵
- Bさんの秘密鍵
こたえを見る
正解: 3. Bさんの公開鍵
正解はBさんの公開鍵。公開鍵暗号で機密性を守るには「受信者の公開鍵」で暗号化する。こうすれば、対応する「受信者(Bさん)の秘密鍵」を持つB本人しか復号できない。送信者Aの鍵(選択肢1・2)で暗号化してもBは復号できない。Bの秘密鍵(選択肢4)はBだけが持つ非公開の鍵なので、Aが暗号化に使うことはできない。