公開鍵暗号 Diffie-Hellman/RSA 1976-1977(公開鍵暗号創始)
Public Key Cryptography 1976-1977創始 (差別化: 既存暗号方式DES/AES史と異なり公開鍵暗号創始者軸)。Whitfield Diffie 1944生+Martin Hellman 1945生 Stanford Univ「New Directions in Cryptography」1976/11 IEEE Transactions Information Theory発表 (Diffie-Hellman Key Exchange Protocol DH・Discrete Logarithm Problem・公開鍵暗号革命)・Ralph Merkle 1974 Project Proposal提案 (Berkeley Submarine Internet Communication・Merkle's Puzzles先行)→Diffie-Hellman-Merkle Algorithm改名議論・Ron Rivest 1947生+Adi Shamir 1952生+Leonard Adleman 1945生 MIT「A Method for Obtaining Digital Signatures and Public-Key Cryptosystems」1977/8 (RSA・素因数分解Hardness Problem基づくEncrypt+Decrypt+Signature)・Communications of the ACM 1978/2公開・1982 RSA Security設立・1983 RSA特許US Patent 4,405,829 (米国のみ・2000年失効)・Phil Zimmermann PGP 1991 (RSA採用)・Diffie+Hellman 2015 Turing Award・Rivest+Shamir+Adleman 2002 Turing Award・GCHQ James Ellis+Clifford Cocks+Malcolm Williamson 1969-1973 Independent invention (機密分類解除1997)・¥0 公的功績、2026年TLS 1.3+SSH+SignalProtocol前提技術。
概要
1976年11月にスタンフォード大学のWhitfield DiffieとMartin Hellmanが発表した「New Directions in Cryptography」から、公開鍵暗号の基盤が確立された。これにより、従来の共通鍵暗号(DES、AES)とは別の概念が登場し、鍵交換と署名の両面で新たな安全性を提供した。Diffie–Hellmanは鍵交換プロトコルを、RSAは暗号化・署名のアルゴリズムをそれぞれ実装した。1977年8月にMITのRon Rivest、Adi Shamir、Leonard Adlemanが発表したRSAは、素因数分解の難しさに基づく暗号で、今日のインターネット通信の多くで不可欠な技術となっている。
主な特徴・仕組み
| 特徴 | Diffie–Hellman | RSA |
|---|---|---|
| 鍵の生成 | 乱数で生成した大きな素数 (p) と原始根 (g) を共有し、各側が秘密指数 (a, b) を選択。 | 2つの大きな素数 (p, q) を選び、公開鍵 (e) と秘密鍵 (d) を計算。 |
| 計算量 | (O(\log n)) の指数計算で鍵共有。 | (O(n^3)) の乗算で暗号化/復号。 |
| 用途 | キー交換、対称鍵の生成。 | 暗号化、署名、証明書の生成。 |
| 耐量子性 | 量子計算で指数計算が高速化されるため、量子耐性は低い。 | 素因数分解が量子で高速化されるため、量子耐性は低い。 |
| 実装例 | TLS 1.3のECDHE、IKEv2。 | TLS 1.2のRSA、SSHのRSA鍵。 |
具体例・対応製品
| 製品 | 主要用途 | 対応鍵長 | 主要プロトコル | 主要パフォーマンス指標 |
|---|---|---|---|---|
| OpenSSL 3.0 | オープンソースSSL/TLSライブラリ | 2048/3072/4096 | TLS 1.3, DTLS 1.2 | 1 Gbps (AES‑GCM) |
| BoringSSL | Google社用SSL/TLS実装 | 2048/3072/4096 | TLS 1.3 | 1.2 Gbps (AES‑GCM) |
| LibreSSL | OpenBSD派生SSL/TLS | 2048/3072/4096 | TLS 1.3 | 900 Mbps (AES‑GCM) |
| AWS KMS | クラウド鍵管理 | 2048/3072/4096 | TLS 1.3, S3 SSE | 1 Gbps (AES‑GCM) |
| Google Cloud KMS | クラウド鍵管理 | 2048/3072/4096 | TLS 1.3, GCS SSE | 1.1 Gbps (AES‑GCM) |
| Azure Key Vault | クラウド鍵管理 | 2048/3072/4096 | TLS 1.3, Azure Storage SSE | 950 Mbps (AES‑GCM) |
| Cisco ASA 5500-X | ネットワークファイアウォール | 2048/3072 | TLS 1.3, IPSec | 700 Mbps (AES‑GCM) |
| Juniper SRX 300 | ネットワークファイアウォール | 2048/3072 | TLS 1.3, IPSec | 650 Mbps (AES‑GCM) |
| Fortinet FortiGate 60F | ネットワークファイアウォール | 2048/3072 | TLS 1.3, IPSec | 600 Mbps (AES‑GCM) |
| Palo Alto Networks PA‑220 | ネットワークファイアウォール | 2048/3072 | TLS 1.3, IPSec | 550 Mbps (AES‑GCM) |
数値スペック(代表例)
- RSA鍵長: 2048 ビット (安全性 ≈ 112 ビット), 3072 ビット (≈ 128 ビット), 4096 ビット (≈ 152 ビット)
- ECDHE鍵長: 256 ビット (≈ 128 ビット), 384 ビット (≈ 192 ビット)
- AES‑GCMブロックサイズ: 128 ビット
- TLS 1.3平均遅延: 1.2 ms (サーバー側)
- TLS 1.3ハンドシェイクスループット: 1 Gbps (AES‑GCM)
- RSA暗号化速度: 10 Mbps (2048 ビット)
- ECDHE鍵交換速度: 30 Mbps (256 ビット)
- OpenSSL 3.0のハードウェアアクセラレーション: AES-NI, SHA‑256, RSA 4096 ビット 5×高速化
- TLS 1.3のサーバー証明書検証: 0.5 ms (ECDSA)
- AWS KMSのレスポンスタイム: 0.7 ms (RSA 2048 ビット)
選び方・注意点
- 鍵長の選択
- 2048 ビット RSA は現在の標準だが、2025年以降は3072 ビットまたは4096 ビットへの移行が推奨される。
- ECDHE では256 ビットが最小で、384 ビットは高い安全性を提供。
- 量子耐性の考慮
- 量子計算の進展により、RSA/DSA/DH は将来的に脆弱になる可能性がある。
- 2025年以降のTLS 1.3実装では、KyberやDilithiumといった格子ベースの鍵交換が実験的に導入されている。
- ハードウェアアクセラレーション
- AES‑NI、SHA‑256、RSA/EC演算をサポートするCPUやTPMを備えた環境では、パフォーマンスが大幅に向上。
- 法規制・コンプライアンス
- 米国のFIPS 140‑3 では、RSA 2048 ビット以上、ECDHE 256 ビット以上が要求される。
- EUのGDPR では、鍵長に関する明示的な要件はないが、適切な鍵管理が必要。
- 証明書チェーンの管理
- RSA/DSA での証明書は長期的に有効だが、ECDSA は短期間で更新されるケースが多い。
関連用語との違い
| 用語 | Diffie–Hellman/RSA 1976‑1977 | 主要差分 |
|---|---|---|
| ElGamal | 1985年に導入 | Diffie–Hellman の拡張で署名も可能 |
| ECC (Elliptic Curve Cryptography) | 1991年以降 | 曲線上で演算を行い、同等の安全性を小さな鍵長で実現 |
| Post‑Quantum Algorithms | 2020年代以降 | 格子ベース、ハッシュベース、符号ベースのアルゴリズムで量子耐性を提供 |
| TLS 1.2 | 2008年 | RSA/DSA が鍵交換に使用されるが、TLS 1.3 では ECDHE が標準 |
| PGP | 1991年 | RSA を採用したメール暗号化・署名ツール |
| SSH | 1995年 | RSA/DSA/ECDSA を鍵交換・認証に使用 |
よくある質問 (FAQ)
Q1. RSA と ECDSA のどちらを選べばよいですか?
A1. パフォーマンスと鍵長を比較すると、ECDSA は同等の安全性で約 1/4 の鍵長を使用でき、暗号化速度も速い。サーバー側で CPU への負荷が重要な場合は ECDSA が有利。RSA は既存のインフラとの互換性が高いので、既存証明書を利用する場合に適している。
Q2. TLS 1.3 で Diffie–Hellman はまだ必要ですか?
A2. TLS 1.3 では DH ではなく ECDHE が標準で使用される。DH は 2025 年以降の実装で非推奨になる見込みで、量子耐性を考慮した鍵交換が推奨される。
Q3. 量子コンピュータが実用化した場合、現在の RSA 鍵は無効になりますか?
A3. 量子計算により Shor のアルゴリズムで素因数分解が高速化されるため、RSA 2048 ビットは 2020 年代後半に脆弱になる可能性がある。対策としては、RSA 3072/4096 ビットへの移行、あるいは量子耐性アルゴリズムへの切替が推奨される。
まとめ
Diffie–Hellman と RSA は1976‑1977年に公開鍵暗号の基礎を築き、以降のインターネット通信の安全性を支える柱となった。鍵交換と署名の両面でそれぞれ独自の特徴を持ち、TLS 1.3 からは ECDHE が標準化され、RSA は主に署名に留まる形で使用される。2025‑2026 年の動向では、量子耐性アルゴリズムの実験的導入が進み、ハードウェアアクセラレーションの活用がパフォーマンス向上の鍵となっている。鍵長の選択、量子耐性の検討、ハードウェアサポートの確認を行い、最新の標準と規制に準拠した実装を選択することが、長期的なセキュリティ確保に不可欠である。