我开始学习加密算法,我理解上述算法是如何工作的。 AES的密钥长度是否更长? AES加密的哪些步骤使其不如DES易受攻击?
答案 0 :(得分:49)
DES的有效密钥长度为56位,容易受exhaustive search攻击。它还有一些针对差分和线性密码分析的弱点:这些分别允许使用2 47 选择的明文或2 43 已知的明文来恢复密钥。 已知明文是加密块(用于DES的8字节块),攻击者知道相应的解密块。 选择的明文是一种已知的明文,攻击者可以自己选择解密的块。在实际的攻击条件下,无法真正获得如此大量的已知或选择的明文,因此差分和线性密码分析并不真正影响DES的实际安全性;最薄弱的一点是短键。但是,从学术观点来看,这些攻击的存在比复杂的密钥搜索(平均使用2个 55 调用)复杂度更低,被视为缺乏安全感。
作为旁注,DES设计者已经知道差异分析,并且DES对其进行了强化(因此2 47 的“好分数”)。按照今天的标准,我们会认为它“不够好”,因为现在学术传统要求攻击复杂性高于详尽搜索。 DES设计师仍然非常好。他们不知道Matsui在1992年发现的线性密码分析,线性密码分析在DES上比差分密码分析更有效,但在实践中却非常难以应用(2 43 已知的明文块那是64太字节......)。
DES的结构弱点是其密钥大小及其短块大小:使用 n 位块时,某些加密模式在2 n <时开始出现问题/ em> / 2 块使用相同的密钥加密。对于64位DES块,这是在加密32千兆字节的数据之后发生的,这是一个很大但不是很大的数字(昨天,我买了一个比它大三十倍的硬盘)。
DES上的变体称为3DES:或多或少,连续三个DES实例。这解决了密钥大小问题:3DES密钥包含168位(标称值为192位,其中24位应该用作奇偶校验,但实际上完全被忽略),并且对168位密钥进行穷举搜索是完全超出人类技术的范围。从(再次)学术观点来看,在3DES上存在成本2 112 的攻击,这也是不可行的。微分和线性密码分析被3DES击败(它们的复杂性随着轮数的增加而增加,3DES代表48轮,而普通DES则为16)。
然而,3DES仍然受到DES的块大小问题的困扰。此外,它非常慢(DES用于硬件实现,而不是软件,3DES甚至比DES慢三倍。)
因此,AES的定义符合以下要求:
AES对差分和线性密码分析的抵抗来自更好的“雪崩效应”(在某一点上有点翻转快速传播到完整的内部状态)和特制的更大的“S盒”(a S-box 是算法中使用的小型查找表,是添加非线性的简单方法;在DES中,S-box具有6位输入和4位输出;在AES中,S-盒子有8位输入和8位输出)。 AES的设计得益于对DES的25年见解和研究。此外,通过公开竞争选择AES,来自世界各地众多研究团队的15名候选人,分配给该过程的大脑资源总量巨大。最初的DES设计师是天才,但可以说密码学家对AES的总体努力要大得多。
从哲学的角度来看,我们可以说,使加密原语安全的原因在于其设计投入的努力量。至少,这种努力是创造安全感的:当我使用密码系统时,我希望它是安全的,但我也希望某些它是安全(我想晚上睡觉)。公共设计和分析过程在建立这种信任方面有很大帮助。美国国家标准与技术研究院(这个美国标准化机构)很好地吸取了教训,并决定再次为SHA-3选择公开竞争。