DES在穷举攻击下相对脆弱,使用DES进行多次加密且使用多个密钥的方式是能够保护已有软硬件的投资的较好方式。本文从简单的双重密钥开始,直到最广泛应用的三重DES(3DES)算法。
双重DES 给定明文P及密钥K1,K2,密文C的生成如下:
C = E( K2, E( K1, P ) )
解密时逆序使用这两个密钥:
P = E( K1, E( K2, C ) )
在这种情况下有人发问:对所有56位密钥,给定K1, K2,可能存在密钥K3使得:
E(K2, E( k1, P ) ) == E( K3, P )
如果这种说法成立的话,那么多重加密是没有意义的。书中给出了证明这种说法错误的解释,奈何我没看懂。先贴上记下:
注:非常感谢西电睿思论坛某同学的解释,现贴如下: 双重DES加密图解: 对应攻击方法
中间相遇攻击 这种攻击不依赖于DES的任何特殊性质,对所有分组密码都有效。假设:C = E( K2, E(K1, P ) ) 则有:X = E( K1, P ) = D( K2, C ) 于是,攻击就很显而易见了: 简单来说就是你知道一对对应的明文(P)和密文(C),那么用所有可能的密钥K1对明文P加密并存到一个表中,然后用所有可能的密钥K2对密文C解密,将每次解密结果和表中的值一一比较,如果相等就用这一对K1,K2对新的明密文验证,如果成功则得到正确的密钥对。 经验证该种破解方法比攻击单DES付出的代价高不了多少。
2. 使用两个密钥的三重DES 具体过程为加密-解密-加密(EDE):C = E( K1, D( K2, E( K1, P ) ) ) P = D( K1, E( K2, D( K1, C ) ) )
对应攻击方法 暂时还没有可行的攻击方法。
3. 使用三个密钥的三重DES 三密钥的三重DES密钥长度位168位,定义为:
C= E( K3, D ( K2, E( K1, P ) ) )
想要和单DES兼容只需设K3=K2,或者令K1=k2即可。 图解如下:
总结: 该部分简单介绍了多重加密和已经广泛应用的三重DES算法。该系列仅限于普及知识点,若想深入了解还需继续阅读相关书籍。加油吧!