信息安全基础4_第1页
信息安全基础4_第2页
信息安全基础4_第3页
信息安全基础4_第4页
信息安全基础4_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4对称密钥算法4.1概述4.2数据加密标准算法DES4.3高级数据加密标准AES4.4联合分组密码4.1概述分组密码:向量x到向量y上的一个映射

:x→y=

(x)x=(x0,x1,…,xN-1),y=(y0,y1,…,yN-1)乘积密码:t个函数(密码)F1,…,Ft的复合,其中每个Fi是一个换位或代替。如转轮机。Lucifer密码的代替-移位变换乘积密码:代替和简单线性变换来实现混合变换。例:ADFGVX乘积密码1.先造一个6*6方阵ADFGVXAK2WR1FD9B6CL5FQ7JPGXGEVY3ANV8ODH02XU4ISTM明文:PRODUCTCIPHERS变换(代替):(行标,列标)明文PFG(把原来明文的一个字母用RAG两个字母行、列来代替)第一次加密密文:FGAGVDVFXADGXVDGXFFGVGGAAGXG2.移位变换:构造一个移位矩阵,约定一个密钥密钥:DEUTSCH把第一次加密的密文按行写入4*7矩阵,前边加上密钥,密钥字母按其在字母表中出现的次序编号。DEUTSCH2376514FGAGVDVFXADGXVDGXFFGVGGAAGXG第二次加密(移位法):按密钥字母在字母表中的顺序一列一列写出。密文:DXGXFFDGGXGGVVVGVGFGGDFAAAXA4.2数据加密标准算法DES背景算法描述算法概述:Li=Ri-1Ri=Li-1⊕f(Ri-1,Ki)F函数:E变换按位异或S盒代替P变换密钥PC-1C0D0循环左移循环左移C1D1PC-2循环左移循环左移C2D2PC-2PC-2循环左移循环左移C16D16……K1K2K16密钥变换:初始变换IP:在第一圈之前(对明文移位)密钥变换:PC-1:64位密钥去掉8的倍数位循环左移:56位分成各28位的两部分,分别循环左移1或2位PC-2:从56位中选出48位,为本圈子密钥扩展变换E:将右半部分从32位扩展到48位S盒代替:对48位中间结果做代替操作。8个小S盒,每个有6位输入和4位输出设输入为b1b2b3b4b5b6,则b1b6为行号,b2b3b4b5为列号例:S6的输入110011,行11(3),列1001(9)处为14,输出为1110P变换:换位操作,P变换的结果与上一圈的左半部分异或,成为新的右半部分,开始下一圈逆初始变换IP-1(移位)举例:设M=0x0123456789abcdef,K=0xfedcba9876543210,求L1和R1。K:111111101101110010111010100110000111011001010100001100100001000064位PC-1(K):00001111001100110101010111110101010100110011000011111111表4.256位循环左移:0001111001100110101010111110101010100110011000011111111056位K1(PC-2):111101001111110110011000011001001011011001011010表4.448位M:0000000100100011010001010110011110001001101010111100110111101111IP(M):1100110000000000110011001111111111110000101010101111000010101010E(R0)011110100001010101010101011110100001010101010101E(R0)⊕K1

100011101110100011001101000111101010001100001111S盒代替:11000001101000001100100010000100P变换:00010001100001001100000100100101R1:11011101100001000000110111011010L1:加密过程:L0R0

IP(<64位明文>)FORi=1TO16Li

Ri-1Ri

Li-1⊕f(Ri-1,Ki)<64位密文>

IP-1(R16L16)解密过程:R16L16

IP(<64位密文>)FORi=16TO1Ri-1

LiLi-1

Ri

⊕f(Li,Ki)<64位明文>

