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 的数据结构与矩阵模型
有限域 GF(2⁸) 数学基础
AES 核心操作深度解析
AES S-盒的构造原理
AES 密钥扩展(Key Expansion)深入分析
AES 安全性深度分析
AES 的硬件与软件实现
AES 的模式选择与安全实践
总结
1. AES 是什么?
AES 是一种 对称加密算法,其核心特征如下:
对称密钥 (Symmetric Key): 加密和解密使用同一把密钥。
分组加密 (Block Cipher): 它将明文分割成固定大小的数据块进行处理。
分组大小: AES 的数据块大小固定为 128 位 (16 字节)。
基于 SPN 结构: AES 基于 代换-置换网络(Substitution-Permutation Network, SPN) 结构,而不是 DES 的 Feistel 结构。
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 的设计目标明确,涵盖:
高安全性
抵抗差分攻击
抵抗线性攻击
抵抗代数攻击
抵抗侧信道攻击(在特定实现下)
高性能
更适合软件实现(比 DES 快数倍)
可轻松在硬件中并行化
灵活性
支持 128 / 192 / 256 位密钥
分组固定 128 bit
全球公开竞赛
AES 是公开密码竞赛选出的算法(代号 Rijndael),非国家黑箱设计。
2. AES 的数据结构与矩阵模型
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 轮
军事级/最高
密钥越长,轮数越多,安全性越高,但经常也更慢。
3. 有限域 GF(2⁸) 的数学基础
理解 AES 深度的第一步是理解它如何定义“加法”和“乘法”。AES 并不是在普通的整数域上运算,而是在 有限域 (Galois Field, GF) 上运算,具体是 $GF(2^8)$。AES 所有字节运算均在有限域 GF(2⁸) 中。
3.1 为什么要用有限域?
计算机处理的是字节(8 bit)。在 $GF(2^8)$ 中,任何运算的结果(加、减、乘、除)仍然是一个 8 bit 的字节,不会产生溢出,且运算是可逆的。
3.2 多项式表示法
一个字节 $b_7b_6\dots b_0$ 被看作是一个系数为 0 或 1 的 7 次多项式:
$$b_7x^7 + b_6x^6 + \dots + b_1x + b_0$$
3.3 运算规则
加法 (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 内部运算的非线性分布非常均匀,且能够抵抗差分分析。
4. AES 核心操作深度解析
AES算法(基于 Rijndael 算法)的核心是其 代换-置换网络 (SPN) 结构。它通过在每一轮中重复四个基本操作,实现混淆(Confusion)**和**扩散(Diffusion)。 AES的加密流程主要包含 4 个基本操作(每一轮中重复),组成一个 SPN(Substitution–Permutation Network)结构。
4.1 SubBytes — 非线性变换核心(S 盒替换)
SubBytes 使用一个固定的 S-盒 逐字节替换。
S-盒的数学含义:
字节取位逆(Multiplicative Inverse in GF(2⁸))
经过仿射变换(Affine Transformation)
本质上是:
代数复杂度非常高的非线性变换,提供混淆(Confusion)。
特性:
抗线性攻击
抗差分攻击
强雪崩效应
4.2 ShiftRows — 扩散路径构造(行移位)
ShiftRows 对 State 的每一行进行循环左移:
Row 0: 0 shift
Row 1: 1 shift
Row 2: 2 shift
Row 3: 3 shift
作用:
打破列之间的字节关联
保证一个字节影响多个列(扩散比特到不同 S 盒路径)
4.3 MixColumns — 列级线性变换
对每一列进行线性变换(GF(2⁸) 有限域矩阵乘法,每列与一个固定矩阵相乘:
[02 03 01 01]
[01 02 03 01]
[01 01 02 03]
[03 01 01 02]
此矩阵是 MDS(Maximum Distance Separable)矩阵的特例:
提供最大化扩散
所有输出字节依赖输入列所有字节
AES 的扩散速度极高,仅 2 轮即可实现全字节影响全字节。
4.4 AddRoundKey — 轮密钥异或
AES 的唯一密钥混入过程,将当前状态与轮密钥进行按位 XOR:
State = State ⊕ RoundKey
优点:
高效
可快速并行化
这是唯一真正使用密钥的步骤。
4.5 AES-128加密举例
把 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 件事:
SubBytesub(S 盒替换) → 让数据非线性混乱
ShiftRows(行移位) → 左右错开,让每一列都混一起
MixColumns(列混淆) → 数学上彻底打乱列之间关系
AddRoundKey(轮密钥加) → 和本轮子密钥异或
最后一轮不做 MixColumns,直接输出密文。
整个过程就像把一碗面条反复打乱、揉团、加调料,最后谁也认不出原来模样。
明文(16 字节):00112233445566778899aabbccddeeff
密钥(AES-256):000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
加密后密文:
8e a2 b7 ca 51 67 45 bf ea fc 49 90 4b 49 60 89
(随便你怎么暴力都不可能猜回原文)
5. AES S-盒结构的构造原理
AES S-盒是整个加密过程的非线性核心,其设计极为优秀:
5.1 构造方法
步骤 1:有限域 GF(2⁸) 中求逆
S-盒的每个输入字节 x(除 0)转换为 x⁻¹:
SBox(x) = A · (x^{-1}) ⊕ b
步骤 2:仿射变换
通过一个 8×8 的矩阵乘法加固定向量:
y = M * x⁻¹ + c
设计优势
避免固定点(x → x)
无弱 S-盒
差分均匀性低(抗差分攻击)
高度非线性(抗线性攻击)
AES S-盒被认为是现代密码学中最经典的非线性组件之一。
6. AES 密钥扩展(Key Expansion)深入分析
AES 加密所需的不仅仅是主密钥,而是每一轮都需要一个独立的 轮密钥(Round Key)。AES 使用 Key Schedule 生成每轮的 Round Key。主密钥(128、192 或 256 位)通过一个复杂的密钥扩展算法,生成一个包含所有必需轮密钥的大密钥序列。密钥扩展算法利用了 S-盒、循环移位和异或运算,保证每轮密钥之间具有高度的非线性。避免密钥间的关联性被分析利用。
核心步骤:
RotWord:字节循环左移
SubWord:字节替换(使用 S-盒)
Rcon:轮常量添加(防止对称结构)
数学意义:
防止轮密钥之间出现线性关系
增加密钥间距,防止低复杂度攻击
对 AES-256 引入额外非线性
7. AES 安全性深度分析
7.1 AES 至今仍被认为是高度安全的原因
大密钥空间
AES-128 的暴力破解空间:
2^128 ≈ 3.4 × 10^38
即便超级计算机也无法破解。
高度非线性
S 盒设计合理,抗差分攻击与线性攻击表现优秀。
良好的扩散性
ShiftRows 和 MixColumns 使每个字节影响整个数据块。
没有已知实用攻击
所有公开攻击仅能减少极少量轮数,不影响标准使用。
密钥长度
暴力破解时间(经典计算机)
量子计算机(Grover 算法)
实际结论
AES-128
2¹²⁸ 年 ≈ 宇宙年龄的几亿倍
≈ 2⁶⁴(仍极难)
完全够用
AES-192
2¹⁹²(无法想象)
≈ 2⁹⁶
过度安全
AES-256
2²⁵⁶(连宇宙热寂都等不到)
≈ 2¹²⁸(量子也绝望)
军方、金融、国密首选
7.2 AES 的攻击
差分攻击(Differential Cryptanalysis)
研究输入差分如何影响输出差分
AES S-盒差分概率远低于攻破要求
全轮 AES 未被攻破
线性攻击(Linear Cryptanalysis)
AES S-盒线性逼近概率极小
MixColumns 进一步增强扩散
无实际威胁
代数攻击(Algebraic Attacks)
尽管 AES 可表示为方程组:
实际方程数量过大
计算不可行
侧信道攻击
AES 本身安全,但实现可能不安全:
功耗分析(DPA)
定时攻击
缓存攻击
电磁泄漏(EMA)
解决方案:
AES-NI(CPU 指令级加密)
常数时间实现
掩码(Masking)
8. AES 的硬件与软件实现特性
8.1 硬件实现特点
可深度并行
高吞吐量
常见于:智能卡、加密模块、网络设备
8.2 软件实现特点
AES 有极强的软件友好性:
查表法(T-Table)
并行四字节操作
SIMD 优化
AES-NI(Intel/AMD 专用指令)
现代 CPU 上:
AES-128 加密速度可达 每秒数 GB。
AES在线工具:AES加密解密
9. 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 是目前最可信、最快速的对称加密标准。
10. 总结
AES 是少数能在数学结构、硬件实现、安全性之间做到完美平衡的算法。
S-盒高度非线性
MDS 扩散结构
精妙的有限域代数设计
强抗多种攻击
对软件与硬件高度友好
有效的密钥扩展
三种安全等级(128/192/256)
常见问题(FAQ)
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 盒设计甚至比原作者预想的还强。