二、算法框架
三、数学基础
四、AES的基本变换
1.AES的数据处理方式
- 按字节处理
- 按字处理
- 按状态处理
2.状态
- 加解密过程中的中间数据
- 以字节为元素的矩阵,或者二维数组。
符号:
- Nb——明密文所含的字数
- Nk——密钥所含的字数
- Nr——迭代轮数
- 比如:当Nb=4的状态
- 当Nk=4的状态
- 比如:当Nb=4的状态
- Nb、Nk、Nr之间的关系:
3.轮变换
- 注意第一张PPT为标准轮函数变换,第二张为非标准轮函数变换。二者的区别在于,后者轮变换过程中没有列混合变换。
4.S盒变换ByteSub(State)
- S盒变换是AES的唯一的非线性变换,是AES安全的关键。
- AES使用16个相同的S盒,DES使用8个不相同的S盒。
- AES的S盒有8位输入8位输出,是一种非线性置换。DES的S盒有6位输入4位输出,是一种非线性压缩。
5.行移位变换ShiftRow(State)
6.列混合变换 MixColumn(State)
7.轮密钥加变换 AddRoundKey()
- 把轮密钥与状态进行模2相加
- 轮密钥根据密钥生成算法产生
- 轮密钥长度等于数据块长度
五、轮密钥的生成
- 加密迭代中每一轮需要一个轮密钥参与加密
- 轮密钥根据产生算法通过用户密钥得到
- 密钥产生分两步进行:
密钥扩展
轮密钥选择 - 密钥扩展将用户密钥扩展为一个扩展密钥
- 密钥选择从扩展密钥中选出轮密钥。
密钥扩展
- 密钥扩展产生扩展密钥
- 用一个字元素的一维数组W[Nb*(Nr+1)] 表示扩展密钥
- 用户密钥放在该数组最开始的Nk个字中
- 其它的字由它前面的字经过处理后得到。
- 分为Nk<=6和Nk>6两种扩展算法。
1.密钥扩展
2.轮密钥选择
六、AES的加密算法
七、AES的基本逆变换
- AES的加密算法不是对合运算,解密算法与加密算法不同。
- AES的巧妙之处:虽然解密算法与加密算法不同,但是解密算法与加密算法的结构相同。
- 把加密算法的基本运变换成逆变换,便得到解密算法。
AES的各个基本变换都是可逆的。
-
轮密钥加变换的逆就是其本身
-
行移位变换的逆是状态的后三行分别移位Nb-C1,Nb-C2,Nb-C3个字节。
-
列混合变换的逆
因为列混合变换是把状态的每一列都乘以一个固定的多项式c(x):
所以列混合变换的逆就是状态的每列都乘以c(x)的逆多项式d(x):
4.S盒变换的逆
5.解密的密钥扩展
-
解密的密钥扩展与加密的密钥扩展不同;
-
解密的密钥扩展定义如下:
- 加密算法的密钥扩展。
- 把InvMixColumn应用到除第一和最后一轮外的所有轮密钥上。
6.逆轮变换
- 标准逆轮变换
- 最后一轮的逆变换
八、AES的解密算法
- 加密算法不是对合运算:
- 解密算法的结构与加密算法的结构相同
- 解密中的变换为加密算法变换的逆变换,且密钥扩展策略稍有不同。
解密算法:
九、AES的实现
- 适应多种环境,高效,方便是AES的突出优点。
- 由于AES的基本运算由ByteSub,MixColumn,ShiftRow和AddRoundKey构成,因此AES的实现主要是这些变换的实现。
- 其中ShiftRow和AddRoundKey的实现比较容易,因此主要是ByteSub和MixColumn变换的实现问题。
- 有了这些基本运算的实现,便可以有效地实现整个AES。
实现方法:
- 硬件
- 软件
软件方法:
- 基于算法描述
- 基于查表
1.基于算法描述的软件实现
- AES的算法描述是一种程序化的描述,便于实现。
- AES的四种基本变换都比较简单,便于实现
- 用C语言仿照算法描述,可以方便地实现
- 这种实现的速度不是最快的
2.基于查表的软件实现
- 用于查表实现算法是一种高效的软件设计方法。
- 时空折换是信息科学的基本策略
- 用查表实现算法,就是用空间换取时间。
- 目前计算机系统的存储空间大,而且便宜,为查表实现算法提供了物资基础。
S盒的查表实现
- 实现S盒变换的最快方法是,直接计算出S盒的变换的结果,并且造表存储,使用时直接查表。因为ByteSub变换是字节函数,所以表的规模不大,只含有256个元素。
- 注意:解密时用的是S盒,因此共需要造两个S盒表。
列混合变换MixColumn的查表实现
逆列混合变换Inv_MixColumn的查表实现
轮函数的查表实现
- 整个轮函数都可以通过查表和一些简单的运算来实现。
十、AES的安全性
能够抵抗目前所有的已知攻击
- 穷举攻击
- 差分攻击
- 线性攻击
- Square攻击
- 侧信道攻击
目前已有低于穷举复杂度的攻击方法,但是都还不能对AES造成本质的威胁。
1.AES的体现
- AES体现商农的密码设计理论
- 体现了公开设计原则
- AES代表当今商业密码的最高水平
2.AES需要经过实际应用的检验
- AES的大规模实际应用已经开始
- 从目前的应用来看AES是安全的
- 时间是检验AES密码安全的唯一标准。