IP-1(L0R0)DES的安全性弱密钥弱密钥:每一圈的子密钥都相同。共4个。半弱密钥:只产生2种不同的子密钥,每种出现8次。共12个。可能弱密钥:只产生4种不同的子密钥,每种出现4次。共48个。互补密钥代数结构密钥长度圈数S盒的设计练习1.已知DES算法中S盒的输入为0x010101010102,求经过S盒代替后的输出结果。答案:11101001100111010010000000100010输入:000000010000000100000001000000010000000100000010S1:0行0列:14--1110S2:0行8列:9--1001S3:0行2列:9--1001S4:1行0列:13--1101S5:0行0列:2--0010S6:0行8列:0--0000S7:0行2列:2--0010S8:0行1列:2--00104.3高级数据加密标准AES背景AES的数学基础AES加密算法描述AES解密算法算法评价结论背景现代计算机速度的迅速提高,使得只有56bit密钥的DES算法的安全性面临着极大的挑战。1997年,NIST公开征求AES(AdvancedEncryptionStandard)作为2001年以后的数据加密标准。1998年8月,AES召开第一次候选会,确定15个算法入围。1999年3月,AES召开第二次候选会,有5个算法入围(MARS,RC6,Rijndael,Serpent和Twofish)。2000年10月,NIST选出由比利时的JoanDaemen和VincentRijmen提交的Rijndael算法作为AES。2001年夏天,NIST颁布新的信息处理标准(FIPS),将Rijndael算法作为AES。AES的数学基础(1)有限域GF(28)上定义了4种运算:“+”、“·”、“·

X”和带系数的多项式乘运算“

”。对字节b,用多项式表示为:

b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0“+”运算:两个字节相加,相当于字节的每一位简单异或。例:’57’+’83’=‘d4’(57)16=(01010111)2→x6+x4+x2+x+1(83)16=(10000011)2→x7+x+1’57’+’83’→(x6+x4+x2+x+1)+(x7+x+1)=x7+x6+x4+x2→(11010100)2=(d4)16AES的数学基础(2)“·”运算:选择一个不可约多项式:m(x)=x8+x4+x3+x+1,“·”运算为两多项式相乘后进行模m(x)的运算。例:’57’·’83’=‘c1’(57)16=(01010111)2→x6+x4+x2+x+1(83)16=(10000011)2→x7+x+1’57’·’83’→(x6+x4+x2+x+1)·(x7+x+1)mod(x8+x4+x3+x+1)=x13+x11+x9+x8+x7+x7+x5+x3+x2+

x+x6+x4+x2+x+1)mod(x8+x4+x3+x+1)

=(x13+x11+x9+x8+x6+x5+x4+x3+1)mod(x8+x4+x3+x+1)

=x7+x6+1→(11000001)2=(c1)16(x13+x11+x9+x8+x6+x5+x4+x3+1)mod(x8+x4+x3+x+1)

:x5+x3x8+x4+x3+x+1x13+x11+x9+x8+x6+x5+x4+x3+1x13+x9+x8+x6+x5x7+x6+1x11+x4+x3+1x11+x7+x6+

x4+x3AES的数学基础(3)“·

X”运算:

b

·

X=b7x8+b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0x求乘法逆元:因为m(x)是GF(28)上的不可约多项式,所以对于任意b(x),都可以用扩展的Euclid算法求a(x),使得

a(x)·

b(x)+c(x)·

m(x)=1因而a(x)·

b(x)modm(x)=1即b-1(x)modm(x)=a(x),m(x)=x8+x4+x3+x+1例:求(x7+x6+1)关于模m(x)=x8+x4+x3+x+1的乘法逆元。辗转相除:

x8+x4+x3+x+1=(x

7+x

6+1)(x+1)+(x

6+x

4+x

3)

x

7+x

6+1=(x

6+x

4+x3)(x+1)+(x

5+x

3+1)x

6+x

4+x

3=(x

5+x

3+1)x+(x

3+x)x

5+x

3+1=(x

3+x)x

2+1扩展的Euclid算法:1=(x

5+x

3+1)+(x

3+x)x

2

=(x

5+x

3+1)+((x

6+x

4+x

3)+(x

5+x

3+1)x)x

