- 1、本文档共134页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 注1: 目前对AES的批评主要集中于AES似乎有些过份简单,除s-盒外, AES密码其余的变换全部是线性的,它的数学结构可能会受到攻击,但是,也正是由于它的简单性,它能够在其开发期间进行详尽的安全性分析。 注2: 1. AES可以在包括8位和64位平台在内的各种平台及DSP上进行加密和解密。 2. AES算法的轮变换与s-盒是完全并行的,它这种固有的高并行性便于有效使用处理器资源,即使不以并行的方法实现该算法,它的软件效能也非常地好,它的密钥建立速度很快。 3. 另外,AES对ROM和RAM的需求量低,非常适合在空间有限的环境下单独进行加密或解密(但由于其加密、解密过程的不完全对称性,加密与解密时使用了不同的代码和s -盒,如果同时实现加密和解密,将会增加ROM需求量)。 */129 4、轮密钥加法 AddRoundKey( ): 轮密钥加法变换AddRoundKey( )简单地将输入阵列和一个轮密钥进行简单的按位异或(模2加)运算,轮密钥按顺序取自扩展密钥,而扩展密钥又是由原始工作密钥经过扩展后得到的。 AddRoundKey() 其中,(k0j , k1j, k2j, k3j )表示扩展密钥中的对应字(4个字节)。 (第 r×Nb+ j 个字 ) */129 (三)AES加密时的轮变换:(由三个部分组成) (1)初始轮密钥加法; (2)中间轮轮变换; (3)最后轮轮变换。其中轮变换由前面四个不同的变换组成。 设输入明文、密文数据块为IB、OB (128bit,16个字节) ,且共有Nr轮变换。Ii为第i轮输入,ERKi为第i轮加密密钥。 1. 初始轮密钥加法: I1= AddRoundKey(IB, ERK0) = IB⊕ ERK0 2. 中间轮变换 ( i =1~Nr-1) 用伪代码描述为: RoundTransformation(Ii, ERKi) ; { Temp1=ByteSub(Ii) ; 对每个字节均作相应替换 Temp2= ShiftRows(Temp1); Temp3= MixColumns(Temp2); Oi= AddRoundKey(Temp3, ERKi); } */129 3. 最后轮(第 Nr轮)变换 用伪代码描述为: FinalTransformation(INr, ERKNr) ; { Temp1=ByteSub(INr); Temp2= ShiftRows(Temp1); OB= AddRoundKey(Temp2, ERKNr); } 第Nr轮输入INr ByteSub ShiftRows AddRoundKey 第Nr轮输出OB 第Nr轮加密密钥ERKNr Temp1 Temp2 ERK0 IB AddRoundKey I1 第i轮输出Oi 第 i 轮输入Ii ByteSub ShiftRows MixColumns AddRoundKey 第i轮加密密钥ERKi Temp1 Temp2 Temp3 中间轮变换 ( i =1~Nr-1) AES加密时的轮变换(续) 加密算法用伪代码描述如右图 */129 (四)AES解密时的轮变换 AES的解密过程将使用前面四种交换的逆变换函数,即: InvSubBytes():对应函数SubBytes() InvShifRows():对应函数ShifRows() InvMixColumns():对应函数MixColumns() 固定多项式取为a (x) = {0B}x3 + {0D}x2 + {09}x + {0E} 对应4字节向量为( 0B 0D 09 0E),是MixColumns函数固定多项式 {03} x3+{01} x2+{01}x +{02}的逆多项式,模为(x4 + 1) ; AddRoundKey():与逆变换函数相同。 4种函数以与加密过程相反的顺序对由密文映射得到状态矩阵进行变换,当然解密时每轮变换用的轮密钥和加密时的一样,但顺序相反。加、解密过程应该对应为(下页): */129 第Nr轮输入INr ByteSub ShiftRows AddRoundKey 第Nr轮输出OB 第Nr轮加密密钥ERKNr Temp1 Temp2 ERK0 IB AddRoundKey I1 第i轮输出Oi 第 i 轮输入Ii ByteSub ShiftRows MixColumns AddRoundKey 第i轮加密密钥ERKi
文档评论(0)