AES(Advanced Encryption Standard,高级加密标准)是目前全球最广泛使用的对称加密算法,被广泛用于 HTTPS、VPN、Wi-Fi、银行系统、移动应用和数据加密存储。于 2001 年被美国国家标准与技术研究院(NIST)采纳,取代了已经过时的 DES 和 3DES,成为了美国联邦政府以及全球企业和个人保护敏感数据的标准算法。
AES 的前身是比利时密码学家 Joan Daemen 和 Vincent Rijmen 设计的 Rijndael 算法。它在 NIST 的 AES 竞赛中击败了 Serpent、Twofish 等强劲对手,主要赢在安全性与软硬件性能的完美平衡。
AES的核心是基于 Rijndael 算法 的 SPN(Substitution-Permutation Network)结构,结合精巧的数学设计(有限域 GF(2⁸)、S 盒非线性、线性变换矩阵、密钥扩展算法)构成高度安全、性能优异的现代密码标准。
本文将深入解析 AES 的内部机制,覆盖设计原理、数学结构、扩散/混淆机制及安全性分析,帮助你全面理解 AES 的强大之处。
AES 是一种 对称加密算法,其核心特征如下:
AES 与 DES 对比:
| 项目 | DES(1977) | AES(2001) |
|---|---|---|
| 密钥长度 | 56 bit | 128 / 192 / 256 bit |
| 分组大小 | 64 bit | 128 bit |
| 轮数 | 16 轮 Feistel | 10~14 轮 SPN 结构 |
| 2025 年安全性 | 完全死亡 | 完全安全 |
| 破解难度 | 手机几秒破 | 地球毁灭也破不了 |
| 硬件支持 | 基本消失 | 几乎所有 CPU 都有 AES-NI 指令 |
AES 的设计目标明确,涵盖:
AES 是公开密码竞赛选出的算法(代号 Rijndael),非国家黑箱设计。
AES 将一个 128-bit 的数据 block 表示为一个 4×4 字节矩阵(State):
[ a0 a4 a8 a12 ]
[ a1 a5 a9 a13 ]
[ a2 a6 a10 a14 ]
[ a3 a7 a11 a15 ]
AES 的矩阵结构直接影响到 ShiftRows 和 MixColumns 的扩散路径。
AES 的密钥长度与轮数:
| 类型 | 密钥长度 | 加密轮数 | 安全性 |
|---|---|---|---|
| AES-128 | 128 bit(16 字节) | 10 轮 | 高 |
| AES-192 | 192 bit(24 字节) | 12 轮 | 极高 |
| AES-256 | 256 bit(32 字节) | 14 轮 | 军事级/最高 |
密钥越长,轮数越多,安全性越高,但经常也更慢。
理解 AES 深度的第一步是理解它如何定义“加法”和“乘法”。AES 并不是在普通的整数域上运算,而是在 有限域 (Galois Field, GF) 上运算,具体是 $GF(2^8)$。AES 所有字节运算均在有限域 GF(2⁸) 中。
计算机处理的是字节(8 bit)。在 $GF(2^8)$ 中,任何运算的结果(加、减、乘、除)仍然是一个 8 bit 的字节,不会产生溢出,且运算是可逆的。
一个字节 $b_7b_6\dots b_0$ 被看作是一个系数为 0 或 1 的 7 次多项式:
$$b_7x^7 + b_6x^6 + \dots + b_1x + b_0$$
加法 (Addition): 在 $GF(2^8)$ 中,加法等同于 异或 (XOR) 运算。
$$(x^6 + x^4 + x + 1) + (x^7 + x^6 + x^3 + x) = x^7 + x^4 + x^3 + 1$$
对应:01010011 XOR 11001010。
乘法 (Multiplication): 多项式相乘后,必须模一个不可约多项式 (Irreducible Polynomial),以确保结果不越界。AES 选定的不可约多项式是:
$$m(x) = x^8 + x^4 + x^3 + x + 1$$
深度点: 这种数学结构保证了 AES 内部运算的非线性分布非常均匀,且能够抵抗差分分析。
AES算法(基于 Rijndael 算法)的核心是其 代换-置换网络 (SPN) 结构。它通过在每一轮中重复四个基本操作,实现混淆(Confusion)**和**扩散(Diffusion)。 AES的加密流程主要包含 4 个基本操作(每一轮中重复),组成一个 SPN(Substitution–Permutation Network)结构。
SubBytes 使用一个固定的 S-盒 逐字节替换。
S-盒的数学含义:
本质上是:
代数复杂度非常高的非线性变换,提供混淆(Confusion)。
特性:
ShiftRows 对 State 的每一行进行循环左移:
Row 0: 0 shift
Row 1: 1 shift
Row 2: 2 shift
Row 3: 3 shift
作用:
对每一列进行线性变换(GF(2⁸) 有限域矩阵乘法,每列与一个固定矩阵相乘:
[02 03 01 01]
[01 02 03 01]
[01 01 02 03]
[03 01 01 02]
此矩阵是 MDS(Maximum Distance Separable)矩阵的特例:
AES 的扩散速度极高,仅 2 轮即可实现全字节影响全字节。
AES 的唯一密钥混入过程,将当前状态与轮密钥进行按位 XOR:
State = State ⊕ RoundKey
优点:
这是唯一真正使用密钥的步骤。
把 128 位明文想象成一个 4×4 的字节表格(叫“状态 State”):
text
字节0 字节4 字节8 字节12
字节1 字节5 字节9 字节13
字节2 字节6 字节10 字节14
字节3 字节7 字节11 字节15
AES-128 总共干 10 轮(192→12 轮,256→14 轮),每轮做 4 件事:
最后一轮不做 MixColumns,直接输出密文。
整个过程就像把一碗面条反复打乱、揉团、加调料,最后谁也认不出原来模样。
明文(16 字节):00112233445566778899aabbccddeeff
密钥(AES-256):000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
加密后密文:
8e a2 b7 ca 51 67 45 bf ea fc 49 90 4b 49 60 89
(随便你怎么暴力都不可能猜回原文)
AES S-盒是整个加密过程的非线性核心,其设计极为优秀:
S-盒的每个输入字节 x(除 0)转换为 x⁻¹:
SBox(x) = A · (x^{-1}) ⊕ b
通过一个 8×8 的矩阵乘法加固定向量:
y = M * x⁻¹ + c
AES S-盒被认为是现代密码学中最经典的非线性组件之一。
AES 加密所需的不仅仅是主密钥,而是每一轮都需要一个独立的 轮密钥(Round Key)。AES 使用 Key Schedule 生成每轮的 Round Key。主密钥(128、192 或 256 位)通过一个复杂的密钥扩展算法,生成一个包含所有必需轮密钥的大密钥序列。密钥扩展算法利用了 S-盒、循环移位和异或运算,保证每轮密钥之间具有高度的非线性。避免密钥间的关联性被分析利用。
核心步骤:
数学意义:
AES-128 的暴力破解空间:
2^128 ≈ 3.4 × 10^38
即便超级计算机也无法破解。
S 盒设计合理,抗差分攻击与线性攻击表现优秀。
ShiftRows 和 MixColumns 使每个字节影响整个数据块。
所有公开攻击仅能减少极少量轮数,不影响标准使用。
| 密钥长度 | 暴力破解时间(经典计算机) | 量子计算机(Grover 算法) | 实际结论 |
|---|---|---|---|
| AES-128 | 2¹²⁸ 年 ≈ 宇宙年龄的几亿倍 | ≈ 2⁶⁴(仍极难) | 完全够用 |
| AES-192 | 2¹⁹²(无法想象) | ≈ 2⁹⁶ | 过度安全 |
| AES-256 | 2²⁵⁶(连宇宙热寂都等不到) | ≈ 2¹²⁸(量子也绝望) | 军方、金融、国密首选 |
尽管 AES 可表示为方程组:
AES 本身安全,但实现可能不安全:
解决方案:
AES 有极强的软件友好性:
现代 CPU 上:
AES-128 加密速度可达 每秒数 GB。
AES在线工具:AES加密解密
AES 的分组加密通常配合以下模式使用:
| 模式 | 全称 | 特点 | 典型用途 |
|---|---|---|---|
| ECB | 电子密码本 | 最简单,每个块独立加密 | 不推荐!有图案泄露风险 |
| CBC | 密码分组链接 | 要随机 IV,安全但需填充 | 磁盘加密、传统协议 |
| CTR | 计数器 | 明文密文同长、可并行、无填充 | 现代推荐,速度极快 |
| GCM | Galois/Counter Mode | 带认证的计数器模式 | 加密+完整性校验(AEAD) |
| XTS | XEX-based Tweaked Codebook | 专为磁盘/存储设计,防篡改 | 全盘加密(BitLocker、LUKS) |
推荐:优先使用 AES-256-GCM 或 AES-256-CTR + HMAC
AES 日常应用场景:
| 领域 | 实际使用的 AES 变种 | 备注 |
|---|---|---|
| TLS 1.3 | AES-128-GCM(60%+) / AES-256-GCM | Chrome/Firefox 优先 128 |
| WireGuard、IPSec | AES-256-GCM 或 ChaCha20-Poly1305 | |
| Apple FileVault / iOS | AES-256-XTS | 硬件加速 |
| Android 全盘加密 | AES-256-XTS(部分机型) | 部分厂商降为 128 |
| BitLocker | AES-256(推荐) | 默认 128,可手动改 256 |
| LUKS / dm-crypt | AES-256-XTS-plain64 | Linux 发行版默认 |
| 微信/支付宝/银联 | AES-256-GCM + SM4 双栈 | 国密合规 |
| 军用/涉密系统 | AES-256(必须通过 NIAP/CC EAL5+) | |
| 卫星、深空通信 | AES-256-GCM(CCSDS 标准) | NASA、ESA、中国探月都用 |
AES 是目前最可信、最快速的对称加密标准。
AES 是少数能在数学结构、硬件实现、安全性之间做到完美平衡的算法。
Q:AES-128 和 AES-256 哪个更好?
A:AES-256 理论更强,但 AES-128 在 2040 年前都绝对安全。普通人用 AES-128 完全够,银行、国防才必须用 256。
Q:AES 会被量子计算机破解吗?
A:不会被“瞬间破解”。量子计算机用 Grover 算法最多把暴力强度减半(256→128,128→64),AES-128 也仍然安全。
Q:AES 有后门吗?
A:没有。算法完全公开,20 多年来全球密码学家研究,没有发现任何后门。S 盒设计甚至比原作者预想的还强。