AES-cbc 与 128 位密钥和 192 位密钥一起使用多大的块?

信息安全 密码学 加密
2021-08-18 10:27:42

我在维基百科上读到,带有密码块链接和 128 位密钥的 AES 使用 128 位大小的块来加密数据。

但是,它也表示,使用 192 位密钥,仍有 128 位块。

  1. 这是真的?

  2. 如果是,为什么会这样?

2个回答

AES 是一个分组密码,实际上是三个分组密码。

分组密码是与密钥相关的值排列:它以输入给定n的n位序列;有2 n 个这样的值)作为输入块,并输出相同大小的块。没有两个不同的输入块会产生(对于给定键)相同的输出块,并且2 n个块中的每一个都是可能的输出;这就是“排列”的意思(它可以看作是所有2 n 个值的大洗牌)。可以有效地计算逆排列(“解密”)(当然,使用密钥)。

2n位块上的排列;那是“ 2 n的阶乘”,一个真正巨大的数字:对于n = 128,这接近10 12963922773915897352048185492495741149019.37键“选择”实际使用了这些排列中的哪一个。只要这个选择“好像”是随机且均匀的,分组密码就是安全的,也就是说,我们无法将分组密码与在这个大集合中随机均匀选择的排列区分开来。

密码学家往往是务实的人,因此他们希望将密钥表示为相当短的位序列;让我们称k为密钥的大小。我们希望k足够大,以至于枚举2 k个键在计算上是不可行的。但是由于确实有很多排列可供选择,因此拥有非常大的键是没有问题的。

我们还希望n(块大小)足够大,以避免在使用块密码时出现一些问题。由于块密码仅加密块,因此相当不方便:当我们加密时,我们通常希望加密具有可变且可能很大的消息。因此发挥作用的操作模式,也称为“链接模式”,它指定如何将消息拆分为块,以及如何将加密的块重新粘合在一起。有几种模式;ECB是最简单的,也有弱点;CBC 和 CTR 是使用最广泛的,它们是可以的……只要我们不使用相同的密钥加密太多块。对于n位块,处理大约2 n/2时可能会出现问题具有相同密钥的块。我们希望n足够大,以至于2 n/2如此可笑以至于不会出现这种情况。

因此,密钥大小 ( k ) 和块大小 ( n ) 都由安全问题决定,但并不相同。特别是,没有隐含的规则kn应该彼此相等。

1997 年,NIST 宣布了AES 竞赛:他们想要一种安全高效的分组密码来标准化。当时,他们有3DES(“三重 DES”),一种具有 192 位密钥和 64 位块的分组密码。实际密钥大小更低:在 192 位中,有 24 位被立即忽略,因此有效密钥大小为 168 位;此外,该结构有一个弱点,允许通过努力2 112进行理论上的攻击,因此 3DES 在管理上被称为提供“112 位强度”。这个密钥大小仍然相当令人满意,但存在已知的结构性弱点有点令人担忧。更重要的是,64 位块被证明是不够的:这意味着“链接模式限制”为2 3264 位块,即 32 GB。1997 年,数千兆字节的硬盘已经很普遍。所以 NIST 说他们希望新的分组密码具有 128 位的分组 ( n = 128 )。

此外,为了遵守一些晦涩难懂的军事法规,他们希望分组密码接受三种不同的密钥大小,因此 NIST 要求的实际上是三种分组密码,但最好是相同底层结构的三种变体,以便实现所有这三种在给定的系统中仍然很便宜。军规规定应该有三个“安全等级”,因为这些规定是在密码学本质上是脆弱和昂贵的时候编写的,所以“最强”的方法被相当谨慎地使用(那是在发明密码之前的时间)计算机)。NIST,在 1997 年,尽管是一个国家组织,但足够聪明地看到它已经可以用最小的密钥大小获得非常好的安全性:不需要密码版本;他们只需要一些版本,用官僚的话来说,可以说是“更强大”。

因此 NIST 定义新算法应接受大小为 128、192 和 256 位的密钥。在可预见的未来,128 位密钥足以确保安全。这些大小是 64 的倍数,也就是 2 的幂,程序员很喜欢这样。

最终被选为 AES 的算法Rijndael与其他 14 个候选算法一样遵守竞争规则,并指定了 128 位块,密钥大小为 128、192 和 256 位。实际上,Rijndael 结构定义了大小为 192 和 256 位的块,但 NIST 对这种块大小不感兴趣,因此“AES”(标准)仅针对 128 位块。

因此 AES 使用具有 192 位或 256 位密钥的 128 位块,因为:

  • 它是这样定义的;
  • 这就是 NIST 首先要求的;
  • 足够的安全性就足够了。

请注意,在 AES 之前,密钥比块长已经很常见(参见3DESIDEARC2RC5 ...)。

  • 一个 128 位的密钥被扩展为 11 个大小为 128 位的轮密钥。
  • 一个 192 位的密钥被扩展为 13 个大小为 128 位的轮密钥。
  • 一个 256 位的密钥被扩展为 15 个大小为 128 位的轮密钥。

如果您使用更长的密钥,则会产生更多的圆形密钥,但它们不会更长。通过数增加安全性。

AES 始终适用于 128 位块。CBC 模式意味着,128 位消息块首先与前一个块的 128 位密码块进行异或运算,然后进行 AES 加密。