2

=(x

5+x

3+1)(1+x

3)+(x

6+x

4+x

3)x

2

=[(x

7+x

6+1)+(x

6+x

4+x

3)(x+1)](1+x

3)+(x

6+x

4+x

3)x

2

=(x

7+x

6+1)(1+x

3)+(x

6+x

4+x

3)(x

4+x

3+x

2+x+1

)=(x

7+x

6+1)(1+x

3)+[(x

8+x

4+x

3+x+1)+(x

7+x

6+1)(x+1)](x

4+x

3+x

2+x+1

)=(x

7+x

6+1)(x

5+x

3)+(x

8+x

4+x

3+x+1)(x

4+x

3+x

2+x+1

)因此,(x

7+x

6+1)-1mod(x

8+x

4+x

3+x+1)=x

5+x

3

AES的数学基础(4)带系数的多项式乘运算“

”:令a(x)=a3x3+a2x2+a1x+a0,b(x)=b3x3+b2x2+b1x+b0,其乘积

c(x)=a(x)·b(x)=c6x6+c5x5+c4x4+c3x3+c2x2+c1x+c0其中,c0=a0

·b0

c1=a1·b0

a0

·b1

c2=a2·b0

a1

·b1

a0

·b2

c3=a3·b0

a2

·b1

a1

·b2

a0

·b3

c4=a3·b1

a2

·b2

a1

·b3

c5=a3·b2

a2

·b3

c6=a3

·b3对(x4+1)取模得d(x):d(x)=a(x)

b(x)=d3x3+d2x2+d1x+d0其中,d0=a0

·b0

a3·b1

a2

·b2

a1

·b3

d1=a1·b0

a0

·b1

a3·b2

a2

·b3

d2=a2·b0

a1

·b1

a0

·b2

a3

·b3

d3=a3·b0

a2

·b1

a1

·b2

a0

·b3注意:ximod(x4+1)=ximod4AES加密算法描述加密算法概述一圈变换密钥扩展加密算法描述加密算法概述(1)AES算法与以往的基于Feistel网的密码(如DES)不同,算法的每一步都是可逆的。算法的明文块长可以为128bit,192bit或256bit,密钥也可以分别为128bit,192bit或256bit。算法有多圈相同的运算,每一圈包括4个步骤:非线性代替(S-盒)行循环左移(ShiftRow)列混合变换(MixColum)与扩展密钥相异或每一圈的子密钥从扩展密钥中取出密钥扩展过程同时应用了非线性变换和循环左移算法定义的所有运算都是在有限域GF(28)上进行的加密算法概述(2)算法中进行运算的单位包括:1个字节1列1行用字节数组表示的整个加密块加密块数组中,n可以是3,5,7,所代表的加密块分别表示128bit,192bit和256bit。ai,ja0,ja1,ja2,ja3,jai,0ai,1…ai,3a0,2a0,3a1,2a1,3a2,2a2,3a0,0a0,1a1,0a1,1a2,0a2,1a3,0a3,1a3,2a3,3…a0,n…a1,n…a2,n…a3,n加密算法概述(3)令Nr代表算法的圈数,Nk代表密钥长度/32,Nb代表块长度/32,则算法的圈数Nr的取值与Nk和Nb的关系为:除最后一圈不做列混合变换外,每一圈都经过4步相同的操作:NrNb=4Nb=6Nb=8Nk=4101214Nk=6121214Nk=8141414Round(State,RoundKey){ByteSub(State);//S-盒ShiftRow(State);//行循环左移MixColumn(State);//列混合变换AddRoundKey(State,RoundKey);//与扩展密钥相异或}一圈变换(1)非线性代替(S-盒):包括2步在GF(28)上求每个字节关于模m(x)的乘法逆元素,‘00’的逆元定义为‘00’;(000110001163,01011111007c)应用GF(2)上的一个仿射变换:一圈变换(2)每个字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论