针对AES的中间相遇原像攻击
1. 慢扩散与结果匹配
在攻击过程中,对于两个块的结果,我们可以高效地检查它们是否匹配。若未找到匹配项,则通过更改#9处固定的14字节值或AES密钥输入值来重复攻击。
每个块可以使用28种可能的中性值,进行28次计算构建。结果存储在大小为28的AES状态表中,然后进行排序。之后,对2¹⁶对进行2字节匹配测试,会有1对成功。若重复攻击2¹¹²次,就能找到一对也匹配其他14字节的结果。生成伪原像的最终复杂度为2⁸ · 2¹¹² = 2¹²⁰。使用通用转换方法,可将其转换为对哈希函数的原像攻击,复杂度为2⁽¹²⁰⁺¹²⁸⁾/² + 1 = 2¹²⁵。
需要注意的是,此攻击效率未优化,因为其目的是展示攻击的基本思想。而且,#9[12]的变化影响在匹配阶段不会传播到所有字节,这是因为反向块过短。若增加攻击轮数,影响将传播到所有字节。
2. 攻击更多轮数的技术
2.1 初始结构技术
该技术类似于初始结构方法,可将每个块的攻击轮数增加一轮(总共增加2轮)。其思路是选择几个字节作为中性字节,并确定这些值,使MixColumns或InverseMixColumns操作的几个输出字节为常数值。这样能最小化每个块中第一次MixColumns操作后未知字节的数量,从而使每个块的攻击轮数增加一轮。
-
前向块中性字节 :前向块的中性字节是4个字节#B[0,1,2,3]。选择这些字节的28个值,独立于反向块计算前向块。具体确定值的步骤如下:
1. 随机为#A处的3个字节(#A[1,2,3])选择常数值。
2. 对于#