影响DES安全性的因素有哪些?
DES是一种强大的加密标准,它作用于64位明文块并生成64位密文。因此,DES实现了264种可能的64位排列之间的置换,其中每一位可以是0或1。
DES有16轮,它可以对明文块重复使用相同的技术16次。任何少于16轮的算法都会使DES容易受到差分密码分析的攻击。
在数据加密标准中,64位明文块会经过一个初始置换,这个置换不依赖于密钥,而该置换的逆置换在算法结束时完成,并产生密文。
密钥长度为56位。密钥通常写成64位数字,但每第8位用于奇偶校验,并在密钥加载到DES算法中时被丢弃。
DES的基本组成部分是对明文进行的一系列操作,并基于密钥。这称为一轮。影响DES安全性的因素如下:
**弱密钥** — 由于初始密钥转换为每轮算法的子密钥的方法,某些特定的初始密钥是弱密钥。初始密钥值被分成两半,每一半都独立地进行变换。
如果每一半的所有位都是0或1,那么该密钥在算法的某些循环中与算法的所有循环相同。如果密钥完全是1,完全是0,或者密钥的一半完全是1而另一半完全是0,则会出现这种情况。这使得DES安全性降低。
**代数结构** — DES加密操作可以构成一个群,用k1加密一组明文块,然后用k2加密,可能等于用k3加密这些块。
更糟糕的是,DES容易受到中间相遇已知明文攻击,其运行时间仅为228步。如果DES是封闭的,那么对于任何k1和k2,都存在一个k3,使得
$$\mathrm{E_{k2}\left ( E_{k1}\left ( P \right ) \right )\, =\, E_{k3}\left ( P \right )}$$
**密钥长度** — 如果有可能通过时空权衡来加快搜索过程。计算和保存256个可能的在每个可能的密钥下加密单个明文块的结果,然后破解未知密钥的可能性,这需要将数据块添加到加密流中,恢复生成的密文并查看密钥。
**轮数** — 轮数保持为16,因为减少轮数会使算法更容易受到攻击。只有三轮或四轮的DES很容易被破解。任何少于16轮的DES都比暴力攻击更容易受到已知明文攻击的破解。