我在阅读有关要在我们的一个项目中使用的AES算法的信息时,发现对于特定的密钥大小,AES中的确切轮数是固定的:

$$
\ begin {array } {| c | c |}
\ hline
\ begin {array} {c} \ textbf {键大小} \\ \ left(\ text {bits} \ right)\ end {array}
&\ begin {array} {c} \ textbf {Rounds} \\ \ left(\ text {number} \ right)\ end {array} \\ \ hline
128&10 \\ \ hline
192&12 \\ \ hline
\ end {array}
$$

为什么这些特定数字仅轮数?

评论

请注意,AES是Rijndael密码的子集。 Rijndael可以使用相同的轮数,但是根据密钥大小和块大小,可以使用更多选项(AES只有一个块大小:128位和3个密钥大小,Rijndael有3个块大小和5个密钥大小,因此两者的15种组合,而不仅仅是AES的3种组合。

#1 楼

为什么只有这些特定的回合数?
因为AES是标准? AES是“高级加密标准”的首字母缩写。
该标准指定了这些特定的轮数,以确保不同的实现可互操作。
为什么不多或少?
这些特定数字的原因选择轮次是设计师的选择。他们做了很多数学运算,以确定它们是足够的安全性和最佳性能之间的最佳结合点。
较少可能是不安全的,而更多的可能会变慢而无益。
引用以上这本书(摘自第3.5节轮数):对于具有较长密钥的Rijndael版本,每增加32位密码密钥,轮数就会增加1。这样做的原因如下:


主要目的之一是没有捷径攻击,即比穷举密钥搜索更有效的攻击。由于详尽密钥搜索的工作量随密钥长度的增加而增加,因此对于较长的密钥,快捷键攻击的效率可能会降低。


(部分)已知密钥和相关密钥攻击的利用了解密码密钥位或应用不同密码密钥的能力。如果密码密钥增加,密码分析器可用的可能性范围就会增加。




评论


$ \ begingroup $
这句话仅说明了为什么键越长,回合数就越高。它没有解释为什么精确地128位版本使用10轮。 10轮攻击的原因(由于将近20年,我可能会误以为是):分析了针对所有已知攻击的安全性,发现6轮足以抵抗当时已知的攻击。在AES中需要2轮才能达到完全雪崩效果,因此10轮对应于在进行针对已知攻击的安全性所需的6轮之前和之后的充分雪崩效果。
$ \ endgroup $
–卡巴斯德
19年3月22日在10:58

$ \ begingroup $
@kasperd我认为当时是6发+ 2发,因为攻击只会变得更好+ 2发是完全雪崩。
$ \ endgroup $
–马丁·邦纳(Martin Bonner)支持莫妮卡(Monica)
19-3-22在12:14



$ \ begingroup $
@MartinBonner论文描述的方式是“这样,可以认为它是用两个完整的扩散步骤填充易受攻击的6轮弹药”或类似的路线,就像卡巴斯德说的那样。
$ \ endgroup $
–森林
19-3-22在22:44