摘自Schneier的一篇论文,涉及安全性的另一种AES攻击(重点是我的意思):

对于AES-128,没有已知的攻击比穷举搜索的2128复杂性要快。但是,最近证明AES-192和AES-256可被分别需要2176和2119时间的攻击破坏。尽管这些复杂性比穷举搜索要快得多,但它们完全是不切实际的,并且似乎不会对基于AES的系统的安全性构成任何真正的威胁。
在本文中,我们描述了几种可以通过以下方法破坏的攻击:轮数与AES-128相当的AES-256实用复杂性变体。如果是这样,简单来说,这怎么可能呢?

该攻击利用了一个事实,即256位版本的密钥调度非常糟糕-我们在2000年的论文中指出-但不会扩展到具有128位密钥的AES。

再次简单地说,这意味着什么?
实际上,这是否意味着我应该放弃AES-256就像Schneier在评论中所建议的那样吗?

话虽这么说,AES-256的关键时间表非常糟糕。我建议人们使用AES-128,而不要使用AES-256。


#1 楼

AES是一种算法,它分为多个内部回合,每个回合都需要一个特定的128位子密钥(最后需要一个额外的子密钥)。在理想的世界中,11/13/15子密钥将由强大的,加密安全的PRNG生成,而PRNG本身会植入“ the”密钥。是通过称为关键时间表的过程生成的,该过程非常快,但完全没有像样的PRNG;它仅在为AES生成子密钥的特定环境中提供足够的安全性。众所周知,AES的密钥调度在某些方面有些薄弱,允许某些可利用的结构从一个子密钥泄漏到另一个子密钥,这意味着相关密钥攻击。

相关密钥攻击不是使用加密算法进行加密时会出现问题,因为它们仅在受害者使用几个不同的密钥时才起作用,这样攻击者才能知道密钥之间的差异(按位XOR)并遵循非常明确的模式。这不是在使用AES的协议中经常发生的那种事情。相应地,抵抗相关密钥攻击不是AES竞争的设计标准。当我们尝试将块密码重新用作其他功能的构造块时,相关密钥攻击可能会很麻烦。哈希函数。在学术密码分析的正式领域,尽管相关密钥攻击不适用于大多数实际情况,但仍算是值得的结果。

AES-128,AES-192和AES-256的密钥计划必须彼此不同,因为它们必须在不同大小的主密钥上工作并产生不同数量的子密钥。事实证明,考虑到对相关密钥攻击的抵抗力,AES-128密钥计划的版本似乎比AES-256密钥计划的版本更强大。这实际上是很合乎逻辑的:要建立相关密钥攻击,密码学家必须对子密钥有一些精细的控制,最好是彼此尽可能独立。源主密钥越长,密码分析者对子密钥的控制就越多,这似乎是自然的,因为相关密钥攻击模型是攻击者可以某种方式“选择”密钥(或至少密钥之间的差异)的模型。 )。在将1408位主密钥简单地拆分为11个128位密钥的极端情况下,密码分析器将具有他所希望的所有独立控制。因此,相对于关联密钥攻击而言,学术上的弱点通常应随密钥大小而增加。键攻击模型。

#2 楼

不会。AES-256不弱于AES-128。绝对不。而且我不同意应避免使用AES-256的建议。

针对AES-256的攻击是相关密钥攻击,与大多数现实世界中的AES-256使用无关。仅当您不正确地使用分组密码时,相关密钥攻击才会变得有意义,这不是您应该做的事情。 (第二,在实践中,针对AES-256的相关密钥攻击是完全不可行的。$ 2 ^ {100} $的计算步骤:很糟糕。不会发生。无论您购买多少台超级计算机,这都超出了可行性范围。因此,针对AES-256的攻击绝不是系统中最薄弱的部分,您不应该浪费精力为此担心。我可以保证您的系统中还会存在其他较弱的链接-也许是人,也许是软件。)我意识到这句话是“攻击只会变得更好”,但是很少有人将关联密钥攻击转变为非关联密钥攻击。

基本上,不要关注声称对AES-256的攻击。它们是一种理论上的好奇,与目前的实践几乎没有关联。不幸的是,当人们听到声音的叮咬(“对AES-256的新攻击!”)时,他们很容易对攻击的严重程度产生错误的印象。作为密码学家和安全专家,我认为重要的是要解释用户为什么可能不必担心。

评论


$ \ begingroup $
最后一句话是否意味着Bruce Schneier不了解加密技术?
$ \ endgroup $
– QuantumSoup
2012年10月22日23:35

$ \ begingroup $
@quantumSoup,感谢您的提问!不,完全不是要暗示。很抱歉给人这种印象。我是Bruce Schneier的忠实粉丝。可以说,他在密码学领域所做的工作比其他任何一个人都要多,他是我的榜样。布鲁斯(Bruce)的博客文章是该主题上最负责任的文章之一。他明确表示不要惊慌。我在想其他一些不太拘束的人。但是我将编辑该句子,因为我可以轻松地看到它可能给人的印象。
$ \ endgroup $
– D.W.
2012-10-23 2:33



