2. AES算法概述:发展历史、标准化过程(NIST)、全球应用现状
聊起对称加密,绕不开AES。
它叫Advanced Encryption Standard,高级加密标准。说白了,现在全球绝大多数加密通信的“底牌”,就是它。
我个人习惯,先搞清楚这东西是怎么来的,为什么是它,而不是别的算法当上了这个“标准”。
2.1 AES的诞生:为什么世界上需要一个新标准?
故事要从上世纪90年代说起。那时候,DES(数据加密标准)已经很老了,它的56位密钥长度在我刚入行时就已经被证明不够安全,一个专用硬件几天就能暴力破解完。我从老前辈那里听过一个段子:当年做DES破解机,就是冲着“看你密钥还能扛多久”去的。
后来有了3DES,把DES轮三次。但3DES效率低,而且块大小依然只有64位,到了今天这个数据体量,它已经显得步履蹒跚。1997年,美国国家标准与技术研究院(NIST)坐不住了,他们决定搞一个新标准,从全世界公开征集。
这就是AES的起点。一个面向全球、公开透明、靠密码学社区投票和攻防分析选出来的新标准。
2.2 标准化过程:一场全球公开的密码学“选秀”
你可能以为AES是某个机构闭门造车搞出来的,其实不是。NIST搞了一次全球公开征集,任何人都可以提交自己的算法。
关键时间线如下:
| 时间 | 事件 | 我的备注 |
|---|---|---|
| 1997年1月 | NIST宣布启动AES项目,向全球征集候选算法 | 当时我还在大学,听到这个消息觉得密码学界要变天了。 |
| 1998年8月 | 第一轮评选:从15个候选算法中选出5个 | 评审过程极其严格,除了安全性,还要看计算效率、内存占用。 |
| 1999年8月 | 第二轮评选:5个候选算法进入决赛圈 | MARS,RC6,Rijndael,Serpent,Twofish。嗯,我至今还记得这几个名字。 |
| 2000年10月 | NIST宣布Rijndael当选为AES | 当时学术界其实有点意外,但回头来看,这是一个非常明智的选择。 |
| 2001年11月 | FIPS PUB 197正式发布,AES成为美国联邦信息处理标准 | 从此,AES走进了每一台设备。 |
2.3 为什么是Rijndael?
说实话,5个决赛算法都很强。但Rijndael有几个显著的优势:
- 实现效率高:不论是硬件还是软件,它都跑得飞快。我最早在嵌入式设备上移植AES,128位密钥、128位块大小,用很小的芯片就能跑出满意的吞吐量,这一点非常重要。
- 设计简洁清晰:它的设计思想是“宽轨迹策略”,说白了就是每一轮替换、扩散做得干净利落,没有复杂的数学运算。我记得当时看它的,感觉更像一幅结构化的画卷。
- 灵活性好:支持128位、192位、256位三种密钥长度,用户可以按安全等级切换。你想想看,一个算法能同时满足桌面电脑和物联网传感器的需求,这很厉害。
- 安全强度足够:至今没有发现有效的、能威胁到128位密钥AES的攻击方法。我个人觉得,这可能是它最大的成就。
2.4 发展脉络:从纸面到无处不在
2001年之后,AES迅速在全球普及。为什么?因为它解决了两个核心矛盾:安全与性能。
我简单画了一张AES标准化与发展的脉络图,你看完会更直观:
从图上你可以看到,AES从1997年启动到2001年成为标准,再到今天无处不在,这个路径非常清晰。标准化的闭环效率极高。
2.5 全球应用现状
AES今天已经不只是美国标准了。它被ISO/IEC采纳为国际标准,被TLS、SSH、IPsec等几乎所有安全协议内置支持。你刷信用卡、连Wi-Fi、用手机看网课,底层大概率都在跑AES。
几个关键应用场景:
- 网络通信加密: TLS 1.2/1.3 中,AES-GCM 是最主流的选择。我个人习惯,只要是新项目,优先用 AES-GCM,因为它同时提供加密和完整性校验,省去了自己拼凑MAC的麻烦。
- 磁盘/文件加密: BitLocker、FileVault 底层都用 AES-XTS。为什么不直接用GCM?因为磁盘加密需要的是“可随机读写”的模式,GCM不是为这个设计的。这里有个坑:不要拿GCM去加密整个磁盘,不然你会后悔的。
- 无线网络安全: WPA2/WPA3 都用 AES-CCMP 来保护 Wi-Fi 数据帧。
- 嵌入式与IoT: 很多MCU和传感器有AES硬件加速指令,跑起来比软件快几个数量级。我曾在STM32上测试过,硬件加速后加密一个128位块只需要几十个时钟周期。
另外,AES在密码学算法中的位置,就像TCP/IP在协议栈中的位置。它不是最花哨的,但它是基石。你想想看,这么多年来,不管是学术界还是工业界,试图攻破AES的努力都没有成功过。这本身就是一种信任。
AES的128位密钥,在可预见的未来依然足够安全。量子计算可能会在某种程度上威胁到它,但那至少是10-20年后的事情。当前,你大概率还是在和AES打交道。