假设有一个双重的AES加密体系,公式表示如下:
CipherText = Encrypt(Key2, Encrypt(Key1, PlainText))
其中,PlainText表示明文,CipherText表示密文,Key1为第一轮加密的密钥,Key2为第二轮加密的密钥,则一定存在一个中间过程,有:
X = Encrypt(Key1, PlainText) = Decrypt(Key2, CipherText)
中间相遇攻击(Meet-in-the-Middle attack,MITM)即对于给定的明密文对,枚举Key1对明文进行加密,保存所有的中间结果以及对应的密钥,然后枚举Key2对密文进行解密,看解密的结果是否存在于之前的中间结果之中,如果有则表明破解成功,得到两个密钥。
使用中间相遇攻击可以有效降低枚举密码空间的复杂度。
那么,当用户知道一对明文和密文时,攻击者可以枚举所有的 k1,将 P 所有加密后的结果存储起来,并按照密文的大小进行排序。(设第一次加密后的密文为P1)。攻击者进一步枚举所有的 k2,将密文 C 进行解密得到 C1。比对P1和C1,如果搜索到,则我们在一定程度上可以认为我们找到了正确的 k1 和 k2
因为是两面逼近的方式获得密码所以称为中间相遇攻击。