$ \ begingroup $
如果您认为不会发生2 ^ 100,为什么要使用256位而不是128位呢? 2 ^ 128大于2 ^ 100吗?
$ \ endgroup $
–乔纳斯·谢弗(JonasSchäfer)
17年7月14日在15:23

$ \ begingroup $
@JonasWielicki,这是一个单独的问题。这个问题问AES-192是否比AES-256强,这就是我要回答的问题。实际上,在我看来,使用AES-256的需求/指向并不多。 AES-128很好。但是,这并不是说AES-256弱,破或坏。就像您使用AES-256一样,这并不是在做错事或使自己面临现实风险。并非您应该避免使用AES-256。
$ \ endgroup $
– D.W.
17年7月14日在15:59



$ \ begingroup $
@ D.W。我以某种我无法复制的方式误读了您的文字。我的评论没有任何意义。对不起,您的时间。
$ \ endgroup $
–乔纳斯·谢弗(JonasSchäfer)
17年7月14日在16:09

#3 楼

这取决于安全性概念。一方面,考虑到相关密钥方案,AES-256比AES弱,因为Biryukov和
Khovratovich引入了相关密钥攻击,该攻击具有$ 2 ^ {99.5} $的时间
和数据复杂性。另一方面,考虑到-更现实的单键方案,AES-128较弱。在这里Bogdanov等。引入了具有计算复杂性的针对AES-128的密钥
恢复攻击
$ 2 ^ {126.1} $。此外,他们还发现
具有计算复杂性的AES-256恢复攻击
$ 2 ^ {254.4} $。

请注意,相关关键场景非常具有学术性。在这里,密码学家假设对手可以“部分控制”计算中使用的密钥之间的某些关联。因此,与密钥调度程序有关的次要主题可能会成为一个大戏。
因此,我声称AES-256仍然比AES-128更强,而在实际安全性方面却至少如此。 :-)

“ AES-256与AES-192”情况的考虑类似。

#4 楼

可能值得指出的是,Alex Biryukov和Dmitry Khovratovich对Boomerang的攻击需要四把钥匙。一些较旧的相关密钥攻击需要$ 2 ^ {35} $密钥,这使攻击在实践中更加困难。但是强制目标重新输入密钥四次是很现实的。

#5 楼

有关服务器故障的询问和回答。
https://serverfault.com/questions/51895/are-128-and-256bit-aes-encryption-considered-weak

对您大胆点的后续句子是:


对于新应用,我建议人们不要使用AES-256。 AES-128在可预见的将来提供了足够的安全余量。但是,如果您已经在使用AES-256,则没有理由进行更改。
http://www.schneier.com/blog/archives/2009/07/another_new_aes.html


因此,答案是


实际上,这是否意味着我应该放弃AES-256而采用其128位对应物,就像Schneier推荐的那样在评论中?


会不会。如果您当前使用的是AES-256,并且没有性能问题,并且已经实施了整整14轮(或更多)...请继续使用256。要求先使用256,然后再使用128。 2 ^ 128次。这意味着破解它们都是不切实际的,AES-192的破解时间仍然比AES-128更长,并且没有已知的攻击可以破解超过11轮的完整AES-256。

回答您的特定问题:


是在暗示AES-192比AES-256更强大吗?如果是这样,简单来说,这怎么可能?此处存在一个线程:https://security.stackexchange.com/questions/14068/why-most-people-use-256-bit-encryption-instead-of-128-bit/19762#19762

这些AES标准面临的问题是它们的密钥调度以及对相关密钥和已知专有密钥密码分析的脆弱性。没有一个简单的答案可以解决这些问题,但总的来说,就是没有足够的关键范围(关键时间表的一部分),然后通过观察输入输出数据,可以通过比较确定关键值不同的键如何输出相同的数据集(或一个键如何输出不同的数据集)。老实说,Wiki文章相当不错。

http://en.wikipedia.org/wiki/Related-key_attack

AES使用Rijndael密钥调度,该密钥调度在操作中有所描述此处

http://www.samiam.org/key-schedule.html以及Wiki和/或Schneider的论文http://en.wikipedia.org/wiki/Rijndael_key_schedule的所有良好数学

评论


$ \ begingroup $
我已经阅读了Server Fault线程,它并没有真正回答我的问题,除了最后一个问题。即使到那时,施耐尔的声明仍含糊不清。
$ \ endgroup $
– QuantumSoup
2012年10月19日在22:34

$ \ begingroup $
在这个论坛上,我已经尽我所能添加了很多合理的信息,但是,如果您还有其他更具体的问题,请提问,我可以澄清。
$ \ endgroup $
–iivel
2012年10月20日,0:28