当前位置:文档之家› 409 分组密码--AES算法

409 分组密码--AES算法

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算法解密过程与安全性
谢谢大家。

相关主题