跳转至

密码攻击方法总结

一、攻击模式分类

在密码学分析中,一般假设攻击者知道密码学算法。根据攻击者获取信息的多少,攻击模式分为以下几类:

  • 唯密文攻击 (Ciphertext-Only Attack):攻击者仅能获得加密过的密文。
  • 已知明文攻击 (Known-Plaintext Attack):攻击者有一些密文对应的明文。
  • 选择明文攻击 (Chosen-Plaintext Attack):攻击者可以选择明文并获取加密后的密文。如果在攻击中途可以根据已获取信息选择新的明文,则称为**适应性选择明文攻击**。
  • 选择密文攻击 (Chosen-Ciphertext Attack):攻击者可以选择密文并获取解密后的明文。同理有**适应性选择密文攻击**。
  • 相关密钥攻击 (Related-Key Attack):攻击者可以获得两个或多个相关密钥的加解密结果,但不知道密钥本身。

二、常见攻击方法

  • 暴力攻击
  • 中间相遇攻击
  • 线性分析
  • 差分分析
  • 不可能差分分析
  • 积分攻击
  • 代数分析
  • 相关密钥攻击
  • 侧信道攻击

三、中间相遇攻击 (Meet-in-the-Middle Attack)

原理

中间相遇攻击是一种以空间换取时间的攻击方法,由 Diffie 与 Hellman 于 1977 年提出。

假设 \(E\) 和 \(D\) 分别是加密函数和解密函数,\(k_1\) 和 \(k_2\) 分别是两次加密使用的密钥:

\[ C = E_{k_2}(E_{k_1}(P)) \]
\[ P = D_{k_1}(D_{k_2}(C)) \]

可推出:

\[ E_{k_1}(P) = D_{k_2}(C) \]

攻击步骤(已知一对明密文时): 1. 枚举所有 \(k_1\),将 \(P\) 的所有加密结果存储并排序。 2. 枚举所有 \(k_2\),将 \(C\) 解密得到 \(C_1\),在第一步结果中搜索 \(C_1\),若匹配则可能找到正确的 \(k_1\) 和 \(k_2\)。 3. 可再用其他明密文对验证结果。

假设 \(k_1\) 和 \(k_2\) 的密钥长度都为 \(n\),暴力枚举需要 \(O(2^{2n})\),中间相遇攻击只需 \(O(n \cdot 2^n)\) 的复杂度。

典型应用

  • 双重 DES 攻击:2DES 无法抵抗中间相遇攻击。

四、比特攻击 (Bit Attack)

原理

利用加密算法中比特位之间的关系进行攻击。通常通过分析加密过程中每个比特位的变换关系,推导密钥位或缩小密钥搜索空间。

核心思路:将块加密的处理过程分解到比特级别,分析每一轮中比特的输入输出关系,利用这些关系逐步恢复密钥信息。

例如在基于 Feistel 结构的块加密中: - 将 64 位块分为高 32 位和低 32 位 - 分析 swap 和 transduce 操作的比特级影响 - 分别枚举高 32 位密钥和低 32 位密钥,利用中间相遇降低复杂度