1k likes | 1.17k Views
第 3 章 对称密码体制. 主要内容. 3.1 分组密码 3.2 数据加密标准 DES 3.3 高级加密标准 AES 3.4 序列密码 3.5 其他对称加密算法. 概述. 对称密码体制就是在加密和解密是用到的密钥相同,或者加密密钥和解密密钥之间存在着确定的转换关系。 对称密码体制又有两种不同的实现方式,即分组密码和序列密码(或称流密码)。. 流密码与分组密码. 流密码每次加密数据流中的一位或一个字节。 分组密码,就是先把明文划分为许多分组,每个明文分组被当作一个整体来产生一个等长(通常)的密文分组。通常使用的是 64 位或 128 位分组大小。
E N D
主要内容 3.1分组密码 3.2数据加密标准DES 3.3高级加密标准AES 3.4序列密码 3.5其他对称加密算法
概述 对称密码体制就是在加密和解密是用到的密钥相同,或者加密密钥和解密密钥之间存在着确定的转换关系。 对称密码体制又有两种不同的实现方式,即分组密码和序列密码(或称流密码)。
流密码与分组密码 流密码每次加密数据流中的一位或一个字节。 分组密码,就是先把明文划分为许多分组,每个明文分组被当作一个整体来产生一个等长(通常)的密文分组。通常使用的是64位或128位分组大小。 分组密码的实质,是设计一种算法,能在密钥控制下,把n比特明文简单而又迅速地置换成唯一n比特密文,并且这种变换是可逆的(解密)。
3.1分组密码 • 分组密码算法实际上就是在密钥的控制下,简单而迅速地找到一个置换,用来对明文分组进行加密变换,一般情况下对密码算法的要求是: • 分组长度m足够大(64~128比特) • 密钥空间足够大(密钥长度64~128比特) • 密码变换必须足够复杂(包括子密钥产生算法)
分组密码的设计思想 • 扩散(diffusion) • 将明文及密钥的影响尽可能迅速地散布到较多个输出的密文中。产生扩散的最简单方法是通过“置换(Permutation)”(比如:重新排列字符)。 • 混淆(confusion) • 其目的在于使作用于明文的密钥和密文之间的关系复杂化,是明文和密文之间、密文和密钥之间的统计相关特性极小化,从而使统计分析攻击不能奏效。通常的方法是“代换(Substitution)”(回忆恺撒密码)。
3.2 DES(Data Encryption Standard) 美国国家标准局NBS于1973年5月发出通告,公开征求一种标准算法用于对计算机数据在传输和存储期间实现加密保护的密码算法。 1975 年美国国家标准局接受了美国国际商业机器公司IBM 推荐的一种密码算法并向全国公布,征求对采用该算法作为美国信息加密标准的意见。 经过两年的激烈争论,美国国家标准局于1977年7月正式采用该算法作为美国数据加密标准。1980年12月美国国家标准协会正式采用这个算法作为美国的商用加密算法。
DES的实质 DES是一种对称密码体制,它所使用的加密和解密密钥是相同的,是一种典型的按分组方式工作的密码。其基本思想是将二进制序列的明文分成每64bit一组,用长为64bit(56bit)的密钥对其进行16轮代换和置换加密,最后形成密文。
3.2.1 简化的DES Simplified DES方案,简称S-DES方案。它是一个供教学而非安全的加密算法,它与DES的特性和结构类似,但参数小。 注:1.* 加密算法涉及五个函数:(1)初始置换IP(initial permutation)(2)复合函数fk1,它是由密钥K确定的,具有置换和代换的运算。 (3)置换函数SW(4)复合函数fk2(5)初始置换IP的逆置换IP-1
输入64位明文(密文) 64位密钥组 初始置换(IP) 乘积变换 子密钥生成 末置换(IP-1) 输出64位密文(明文) (2) DES算法的主要过程 ① 初始置换: ② 子密钥生成: ③ 乘积变换: ④ 末置换:
10bit密钥 解密 P10 8bit明文 8bit明文 IP 移位 IP-1 P8 fk1 fk1 K1 K1 SW 移位 SW P8 fk2 fk2 K2 K2 IP IP-1 8bit密文 8bit密文 (1)初始置换IP(initial permutation)(2)复合函数fk1,它是由密钥K确定的,具有置换和代换的运算。 (3)置换函数SW(4)复合函数fk2(5)初始置换IP的逆置换IP-1 加密 S-DES方案示意图
2*. 加密算法的数学表示:IP-1*fk2*SW*fk1*IP也可写为密文=IP-1(fk2(SW(fk1(IP(明文)))))其中 K1=P8(移位(P10(密钥K))) 试写出K2的表达式 试写出解密算法的数学表示 试证明加密算法的正确性
对S-DES的深入描述 P10 P8 3 5 2 7 4 10 1 9 8 6 6 3 7 4 8 5 10 9 (1) S-DES的密钥生成:设10bit的密钥为( k1,k2,…,k10 )几个重要的定义: P10(k1,k2,…,k10)=(k3,k5,k2,k7,k4,k10,k1,k9,k8,k6) P8= (k1,k2,…,k10)=(k6,k3,k7,k4,k8,k5,k10,k9 )
对S-DES的深入描述 LS-1为循环左移1位:abcdebcdea LS-2为循环左移2位: abcdecdeab
P10 5 5 LS-1 LS-1 P8 8 K1 LS-2 LS-2 5 5 P8 8 S-DES的密钥生成 P10:3 5 2 7 4 10 1 9 8 6 P8:6 3 7 4 8 5 10 9 按照上述条件, 若K选为(1010000010), 产生的两个子密钥分别为: K1=(1 0 1 0 0 1 0 0) K2=(0 1 0 0 0 0 1 1) K2 10-bit密钥
对S-DES的深入描述 --趁热打铁 若输入密钥K为(1001001010), 问产生的两个子密钥分别为: ? K1=( ) ? K2=( )
末端算法的置换为IP的逆置换:IP-1= 1 2 3 4 5 6 7 8 • 4 1 3 5 7 2 8 6 (2) S-DES的加密运算: 初始置换用IP函数: IP= 1 2 3 4 5 6 7 8 2 6 3 1 4 8 5 7
S-DES的加密运算: 试举例证明: IP-1是IP的逆置换
IP fk L R 4 E/P 4 8 + K1 F 4 4 S0 S1 P4 + S-DES加密图 fk(L,R)=(LF(R,SK),R) E/P 4 1 2 3 2 3 4 1 8-bit子密钥: K1=k11,k12,k13,k14, k15,k16,k17,k18, 与E/P的结果异或得: n4+k11 n1+k12 n2+k13 n3+k14 n2+k15 n3+k16 n4+k17 n1+k18 第一行输入进S-盒S0,第二行的4位输入进S盒S1,分别产生2-位的输出。 8-bit 明文(n)
SW 4 4 E/P 8 8 K2 F + 4 4 S0 S1 2 2 P4 + 4 IP-1 8 8-bit 密文 S-DES加密图(续) fk
SW 4 4 E/P 8 8 K2 F + 4 4 S0 S1 2 2 P4 + 4 IP-1 8 8-bit 密文 两个S盒按如下定义:
S盒按下述规则运算: 将第1和第4的输入比特做为2- bit数,指示为S盒的一个行;将第2和第3的输入比特做为S盒的一个列。如此确定为S盒矩阵的(i,j)数。 例如:(P0,0, P0,3)=(00),并且(P0,1,P0,2)=(1 0) 确定了S0中的第0行2列(0,2)的系数为3,记为(1 1)输出。 由S0, S1输出4-bit经置换 P4 2 4 3 1 它的输出就是F函数的输出。
3.2.2 DES的基本加密流程 加密前,先将明文分成64bit的分组,然后将64bit二进制码输入到密码器中,密码器对输入的64位码首先进行初始置换,然后在64bit主密钥产生的16个子密钥控制下进行16 轮乘积变换,接着再进行末置换就得到64位已加密的密文。
0.子密钥产生器 密钥(64bit) 除去第8,16,… ,64位,共8个校验位 置换选择1(PC-1) Ci(28bit) Di(28bit) 循环左移ti+1位 循环左移ti+1位 置换选择2(PC-2) Ki(48bit)
移位次数表 若 C1= c1c2…c28,D1= d1d2…d28 则 C2= c2c3…c28 c1, D2= d2d3…d28 d1。
置换选择2 Ci Di= b1b2…b56 ,则ki= b14 b17 b11 b24…b36 b29 b32 置换选择PC-2将C中第9 18 22 25位和 D 中第7 9 15 26位删去,并将其余数字置换位置后送出48bit数字作为第i次迭代时所用的子密钥ki
1.初始置换 将64个明文比特的位置进行置换,得到一个乱序的64bit明文组,然后分成左右两段,每段为32bit 以L和R表示。
2.乘积变换 Li-1(32比特) Ri-1(32比特) 选择扩展运算E 48比特寄存器 子密钥Ki(48比特) 48比特寄存器 选择压缩运算S 32比特寄存器 置换运算P Li(32比特) Ri(32比特) Li=Ri-1 Ri=Li-1 F(Ri-1,Ki)
1,2,…… ……32 E的输入(32bit) 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 选择扩展运算结果(48bit) 1,2,…… ……48 选择扩展运算E 对原第 32 1 4 5 8 9 12 13 16 17 20 21 24 25 28 29 各位重复一次得到数据扩展。
选择压缩运算S 将前面送来的48bit 数据自左至右分成8组,每组6bit。然后并行送入8个S盒,每个S盒为一非线性代换网络,有4个输出。
S盒的内部计算 若输入为b1b2b3b4b5b6其中b1b6两位二进制数表达了0至3之间的数。b2b3b4b5为四位二进制数,表达0至15之间的某个数。 在S1表中的b1b6行b2b3b4b5列找到一数m(0≤m≤15),若用二进制表示为m1m2m3m4,则m1m2m3m4便是它的4bit输出。 例如,输入为001111,b1b6=01=1,b2b3b4b5 =0111=7,即在S1盒中的第1行第7列求得数1,所以它的4bit输出为0001。
关于S盒 S 盒是DES的核心,也是DES算法最敏感的部分,其设计原理至今仍讳莫如深,显得非常神秘。所有的替换都是固定的,但是又没有明显的理由说明为什么要这样,有许多密码学家担心美国国家安全局设计S盒时隐藏了某些陷门,使得只有他们才可以破译算法,但研究中并没有找到弱点。
置换运算P 对S1至S8盒输出的32bit 数据进行坐标变换 置换P输出的32bit数据与左边32bit即Ri-1诸位模2相加所得到的32bit作为下一轮迭代用的右边的数字段,并将Ri-1并行送到左边的寄存器作为下一轮迭代用的左边的数字段。
1,2,…… ……64 置换码组(64bit) 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 密文(64bit) 1,2,…… ……64 3.逆初始置换IP-1 将16轮迭代后给出的64bit组进行置换得到输出的密文组
3.2.3 DES的解密 解密算法与加密算法相同,只是子密钥的使用次序相反。
3.2.4 DES的安全性 • DES在20多年的应用实践中,没有发现严重的安全缺陷,在世界范围内得到了广泛的应用,为确保信息安全做出了不可磨灭的贡献。 • 存在的安全弱点: • 密钥较短:56位密钥空间约为7.2*1016。1997年6月Rocke Verser小组通过因特网利用数万台微机历时4个月破译了DES;1998年7月,EFF用一台25万美元的机器,历时56小时破译DES。 • 存在弱密钥:有的密钥产生的16个子密钥中有重复者。 • 互补对称性:C=DES(M,K),则C’=DES(M’,K’),其中,M’,C’,K’是M,C,K的非。
DES具有良好的雪崩效应 • 雪崩效应:明文或密钥的微小改变将对密文产生很大的影响。特别地,明文或密钥的某一位发生变化,会导致密文的很多位发生变化。 • DES显示了很强的雪崩效应 • 两条仅有一位不同的明文,使用相同的密钥,仅经过3轮迭代,所得两段准密文就有21位不同。 • 一条明文,使用两个仅一位不同的密钥加密,经过数轮变换之后,有半数的位都不相同。
3.2.5 多重DES • DES在穷举攻击下相对比较脆弱,因此需要用某种算法来替代它,有两种解决方法: • 设计全新的算法; • 用DES进行多次加密,且使用多个密钥,即多重DES。这种方法能够保护用于DES加密的已有软件和硬件继续使用。
二重DES 为了提高DES的安全性,并利用实现DES的现有软硬件,可将DES算法在多密钥下多重使用。 二重DES是多重使用DES时最简单的形式,如图3.8所示。其中明文为P,两个加密密钥为K1和K2,密文为: 解密时,以相反顺序使用两个密钥:
因此,二重DES所用密钥长度为112比特,强度极大地增加。然而,假设对任意两个密钥K1和K2,能够找出另一密钥K3,使得因此,二重DES所用密钥长度为112比特,强度极大地增加。然而,假设对任意两个密钥K1和K2,能够找出另一密钥K3,使得
另一方面,对每个不同的密钥,DES都定义了一个映射,总映射数为256<1017。另一方面,对每个不同的密钥,DES都定义了一个映射,总映射数为256<1017。 因此,可假定用两个不同的密钥两次使用DES,可得一个新映射,而且这一新映射不出现在单重DES定义的映射中。这一假定已于1992年被证明。所以使用二重DES产生的映射不会等价于单重DES加密。但对二重DES有以下一种称为中途相遇攻击的攻击方案,这种攻击不依赖于DES的任何特性,因而可用于攻击任何分组密码。其基本思想如下:
如果有 那么(见图3.8)
如果已知一个明文密文对(P,C),攻击的实施可如下进行:首先,用256个所有可能的K1对P加密,将加密结果存入一表并对表按X排序,然后用256个所有可能的K2对C解密,在上述表中查找与C解密结果相匹配的项,如果找到,则记下相应的K1和K2。最后再用一新的明文密文对(P′,C′)检验上面找到的K1和K2,用K1和K2对P′两次加密,若结果等于C′,就可确定K1和K2是所要找的密钥。如果已知一个明文密文对(P,C),攻击的实施可如下进行:首先,用256个所有可能的K1对P加密,将加密结果存入一表并对表按X排序,然后用256个所有可能的K2对C解密,在上述表中查找与C解密结果相匹配的项,如果找到,则记下相应的K1和K2。最后再用一新的明文密文对(P′,C′)检验上面找到的K1和K2,用K1和K2对P′两次加密,若结果等于C′,就可确定K1和K2是所要找的密钥。
对已知的明文P,二重DES能产生264个可能的密文,而可能的密钥个数为2112,所以平均来说,对一个已知的明文,有2112/264=248个密钥可产生已知的密文。而再经过另外一对明文密文的检验,误报率将下降到248-64=2-16。所以在实施中途相遇攻击时,如果已知两个明文密文对,则找到正确密钥的概率为1-2-16。对已知的明文P,二重DES能产生264个可能的密文,而可能的密钥个数为2112,所以平均来说,对一个已知的明文,有2112/264=248个密钥可产生已知的密文。而再经过另外一对明文密文的检验,误报率将下降到248-64=2-16。所以在实施中途相遇攻击时,如果已知两个明文密文对,则找到正确密钥的概率为1-2-16。