DES的解密过程
- DES的加密算法是对合运算,因此解密和加密可以共用一个算法。
- 不同点:子密钥使用的顺序不同。
- 第一次解密迭代使用的子密钥为K16,第二次为K15,第十六次为K1。
- DES的解密过程数学描述如图所示:
- 它与加密过程恰恰相反。
可逆性证明
1.可逆性证明
- 如图所示:
2.对合性证明
DES的破译
- 1990年,以色列密码学家Eli Biham和Adi Shamir提出了差分密码分析法,可以对DES进行选择明文攻击。
- 线性密码分析(1993)比差分密码分析更加有效
- 强力攻击:平均2的55次方尝试
- 差分密码分析法:使用2的四十七次方对密文的选择明文攻击
- 线性密码分析法:使用2的47次方对名密文的一直明文攻击。
- 1997年,克鲁拉多州的程序员Verser在Internet上数万名志愿者的协作下用了96天事件找到了密钥长度为40位和48位的DES密钥。
- 1998年电子边境基金会(EFF)使用一台价值25万美元的计算机在56小时之内破译了56位DES。
- 1999年,电子边境基金会(EFF)通过互联网上的10万台计算机合作,用了22小时15分破译了56的DES。
DES的安全性
1.攻击
- 穷举攻击。是目前最有效的方法。
- 差分攻击
- 线性攻击
2.安全弱点
- 密钥太短。
- 存在弱密钥
- 存在互补对称性。
DES的弱密钥
- 通过密钥扩展算法产生的16个子密钥出现重复K1=K15等等。
- 由密钥扩展算法,易知C、D两个寄存器中如果取值“全0”或者“全1”,则通过循环移位或者置换选择2得到的子密钥会总是重复。
3重DES
- 美国NIST在1999年发布了一个新版本的DES标准(FIPS PUB46-3):
- DES只用于遗留系统
- 3DES将会取代DES成为新的标准
- 国际组织和我国银行都接受3DES。
为什么不是两重或者四重,再或者更多重呢?
双重DES
- 双重DES,用DES加密两次,每次使用不同的密钥。
- 与DES不同的是,当得到加密后的密文之后,再用一个不同的密钥加密一次,这样密钥的数量就翻倍了。
- 但是两重DES并不安全:双重DES存在中间相遇攻击,使得它的强度跟一个56位DES安全性相差不多。
- 攻击方法如下:若已知明文密文对(M,C),攻击方法如下:
- 先用2的56次方个可能的K1加密M,得到2的56次方个可能的值,将这些值按照从小到大存入一个表中
- 再对2的56次方个可能的K2解密C,每次做完解密,将所得的值与表中的值进行比较,如果产生匹配,则它们对应的密钥可能是K1和K2。
- 用一个新的明文密文对检测所得的两个密钥,如果两个密钥产生正确的密文,则它们是正确的密钥。
三重DES
- 为了防止中间相遇攻击,可以采用三次加密的方式,如下图所示。这是使用两个密钥的三重DES加密,采用加密-解密-加密(E-D-E)方案
- 注意的是,加密与解密在安全性上面是等价的。这种加密方案穷举攻击代价为2的112次方。
- 如果K2等于K1的话,三重DES就是之前的DES,这样字就很好的兼容了旧的DES。
- 目前还没有针对两个密钥的三重DES实际的攻击方法。
- 三把钥匙的三重DES的密钥长度是168位,采用加密-解密-加密(E-D-E)方案。
需要注意的是三密钥的三重DES在解密的时候先用K3密钥解密,依次是K2和K1。
3DES的优缺点:
- 首先它的密钥长度为168位,足以抵抗穷举攻击。
- 其次,3DES的底层加密算法与DES的加密算法相同,该加密算法比任何其它加密算法受到分析的时间要长很多,也没有发现有比穷举攻击更有效的密码分析攻击方法。
- 缺点也很明显,就是它的加解密速度慢,分组长度只有64位。
DES的贡献和启示
贡献
- DES很好地体现了商农的密码设计理论。
- DES体现了密码公开设计原则,开创了公开密码算法的先例。
- DES代表当时商业密码的最高水平,是商用密码的典范。DES对确保国际信息安全和提高国际密码设计水平都发挥了重要作用。
启示
- 商业密码应当坚持公开设计原则
- 商业密码标准应该公布算法