3.4 三重DES
自DES公布之后,人们了解DES的弱点越来越深入,出现了一些对DES的改进和代替算法。基本的方式有两种,一种是对DES进行复合,强化它的抗攻击能力;另一种是开辟新的方法,即像DES那样加解密速度快,又具有抗差分攻击和其他方式攻击的能力。这些算法典型的有三重DES,IDEA,RC5,RC6,Blowfish,CAST和RC2等。
由于已经证明DES不能成为群,于是多重DES,尤其是三重DES还在普遍使用。
3.4.1 双重DES
最简单的多次DES加密形式是用两个密钥进行两次加密,如图3.7所示。给定明文P和加密密钥K1和K2,密文,解密要求密钥以相反的次序使用,。得。如果这个假设是事实,则DES的两重加密或者多重加密都将等价于
图3.7 双重DES
假设对于DES和所有56 bit密钥,给定任意两个密钥K1和K2,都能找到一个密钥K3使用一个56 bit密钥的一次加密。从直观上看,上面的假设不可能为真。因为DES的加密实际上就是完成一个从64 bit分组到64 bit分组的代替变换,而64 bit分组共有264可能的状态,因而可能的代替变换个数为:
另外,DES的每个密钥确定了一个代替变换,因而总的代替变换个数为256<1017,直到1992年才有人证明了这个结果。
虽然双重DES不同于单次DES,但它可能会受到一种基于观察的中间相遇攻击。根据C =
,则有,给定明文密文对(P,C),先用所有256个密钥加密P,对结果排序,再用所有256个密钥解密C,对结果排序,然后逐个比较两个运算的结果,找出使得的K1和K2。
给定一个明文P,经双重DES加密有264个可能的密文。而双重DES所用密钥的长度应是112位,所以选择密钥有2112个可能性。于是对一个给定的明文P,把它加密成同样密文的密钥有2112/264=248种可能。给定两个明密文对,虚警率降为248-64=2-16。换句话说,对已知两个明文-密文对的中间相遇攻击成功的概率为1-2-16。攻击用的代价也就是加密或解密所用的运算次数,这个数小于等于4×256,但需要大量的存储器。
3.4.2 三重DES
三重DES(Triple DES)使用三(或两)个不同的密钥对数据块进行三次加密,具体有四种模型:
(1)DES-EEE3,使用三个不同密钥,顺序进行三次加密变换。
(2)DES-EDE3,使用三个不同密钥,依次进行加密-解密-加密变换。
(3)DES-EEE2,其中密钥K1 = K3,顺序进行三次加密变换。
(4)DES-EDE2,其中密钥K1 = K3,依次进行加密-解密-加密变换。
Tuchman建议使用双密钥进行加密-解密-加密(EDE)的方案,加密为,解密为,如图3.8所示,其强度大约和112位的密钥强度相当。第二个步骤使用解密并没有密码编码上的考虑,相对于使用加密,它的唯一优点是可以使三重DES的用户能够解密原来用DES加密的数据。该模式由IBM设计,可与常规加密算法兼容,这种替代DES的加密较为流行,并且已被采纳用于密钥管理标准ANSI X9.17和ISO 8732。交替使用K1和K2可以抵抗中间相遇攻击。到目前为止,还没有人给出攻击双密钥三重DES的有效方法。对其密钥空间中的密钥进行强力搜索,那么由于空间(2112=5×1033)太大,这实际上是不可行的。若用差分攻击的方法,相对于单一DES来说复杂性以指数形式增长,要超过1052。
图3.8 三重DES
虽然目前还没有针对双密钥三重DES的实用攻击方法,但对双密钥三重DES的攻击有一些设想,以这些设想为基础将来可能设计出更成功的攻击技术。许多研究人员感到具有三个密钥的三重DES是更好的选择。加、解密过程如下:
密钥的有效长度为168位,与DES的兼容性可以通过令K3 = K2或K1 = K2得到。许多基于Internet的应用中用到这种三密钥的3DES,比如PGP和S/MIME。