Diffie-Hellman 密钥交换

Diffie-Hellman
Key Exchange
设计者
Whitfield Diffie, Martin Hellman
首次发布
1976年
类别
密钥交换协议
数学基础
离散对数难题
变体
DH, DHE, ECDH, ECDHE, X25519
前向保密
DHE/ECDHE 支持

Diffie-Hellman 密钥交换(DH)是 Whitfield Diffie 和 Martin Hellman 于 1976 年提出的密钥交换协议,是公钥密码学的奠基之作。它允许两个从未通信的方在不安全信道上协商出一个共享密钥,而窃听者无法得知该密钥。

协议原理
经典 DH 协议 (基于有限域): 公开参数: 大素数 p, 生成元 g Alice Bob a (随机私钥) b (随机私钥) A = g^a mod p B = g^b mod p ------ A ------> ------ B ------> 共享密钥: s = B^a mod p = g^(ab) mod p = A^b mod p 窃听者只能看到 A 和 B, 但无法从 A=g^a 计算 a(离散对数难题)
变体
变体基础前向保密推荐
DH (静态)有限域不推荐
DHE (临时)有限域可接受(2048+ 位)
ECDH (静态)椭圆曲线不推荐
ECDHE (临时)椭圆曲线推荐
X25519Curve25519强烈推荐
前向保密(Forward Secrecy)

临时 DH 变体(DHE/ECDHE)的每次会话使用新的临时密钥对,即使长期私钥泄露,历史会话密钥也不受影响。这是现代 TLS(1.2+)的核心安全特性。TLS 1.3 仅支持临时密钥交换(ECDHE/X25519)。

Logjam 攻击

2015年研究显示,1024 位 DH 组可被国家级攻击者破解。推荐使用 2048 位以上(有限域)或切换到 ECDHE/X25519(椭圆曲线)。

参考文献
  1. Diffie, W., Hellman, M. (1976). "New Directions in Cryptography". IEEE Trans. Inf. Theory 22(6): 644-654.
  2. Adrian, D., et al. (2015). "Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice". CCS 2015.