公開鍵暗号方式
暗号化と復号に、異なる2つの鍵(公開鍵と秘密鍵)を使う暗号方式。公開鍵は誰に知られてもよく、秘密鍵は本人だけが持つ。
イマシルちゃんの解説
共通鍵暗号は、1本の鍵で鍵をかけたり開けたりするから、相手にどうやって鍵を渡すかが悩みのタネだったんだ。
公開鍵暗号は、鍵を2本セットで作るよ。
「閉めるだけの鍵(公開鍵)」はみんなに配って、「開けられる鍵(秘密鍵)」は自分だけで大事に持つ。
誰でも箱に鍵をかけて送ってこられるけど、開けられるのは自分だけ。
これなら、鍵をこっそり渡す必要がないんだよ!
より深い解説
定義
公開鍵暗号方式(非対称鍵暗号方式)は、数学的に対になった2つの鍵を使う暗号方式である。一方の鍵で暗号化したものは、もう一方の鍵でしか復号できない。片方の鍵(公開鍵)を公開しても、もう片方の鍵(秘密鍵)を現実的な時間で求めることはできない。
2つの使い方
| 使い方 | 送信者が使う鍵 | 受信者が使う鍵 | 実現すること |
|---|---|---|---|
| 暗号化 | 受信者の公開鍵 | 受信者の秘密鍵 | 受信者だけが読める(機密性) |
| デジタル署名 | 送信者の秘密鍵 | 送信者の公開鍵 | 送信者本人が作り、改ざんされていないことを確認できる(認証、完全性、否認防止) |
暗号化では「受信者の鍵」、署名では「送信者の鍵」を使う。どちらの場合も、秘密鍵を使う人は1人(本人)だけである。
共通鍵暗号方式との比較
| 共通鍵暗号方式 | 公開鍵暗号方式 | |
|---|---|---|
| 鍵 | 暗号化と復号で同じ鍵 | 暗号化と復号で異なる鍵 |
| 鍵の配送 | 安全な方法で渡す必要がある | 公開鍵は公開してよい |
| n人が互いに通信するのに必要な鍵の数 | n(n−1)/2個 | 2n個 |
| 処理の速さ | 速い | 遅い |
| 代表的な方式 | AES | RSA、楕円曲線暗号 |
公開鍵暗号は処理が遅いため、大きなデータの暗号化には向かない。実際のシステム(TLSやS/MIMEなど)では、公開鍵暗号(または鍵交換)で共通鍵を安全に共有し、データそのものは共通鍵暗号で暗号化するハイブリッド暗号方式が使われる。
代表的な方式
| 方式 | 安全性の根拠 | 特徴 |
|---|---|---|
| RSA | 大きな数の素因数分解の難しさ | 暗号化と署名の両方に使える。安全性のために長い鍵(2048ビット以上)が必要 |
| 楕円曲線暗号(ECC) | 楕円曲線上の離散対数問題の難しさ | RSAより短い鍵で同等の安全性が得られる(256ビットで、RSAの3072ビット相当) |
| Diffie-Hellman鍵交換 | 離散対数問題の難しさ | 暗号化ではなく、共通鍵を共有するための方式 |
公開鍵の正しさの保証
公開鍵暗号では、「その公開鍵が本当に相手のものか」が重要になる。攻撃者が自分の公開鍵を相手のものと偽って渡せば、中間者攻撃が成立する。そこで、信頼できる第三者である認証局(CA)が、公開鍵とその持ち主の対応を、デジタル証明書で保証する。この仕組みをPKI(公開鍵基盤)という。
量子コンピュータの影響
RSAや楕円曲線暗号は、大規模な量子コンピュータが実現すると、効率的に解読される可能性がある。そのため、量子コンピュータでも解読が難しいとされる耐量子計算機暗号(PQC)の標準化と移行が進められている。