这是关于在AES 192和256中使用多少RCON值的问题。
我读了NIST的出版物介绍了AES和附录A.2和A.3 (密钥扩展到192位和256位密钥),只有到被使用192位,向上使用256位。我的问题是,当我们在AES 192和256中有更多的回合时,如何才能使用的7或8个值。
据我理解,每一轮都使用,所以我们不应该有更多的值(由于no的增加)。在AES192和256)而不是更少的回合?
发布于 2020-07-06 02:34:22
我收到文森特·里伊曼的回复。以下是完整的答复:
rcon用于圆环的计算。AES192和AES256的圆键计算的迭代次数较少,因为每一次计算都产生超过128位的圆键材料。这就是为什么我们需要更少的rcon值。
Paŭlo的伟大的答案在ASCII图像中给出了一些细节,这里我将尝试用一种不同的方式来解释这一点。
rcon
值的圆键.rcon
值的圆键.rcon
值的圆键.额外的圆形键用于初始的圆形键,它是带有明文的XORed。
发布于 2020-07-03 11:44:15
您分别有10轮、12轮和14轮;但是,它们并不是取决于关键日程的线性增量。对于AES-192,您有8个不同的值,而AES-256有7个值.对于AES-128,RCON值仅随每轮变化而变化。
RCON值(在硬件中)由一个寄存器生成,寄存器为8位,每轮递增一次。它与计数包在一起,单独进行加密,您将得到:
0: 00000001
1: 00000010
2: 00000100
3: 00001000
4: 00010000
5: 00100000
6: 01000000
7: 10000000
8: 00011011
9: 00110110
10: 01101100
11: 11011000
12: 10101011
13: 01001101
14: 10011010
这并不是你真正要使用的,但有必要进行完整的讨论。在上面的列表中,对于AES-128,您将在第0轮开始,而最后一轮,第9轮(第10轮),您将得到0x36。
对于AES-192和AES-256,由于键调度,最终跳过常量。对于AES-192:
0: 00000001
1: 00000001
2: 00000001
3: 00000010
4: 00000100
5: 00000100
6: 00001000
7: 00010000
8: 00010000
9: 00100000
10: 01000000
11: 01000000
12: 10000000
对于AES-256:
0: 00000001
1: 00000001
2: 00000001
3: 00000001
4: 00000010
5: 00000010
6: 00000100
7: 00000100
8: 00001000
9: 00001000
10: 00010000
11: 00010000
12: 00100000
13: 00100000
14: 01000000
您可以通过多种方式实现这一点。您在课堂上使用的天真方法,但很容易遵循(另外,FPGAs通常会这样做):
我通常是这样做的(注意,这是加密,您可以移动tap 4进行解密):
时钟控制会增加值。
发布于 2023-02-12 08:27:55
我一直试图在一个项目中理解和实现AES,并发现了这一点。我知道这是一个较旧的帖子,但我没有看到一个直接回答问题的答案。在对此进行了一番挖掘和周旋之后,下面是我能找到的最简单的答案:
不管AES (128,192,256)中使用的密钥长度如何,数据都是使用16字节块加密的.因此,随着密钥长度的减少,密钥展开需要更多的圆周率才能产生足够数量的字节进行加密。AES-128的键长度为16字节,AES-192的键长度为24字节,AES-256的键长度为32字节.从这里开始,明确显示的回合数是:
(密钥扩展轮)=(块字节)*(加密轮)/(密钥长度)
这就是为什么更高级别的加密需要更少的rcon值,即密钥扩展轮,而不是低级加密。
https://crypto.stackexchange.com/questions/81712
复制