<!-- title: AES神课：把明文揉碎的四步 -->
<!-- domain: programming -->

# AES神课：把明文揉碎的四步——一条数百万播放的加密算法神课深读

## 概述

你每次连上Wi-Fi、打开网银、给朋友发一条加密消息，背后都在执行同一个算法：AES。它是这个星球上被使用次数最多的加密算法之一，而今年，正是它作为美国联邦标准的第25个年头。YouTube头部计算机科普频道Computerphile的经典视频《AES Explained》，用不到二十分钟把这门“数字世界的锁匠手艺”讲得明明白白。本文带你逐帧拆解这条视频：AES到底对数据做了什么、它的四个步骤为什么缺一不可、比利时两位学者如何赢下一场全球公开竞赛、以及视频没来得及告诉你的那些争议与陷阱。没看过视频，你能看懂原理；看过视频，你会懂得更深。

## 一、视频基本信息

| 项目 | 内容 |
|---|---|
| 视频标题 | AES Explained (Advanced Encryption Standard) |
| 中文译名 | AES详解：高级加密标准 |
| 频道 | Computerphile（YouTube头部计算机科普频道） |
| 主讲人 | Dr Mike Pound（诺丁汉大学计算机科学家，频道密码学系列主讲） |
| 发布时间 | 2019年前后（据频道页面） |
| 播放量 | 累计数百万量级（据频道页面，动态数据以频道实时显示为准） |
| 所属系列 | 频道“密码学”系列，与密钥交换、RSA等视频互为姊妹篇 |

> 注：本文为深度解读写作，播放量、发布日期等动态数据未经当日实时核实，以频道页面为准；文中技术事实的溯源见“参考来源”。

## 二、核心主张拆解：视频到底讲了什么

### 2.1 出发点：加密的本质是“搅乱”

视频开场没有堆公式，而是先回答一个朴素的问题——**怎样把一段数据变得只有持有钥匙的人能读懂？** Mike Pound给出的答案是：所谓加密，就是用一把“密钥”去控制一套足够复杂的“搅乱流程”，让攻击者在不知道密钥的情况下，无法从密文反推出明文。

这里视频立刻立起了两个关键概念，也是理解AES的全部地基：

- **对称加密**：加密和解密用同一把密钥。你家的门锁就是对称的——同一把钥匙既能锁门也能开门。AES属于这一类。
- **分组密码**：AES不处理任意长度的数据，它一次只吃**固定128位**的“一块”明文，吐出128位的密文。长文档要切成很多块，一块一块地处理。

这个“按块处理”的设计初听很奇怪，但它是整个体系的支点。因为一旦分组固定，加密问题就变成了一个纯粹的数学工程题：**如何设计一个以密钥为参数的、从128位到128位的、让任何分析者都束手无策的复杂函数。**

### 2.2 主菜：每一轮的四步操作

视频的主体部分，是白板+动画逐个拆解AES的轮函数。AES-128要把上面那个“复杂函数”重复执行**10轮**（密钥192位时12轮，256位时14轮），每一轮都由四个组件构成，全部作用在一个4×4的字节矩阵（称为“状态”，State）上。

**第一步：字节替换（SubBytes）。** 把状态里的每一个字节，都查一张固定的替换表（S盒），换成另一个字节。这是整个AES里唯一的“非线性”环节——你可以把它理解成整个算法的“搅乱器”：0x53会被换成0xED，没有任何直观规律。

**第二步：行移位（ShiftRows）。** 状态是4×4矩阵，第二行左移1格、第三行左移2格、第四行左移3格。这一步的目的是让每个字节“离开自己原来的位置”——让同一行的元素分散到不同的列。

**第三步：列混淆（MixColumns）。** 把状态的每一列拿出来，和一个固定矩阵做一次有限域上的矩阵乘法，让一列里的4个字节互相影响。这一步是“扩散器”：改变明文里的1个字节，经它一搅，整列4个字节全部变化。

**第四步：轮密钥加（AddRoundKey）。** 把本轮的轮密钥（由原始密钥经“密钥扩展”算法派生而来）与状态逐位异或（XOR）。这是整个流程中唯一引入“钥匙”信息的环节——也是唯一可逆性依赖密钥的环节。

视频讲到这里有一个非常漂亮的收束：**前三步是“公开的固定操作”，全世界任何人的AES都长一样；真正决定结果的是第四步里那把只有你知道的密钥，以及它在10轮里反复注入的方向盘作用。** 最后一轮有个小细节：末轮省略列混淆（因为它对安全没有额外贡献，省掉能省一次计算）——这种“抠性能”的实用主义贯穿AES的设计。

### 2.3 为什么这样设计就是安全的：雪崩效应

视频后半段回答了最关键的问题：凭什么这四步组合起来就是安全的？

