Diffie-Hellmanとは
Diffie-Hellman(DH)鍵交換は、1976年にWhitfield DiffieとMartin Hellmanによって発表された、安全でないチャネル上で共通鍵を安全に共有するプロトコルです。離散対数問題の計算困難性に基づいています。
仕組み
- AliceとBobは公開パラメータ(p, g)を共有
- Aliceは秘密の値aを選び、A = g^a mod p を計算してBobに送信
- Bobは秘密の値bを選び、B = g^b mod p を計算してAliceに送信
- Aliceは共通鍵 K = B^a mod p を計算
- Bobは共通鍵 K = A^b mod p を計算
- K = g^(ab) mod p で両者は同じ鍵を持つ
バリエーション
- DHE(Ephemeral DH):セッションごとに新しい鍵ペアを生成→PFS提供
- ECDH(楕円曲線DH):楕円曲線上で実行→短い鍵長で高セキュリティ
- X25519:Curve25519を使用したECDH→TLS 1.3推奨
TLSでの使用
TLS 1.3ではECDHEが標準的な鍵交換方式として使用されます:
TLS_AES_256_GCM_SHA384
→ 鍵交換: X25519(ECDHE)
→ 暗号化: AES-256-GCM
→ ハッシュ: SHA-384
