高级加密标准

当今可能遇到的更流行和广泛采用的对称加密算法是高级加密标准(AES)。 人们发现它比三重 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 个新字节组成的新矩阵。 需要注意的是,这一步不是在最后一轮执行的。

Addroundkey

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

解密过程

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

  • 添加轮密钥
  • 混合列
  • 移动行
  • 字节替换

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

AES 分析

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

但是,就像 DES 一样,只有正确实施并采用良好的密钥管理,才能保证 AES 的安全性。