基本概念
- 数据长度可变:
密钥长度可以为128、192、 256位,对应的核心算法迭代次数为10、12、14次 - 明文分组用字节(8位)为单位的正方形矩阵(4字节 * 4行 = 128位)描述,称为状态矩阵。在算法的每一轮中,状态矩阵的内容不断发生变化,最后的结果作为密文输出。
- AES中一般将明文和密文分组长度固定为128位
AES算法
密钥扩展运算
通过密钥扩展算法和圈密钥选择算法得到子密钥矩阵。
初始轮密钥加运算
将明文矩阵和子密钥矩阵的对应字节进行逐比特异或运算。
轮函数sp结构迭代(三代替、一换位)
- 字节代换(S盒变换、非线性变换)
S盒为一个16*16=256的表格,表格中的元素都为一个字节的数据。(恰好255是一个字节能表示的最大数字)
此时状态矩阵内每个元素都为一个字节(8位)的数据,取高四位为行、低四位为列,在给出的S盒中选取对应行和列的数据作为新数据。 - 行移位
状态矩阵每行都进行循环左移,第i行左移i个字节(i=0,1,2,3) - 列混淆
逐列变换! 引入一个固定矩阵,固定矩阵中的行中的元素和状态矩阵中的列中对应的元素相乘后异或,(第一行乘第一列得到第一列第一个元素,第二行乘第一列得到第一列第二个元素依次类推,第一列算成后再从固定矩阵第一行和状态矩阵第二列开始算第二列)
最后一轮不进行列混淆变换 - 轮密钥加
将明文矩阵和子密钥矩阵的对应字节进行逐比特异或运算,和初始轮密钥加的运算一样。
解密
逆运算
安全性
- 不存在弱密钥和半弱密钥
- 控攻击能力:可抗击穷举密钥的攻击,密钥长度可变128位的密钥,密钥量为2^128、 可抗击线性攻击、 可抗击差分攻击(选择明文攻击)
- 适应能力强