📜  高级加密标准

📅  最后修改于: 2021-01-12 04:44:17             🧑  作者: Mango


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

由于密钥大小太小,需要替换DES。随着计算能力的提高,它被认为容易遭受详尽的密钥搜索攻击。 Triple DES旨在克服此缺点,但发现速度很慢。

AES的功能如下-

  • 对称密钥对称分组密码
  • 128位数据,128/192/256位密钥
  • 比三重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位进行XOR运算。如果这是最后一轮,则输出为密文。否则,结果的128位将被解释为16个字节,我们开始另一轮类似的回合。

解密过程

AES密文的解密过程与反向过程的加密过程相似。每个回合包含以相反顺序进行的四个过程-

  • 添加回合密钥
  • 混合列
  • 排行
  • 字节替换

由于每一轮中的子过程都是相反的方式,因此与Feistel Cipher不同,加密和解密算法虽然需要密切联系,但仍需要分别实现。

AES分析

在当今的加密技术中,AES被硬件和软件广泛采用并受其支持。迄今为止,尚未发现针对AES的实用的密码分析攻击。此外,AES具有密钥长度的内置灵活性,从而可以一定程度地“面向未来”以防执行穷举密钥搜索的能力进步。

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