答案是密码学里著名的**雪崩效应**：理想情况下，改变明文中的哪怕1个比特，密文里应该有约一半的比特（128位中的约64位）发生翻转，且这种变化看起来完全随机。SubBytes提供非线性搅乱，ShiftRows+MixColumns提供跨字节扩散，AddRoundKey注入密钥相关性——重复10轮，任何一个输入比特的变化都会被“揉碎”到整个输出中，攻击者无法通过观察密文的局部特征反推任何信息。

### 2.4 视频的落点：别自己发明加密

Mike Pound在结尾给出的建议非常直白：AES的每一个细节都经过了全世界密码学家二十多年的轮番攻击而幸存，**任何自己“发明”加密算法的行为都是极其危险的**。工程实践中应该做的是正确地使用它——包括选择正确的“工作模式”（分组如何拼接、初始向量如何生成），这恰恰是现实世界里大量翻车事故的真正源头。

## 三、知识与理论溯源：四个步骤背后的真实历史

视频里的每个设计选择，都对应着一段真实的密码学历史。

### 3.1 香农的奠基：混淆与扩散（1949）

AES“搅乱+扩散”的骨架，直接来自信息论之父克劳德·香农1949年的论文《保密系统的通信理论》（*Communication Theory of Secrecy Systems*）。香农提出，密码系统要抵抗统计分析，必须具备两种性质：**混淆（Confusion）**——让密文与密钥之间的关系尽可能复杂；**扩散（Diffusion）**——让明文的统计结构被消散到密文的全局中。SubBytes就是混淆，ShiftRows和MixColumns就是扩散。一条2019年的视频，讲的骨架是76年前的理论。

### 3.2 从DES到AES：一场全球公开选拔赛

AES的前任是1977年定稿的DES（数据加密标准），密钥只有56位。DES的重要遗产是一种新范式：**公开算法细节、只对密钥保密**（柯克霍夫原则），以及由美国国家标准局公开征集、密码学界公开评审的选标流程。

1997年，NIST（美国国家标准与技术研究院）发现DES已不堪一击，发起全球公开征集。最终收到15个候选算法，1999年决出5强：MARS、RC6、Rijndael、Serpent、Twofish。2000年10月，比利时学者**琼·达门（Joan Daemen）与文森特·里门（Vincent Rijmen）**设计的**Rijndael**胜出；2001年11月26日，NIST正式发布联邦信息处理标准**FIPS 197**，Rijndael（微调后）定名AES。今年正是这一标准发布25周年。

胜出的关键，是Rijndael在**安全性与实现效率之间取得了最佳平衡**：它在软件、硬件、低端智能卡上都能高效运行，内存占用极小——这些工程属性让它在5强中脱颖而出。

### 3.3 代数内核：S盒不是“魔法表”

视频里那张“查表替换”的S盒，背后是严格的代数构造：S盒的核是**有限域 GF(2⁸) 上的乘法逆元运算，再叠加一个仿射变换**。这个设计出自密码学家Kaisa Nyberg等人的研究，目的非常明确：让S盒最大限度地抵抗密码学两大分析武器——**差分分析**（Biham与Shamir于1991年公开提出，曾一路打穿DES）和**线性分析**（Matsui于1993年提出）。换句话说，S盒的每个数字都是“被攻击出来的最优解”，不是拍脑袋定的。

同样，MixColumns的矩阵也不是随便挑的：它是一个**分支数为5的MDS矩阵**（最大距离可分矩阵），保证任意输入输出差分路径中最少有5个活跃S盒——这是把差分攻击的轮数门槛硬性抬高的数学保证。

### 3.4 现实攻防：算法没破，实现天天破

AES本身从未被实际攻破，但它的**实现**历史上一再出事，这是视频之外极重要的知识面：

- **侧信道攻击**：1996年Paul Kocher证明了计时攻击可以攻破RSA；2005年Daniel Bernstein发表了著名的**缓存计时攻击**，证明通过测量AES加密的缓存行为，可以在真实服务器上恢复密钥。这类攻击不看数学，专挑物理实现的“时间差”下手。
- **工程respuesta：AES-NI**。为根治侧信道并提速，Intel在2010年前后（Westmere架构起）把AES的四步操作做成了CPU硬件指令，AMD随后跟进。今天的手机和电脑处理AES，走的是晶体管级别的固定时间路径——快，而且“滴答不漏”。
- **模式误用才是重灾区**：AES加密单个分组没问题，但现实数据要切块拼接，拼接方式叫“工作模式”。臭名昭著的**ECB模式**（每块独立加密）会导致相同明文块产出相同密文块——著名的“ECB企鹅”图片演示了用它加密一张企鹅图，密文解出来还是一只企鹅的轮廓。而HTTPS早期协议的CBC模式缺陷（如2011年的BEAST攻击）也曾让整个Web修补了数年。

## 四、批判性审查：视频说得对的、简化的、没说的

**证据充分的部分**：四步轮函数的机制、128位分组与三种密钥长度、轮数设定、雪崩效应的定性描述——全部与FIPS 197标准文本一致，无可挑剔。视频对“不要自造加密”的反复强调，也与整个密码学界的立场完全一致（布鲁斯·施奈尔的名言大意是：任何人都能发明一个自己破不了的密码，区别在于他也破不了）。

