AES(Advanced Encryption Standard,高级加密标准)是一种对称加密算法,用于保护电子数据的安全。它由美国国家标准与技术研究院(NIST)于2001年发布,取代了过时的DES(Data Encryption Standard)。

AES基本特性

  1. 对称加密:加密和解密使用相同的密钥。
  2. 分组加密:每次处理固定长度的数据块(128位,即16字节)。
  3. 密钥长度:支持128位、192位和256位密钥,对应不同安全性级别。
  4. 轮数:根据密钥长度决定轮数:
  • 128位密钥:10轮
  • 192位密钥:12轮
  • 256位密钥:14轮

二、AES加密流程

1. 初始变换

初始变换

2. 主轮循环

SubBytes(字节代换)

通过16 × 16 的S盒(非线性替换表)将每个字节替换为另一个字节,提供混淆
初始变换
初始变换

ShiftRows(行移位)

将状态矩阵(4×4字节)的每一轮循环左移不同偏移量(第0行:不移位、第1行:左移1字节、第2行:左移2字节、第3行:左移3字节)实现扩散。
行移位

MixColumns(列混淆)

对输入的矩阵左乘一个给定的4×4矩阵,进一步增加扩散性
列混淆

AddRoundKey(轮密钥加)

当前状态矩阵与轮密钥按位异或

3.最终轮

最后一轮仅执行字节代换行移位轮密钥加

4.密钥扩展

从主密钥生成多轮子密钥(每个子密钥128位):

  1. 初始分组

主密钥按列填充为4×N矩阵(N=4/6/8对应128/192/256位密钥)。
以128bit密钥为例:

  • 主密钥(128bit)被划分为4个32bit字,记为w[0] ~ w[3]
  • 需要生成44个字(即4 × (10+1)),供11轮含初始轮使用
  1. 递归生成后续字
  • 情况1:若i不是4的倍数,则w[i] = w[i-4] ⊕ w[i-1]
  • 情况2:若i是4的倍数,则w[i] = w[i-4] ⊕ T(w[i-1])

T操作

  • 字循环:将一个字中的4个字节循环左移1个字节。即 将输入字[b0,b1,b2,b3]——->[b1,b2,b3,b4]
  • 字节代换:对字循环的结果使用S盒进行字节代换
  • 轮常量异或:前两步的结果同轮常量Rcon[j] 进行异或,其中j表示轮数
  1. 生成子密钥

扩展后的44个字接每4个分组,形成11个子密钥

AES优缺点

  1. 优点
  • 安全性高:AES 被认为是最强的加密标准之一,对各种攻击,尤其是暴力攻击的抵抗力强。较长的密钥长度,如 AES-256,几乎不受当前技术的暴力攻击影响,能为数据提供高级别的安全保护。
  • 高效性:在硬件和软件环境中都能高效实现,加密和解密速度快,能够快速处理大量的数据,适合对实时性要求较高的加密场景,如无线通信、云存储、数据库、移动应用程序等中的数据加密。
  • 灵活性:支持 128、192 和 256 位的密钥大小,用户可根据所需的速度和安全性平衡选择密钥长度。
  • 适应性强:具有跨行业和设备的适应性,已成为全球标准,被广泛应用于各个行业,如金融、医疗保健、政府和技术等领域,能为各种设备和系统提供可靠的安全性。
  1. 劣势:
  • 密钥管理复杂。因为加密和解密使用同一密钥,在多用户通信场景下,密钥的生成、注入、存储、管理、分发等难度较大,一旦密钥泄露,加密信息将面临风险