「公開鍵暗号方式」とは
公開鍵暗号方式は、「公開鍵」と「秘密鍵」という異なる二つの鍵を組み合わせて使う暗号方式です。
公開鍵は、その名前のとおり他人に公開してよい鍵です。一方、秘密鍵は本人だけが持ち、他人に知られないように厳重に管理します。
公開鍵、秘密鍵は受信者が作成します。
たとえば、AさんがBさんだけに読めるメッセージを送りたいとします。このときAさんは、Bさんが公開しているBさんの公開鍵でメッセージを暗号化します。暗号化されたメッセージを元に戻せるのは、その公開鍵と対になっているBさんの秘密鍵です。
したがって、基本的な流れは次のようになります。
受信者の公開鍵で暗号化 → 受信者の秘密鍵で復号
Bさんの秘密鍵はBさんしか持っていないため、暗号化されたメッセージを途中で他人に見られても、内容を簡単には読むことができません。
共通鍵暗号方式との違い
暗号方式には、公開鍵暗号方式のほかに共通鍵暗号方式があります。
共通鍵暗号方式では、暗号化と復号に同じ鍵を使います。処理が比較的単純なため、暗号化・復号が速いという長所があります。しかし、通信を始める前に、その鍵を相手へ安全に渡さなければなりません。通信相手が増えるほど、鍵の配布や管理も複雑になります。
一方、公開鍵暗号方式では、他人に渡してよい公開鍵と、本人だけが持つ秘密鍵を分けています。そのため、秘密の鍵そのものを通信相手に渡さなくても暗号通信を始めやすいという利点があります。ただし、暗号化や復号の処理は共通鍵暗号方式より一般に時間がかかります。
実際のインターネット通信では、それぞれの長所を生かして、公開鍵暗号方式を使って、共通鍵暗号方式の鍵を共有し、その後の大量のデータ通信には高速な共通鍵暗号方式を利用する方法も広く使われています。
公開鍵は本当に本人のものか
ここで問題になるのが、「手に入れた公開鍵が本当に相手の公開鍵なのか」ということです。攻撃者の公開鍵を本人のものだと思い込んでしまえば、安全な通信はできません。
そこで利用されるのが電子証明書と認証局(CA:Certification Authority)です。認証局は、公開鍵とその所有者との対応関係を確認し、そのことを示す電子証明書を発行・管理します。
デジタル署名での使い方
公開鍵暗号の技術は、内容を秘密にするためだけでなく、デジタル署名にも利用されます。
デジタル署名では、署名する本人の秘密鍵を利用して署名を作成し、対応する公開鍵を使って署名を確認します。
つまり、次のように整理できます。
「誰の鍵を使うのか」は、秘密にするための暗号化なのか、本人確認のためのデジタル署名なのかを考えると整理しやすくなります。