AES(高级加密标准)是一种对称分组加密算法,其核心原理是通过多轮 “混淆”(打乱数据与密钥的关系)和 “扩散”(将数据的微小变化扩散到整个密文)操作,将明文转化为无法直接解读的密文。以下从整体流程、核心操作、密钥扩展等方面详细解析其加密原理:
AES 的加密过程基于两个核心参数:
- 分组长度:固定为 128 位(16 字节)。无论明文长度如何,都会被分割为 128 位的块(最后一块不足时用标准填充方式补齐,如 PKCS#7)。
- 密钥长度:支持 128 位、192 位、256 位(对应 AES-128/192/256),密钥长度决定加密轮数(10 轮、12 轮、14 轮),轮数越多,安全性越高。
AES 加密是一个多轮迭代过程,每轮包含 4 个核心操作(部分轮次略有差异)。以 128 位明文块为例,流程如下:
- 将明文块转换为 16 字节的 “状态矩阵”(4 行 ×4 列,每个元素 1 字节);
- 初始轮:执行 “轮密钥加”(AddRoundKey),将原始密钥的扩展密钥与状态矩阵混合;
- 多轮迭代:根据密钥长度执行 10/12/14 轮 操作,每轮包含字节替换(SubBytes)、行移位(ShiftRows)、列混合(MixColumns)、轮密钥加(AddRoundKey);
- 注意:最后一轮不执行 “列混合”(MixColumns),仅保留前 3 个操作,确保加密和解密的对称性;
- 迭代结束后,将状态矩阵转换为 128 位密文块。
AES 的安全性依赖于 4 个操作的协同作用,通过数学变换实现 “混淆” 和 “扩散”:
作用:将状态矩阵中的每个字节替换为另一个字节,打破明文与密文的线性关系(混淆)。
操作方式:
- 每个字节(8 位)被视为 “伽罗瓦域 GF (2⁸)” 中的元素(可理解为一个 0-255 的整数);
- 通过 “逆元计算” 和 “仿射变换” 两个步骤,将字节映射到一个预设的 8×8 表格(S 盒)中的对应值。例如:S 盒中 0x00→0x63,0x01→0x7c, etc.
- S 盒是固定且公开的,其设计确保任何输入的微小变化都会导致输出的显著差异(雪崩效应)。
作用:将状态矩阵的行进行循环移位,将单个字节的变化扩散到整个矩阵(扩散)。
操作方式(4 行 ×4 列矩阵):
- 第 0 行:不移位(保持原样);
- 第 1 行:左移 1 位(每行 4 字节,左移后第 1 行第 0 列元素移到第 1 列,第 1 列→第 2 列, etc.);
- 第 2 行:左移 2 位;
- 第 3 行:左移 3 位。
- 示例:移位前第 1 行是 [a, b, c, d],移位后变为 [b, c, d, a]。
作用:将状态矩阵的列视为伽罗瓦域中的多项式,通过乘法运算混合列内元素,使单个字节的变化影响整个列(进一步扩散)。
操作方式:
- 每列的 4 个字节(视为多项式 a (x) = a₀ + a₁x + a₂x² + a₃x³)与固定多项式 c (x) = 0x02 + 0x01x + 0x01x² + 0x03x³ 在 GF (2⁸) 中相乘;
- 乘法结果生成新的列元素,例如:新列第 0 个字节 = (2×a₀) ⊕ (1×a₁) ⊕ (1×a₂) ⊕ (3×a₃)(⊕为异或)。
- 最后一轮不执行此操作,确保解密时可通过逆列混合(InvMixColumns)还原。
作用:将轮密钥与状态矩阵进行异或(XOR)运算,将密钥信息注入数据(每轮注入不同的轮密钥)。
操作方式:
- 轮密钥是通过 “密钥扩展” 生成的 128 位密钥(与分组长度相同);
- 状态矩阵的每个字节与轮密钥中对应位置的字节进行异或(例如:状态 [0][0] ⊕ 轮密钥 [0][0], etc.)。
- 异或运算的特性(可逆,a⊕b⊕b=a)确保解密时用相同轮密钥即可还原。
原始密钥(128/192/256 位)需通过 “密钥扩展算法” 生成多轮密钥(轮数 + 1 个),例如:
- AES-128:10 轮加密,需 11 个轮密钥(初始轮 + 10 轮);
- AES-256:14 轮加密,需 15 个轮密钥。
扩展规则:
- 前 N 个轮密钥(N = 原始密钥长度 / 32)直接取自原始密钥;
- 后续轮密钥通过前一个轮密钥的 “旋转”“S 盒替换”“轮常量异或” 生成,确保轮密钥之间关联性低、随机性高。
解密是加密的逆过程,每一步对应加密的逆操作:
- 字节替换 → 逆字节替换(InvSubBytes,使用逆 S 盒);
- 行移位 → 逆行移位(InvShiftRows,右移对应位数);
- 列混合 → 逆列混合(InvMixColumns,使用逆多项式);
- 轮密钥加 → 相同(异或可逆)。
解密使用与加密相同的轮密钥,但顺序相反(最后一轮轮密钥先使用)。
AES 通过多轮迭代的混淆(SubBytes)和扩散(ShiftRows+MixColumns),结合密钥的动态注入(轮密钥加),使明文与密文的关系变得极其复杂 —— 即使明文只有 1 位变化,密文也会有大约一半的位变化(雪崩效应)。这种设计让攻击者无法通过分析明文 - 密文对推导出密钥,也难以通过数学方法破解(目前无有效密码分析攻击)。正是这种严谨的数学结构和多轮变换,使 AES 成为全球公认的最安全、最高效的对称加密标准之一。
Xikuer 希葵锦尚网络