27

我开始学习加密算法,并且了解上述算法的工作原理。AES的密钥长度更长吗?AES 加密的哪些步骤使其比 DES 更不容易受到攻击?

4

1 回答 1

49

DES 设计为有效密钥长度为 56 位,容易受到穷举搜索的影响。它也有一些针对差分和线性密码分析的弱点:它们允许分别使用 2 47 个选择的明文或 2 43个已知明文来恢复密钥。已知明文是一个加密块(一个 8 字节块,对于 DES),攻击者知道其对应的解密块。选择的明文是一种已知的明文,攻击者可以在其中选择自己的解密块。在实际的攻击条件下,无法真正获得如此大量的已知或选择的明文,因此差分和线性密码分析不会真正影响DES的实际安全性;最薄弱的一点是短键。尽管如此,这些攻击的存在,从学术角度来看,其复杂性低于详尽的密钥搜索(平均使用 2 55次调用),被认为缺乏安全性。

附带说明一下,DES 设计者知道差异分析,并且 DES 对其进行了强化(因此“好分数”为 2 47)。按照今天的标准,我们会认为它“不够好”,因为现在的学术传统要求攻击复杂性高于穷举搜索。尽管如此,DES 的设计者还是很优秀的。他们不知道线性密码分析,这是松井在 1992 年发现的,线性密码分析在 DES 上比差分密码分析更有效,但在实践中应用起来非常困难(2 43个已知的明文块,即 64 TB... )。

因此,DES 的结构弱点在于它的密钥大小和它的短块大小:对于n位块,当使用相同的密钥加密2 n /2个块时,某些加密模式开始出现问题。对于 64 位 DES 块,这发生在加密 32 GB 的数据之后,这是一个很大但不是很大的数字(昨天,我买了一个比这大 30 倍的硬盘)。

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

然而 3DES 仍然存在 DES 的块大小问题。而且,它很慢(DES 是用于硬件实现,而不是软件,3DES 甚至比 DES 慢三倍)。

因此,AES 被定义为具有以下要求:

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

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

On a philosophical point of view, we could say that what makes a cryptographic primitive secure is the amount of effort invested in its design. At least, that effort is what creates the perception of security: when I use a cryptosystem, I want it to be secure, but I also want to be certain that it is secure (I want to sleep at night). The public design and analysis process helps quite a lot in building that trust. NIST (the US body for standardization of such things) learned that lesson well, and decided to again choose an open competition for SHA-3.

于 2010-10-15T01:00:32.017 回答