首页 › programming › AES神课:把明文揉碎的四步

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的全部地基:

这个“按块处理”的设计初听很奇怪,但它是整个体系的支点。因为一旦分组固定,加密问题就变成了一个纯粹的数学工程题:如何设计一个以密钥为参数的、从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本身从未被实际攻破,但它的实现历史上一再出事,这是视频之外极重要的知识面:

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

证据充分的部分:四步轮函数的机制、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的两场全球公开选拔证明了一件事:经得起全世界最聪明的人轮番攻击的设计,才是可信的设计。这个模式可以迁移到你的技术选型——优先选择经过大规模公开使用的方案,警惕“内部自研、尚未公开检验”的关键组件;在团队评审中,主动邀请最强的批评者攻击自己的方案,比邀请支持者点赞更有价值。

六、视频论证结构图

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频道页 — 《AES Explained (Advanced Encryption Standard)》视频所在频道,本文解读对象(播放量等动态数据以频道页面为准)
  2. Advanced Encryption Standard - Wikipedia — AES标准全貌:轮结构、S盒构造、ECB企鹅、已知分析与攻击的百科式综述
  3. NIST FIPS 197: Advanced Encryption Standard (AES) — 2001年11月26日发布的AES官方标准文本,四步轮函数与轮数设定的第一手依据
  4. Advanced Encryption Standard process - Wikipedia — 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学通信知识星球海报-扫码加入