3. 密钥交换协议:Diffie-Hellman 密钥交换原理与中间人攻击
对称加密虽然高效,但面临一个根本性难题:通信双方如何在不安全的信道上安全地共享同一个密钥?如果密钥在传输过程中被窃听,加密便形同虚设。Diffie-Hellman 密钥交换协议(简称 DH)正是为解决这一难题而设计的里程碑式算法,它允许双方在不直接传输密钥的情况下,通过公开信道协商出一个共享秘密。
3.1 核心数学原理
DH 协议的安全性建立在离散对数问题的难解性之上。其核心运算涉及模幂运算与单向函数。
| 概念 | 符号 | 说明 |
|---|---|---|
| 公开参数(全局) | p , g |
p 为大素数,g 为模 p 的原根(生成元) |
| 私钥(秘密) | a , b |
Alice 和 Bob 各自随机选取的整数 |
| 公钥(公开) | A , B |
A = g^a mod p , B = g^b mod p |
| 共享密钥 | K |
K = B^a mod p = A^b mod p = g^(ab) mod p |
单向性体现在:已知 g、p 和 A,在计算上无法在合理时间内反推出私钥 a。而双方各自计算出的 K 值完全相同,从而实现了密钥协商。
3.2 协议执行流程
以下为标准的 DH 密钥交换步骤,假设 Alice 与 Bob 希望建立安全通信:
- 参数协商:双方事先约定好大素数
p和生成元g(公开)。 - 生成私钥:Alice 随机选择私钥
a,Bob 随机选择私钥b。 - 计算并交换公钥:Alice 计算
A = g^a mod p并发送给 Bob;Bob 计算B = g^b mod p并发送给 Alice。 - 计算共享密钥:Alice 使用收到的
B计算K = B^a mod p;Bob 使用收到的A计算K = A^b mod p。 - 密钥确认:双方得到相同的
K,后续通信使用K作为对称密钥。
关键洞察: 在整个过程中,私钥
a 和 b 从未在网络上传输,只有公钥 A 和 B 是公开可见的。即使攻击者截获了所有通信,也无法计算出共享密钥 K。
3.3 中间人攻击(MITM)
标准的 DH 协议虽然能抵抗被动窃听,但无法抵御主动攻击——中间人攻击(Man-in-the-Middle, MITM)。攻击者 Mallory 可以在 Alice 和 Bob 之间拦截并篡改公钥,从而与双方分别建立独立的共享密钥。
3.4 攻击过程详解
Mallory 通过以下步骤瓦解 DH 协议的安全性:
- 拦截公钥:Mallory 截获 Alice 发送给 Bob 的公钥
A,以及 Bob 发送给 Alice 的公钥B。 - 伪造公钥:Mallory 生成自己的私钥
m,计算公钥M = g^m mod p。 - 替换并转发:Mallory 将
M分别发送给 Alice 和 Bob,冒充对方的公钥。 - 建立双重密钥:
- Alice 计算
K1 = M^a mod p(以为是与 Bob 共享)。 - Bob 计算
K2 = M^b mod p(以为是与 Alice 共享)。 - Mallory 分别计算
K1 = A^m mod p和K2 = B^m mod p。
- Alice 计算
- 透明转发:Mallory 使用
K1解密 Alice 的消息,读取或篡改后,再用K2加密转发给 Bob,反之亦然。双方完全察觉不到中间人的存在。
安全警示: 未经身份认证的 DH 协议对 MITM 攻击毫无防御能力。攻击者不需要破解离散对数,只需要在密钥协商阶段插入自己的公钥即可。这是 DH 协议在实际部署中必须结合数字签名或证书认证的根本原因。
3.5 防御策略
要抵御中间人攻击,必须在密钥交换过程中引入身份认证机制。以下是主流的防御方案:
| 方案 | 核心思想 | 典型协议 |
|---|---|---|
| 数字签名 | 使用私钥对公钥进行签名,接收方用公钥证书验证身份 | DHE / ECDHE + 证书 |
| 预共享密钥(PSK) | 双方预先共享一个秘密,用于认证 DH 公钥 | TLS-PSK |
| 口令认证密钥交换(PAKE) | 使用低熵口令抵抗离线字典攻击,同时完成认证与密钥协商 | SRP, OPAQUE |
| 静态 Diffie-Hellman | 使用长期固定的 DH 公钥,并通过证书绑定身份 | IKE(IPsec) |
工程实践: 现代 TLS 1.3 协议使用 (EC)DHE 进行密钥交换,同时通过证书对服务器(及可选客户端)进行身份认证,从根本上杜绝了中间人攻击。在实现端到端加密时,务必在 DH 协商之上叠加签名或 MAC 认证,切勿单独使用裸 DH。
3.6 本章小结
Diffie-Hellman 协议解决了对称密钥分发中的窃听问题,但其自身缺乏身份认证,导致中间人攻击成为最大威胁。理解 DH 的数学原理与攻击模型,是设计安全通信系统的必修课。在实际工程中,DH 必须与数字证书、签名或预共享密钥等认证机制结合,才能构建真正安全的端到端加密通道。