- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高级加密标准AES
AES算法的整体结构
Rijndael 由比利时的Joan Daemen和Vincent Rijmen设计,算法的原型是Square算法,经过修改后确定为高级数据加密标准AES.
典型的SPN结构
有较好的数学理论作为基础;结构简单、速度快
Key Length
(Nk words)
Block Size
(Nb words)
Number of Rounds (Nr)
AES-128
4
4
10
AES-192
6
4
12
AES-256
8
4
14
AES算法的整体结构
轮密钥加
字节替代
行移位
列混合
初始状态矩阵(state)
AES算法的分组长度固定为128比特,以字节为基本单位转换为状态字节,依顺序 a00, a10, a20, a30, a01, … a23, a33,前4个字节组成第1列,后四个字节组成第2列,依次类推,AES算法明文分组可以构成一个4×4的字节矩阵,如图所示3-23,加密结束时,输出也是从状态字节中按相同的顺序提取。
AES算法举例学习
下面我们以一个128位块为例,开始分别介绍AES加密算法基本变换的具体过程。
为了表达简洁,下面的中间结果都用16进制来表示。则128比特二进制示例块用16进制表示则对应为0x 80 5E 6A 36 53 25 3A 66 63 35 69 03 20 6C 28 06
课堂思考题
例如“good good study !day day up !”采用AES算法,明文输入初始状态矩阵?
初始密钥
实例:设初始密钥(初始子密钥矩阵与明文类似
0x 75 35 6B 99 05 61 39 56 73 62 05 31 00 55 09 32
轮密钥加
⊕
=
此处轮密钥是初始密钥,轮密钥长度等于分组长度。
字节代替(SubBytes)
字节变换(SubBytes)使用一个S盒,S盒是一个16×16的矩阵,如表所示。其非线性置换为:输入的列的每个元素用来指定S盒的地址:前4位指定S盒的行,后4位指定S盒的列。行和列所确定S盒位置的元素取代输入矩阵中相应位置的元素,例如“03” ,行0,列3,因此输入“03” ,输出“7B”。
字节替代所用S盒
字节替代举例
在上面的示例中,第1个基本元素为”F5”,它将被S盒行为第”F行”、列为第”5”列的元素“E6“代替,其余的输出也用相同的方法确定。
行移位(ShiftRows)
状态阵列的4个行循环以字节为基本单位进行左移,而每行循环做移的偏移量是由明文分组的大小和所在行数共同确定,即列数Nb和行号确定。
AES的Nb固定为4,下面两行针对Rijndael算法
行移位举例
3)列混合(MixColumn)
列混合变换中,将状态阵列的每列视为GF((28)4)上的多项式,再与一个固定的多项式c(x)进行模x4+1乘法. Rijndael的设计者给出的c(x)为(系数用十六进制数表示):
c(x)=‘03’x3+‘01’x2+‘01’x+‘02’
列混合
列混合(MixColumns)
列混合是可以表示为矩阵相乘来实现
列混合举例
列混合举例
列混合举例
GF(28)的多项式乘法,约化多项式为
m(x)=x8+x4+x3+x+1
例:57x乘以83x
(x6+x4+x2+x+1) × (x7+x+1)
= (x13+x11+x9+x8+x7)^ (x7+x5+x3+x2+x)^ (x6+x4+x2+x+1)
= x13+x11+x9+x8+x6+x5+x4+x3+1
=x7+x6+1 mod m(x)
列混合举例课堂练习
课堂练习:列混合运算(128比特分组)
轮密钥加(AddRoundKey)
将列混合的状态矩阵与子密钥进行XOR逻辑运算(子密钥是从初始密钥派生而来的),即将轮密钥与状态按比特异或。轮密钥是通过密钥调度过程从密码密钥中得到的,轮密钥长度等于分组长度。
轮密钥加 举例
密钥排列
AES算法加密和解密过程中密码密钥(Cipher Key)同样以字节为基本单位转换,因而依顺序 k00, k 10, k20, k30, k01,…k23, k33,为类似地用一个4行的矩阵阵列来表示,前4个字节组成第1列,后四个字节组成第2列,依次类推,列数记为Nk 。
AES算法的密码密钥的列数Nk可以取的值为4,6,8,对应的密钥长度为128,192,256bits,因而密码密钥构成一个4×4、4×6、4×8的密钥字节矩阵。
密钥阵列状态
如图所示,192比特密钥的密码密钥矩阵,Nk为6。
密钥扩展 (NK=4)
初始密钥
实例:设初始密钥
75 35 6B 99 05 61 39 56
73 62 05 31 00 55 09 32
求K4
(1) 循环将
文档评论(0)