**被简化的部分**：
1. 视频把S盒呈现为一张“给定的替换表”，略过了它的代数构造与设计准则——对入门是合理取舍，但读者应知道那张表背后是有限域运算和数年的攻击测试。
2. 视频对**密钥扩展**（Key Schedule）一带而过。实际上轮密钥如何从主密钥派生，也是安全分析的重要一环（AES-256的密钥扩展曾被发现存在相关密钥攻击的理论弱点，Biryukov与Khovratovich于2009年发表）。
3. “AES安全”的表述需要加一个限定：安全的是**算法本身**。已知的最好分析（如2011年的biclique攻击）也只把AES-128的暴力破解难度从2¹²⁸降到约2¹²⁶——纯属理论兴趣，距实用攻击隔着天文数字。

**没说的部分**：
1. **量子计算**：1994年Grover提出的搜索算法可将暴力破解的复杂度开平方，把AES-128的等效强度压到2⁶⁴量级。因此NIST的后量子迁移建议是：直接使用**AES-256**。这也是Signal等现代加密协议默认选AES-256的原因之一。
2. **认证加密**：AES只保证“保密性”，不保证密文在传输中没被篡改。现代实践应使用**AES-GCM**这类带认证的模式（一次性解决保密+完整性），裸用AES-CBC而无消息认证码是大量真实漏洞的来源。
3. **“安全”的相对性**：密码系统历史上几乎所有的实际崩溃都发生在算法周围——随机数质量（如2008年Debian OpenSSL随机数缺陷）、密钥管理、协议逻辑——而不是加密算法本身。AES在这点上反而是密码工程里最让人放心的那一环。

## 五、认知提升与实用启示

**启示一：永远使用标准库，且默认选对模式。** 生产代码中不要手写AES，用语言生态中经过审计的密码库（如libsodium、各平台系统级API）；模式选择默认**AES-GCM**，拒绝ECB；密钥绝不能硬编码。这一条能挡住你90%的密码学工程事故。

**启示二：常数时间思维。** 缓存计时攻击给所有程序员上了一堂通用课：**任何“依赖秘密数据”的分支、查表、提前返回，都可能泄漏信息**。在鉴权比较（如校验令牌）、防爆破限流等场景下，用常数时间比较函数是基本素养。性能优化与安全有时正面冲突，知道这条边界在哪，是高级工程师的分水岭。

**启示三：把“公开竞赛”当成工程方法论。** DES到AES的两场全球公开选拔证明了一件事：**经得起全世界最聪明的人轮番攻击的设计，才是可信的设计**。这个模式可以迁移到你的技术选型——优先选择经过大规模公开使用的方案，警惕“内部自研、尚未公开检验”的关键组件；在团队评审中，主动邀请最强的批评者攻击自己的方案，比邀请支持者点赞更有价值。

## 六、视频论证结构图

```mermaid
flowchart TD
    A[问题：如何保护数据] --> B[答案：对称加密]
    B --> C[形态：128位分组密码]
    C --> D[核心：可重复的轮函数]
    D --> E[字节替换<br/>提供非线性混淆]
    D --> F[行移位加列混淆<br/>提供全局扩散]
    D --> G[轮密钥异或<br/>注入密钥相关性]
    E --> H[十轮迭代]
    F --> H
    G --> H
    H --> I[性质：雪崩效应]
    I --> J[结论：公开算法<br/>只保密密钥]
    J --> K[实践：用标准库<br/>选对工作模式]
```

## 延伸阅读

1. Computerphile《Secret Key Exchange (Diffie-Hellman)》（同频道姊妹篇）——AES解决了“怎么锁”，这条视频解决“钥匙怎么安全地送到对方手里”，两者合起来才是完整的加密通信。见频道页：https://www.youtube.com/@Computerphile
2. 《The Design of Rijndael》——AES两位原作者Daemen与Rijmen亲笔的设计全书，想把每个字节的“为什么”挖到底，这是终极答案。

## 参考来源

1. [Computerphile频道页](https://www.youtube.com/@Computerphile) — 《AES Explained (Advanced Encryption Standard)》视频所在频道，本文解读对象（播放量等动态数据以频道页面为准）
2. [Advanced Encryption Standard - Wikipedia](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) — AES标准全貌：轮结构、S盒构造、ECB企鹅、已知分析与攻击的百科式综述
3. [NIST FIPS 197: Advanced Encryption Standard (AES)](https://csrc.nist.gov/publications/detail/fips/197/final) — 2001年11月26日发布的AES官方标准文本，四步轮函数与轮数设定的第一手依据
4. [Advanced Encryption Standard process - Wikipedia](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard_process) — 1997–2000年全球公开选标全过程：15个候选、5强决赛与Rijndael胜出始末

---
> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护，聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。
> 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
