AES密码算法
本次课的主要内容
✓AES算法概述
✓AES算法加密过程
状态
S盒变换ByteSub
行移位变换ShiftRow
列混合变换MixColumn
轮密钥加变换AddRoundKey ✓AES算法解密过程与安全性
一般的轮数:
行移位变换ShiftRow
列混合变换MixColumn
轮密钥加变换AddRoundKey 最后一轮:
S盒变换ByteSub
行移位变换ShiftRow
轮密钥加变换AddRoundKey
1、AES的数据处理方式
①字节、字
②状态
2、状态
①加解密过程中的中间数据
②以字节为元素的4行Nb列的矩阵,或者二为数组。
③符号:Nb—明文数据长度;
数据块长度除以32,如128/32、192/32=6、256/32=8 Nk---密钥数据长度,同Nb
Nr—迭代圈数
Nb、Nk、Nr之间的关系:
2、S盒变换ByteSub(State)
①S盒变换是AES的唯一的非线性变换,是AES安全的关键。
②AES使用16个相同的S盒; DES使用8个不相同的S盒。
③AES的的S8位输入8位输出;DES的S盒有6位输入4位输出
例如:输入95,通过S盒变换,输出为2a
输出:
“00101010”,十六进制表示为“2a”
①行移位变换对状态的行进行循环移位。
②第0行不移位;第1行移C1字节,第2行移C2字节;第3行移C3字节。
③C1、C2、C3按表取值
①列混合变换把状态的列视为GF(28)上的多项上的多项式a(x),乘以一个固定的多项式c(x),并模x 4+1
b(x)=a(x)c(x) mod x 4
+1,其中c(x)=03x
3+01x 2+01x+02②列混合变换属于代替变换。
写成矩阵形式
结果如下:
①把圈密钥与状态进行2相加
②圈密钥根据密钥产生算法产
③圈密钥长度等于数据块长度
①轮密钥根据密钥产生算法,通过用户密钥得到轮密钥。
②密钥产生分两步进行:密钥扩展和轮密钥选择③密钥扩展将用户密钥扩展为一个扩展密钥。
④密钥选择从扩展密钥中选出圈密钥。
1、密钥扩展①密钥扩展产生扩展。
②用一个字元素的一维数组W[Nb*(Nr+1)] 表示扩展密钥。
③用户密钥放在数组最开始
的Nk 个字中。
④其它的字由它前面的字经过处理后得到⑤有Nk≤6和Nk >6 两种密钥扩展算法。
2、密钥选择圈密钥选择根据分组的大小,依次从扩展密钥中取出圈密钥。
第一步和最后一步都用了轮密钥加,因为任何没有密钥参与的变换都是容易被攻破。
DES的IP与IP-1都没有密钥参与。
AES的加密算法不是对合运算,加密算法和解密算法不同。
AES的巧妙之处:虽然解密算法与加密算法不同,但算解密算法的结构与加密算法的结构相同
把加密算法的基本过程变换成逆变换 便得到解密算法。
AES算法的解密过程依次进行逆字节代换,逆行移位,逆列混合和轮
密钥加。
✓InvByteSub ( )是ByteSub( )的逆变换,通过查逆S盒来实现。
✓InvShiftRow( )是ShiftRow( )的逆变换,对State的各行进行一定量的循环移位(Nb=4)。
第0行不移位;第1行循环右移1个字节;第2行循环右移2个字节;第3行循环右移3个字节。
✓InvMixColumn( )是MixColumn( )的逆变换。
✓AddRoundKey的逆就是它自己
✓圈密钥按相反顺序使用
可抗击穷举密钥的攻击
可抵抗穷举搜索攻击因为AES的密钥长度可变,针对128/192/256bit的密钥,密钥量为2128/2192/2256,足以抵抗穷举搜索攻击。
可抗击线性攻击,经4轮变换后,线性分析就无能为力了。
可抗击差分攻击,经8轮变换后,差分攻击就无从着手了。
不存在弱密码
该算法对密钥的选择没有任何限制,还没有发现弱密钥
✓AES算法概述
✓AES算法加密过程
状态
S盒变换ByteSub
行移位变换ShiftRow
列混合变换MixColumn
轮密钥加变换AddRoundKey ✓AES算法解密过程与安全性
谢谢大家。