1、Agenda1.DES algorithm2.AES algorithm3.DES/AES work-modes4.SHA algorithmAgenda1.DES algorithm2.AES algorithm3.DES/AES mode4.SHA algorithm5.SE module Feature list1. 1 DES背景介绍 1977年1月,美国政府颁布:采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DES-Data Encryption Standard)。 DES (Data Encryption Standard),是IBM在上个世纪70年代开发的单密钥对称
2、加解密算法。该算法利用一个56+8奇偶校验位(第8, 16, 24, 32, 40, 48, 56, 64位)=64位的密钥对以64位为单位的块数据进行加解密。1. 2 DES工作原理DES算法是这样工作的:如Mode为加密,则用Key 去把数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后
3、,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融交易网络的流行做法1.3 DES加密算法64bitRound key1st step:Initial permutationFeistel function1. DES Cipher2nd step:16-round 迭代加密迭代加密3st step:L15和和R15互换互换4st step:IP-11.3 DES加密算法1. DES Ciphern IP
4、permutationIP585042342618102605244362820124625446383022146645648403224168574941332517915951433527191136153453729211356355473931231570 1 1 0 0 0 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 1 0 1 0 1 1 1 0 0 0 00 1 1 1 0 1 0 1 0 1 1 1 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 1 0 0 1 011111111 10111000 01110110 010101110000000
5、0 11111111 00000110 10000011IP PermutationL0R01.3 DES加密算法1. DES Ciphern Feistel functionf 操作只是对操作只是对Ri-1进行操作进行操作1.3 DES加密算法1. DES Ciphern Feistel function Expansion100000000001011111111110 100000001101010000000110R0: 32bitExpansion00000000 11111111 00000110 10000011R0-E: 48 bit1.3 DES加密算法1. DES Ciph
6、ern Feistel function Substitution101111 011001 100000 110011101101111110 101101 001110E-R0与与K1异或异或substitution01110110001101000010011010100001B1B6=10, 选中第选中第2行行B2B3B5=1111,选中第,选中第15行行= 648 bit32 bit1.3 DES加密算法1. DES Ciphern Feistel function Substitution1.3 DES加密算法1. DES Ciphern Feistel function Perm
7、utation0 1 0 0 0 1 0 00 0 1 0 0 0 0 01 0 0 1 1 1 1 01 0 0 1 1 1 1 10 1 1 1 0 1 1 00 0 1 1 0 1 0 00 0 1 0 0 1 1 01 0 1 0 0 0 0 1Permutation1.3 DES加密算法1. DES Cipher0 1 0 0 0 1 0 00 0 1 0 0 0 0 01 0 0 1 1 1 1 01 0 0 1 1 1 1 1 L0R1 =L1 = R01.3 DES加密算法2. Key schedule1st step: PC-12nd step: 循环左移循环左移3st st
8、ep: PC-21.3 DES加密算法2.Key schedulen PC-1 已知主密钥为已知主密钥为64位(其中每个字节的第位(其中每个字节的第8位作为奇偶校验位)。略去奇偶校位作为奇偶校验位)。略去奇偶校验位,验位,DES的密钥由的密钥由64位减至位减至56位,对这位,对这56位密钥进行如下置换(位密钥进行如下置换(PC-1) 经置换后的经置换后的56位密钥,被分成左右两部分,每部分位密钥,被分成左右两部分,每部分28位。位。5749413325179158504234261810259514335271911360524436635547393123157625446383022146
9、615345372921135282012411101100 10011001 0 0 0 11 0 11 1 0 1110110100 01011000 1 0 0 0 111 0 0 11 0k=01110000 01110010 01101111 0110011101110010 01100001 01101101PC-1D0C01.3 DES加密算法2.Key schedulen 循环左移(循环左移(Rotate)轮12345678910111213141516位数11222222122222211.3 DES加密算法2.Key schedulen PC-2:将:将56位密钥压缩成位密
10、钥压缩成48位。位。1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932k1=00111101 10001111 11001101 00110111 00111111 0000011011101100 10011001 00011011 101110110100 01011000 10001110 0110循环左移循环左移+PC-21.4 DES解密算法n 在经过所有的替代、置换、异或和循环移动之后,获得了这样一个非常有用的性质:加密和解密可使用相同的算法。n DES解密
11、结构与其加密结构是对称相似的,使得能用相同的函数来加密或解密每个分组。n 二者的唯一不同之处是密钥的次序相反。这就是说,如果各轮的加密密钥分别是K1,K2,K3,K16,那么解密密钥就是K16,K15,K14,K1。为各轮产生密钥的算法也是循环的。密钥向右移动,每次移动位数为0,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1.1.4 DES解密算法1.4 DES解密算法子密钥子密钥子密钥IPIP子密钥子密钥子密钥子密钥Agenda1.DES algorithm2.AES algorithm3.DES/AES mode4.SHA algorithm5.SE module Featur
12、e list2.1 AES introduction 随着对称密码的发展,DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NIST公开征集新的数据加密标准,即AES1。 经过三轮的筛选,比利时Joan Daeman和Vincent Rijmen提交的Rijndael算法被提议为AES的最终算法。此算法将成为美国新的数据加密标准而被广泛应用在各个领域中。尽管人们对AES还有不同的看法,但总体说,AES作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和 灵活等优点。 AES设计有三个密钥长度:128,192,256位,
13、相对而言,AES的128密钥比DES的56密钥强1021倍2。AES算法主要包括三个方面:轮变化、圈数和密钥扩展。2.2 AES 加密算法 14 14 14 14 12 12 14 12 10rN4bN6bN8bN4kN6kN8kNPlaintext word = ?Key word = ?Round = ?1. Cipher 2.2 AES 加密算法Key schedule1st step2nd Step: 循环迭代循环迭代Round = ?2.1 AES introduction单轮操作步骤单轮操作步骤1. Cipher 2.1 AES introduction SubBytes2.1 A
14、ES introduction SubBytesS-box2.1 AES introduction ShiftRowsPlaintext = 4WordPlaintext = 6WordPlaintext = 8Word2.1 AES introduction ShiftRows2.1 AES introduction MixColumns2.1 AES introduction MixColumns2.1 AES introduction AddRoundKey AddRoundKey就就是将是将round key简单地与状态进行逐简单地与状态进行逐比特异或。比特异或。 round key由
15、由cipher key通过通过key schedule算法得到,算法得到, round key等于分组长度等于分组长度2.2 AES 加密算法2. Key Schedulen Key ExpansionRound key size = plaintext bock sizeExpanded key size = Round key size * (round + 1)2.2 AES 加密算法2. Key Schedulen Key ExpansionNk = 6 (key size = 4W/6W),下面以,下面以Nk=4为例,则为例,则round = 10 最前面的最前面的 Nk 个个wor
16、d是由种子密钥填充的。是由种子密钥填充的。 之后的每一个字之后的每一个字 Wj 等于前面的字等于前面的字 Wj-1 的与的与 Nk 个位置之前的字个位置之前的字 Wj-Nk的异或。的异或。 而且对于而且对于 Nk 的整数倍的位置处的字,在异或之前,对的整数倍的位置处的字,在异或之前,对 Wj-1 的进行的进行如下变换:如下变换:a)字节的循环移位字节的循环移位 RotByte, 即当输入字为即当输入字为 (a,b,c,d) 时,输出字为时,输出字为 (b , c, d, a )b)用用 S 盒进行变换次位元组盒进行变换次位元组c)与轮常数与轮常数 Rconi异或异或2.2 AES 加密算法2.
17、 Key Schedulen Key Expansioni12345678910RCi01020408102040801b36Rconi 01000000020000000400000008000000100000002000000040000000800000001b00000036000000轮常数轮常数 Rconi :Rconi=(RCi,00,00,00) RC0=01 RCi=2 RCi-12.2 AES 加密算法2. Key Schedulen Round key selectRound key0 = WORD3:0Round key1 = WORD7:4Round key10 =
18、 WORD43:402.3 AES 解密算法2.3 AES 解密算法1. InvAddRoundKey就是其本身就是其本身 (AddRoundKey)-1= AddRoundKey2. InvShiftRows是状态的后三行分别是状态的后三行分别循环右移循环右移C1,C2,C3个字节。个字节。ShiftRowsInvShiftRows2.3 AES 解密算法3、InvMixColumns MixColumns是把状态的每一列都乘以一个固定的多项式c(x) :b(x)=c(x)a(x) 其中c(x)=03x3+01x2+01x+02 InvMixColumns就是状态的每列都乘以c(x)的逆多项
19、式d(x):b(x)=d(x)a(x) 其中d(x)=c(x) -1 =0Bx3+0Dx2+09x+0E2.3 AES 解密算法4、InvSubBytesInverse S-BoxAgenda1.DES algorithm2.AES algorithm3.DES/AES mode4.SHA algorithm5.SE module Feature list3.1 ECBn 定义: Electronic Coding Block Enc(X,Y)是加密函数 Dec(X,Y)是解密函数 Key是加密密钥; Pi ( i = 0,1n)是明文块,大小为64bit; Ci ( i = 0,1n)是密文
20、块,大小为64bit;ECB加密算法可表示为: Ci = Enc(Key, Pi)ECB解密算法可以表示为: Pi = Dec(Key,Ci)n 算法 特点: 每次Key、明文、密文的长度都必须是64位; 数据块重复排序不需要检测; 相同的明文块(使用相同的密钥)产生相同的密文块,容易遭受字典攻击; 一个错误仅仅会对一个密文块产生影响;3.1 ECB3.2 CBCn定义:Chain Block Coding Enc(X,Y)是加密函数 Dec(X,Y)是解密函数 Key是加密密钥; Pi ( i = 0,1n)是明文块,大小为64bit; Ci ( i = 0,1n)是密文块,大小为64bit
21、; XOR(X,Y)是异或运算; IV是初始向量(一般为64位); ECB加密算法可表示为: C0 = Enc(Key, XOR(IV, P0) Ci = Enc(Key, XOR(Ci-1, Pi) ECB解密算法可以表示为: P0 = XOR(IV, Dec(Key, C0) Pi = XOR(Ci-1, Dec(Key,Ci)3.2 CBC3.2 CBCn 算法特点: 每次加密的密文长度为64位(8个字节); 当相同的明文使用相同的密钥和初始向量的时候CBC模式总是产生相同的密文; 密文块要依赖以前的操作结果,所以,密文块不能进行重新排列; 可以使用不同的初始化向量来避免相同的明文产生相
22、同的密文,一定程度上抵抗字典攻击; 一个错误发生以后,当前和以后的密文都会被影响; 3.3 PCBC3.4 CFBn 定义:定义:Cipher FeedbackEnc(X,Y)是加密函数是加密函数Dec(X,Y)是解密函数是解密函数Key是加密密钥;是加密密钥;Pi ( i = 0,1n)是明文块,大小为是明文块,大小为64bit;Ci ( i = 0,1n)是密文块,大小为是密文块,大小为64bit;Si ( i = 0,1n),n个连续的个连续的Si组成加密位移寄存器,一般组成加密位移寄存器,一般n=8;Oi = Enc(Key, Si);Lef(x) 为取数据为取数据x的最左的最左8个个
23、bit位;位;A(x,y)为合并为合并x左移左移8位,空位用位,空位用y填充填充CFB加密算法可表示为:加密算法可表示为: S0 = IV; Oi = Enc(Key, Si); Ci = XOR( Pi, Lef(Oi); Si = A(Si-1, Ci);CFB解密算法可表示为:解密算法可表示为: S0 = IV; Oi = Dec(Key, Si); Pi = XOR( Ci, Lef(Oi); Si = A(Si-1, Ci);3.4 CFB3.4 CFBn 特点特点: 每次加密的每次加密的Pi和和Ci不大于不大于64位位; 加密算法和解密算法相同,不能适用于公钥算法;加密算法和解密算
24、法相同,不能适用于公钥算法; 使用相同的密钥和初始向量的时候,相同明文使用使用相同的密钥和初始向量的时候,相同明文使用CFB模式加密输出模式加密输出相同的密文相同的密文; 可以使用不同的初始化变量使相同的明文产生不同的密文,防止字典可以使用不同的初始化变量使相同的明文产生不同的密文,防止字典攻击攻击; 加密强度依赖于密钥长度加密强度依赖于密钥长度; 加密块长度过小时加密块长度过小时,会增加循环的数量会增加循环的数量,导致开销增加导致开销增加; 加密块长度应时加密块长度应时8位的整数倍位的整数倍(即字节为单位即字节为单位); 一旦某位数据出错一旦某位数据出错,会影响目前和其后会影响目前和其后8个
25、块的数据个块的数据; 3.5 OFBn 定义:定义:Output Feedback Enc(X,Y)是加密函数是加密函数 Dec(X,Y)是解密函数是解密函数 Key是加密密钥;是加密密钥; Pi ( i = 0,1n)是明文块,大小为是明文块,大小为64bit; Ci ( i = 0,1n)是密文块,大小为是密文块,大小为64bit; Si ( i = 0,1n),大小为,大小为8bit,n个连续的个连续的Si组成加密位移寄存器,一般组成加密位移寄存器,一般n=8; Oi = Enc(Key, Si); Lef(x) 为取数据为取数据x的最左的最左8个个bit位;位; A(x,y)为合并为合
26、并x左移左移8位,空位用位,空位用y填充填充 CFB加密算法可表示为:加密算法可表示为: S0 = IV; Oi = Enc(Key, Si); Ci = XOR( Pi, Lef(Oi); Si = A(Si-1, Oi); 注意这里与注意这里与CFB模式的不同模式的不同 CFB解密算法可表示为:解密算法可表示为: S0 = IV; Oi = Enc(Key, Si); Ci = XOR( Ci, Lef(Oi); Si = A(Si-1, Oi);3.5 OFB3.5 OFBn 特点: 与CFB类似,以下都是不同之处; 因为密文没有参与链操作,所以使得OFB模式更容易受到攻击; 不会进行错
27、误传播,某位密文发生错误,只会影响该位对应的明文,而不会影响别的位; 不是自同步的,如果加密和解密两个操作失去同步,那么系统需要重新初始化; 每次重新同步时,应使用不同的初始向量。可以避免产生相同的比特流,避免”已知明文”攻击 ; 3.6 CTRCTR模式的特征类似于OFB,但它允许在解密时进行随机存取。由于加密和解密过程均可以进行并行处理,CTR适合运用于多处理器的硬件上。CTR模式的主要有点如下:1)随机访问性。可以随机地对任意一个密文分组进行解密,对该密文分组的处理与其他密文无关。2)高效率3)CTR可以处理任意长度的数据,只要相应调整CTR产生的密钥长度即可。而且加解密过程是对称的XO
28、R。3.6 CTRAgenda1.DES algorithm2.AES algorithm3.DES/AES mode4.SHA algorithm5.SE module Feature list4.1 SHA introduction 消息认证消息认证作为一种重要的安全技术如今已被广泛地应用于网络信息交换领域,它的根本作用是允许通信的当事人验证所接受的消息为可信消息。如果消息、文件、文档或者其他的数据集合是真实的数据并且来自所声称的数据源,那么称这些数据集合是可信的。 而在消息认证技术中通常都会用到一类特殊的数学算法-哈希算法,它占有极其重要的地位。哈希算法也即散列算法,其作用是对任何不定长
29、的比特串(称为消息)计算出一个定长的比特串(称为消息摘要或散列值)。 目前常见的哈希算法有MD5、SHA-1和RIPEMD-160,而国内更倾向于MD5和SHA-1。就当前的情况来看,SHA-1由于其安全强度及运算效率方面的优势已经成为使用最为广泛的哈希算法了。4.1 SHA introduction SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文。 单向散列函数的安全性在于其产生散列值的操作过程具有较强的单向性。如果在输入序列中嵌入密码,那么任何人在不知道密码的情况下都不能产生正确的散列值,从而保证了其安全性。SHA将输入流按照
30、每块512位(64个字节)进行分块,并产生20个字节的被称为信息认证代码或信息摘要的输出。 该算法输入报文的长度不限,产生的输出是一个160位的报文摘要。输入是按512 位的分组进行处理的。SHA-1是不可逆的、防冲突,并具有良好的雪崩效应。4.2 SHA 加密算法 Step1:bit填充448 bits对输入的数据进行填充,使得数据位长度对512求余的结果为448。填充比特串的最高位补一个1,其余位补0。附加填充总是要进行的,即使消息的长度满足所要求的长度。比如输入字符串:abcabc的ASCII编码为0 x61, 0 x62, 0 x63bit填充后的结果为(共448bit)6162638
31、0 00000000 00000000 0000000000000000 00000000 00000000 0000000000000000 00000000 00000000 0000000000000000 00000000 00000000bit填充:最高位补填充:最高位补1,其余补,其余补04.2 SHA 加密算法 Step2:附加长度值512 bits将64比特加在报文后表示报文的原始长度,使报文长度为512比特的倍数。比如输入字符串:abcbit填充后的结果为(共448bit)61626380 00000000 00000000 0000000000000000 00000000
32、 00000000 0000000000000000 00000000 00000000 0000000000000000 00000000 00000000附加长度值后结果为61626380 00000000 00000000 0000000000000000 00000000 00000000 0000000000000000 00000000 00000000 0000000000000000 00000000 00000000 00000018最低最低8bit为报文原为报文原始长度:始长度:24bit4.2 SHA 加密算法 Step3:初始化MD缓存一个160位MD缓冲区用以保存中间
33、和最终散列函数的结果。它可以表示为5个32位的寄存器(A,B,C,D,E)。初始化为:A = 67452301 B = EFCDAB89 C = 98BADCFED = 10325476 E = C3D2E1F0 Step4:以512bit为一个分组,处理消息 对这512bit数据处理分为4轮,每轮又分为20小步4.2 SHA 加密算法4.2 SHA 加密算法4.2 SHA 加密算法每一小步之后的缓冲区的五个word值为:E= DD=CC=S30(B)B=AA = E + S5(A) + f(t, B, C, D) + Wt + Kt其中:A, B , C, D, E为压缩之后的缓冲区的五个w
34、ord值, A, B C, D, E为压缩之前的缓冲区的五个word值Sk() = 循环左移k bit给的32bit数据 +: mod232 下的加法Wt是一个从当前512bit数据块中导出的32bit数据:将每组输入的512bit自左向右分为16个word:W0W150 = t = 15: Wt = Wt16 = t = 79: Wt = Wt-3 Wt-8 Wt-14 Wt-164.2 SHA 加密算法Kt是一个用于加法的常量f是压缩函数tKtf(t, B, C, D)第一轮:0, 195A827999(B&C) | (B&D)第二轮:20, 396ED9EBA1BCD第三轮:40, 598F1BBCDC(B&C) | (B&D) | (C&D)第四轮:60, 79CA62C1D6BCDThe End Thanks!