高级加密标准


如今可能遇到的更流行和广泛采用的对称加密算法是高级加密标准(AES)。人们发现它比三重 DES 至少快六倍。

由于 DES 的密钥尺寸太小,因此需要替代 DES。随着计算能力的增强,它被认为容易受到详尽的密钥搜索攻击。Triple DES 旨在克服这个缺点,但发现速度很慢。

AES 的特点如下:

  • 对称密钥对称分组密码
  • 128位数据,128/192/256位密钥
  • 比 Triple-DES 更强、更快
  • 提供完整的规格和设计细节
  • 软件可以用C和Java实现

AES 的操作

AES 是一种迭代密码,而不是 Feistel 密码。它基于“替代-排列网络”。它由一系列链接的操作组成,其中一些涉及用特定输出替换输入(替换),另一些则涉及对位进行改组(排列)。

有趣的是,AES 对字节而不是位执行所有计算。因此,AES 将明文块的 128 位视为 16 字节。这 16 个字节排列成四列和四行,以作为矩阵进行处理 -

与 DES 不同,AES 的轮数是可变的,并且取决于密钥的长度。AES 对 128 位密钥使用 10 轮,对 192 位密钥使用 12 轮,对 256 位密钥使用 14 轮。每个回合都使用不同的 128 位回合密钥,该密钥是根据原始 AES 密钥计算得出的。

下图给出了 AES 结构示意图 -

AES结构

加密过程

在这里,我们仅限于描述典型的 AES 加密轮次。每轮包括四个子过程。第一轮流程如下所示 -

第一轮流程

字节替换(SubBytes)

通过查找设计中给出的固定表(S-box)来替换16个输入字节。结果是四行四列的矩阵。

移行

矩阵的四行中的每一行都向左移动。任何“脱落”的条目都会重新插入到行的右侧。移位执行如下 -

  • 第一行没有移动。

  • 第二行向左移动一个(字节)位置。

  • 第三行向左移动两个位置。

  • 第四排向左移动三个位置。

  • 结果是一个由相同的 16 个字节组成但相互移位的新矩阵。

混合列

现在,每列四个字节都使用特殊的数学函数进行转换。该函数将一列的四个字节作为输入,并输出四个全新的字节,替换原始列。结果是另一个由 16 个新字节组成的新矩阵。需要注意的是,这一步不是在最后一轮执行的。

添加轮密钥

矩阵的 16 字节现在被视为 128 位,并与轮密钥的 128 位进行异或。如果这是最后一轮,则输出是密文。否则,生成的 128 位将被解释为 16 字节,我们开始另一轮类似的循环。

解密过程

AES 密文的解密过程与加密过程类似,但顺序相反。每轮由以相反顺序进行的四个过程组成 -

  • 添加圆键
  • 混合柱
  • 移动行
  • 字节替换

由于每轮的子过程都是相反的,与 Feistel Cipher 不同,加密和解密算法需要单独实现,尽管它们密切相关。

AES 分析

在当今的密码学中,AES 在硬件和软件方面得到了广泛采用和支持。迄今为止,尚未发现针对 AES 的实用密码分析攻击。此外,AES 具有内置的密钥长度灵活性,可以在一定程度上“面向未来”,以应对执行详尽密钥搜索能力的进步。

然而,正如 DES 一样,只有正确实施并采用良好的密钥管理,AES 的安全性才能得到保证。