截图
简介
这是aes加密ppt,包括了AES算法的整体结构,初始状态矩阵,AES算法举例学习,课堂思考题,字节代替,列混合举例课堂练习等内容,欢迎点击下载。
aes加密ppt是由红软PPT免费下载网推荐的一款课件PPT类型的PowerPoint.
高级加密标准AES AES算法的整体结构 Rijndael 由比利时的Joan Daemen和Vincent Rijmen设计,算法的原型是Square算法,经过修改后确定为高级数据加密标准AES. 典型的SPN结构 有较好的数学理论作为基础;结构简单、速度快 AES算法的整体结构 初始状态矩阵(state) 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盒 字节替代举例 行移位(ShiftRows) 状态阵列的4个行循环以字节为基本单位进行左移,而每行循环做移的偏移量是由明文分组的大小和所在行数共同确定,即列数Nb和行号确定。 行移位举例 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) 轮密钥加(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) 循环将K3按照字节为单位左移1字节,00 55 09 32变成了55 09 32 00 (2) 将55 09 32 00作为S盒的输入,查表得到输出 fc 01 23 63 (3) 计算常量Rcon[i]=(RC(j),00,00,00)异或,RC(j)=20=01=’01‘(十六进制) (4) 将01000000与fc 01 23 63 异或运算得fd 01 23 63 K4= 75 35 6B 99 XOR fd 01 23 63 = 88 34 48 fa 密钥扩展-RotByte Rcon的求法 RC[i] 求K5,K6,K7 三个子密钥计算如下: K(5)=K(i-4) XOR K(i-1)=K(1)XOR K(4)= 05613956 XOR 883448fa =8d5571ac ; K(6)=K(i-4) XOR K(i-1)=K(2)XOR K(5)= 73620531 XOR 8d5571ac =fe37749d ; K(7)=K(i-4) XOR K(i-1)=K(3)XOR K(6)= 00550932 XOR fe37749d =fe627daf ; 2) 轮密钥选取 轮密钥i(即第i 个轮密钥)由轮密钥缓冲字W[Nb* i]到W[Nb*(i+1)]给出: AES算法的密钥编排算法 192bit and 256bit 的密钥扩展 Key expansion Key expansion Nk<=6 若Nk<=6,则有: KeyExpansion(byte Key[4*Nk],W[Nb* (Nr+1)]) { for(i=0;i< Nk;i++) W[i]=(Key[4*i],Key[4*i+1],Key[4*i+2],Key[4*i+3]); for(i= Nk;i< Nb* (Nr+1);i++) { temp=W[i-1]; if(i% Nk= =0) temp=SubByte(RotByte(temp))^Rcon[i/ Nk]; W[i]=W[i- Nk]^temp; } } Key expansion Nk=8时的密钥扩展 KeyExpansion(byte Key[4*Nk],W[Nb* (Nr+1)]) { for(i=0;i< Nk;i++) W[i]=(Key[4*i],Key[4*i+1],Key[4*i+2],Key[4*i+3]); for(i= Nk;i< Nb* (Nr+1);i++) { temp=W[i-1]; if(i% Nk= =0) temp=SubByte(RotByte(temp))^Rcon[i/ Nk]; else if(i% Nk= =4) temp=SubByte(temp); W[i]=W[i- Nk]^temp; } } 轮数(Round)的不同取值 AES 的密钥调度 解密 轮密钥加 与加密时相同 逆行移位 逆列混合 逆字节替代(逆S盒) 作业 1 对于分组长度128比特,密钥长度128比特的AES算法,若已知明文是各自名字组成,密钥是学号,若不够则填充,填充方法为(除最后一个字节外)均以0x00填充,填充序列的最后一个字节记录填充序列的长度。 求第一轮字节代换、行移变换和列变换的输出. 例如 王二是“WANG ER”, 学号是“2013122000” W870x57 A650x41 N780x4E G710x47 space320x20 E690x45 R820x52 0500x30 1 500x31 2 500x32 3500x33 明文:0x57414E47324552000000000000000007; 密钥:0x32303133313232303030000000000006. 后面内容仅供参考 基本运算 在AES中选择的不可约多项式是p(x) = x8 + x4 + x3 + x + 1,余式的次数至多是7次,共28=256个多项式,这256个余式构成了一个有限域。 字节在GF(28)上的表示 字节b用二进制表示为b=b7b6b5b4b3b2b1b0为有限域GF(28)上的域元素,若用多项式表示,bi可看作是多项式的系数,bi∈{0,1},则字节b对应多项式为: b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0 例如:字节‘57’ (十六进制数)对应的二进制为01010111,为GF(28)上域元素,字节‘57’对应的多项式为x6+x4+x2+x+1。 GF(28)上两个域元素的和 GF(28)上两个域元素的和对应的多项式仍然是一个次数不超过7的多项式,其多项式系数等于两个元素对应多项式系数的模2加,即域元素对应二进制按位异或运算。 例如:‘57’+‘83’= ‘D4’, 用多项式表示为: (x6+x4+x2+x+1)+(x7+x+1)≡x7+x6+x4+x2(modp(x)) 用二进制表示为:01010111⊕10000011=11010100 由于每个元素的加法逆元等于自己,所以有限域减法和加法相同。 GF(28)上两个域元素的乘 要计算GF(28)上域元素的乘法,必须先确定一个GF(2)上的8次不可约多项式;GF(28)上两个元素的乘积就是这两个多项式的模乘。 在Rijndael密码中,这个8次不可约多项式确定为: p(x)= x8+x4+x3+x+1 它的十六进制表示为‘11B’。 例如,‘57’·‘83’=‘C1’可表示为以下的多项式乘法: (x6+x4+x2+x+1)·(x7+x+1)≡x7+x6+1(mod p(x)) x乘法 GF(28)上还定义了一个运算,称之为x乘法,其定义为 x·b(x)≡b7x8+b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0x(mod p(x)) 如果b7=0,求模结果不变,否则为乘积结果减去p(x),即求乘积结果与p(x)的异或。由此得出x(十六进制数‘02’)乘b(x)可以先对b(x)在字节内左移一位(最后一位补0)。 若b7=1,则再与‘1B’(其二进制为00011011)做逐比特异或来实现,而任意常数乘法可以通过对中间结果相加实现。 b7=0实例举例 02 ·54 =(0000 0010)·(0101 0100) =(x)·(x6+x4+x2) =x7+ x5+x3 =x7+ x5+x3 ≡ x7+ x5+x3 (mod p(x)) =(1010 1000) 由上面的规则:相当于把字节(0101 0100)左移一位即得(1010 1000)(最后一位补0)。 b7=1实例举例 02 ·D4=(0000 0010) ·(1101 0100) =(x) ·(x7+x6+x4+x2) (modp(x)) =x8+x7+ x5+x3(modp(x)) ≡(x4+x3+x+1)+x7+x5+x3(modp(x)) ≡ x7+x5+x4+x+1(modp(x)) 多项式 x7+x5+x4+x+1映射为二进制即为:(1011 0011) 由上面的规则:先把(1101 0100) 在字节内左移一位即得(10101000)(最后一位补0),因为b7=1,故(1010 1000)再与(0001 1011)异或得(1011 0011) ‘57’·‘13’ ‘57’·‘02’=‘AE’; ‘57’·‘04’= ‘AE’ ·‘02’ =‘47’; ‘57’·‘08’= ‘47’ ·‘02’ =‘8E’; ‘57’·‘10’= ‘8E’ ·‘02’ =‘07’; ‘57’·‘13’=‘57’·(‘01’ ⊕ ‘02’ ⊕‘10’) =‘57’⊕‘AE’ ⊕‘07’=‘FE’。 因为‘13’=‘01’ ⊕ ‘02’ ⊕‘10’=‘01’ +‘02’ +‘10’ GF(28)上域元素的乘法逆元 在有限域GF(28)中,域元素的乘法满足交换律,且有单位元,并且每个域元素都有乘法逆元。在GF(28)中求乘法逆元可利用多项式的扩展的欧几里得算法计算出来。 求次数小于8的非零多项式b(x)的乘法逆元,首先利用多项式的扩展欧几里得算法得出两个多项式a(x)和c(x),使得满足b(x)a(x)+p(x)c(x)=1, 即满足a(x)·b(x) ≡1 mod p(x),因此a(x)是b(x)的乘法逆元。 乘法逆元举例 求GF(28)上域元素,‘F5’(十六进制)的乘法逆元。 (1)‘F5’用对应二进制为11111001,则用多项式表示为b(x)=x7+x6+x5+x4+x2+1,然后计算两个多项式a(x)和c(x)满足 (x7+x6+x5+x4+x2+1)·a(x)+p(x)c(x)=1 (2) 采用多项式的扩展欧几里得算法按照如下步骤计算: 因为: (x8+x4+ x3+x+1)=(x7+x6+x5+x4+x2+1)(x+1)+ x2 (x7+x6+x5+x4+x2+1)=x2(x5+x4+x3+x2+ 1)+1 1=(x7+x6+x5+x4+x2+1)-x2(x5+x4+x3+x2+ 1) =(x7+x6+x5+x4+x2+1)-[(x8+x4+x3+x+1)-(x7+x6+x5+x4+x2+1)( x+1)](x5+x4+x3+x2+1) =(x8+x4+x3+x+1)(x5+x4+x3+x2+1)-(x7+x6+x5+x4+x2+1)[1+(x+1)(x5+x4+x3+x2+1)] =x8+x4+x3+x+1)(x5+x4+x3+x2+1)-(x7+x6+x5+x4+x2+1)(x6+x2+x) S盒和逆S盒的关系 一个表是另一个表的反查 S盒详解-SubBytes变换的两个步骤 步一: 把S盒中的每个字节映射为它在有限域GF(28)中的乘法逆 步二: 例子 “95”的乘法逆为“8a”,二进制表示为“10001010” 结果为“00101010”,十六进制表示为“2a” 以输入“F5”为示例 1)其输入十六进制“F5”对应二进制为“11110101”,多项式为(x7+x6+x5+x4+x2+1),求其模f(x)=x8+x4+x2+x+1的逆,即求b(x): (x7+x6+x5+x4+x2+1)·b(x)≡1(mod f(x)) 通过多项式欧几里得扩展算法,求解得: (x7+x6+x5+x4+x2+1)(x6+x2+x)≡1 mod(x8+x4+x3+x+1) 即:(x7+x6+x5+x4+x2+1)模(x8+x4+x3+x+1)的乘法逆元为x6+x2+x,即 ‘F5’的乘法逆元为‘46’ 实例 2)十六进制‘46’其二进制为01000110,进行第2步的仿射变换,代入矩阵运算运行: Subbyte原理 (加密时) 输入为m,其modp(x)的逆为m’ 仿射变换y=Am’+b (解密时) 则Am’=y-b A-1Am’=m’ =A-1(y-b)=A-1y-A-1b=A-1y+A-1b 再求m’ modp(x)的逆为m 仿射变换中的矩阵 A为: 仿射变换中的两矩阵的关系 验证A-1b 列混合中的两个矩阵 一起看看标准fips-197 DES扩散 课堂练习,R0前四个比特全部翻转,一轮加密的扩散情况如何? 第一轮扩散 第一轮扩散 第二轮扩散 第二轮扩散 DES扩散 DES扩散 思考:L0的一块数据(4比特)要几轮才能影响所有的数据块? S盒的扩散和混淆情况如何? 第一轮扩散 第二轮扩散 AES扩散 如果只有一轮,尝试破解!
展开