AESAdvanced Encryption Standard)是现代最常用的 对称加密 分组密码标准,使用固定 128 位分组,并支持 128、192、256 位密钥。

核心问题

AES 解决的是“如何用同一把秘密密钥高效、标准化地把数据块变成不可读密文”的问题。它本身只定义单个固定长度分组如何加密,不直接定义任意长度消息、nonce、认证标签或协议交互。

核心机制

AES 把 128 位明文分组放入一个状态矩阵中,经过多轮可逆变换生成密文。轮数由密钥长度决定:AES-128 为 10 轮,AES-192 为 12 轮,AES-256 为 14 轮。

每轮核心操作包括:

  • SubBytes:非线性字节替换,提供抗线性分析能力。
  • ShiftRows:行移位,让字节位置扩散。
  • MixColumns:列混合,让单字节变化影响更多位置。
  • AddRoundKey:和轮密钥异或,把秘密密钥引入变换。

要加密任意长度数据,AES 必须配合工作模式使用,例如 GCM、CTR、CBC。现代网络和应用层加密优先使用 AES-GCM 这类 认证加密 模式。

工程用途

  • TLS 和 VPN 数据保护:常见套件包括 AES-GCM。
  • 磁盘和文件加密:BitLocker、LUKS、备份工具等常使用 AES。
  • 数据库和对象存储加密:字段、文件、对象和密钥信封的数据部分。
  • 嵌入式与硬件加速:许多 CPU 和安全芯片提供 AES 指令或加速单元。

边界与常见坑

  • AES 不是完整加密方案:只选 AES 不够,还要选模式、nonce、填充、认证和密钥管理。
  • 不要使用 AES-ECB:相同明文块会得到相同密文块,泄露数据结构。
  • GCM nonce 不能重复:同一密钥下 nonce 重复可能直接破坏机密性和完整性。
  • CBC 需要正确填充和认证:否则可能出现 padding oracle 等攻击。
  • AES-256 不总是工程最优:更长密钥不自动弥补错误模式、弱随机数或密钥泄露。

相关术语