Diffie-Hellman 密钥交换
Diffie-Hellman
Key Exchange
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 (临时) | 椭圆曲线 | 是 | 推荐 |
| X25519 | Curve25519 | 是 | 强烈推荐 |
前向保密(Forward Secrecy)
临时 DH 变体(DHE/ECDHE)的每次会话使用新的临时密钥对,即使长期私钥泄露,历史会话密钥也不受影响。这是现代 TLS(1.2+)的核心安全特性。TLS 1.3 仅支持临时密钥交换(ECDHE/X25519)。
Logjam 攻击
2015年研究显示,1024 位 DH 组可被国家级攻击者破解。推荐使用 2048 位以上(有限域)或切换到 ECDHE/X25519(椭圆曲线)。
参考文献
- Diffie, W., Hellman, M. (1976). "New Directions in Cryptography". IEEE Trans. Inf. Theory 22(6): 644-654.
- Adrian, D., et al. (2015). "Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice". CCS 2015.