高级加密标准
高级加密标准是美国的联邦信息处理标准(FIPS 197)所规定的对称分组密码规范,简称AES,用于加密电子数据。它的分组长度固定为128位,密钥长度可选128位、192位或256位,由比利时密码学家设计,算法原名Rijndael。该标准用于替代安全性不足的数据加密标准(DES),是目前应用范围最广、经受了大量密码分析检验的对称密钥加密算法之一。
定义
高级加密标准(Advanced Encryption Standard,缩写AES)是一套对称密钥分组密码的规范,正式文本为美国联邦信息处理标准FIPS 197[1]。所谓对称密钥,是指加密与解密使用同一把密钥;分组密码则意味着明文先按固定长度切块,再逐块经过多轮运算得到长度不变的密文[2]。
该标准由美国国家标准与技术研究院(NIST)发布,2001 年 11 月 26 日公布,2002 年 5 月 26 日起正式生效[1]。FIPS 197 只规定了 3 种组合,即AES-128、AES-192与AES-256,三者分组长度均为128位,密钥长度依次为128位、192位和256位[3]。
在工程实践中,AES常被用作底层密码原语,具体用法则由分组密码工作模式规定,例如用于存储设备加密的XTS-AES模式和用于带认证加密的GCM模式,相关建议收录于NIST的SP 800-38系列出版物[3]。
原理
AES把状态组织成一个4×4的字节矩阵,称为状态(state),每个元素是明文分组中的一个字节[4]。加密过程先做一次轮密钥加,随后执行若干轮循环,除最后一轮外,每轮依次包含字节代换(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)4步;最后一轮省略列混淆[4]。
字节代换借助一张8位查找表S盒完成,是算法中唯一的非线性环节,构造上与有限域GF(2⁸)中的乘法逆元及一个可逆仿射变换相关[4]。行移位对各行分别循环左移0、1、2、3个字节,使同一列字节扩散到不同列;列混淆则把每列视为GF(2⁸)上的多项式并与固定多项式相乘;轮密钥加将状态与当轮子密钥逐字节异或[4]。
子密钥由主密钥经密钥扩展算法生成,按4字节字组织为密钥序列表[2]。循环轮数由密钥长度决定:128位密钥执行10轮,192位执行12轮,256位执行14轮[2]。
flowchart LR
A[明文分组 128位] --> B[轮密钥加]
B --> C[字节代换 SubBytes]
C --> D[行移位 ShiftRows]
D --> E[列混淆 MixColumns]
E --> F[轮密钥加 AddRoundKey]
F --> G{是否最后一轮}
G -- 否 --> C
G -- 是 --> H[末轮:省略列混淆]
H --> I[密文分组 128位]
发展历程
AES的直接前身是1977年被批准为联邦标准的数据加密标准(DES),其密钥长度为56位;随着计算能力和密码分析理论的发展,DES的安全性逐步失效,1998年已出现可在约56小时内破解DES密文的攻击[2]。为此NIST组织了公开的算法征集与评选,用数年时间甄选替代方案[1]。
1999年下半年,比利时密码学家Joan Daemen与Vincent Rijmen提交的Rijndael算法因在安全性、实现效率、适用性和简洁性等方面的表现被选为最终方案[2]。Rijndael这一名称取自两位设计者姓氏的组合,其源头可追溯到两人早先设计的Square,而Square又由SHARK演变而来[4]。
与采用Feistel结构的前任标准不同,Rijndael采用置换—代换网络结构,在软件和硬件上都便于实现且所需存储较少[4]。此后AES陆续被欧洲NESSIE计划和日本CRYPTREC计划推荐,并被国际标准化组织采纳为ISO/IEC 18033-3中的标准算法[5]。
应用
AES是FIPS认可的对称加密算法之一,也是现行首选的对称加密算法,其实现需经密码模块验证程序测试后方可列入合格实现清单[6]。在商业领域,它被广泛用于银行与金融交易、电信以及政府和私有信息的加密保护[2]。
在无线网络中,WPA2采用AES提供机密性,并以CCMP协议生成消息完整性校验,从而同时保障数据的保密与完整[7]。在存储设备上,XTS-AES模式被用作磁盘等介质加密的建议方案,2010年1月发布的SP 800-38E对这一模式作了批准[3]。
此外,AES的密钥包装方案,例如AES-KW与带填充的KWP,用于保护密钥自身的机密性与完整性,相关规范收录在SP 800-38F中[3]。
局限
AES属于分组密码,单个分组的长度只有128位,对长数据的加密必须借助工作模式,而模式若使用不当会引入额外风险。以广泛部署的AES-GCM为例,其96位随机数(nonce)的设定限制了随机生成nonce的做法,且存在明文长度上限,也不提供密钥承诺,短认证标签的安全性同样不宜依赖[3]。
AES与Rijndael并不完全等同:AES的分组固定为128位,密钥只能是128、192或256位;而Rijndael允许分组与密钥长度为32位的整数倍,范围从128位到256位,因此在需要更大分组时可选用后者,但这已超出AES标准的范围[4]。
从安全性评估的角度看,AES投入使用的年头相对较短,研究者的分析时间有限,理论上仍存在出现全新攻击手段的可能性[4]。此外,AES只解决数据的机密性等基础问题,身份认证、密钥分发与协商等环节需由其他密码机制配合完成[8]。
参见
-
数据加密标准 —— AES所要取代的早期对称分组密码标准,密钥长度较短。
-
分组密码工作模式 —— 规定AES等分组密码如何加密长数据、如何附加认证信息。
-
美国国家标准与技术研究院 —— 发布FIPS 197并维护AES相关标准与验证清单的机构。
-
对称密钥加密 —— AES所属的加密体制,加解密共用同一密钥。
-
有限域 —— AES的字节代换与列混淆运算所依赖的代数结构。
参考资料
- 图文详情——科普中国资源服务 - [科普中国]-高级加密标准 [引用日期2026-10-29]
- 用新的高级加密标准保持数据的安全性 [引用日期2026-10-29]
- Overview of the NIST Block Cipher [引用日期2026-10-29]
- [科普中国]-高级加密标准 [引用日期2026-10-29]
- 幾個國際標準分組密碼算法的安全性分析 [引用日期2026-10-29]
- des [引用日期2026-10-29]
- Advanced Encryption Standard [引用日期2026-10-29]
- authors [引用日期2026-10-29]