高级加密标准
如今可能遇到的更流行和广泛采用的对称加密算法是高级加密标准(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 加密轮次。每轮包括四个子过程。第一轮流程如下所示 -
字节替换(SubBytes)
通过查找设计中给出的固定表(S-box)来替换16个输入字节。结果是四行四列的矩阵。
移行
矩阵的四行中的每一行都向左移动。任何“脱落”的条目都会重新插入到行的右侧。移位执行如下 -
第一行没有移动。
第二行向左移动一个(字节)位置。
第三行向左移动两个位置。
第四排向左移动三个位置。
结果是一个由相同的 16 个字节组成但相互移位的新矩阵。
混合列
现在,每列四个字节都使用特殊的数学函数进行转换。该函数将一列的四个字节作为输入,并输出四个全新的字节,替换原始列。结果是另一个由 16 个新字节组成的新矩阵。需要注意的是,这一步不是在最后一轮执行的。
添加轮密钥
矩阵的 16 字节现在被视为 128 位,并与轮密钥的 128 位进行异或。如果这是最后一轮,则输出是密文。否则,生成的 128 位将被解释为 16 字节,我们开始另一轮类似的循环。
解密过程
AES 密文的解密过程与加密过程类似,但顺序相反。每轮由以相反顺序进行的四个过程组成 -
- 添加圆键
- 混合柱
- 移动行
- 字节替换
由于每轮的子过程都是相反的,与 Feistel Cipher 不同,加密和解密算法需要单独实现,尽管它们密切相关。
AES 分析
在当今的密码学中,AES 在硬件和软件方面得到了广泛采用和支持。迄今为止,尚未发现针对 AES 的实用密码分析攻击。此外,AES 具有内置的密钥长度灵活性,可以在一定程度上“面向未来”,以应对执行详尽密钥搜索能力的进步。
然而,正如 DES 一样,只有正确实施并采用良好的密钥管理,AES 的安全性才能得到保证。