对2DES中间相遇攻击的澄清,对2AES中间相遇攻击的困难。
我上次发布了 https://www.bilibili.com/video/BV1om4y1L7Nq 并请到密码学和编程专家Twilight-Dream,聊到后期,Twilight-Dream居然说双重密钥无法用中间相遇攻击,我提到HashTable(或HashMap)能否降低时间复杂度,Twilight-Dream不明白意思。
HashMap可能对编程新手来说较难理解(涉及链表),那么稍微容易理解的方法是,根据密文计算索引。编程时,把DES密文强制类型转换,转成整数类型(理论上无需担心Endianness),再乘以某个系数,存储格式:密钥、密文、密钥、密文,以此类推。因为DES密文有64位,所以强制类型转换成64位整数,再乘以(56+64)(位),作为索引,时间复杂度降到O(1),预计所需空间2⁵⁶×56+2⁶⁴×64 bits,其中2⁵⁶×56是密钥空间,2⁶⁴×64是密文空间。已超过64位CPU的内存寻址能力,需考虑HashMap,或拆分为多个文件放在硬盘。 Twilight-Dream作为编程和密码学专家,居然也认为2DES无法进行中间相遇攻击、不知道HashTable,匪夷所思。 据我的推理,对2AES的中间相遇攻击比较难,因为密文分组长度太短。256位AES采用256位密钥,但是标准文档规定的明文和密文分组长度才128位,容易造成重复密文。若AES能确保密文一定不同于明文,则AES密文至多有2¹²⁸-1个可能,推理不严谨;但密钥长度可以选256位的,重复密文可能有2²⁵⁶÷(2¹²⁸-1)组,这个推理也不严谨,尚不知道密文重复多少组。对2AES的中间相遇攻击容易发生不同密钥得到相同密文,需额外的验证步骤;预计所需空间难以确定,量子计算机求解复杂度也难以确定。也已超过64位CPU的内存寻址能力,要完全放在硬盘。