AES加密算法
AES(Advanced Encryption Standard,高级加密标准)是一种对称加密算法,用于保护电子数据的安全。它由美国国家标准与技术研究院(NIST)于2001年发布,取代了过时的DES(Data Encryption Standard)。
AES基本特性
- 对称加密:加密和解密使用相同的密钥。
- 分组加密:每次处理固定长度的数据块(128位,即16字节)。
- 密钥长度:支持128位、192位和256位密钥,对应不同安全性级别。
- 轮数:根据密钥长度决定轮数:
- 128位密钥:10轮
- 192位密钥:12轮
- 256位密钥:14轮
二、AES加密流程
1. 初始变换
2. 主轮循环
SubBytes(字节代换)
通过16 × 16 的S盒(非线性替换表)将每个字节替换为另一个字节,提供混淆
ShiftRows(行移位)
将状态矩阵(4×4字节)的每一轮循环左移不同偏移量(第0行:不移位、第1行:左移1字节、第2行:左移2字节、第3行:左移3字节)实现扩散。
MixColumns(列混淆)
对输入的矩阵左乘一个给定的4×4矩阵,进一步增加扩散性
AddRoundKey(轮密钥加)
当前状态矩阵与轮密钥按位异或
3.最终轮
最后一轮仅执行字节代换、行移位、轮密钥加
4.密钥扩展
从主密钥生成多轮子密钥(每个子密钥128位):
- 初始分组
主密钥按列填充为4×N矩阵(N=4/6/8对应128/192/256位密钥)。
以128bit密钥为例:
- 主密钥(128bit)被划分为4个32bit字,记为w[0] ~ w[3]
- 需要生成44个字(即4 × (10+1)),供11轮含初始轮使用
- 递归生成后续字
- 情况1:若i不是4的倍数,则w[i] = w[i-4] ⊕ w[i-1]
- 情况2:若i是4的倍数,则w[i] = w[i-4] ⊕ T(w[i-1])
T操作
- 字循环:将一个字中的4个字节循环左移1个字节。即 将输入字[b0,b1,b2,b3]——->[b1,b2,b3,b4]
- 字节代换:对字循环的结果使用S盒进行字节代换
- 轮常量异或:前两步的结果同轮常量Rcon[j] 进行异或,其中j表示轮数
- 生成子密钥
扩展后的44个字接每4个分组,形成11个子密钥
AES优缺点
- 优点
- 安全性高:AES 被认为是最强的加密标准之一,对各种攻击,尤其是暴力攻击的抵抗力强。较长的密钥长度,如 AES-256,几乎不受当前技术的暴力攻击影响,能为数据提供高级别的安全保护。
- 高效性:在硬件和软件环境中都能高效实现,加密和解密速度快,能够快速处理大量的数据,适合对实时性要求较高的加密场景,如无线通信、云存储、数据库、移动应用程序等中的数据加密。
- 灵活性:支持 128、192 和 256 位的密钥大小,用户可根据所需的速度和安全性平衡选择密钥长度。
- 适应性强:具有跨行业和设备的适应性,已成为全球标准,被广泛应用于各个行业,如金融、医疗保健、政府和技术等领域,能为各种设备和系统提供可靠的安全性。
- 劣势:
- 密钥管理复杂。因为加密和解密使用同一密钥,在多用户通信场景下,密钥的生成、注入、存储、管理、分发等难度较大,一旦密钥泄露,加密信息将面临风险
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 懒懒洋洋的blog!
评论