代码之家  ›  专栏  ›  技术社区  ›  unj2

为什么AES比DES更安全?

  •  26
  • unj2  · 技术社区  · 14 年前

    我开始学习密码算法,我了解上面提到的算法是如何工作的。AES的密钥长度更长吗?AES加密的哪些步骤使其比DES更不易受攻击?

    1 回复  |  直到 14 年前
        1
  •  48
  •   Thomas Pornin    14 年前

    DES的有效密钥长度为56位,易受 exhaustive search . 它对差分密码分析和线性密码分析也有一些弱点:它们允许分别使用2恢复密钥 四十七 选择明文,或2 四十三 已知明文。一 已知明文 是一个加密块(对于des为8字节块),攻击者知道相应的解密块。一 选择明文攻击 是一种已知的明文,攻击者可以在其中选择自己的解密块。在实际的攻击条件下,无法真正获得如此大量的已知或选择的明文,因此,差分和线性密码分析并不能真正影响DES的实际安全性;最薄弱点是短密钥。尽管如此,这些攻击的存在,从 学术观点 ,比详尽的键搜索(使用2 五十五 平均来说,调用)被认为是缺乏安全性。

    附带说明的是,设计人员知道差异分析,设计人员对其进行了强化(因此,“良好分数”为2 四十七 )按照今天的标准,我们会认为它“不够好”,因为现在学术传统要求攻击的复杂性高于详尽的搜索。尽管如此,设计师们还是很好。他们对松井1992年发现的线性密码分析一无所知,线性密码分析比差分密码分析对DES更有效,但在实践中却极难应用(2 四十三 已知的纯文本块,即64兆字节…)。

    因此,DES的结构弱点是它的关键尺寸和短块尺寸: n -位块,当2 n 2 块使用相同的密钥加密。对于64位DES块,这发生在对32GB的数据进行加密之后,这是一个很大但不是很大的数字(昨天,我买了一个比这大30倍的硬盘)。

    DES上的一个变体被称为3DES:这差不多是一行中的三个DES实例。这就解决了密钥大小的问题:3DES密钥包含168位(名义上是192位,其中24位应该用作奇偶校验,但实际上完全被忽略了),对168位密钥的详尽搜索完全超出了人类技术的范围。从学术的角度来看,有一个成本为2的攻击 一百一十二 在3DES上,这也是不可行的。差分和线性密码分析被3DES所击败(它们的复杂性随着循环次数的增加而增加,3DES代表48轮,而普通DES代表16轮)。

    但是3DES仍然面临着DES的块大小问题。而且,速度相当慢(DES用于硬件实现,而不是软件,3DES甚至比DES慢三倍)。

    因此,用以下要求定义了AES:

    • 128位块(解决CBC问题)
    • 接受128、192和256位大小的密钥(128位足以抵御详尽的密钥搜索;另外两个大小主要是符合严格的美国军事法规的一种方法)
    • 没有比详尽的钥匙搜索更糟糕的学术弱点
    • 应该和3DES一样快(在软件中,AES比3DES快得多,通常是3DES的5到10倍)

    AES对差分和线性密码分析的抵抗来自于更好的“雪崩效应”(在某个点上有点翻转,会迅速传播到完整的内部状态)和精心设计的更大的“S盒”(A S盒 是算法中使用的一个小的查找表,是添加非线性的一种简单方法;在DES中,S盒具有6位输入和4位输出;在AES中,S盒具有8位输入和8位输出)。AES的设计得益于对DES 25年的深入研究。此外,AES是通过与来自世界各地众多研究团队的15名候选人的公开竞争选出的,分配给这个过程的大脑资源总量是巨大的。最初的DES设计者是天才,但可以说密码学家为AES所做的总努力要大得多。

    从哲学的角度来看,我们可以说,使密码原始安全的原因是在其设计中投入了大量的精力。至少,这种努力是 安全感 :当我使用密码系统时,我希望它是安全的,但我也希望 某些 它是安全的(我想晚上睡觉)。公共设计和分析过程有助于建立信任。NIST(美国标准化机构)很好地吸取了这一教训,并决定再次为 SHA-3 .

    推荐文章