中间相遇(Meet-in-the-Middle)攻击
定义
Meet-in-the-Middle Attack(MITM) 是一种密码分析攻击方法,主要用于破解使用多重加密算法的加密系统。它通过“从两端开始计算,并在中间匹配结果”的方式来降低暴力破解的复杂度。
这种攻击最著名的是用于攻击 双重 DES(Double DES),揭示了简单地对称加密两次并不能显著提高安全性。
核心思想
- 将加密过程分为两个部分。
- 从明文出发进行前向加密(第一密钥的所有可能组合)。
- 同时从密文出发进行反向解密(第二密钥的所有可能组合)。
- 在中间点比对结果,找到匹配的密钥对。
攻击场景举例:Double DES
假设你使用 Double DES 加密:
C = DES(K1, DES(K2, P))
其中:
-
P
是明文 -
K1
和K2
是两个不同的56位DES密钥 -
C
是最终密文
理论上,双重加密应提供 112 位的安全性,但实际上 MITM 攻击可以将复杂度降低到约 2⁵⁷ 次运算。
攻击步骤(以 Double DES 为例)
-
已知明文攻击模型(Known-plaintext attack):
- 攻击者知道一对或多对
(P, C)
。
- 攻击者知道一对或多对
-
阶段一:前向加密
- 使用所有可能的
K2
对明文P
进行一次 DES 加密。 - 将结果保存在一个表中:
temp = DES(K2, P)
。
- 使用所有可能的
-
阶段二:反向解密
- 使用所有可能的
K1
对密文C
进行一次 DES 解密。 - 得到
temp' = DES⁻¹(K1, C)
。
- 使用所有可能的
-
阶段三:匹配
- 查找
temp == temp'
的情况,即前后两步得到相同的中间值。 - 所有匹配的
(K1, K2)
即为候选密钥对。
- 查找
-
验证候选密钥
- 使用其他明文-密文对验证候选密钥是否正确。
时间与空间复杂度对比
方法 | 密钥长度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|
Brute-force Double DES | 112 bits | 2¹¹² | negligible |
Meet-in-the-middle | 112 bits | ~2⁵⁷ | ~2⁵⁶ |
虽然需要较大的内存存储中间结果,但时间复杂度大大减少。
防御措施 / 安全建议
-
避免使用 Double Encryption(如 Double DES)
- 更推荐使用AES等更安全算法。
-
使用更安全的加密算法
- 如 AES-128、AES-256,它们设计上能抵抗此类攻击。
-
增加加密轮数
- 多重加密时采用更复杂的结构(例如 EDE 模式),防止直接被 MITM 攻破。
-
引入随机性(如 IV 或 Nonce)
- 增加攻击者获取足够明文-密文对的难度。
应用场景
- 密码学教学与研究
- 历史加密系统分析(如 DES 的局限性)
- 现代加密协议设计中的启发(如为何不使用 Double Encryption)
总结一句话:
"Meet-in-the-middle 攻击利用分治策略大幅降低双重加密系统的破解难度,揭示了简单叠加加密算法并不能带来线性提升的安全性。"