従来の暗号技術(公開鍵暗号・共通鍵暗号)
はじめに
現在広く利用されている暗号技術は、量子コンピュータの登場によって安全性が揺らぐ可能性があると指摘されています。この問題への解決策として二つのアプローチが注目を集めています。一つは、量子コンピュータでも解けない計算問題に基づいた「耐量子計算機暗号(PQC)」 です。もう一つは、量子力学の原理を利用する「量子暗号(QKDなど)」 です。
私はこれらの最先端の暗号技術に強い関心があり、独学で得た知識を体系的に整理するために、記事シリーズとしてまとめています。
本記事では、PQCを理解するための土台として、まず従来の暗号技術である公開鍵暗号方式と共通鍵暗号方式の仕組みを整理します。さらに、これらを応用した鍵共有やデジタル署名についても整理します。
1. 公開鍵暗号の基本原則
公開鍵暗号は、 「公開鍵」 と 「秘密鍵」 のペアを使う暗号方式です。
- 公開鍵:誰でも利用できる鍵
- 秘密鍵:人だけが保持する鍵
公開鍵で暗号化したデータは、そのペアとなる秘密鍵でしか復号できません。これにより、誰でも安全に相手に暗号化メッセージを送れますが、復号できるのは秘密鍵を持つ本人だけ、という仕組みが成立します。
この安全性は、「公開鍵から秘密鍵を予測することが現在の計算能力では極めて困難」という数学的性質に基づいています。
< 公開鍵暗号方式 >
- データの受信者(サーバーなど)は、自分専用の「公開鍵」と「秘密鍵」を生成します。
- 受信者は「公開鍵」をデータの送信者(クライアント)に渡します。
- 送信者は送信したいデータを、受信者から受け取った「公開鍵」で暗号化します。
- 暗号化されたデータが受信者に送信されます。
- 受信者は自分の「秘密鍵」を使ってデータを復号し、元の内容を取り出します。
注:従来の暗号が安全である前提は「計算が極めて困難である」という数学的性質に基づいています。しかし、量子コンピュータの登場によってこの前提は揺らぐ可能性があります。この点についてはこちらの記事をご覧ください。
2.共通鍵暗号の基本原則
共通鍵暗号は、 「共通鍵」 を使って暗号化と復号を行う方式です。
- 共通鍵:送信者と受信者が共有している、同じ鍵
共通鍵を使って暗号化したデータは、その同じ鍵を使うことで復号できます。つまり、暗号化と復号に同一の鍵を利用するため、「対称鍵暗号」とも呼ばれます。
この方式は計算処理が高速で、インターネット通信やファイル暗号化など幅広く利用されています。ただし、鍵を安全に相手と共有する必要がある点が課題です。
< 共通鍵暗号方式 >
- 送信者は「共通鍵」を生成します。
- 送信者と受信者は、同じ「共通鍵」を事前に共有します。
- 送信者はデータを「共通鍵」で暗号化します。
- 暗号化されたデータを受信者に送ります。
- 受信者は同じ「共通鍵」を使ってデータを復号し、元の内容を取り出します。
3. 鍵共有とデジタル署名・デジタル証明書
公開鍵暗号方式は、通信の安全を確保するために 「鍵共有」 と 「デジタル署名」、「デジタル証明書」 の用途で使われます。
1. 鍵共有
実際のデータ通信では、共通鍵暗号方式の方が効率的です。理由は、公開鍵暗号方式では毎回相手の公開鍵を使って暗号化する必要がありますが、共通鍵暗号方式では一度鍵を共有すれば、その後は同じ鍵を使って効率的に通信できるからです。
ただし課題は「安全に共通鍵を相手に渡す方法」です。この問題を解決するのが公開鍵暗号です。公開鍵暗号で共通鍵を安全に共有し、その後のデータ通信では共通鍵暗号を使います。
公開鍵暗号による共通鍵の共有
- データの受信者(サーバーなど)は、自分専用の「公開鍵」と「秘密鍵」を生成します。
- 受信者は「公開鍵」をデータの送信者(クライアント)に渡します。
- 送信者はその「公開鍵」で「共通鍵」を暗号化します。
- 暗号化された「共通鍵」を受信者に送ります。
- 受信者は自分の「秘密鍵」を使って、「共通鍵」を復号し、共通鍵を取り出します。
この方法なら、安全でない通信路でも共通鍵を安全に共有できます。インターネット上のTLS/SSL通信は、この仕組みに基づいています。
2. デジタル署名とデジタル証明書
公開鍵暗号方式は、データの改ざん防止 や 送信者の正当性の証明 のための署名にも使われます。
-
デジタル署名(電子署名)
- 送信者がデータをハッシュ化し、そのハッシュ値を自分の秘密鍵で暗号化したもの。
- 受信者は送信者の公開鍵で署名を検証し、データが改ざんされていないことを確認できます。
-
デジタル証明書
- 認証局(CA)が「この公開鍵は確かに本人のもの」と保証するために発行する証明書。
- 公開鍵と身元情報(名前や組織など)が含まれ、CAの秘密鍵で署名されています。
- 受信者は証明書を通して「この公開鍵は信頼できる」と確認できます。
<デジタル署名>
- 送信者は、送信したいデータにハッシュ関数を適用し、そのハッシュ値を計算します。
- 送信者は、そのハッシュ値を自分の「秘密鍵」で暗号化し、これを「電子署名」とします。
- 送信者は、データ本体と電子署名をまとめて受信者に送ります。
- 受信者は、送信者の「公開鍵」を使って電子署名を復号し、得られた値と受け取ったデータをハッシュ化して得た値を照合します。
- 一致すれば、「データが改ざんされていないこと」と「確かに送信者本人が署名したこと」が確認できます。
<デジタル証明書>
- 送信者は、自分の「公開鍵」と本人確認情報を認証局(CA)に提出します。
- 認証局は、提出された公開鍵が確かに本人のものであるかを確認します。
- 認証局は、自分の秘密鍵で署名を行い、「デジタル証明書」を発行します。
- 送信者は、この証明書をデータや電子署名と一緒に受信者へ送ります。
- 受信者は、送られた証明書が送信者の公開鍵が信頼できるものであることを確認できます。
PKI(公開鍵基盤)
公開鍵を安全に利用するためには、その公開鍵が本物であり、正しい相手に属していることを確認する仕組みが必要です。その役割を担うのが PKI(Public Key Infrastructure) です。
PKIを構成する主な要素
- 認証局(CA):証明書の真偽を保証する信頼できる第三者機関。
- 証明書管理システム:証明書の発行、更新、失効などを管理するソフトウェア。
- ディレクトリサービス:公開鍵や証明書を公開し、誰もが利用できるようにするデータベース。
- 鍵管理システム(KMS):鍵の生成から保管、配布、更新、廃棄まで、鍵のライフサイクル全体を管理するシステムです。このKMSの一部として、秘密鍵を安全に生成・保管・利用するための鍵管理ハードウェア(HSM(ハードウェア・セキュリティ・モジュール)[^1]、スマートカード、USBトークンなど)が使用されます。
PKIは通信を暗号化するわけではなく、「誰が本物か」を保証する仕組みです。電子証明書を通じて通信相手の正当性を確認できることで、安全な通信や署名の信頼性が確保されます。
現在広く使用されている暗号技術の仕組みと応用例を整理してきました。ただし、これらの技術は量子コンピュータの実用化によって安全性が損なわれる可能性が指摘されています。
この課題に対応する新しいアプローチとして、PQC(耐量子計算機暗号) や 量子暗号(QKDなど) が研究・標準化の対象となり、注目を浴びています。
本記事ではそれらの技術を詳しく掘り下げることはしませんが、より詳しく知りたい方は以下の記事をご覧ください。
Discussion