《密码学原理与实践第二版课件.ppt》由会员分享,可在线阅读,更多相关《密码学原理与实践第二版课件.ppt(47页珍藏版)》请在三一办公上搜索。
1、2023/1/19,第2章 对称密钥密码体系,理解密码学的基本原理掌握DES加密算法了解A5和IDEA加密算法理解序列密码原理,2023/1/19,2.1 密码体制原理与分类(I),对称密码体制(symmetric cryptosystem)-单钥加密密钥和解密密钥是相同的非对称密码体制(asymmetric cryptosystem)-公钥密码加密密钥和解密密钥是成对出现加密过程和解密过程不同,使用的密钥也不同,2023/1/19,密码算法安全准则与分类,密码的安全性原则 公开的密码算法才是安全的,保密的算法只在小范围内设计和研究。按照密钥使用方法分对称密码算法(symmetric ciph
2、er):又称传统密码算法(conventional cipher)或秘密密钥算法、单密钥算法。非对称密钥算法(asymmetric cipher),又称公开密钥算法(public-Key cipher)。按照明文的处理方法分分组密码(block cipher):将明文分成固定长度的组,用同一密钥和算法对每一块加密,输出也是固定长度的密文。流密码(stream cipher):又称序列密码,每次加密一位或一字节的明文。,2023/1/19,2.1.4 密码分析,可破译密码当给予足够的时间和计算资源的时候,破译者能确定的加密算法。对可破译性的评估基于当前的技术。穷举攻击攻击者对一条密文尝试所有可能
3、的密钥,直到得到有意义的明文。Kerckhoff原则:加密算法应建立在算法的公开不影响明文和密钥的安全的基础上。这一原则得到普遍承认,成为判定密码强度的衡量标准,实际上也成为古典密码和现代密码的分界线。,2023/1/19,传统密码体制基于加密信息的攻击类型,2023/1/19,密码的安全性与攻击复杂性,无条件安全(Unconditionally secure)无论破译者有多少密文,他也无法解出对应的明文,即使他解出了,他也无法验证结果的正确性.一次一密计算上安全的破译密码的代价超出密文信息的价值破译密码的时间超出密文信息的有效生命期攻击复杂性:数据时间存储量,2023/1/19,古典密码,古
4、典密码的加密方法一般是文字置换,使用手工或机械变换的方式实现。古典密码系统已经初步体现出近代密码系统的雏形,它比古代加密方法复杂,其变化较小。单表代替密码:Caesar密码;多表代替密码:Vigenere密码、Hill密码;转轮密码:二战中的Enigma。,2023/1/19,现代密码,计算机的发展使得基于复杂计算的密码成为可能,密码学成为一门新的学科。对称密钥密码算法的发展:1977年DES正式成为标准1977年公钥密码(非对称密码)出现90年代逐步出现椭圆曲线等其他公钥算法一些新的密码技术,如,混沌密码、量子密码等,2023/1/19,恺撒密码的破译分析,一般的恺撒密码加密:ci=E(pi
5、)=(pi+k)mod 26解密:pi=E(ci)=(ci-k)mod 26其中k为密钥,1 k 25一般的恺撒密码的破译分析已知加密和解密算法需要测试的密钥只有25个明文所用的语言是已知的,且其意义易于识别。可以采用穷举攻击,2023/1/19,代换密码substitution cipher,2023/1/19,置换密码,置换密码体制1.6,1.明文与密文字母不变,利用转换打乱明文字母 的位置和次序。存储空间与报文长度相关。2.完全保留字符的统计信息3.使用多轮加密可提高安全性,2023/1/19,2.2 数据加密标准(DES),2.2.1 DES算法 DES加密算法如图2-3所示,由以下四
6、个部分组成。,2023/1/19,1.初始置换函数IP DES对64位明文分组进行操作。首先,64位明文分组x经过一个初始置换函数IP,产生64位的输出x0,再将分组x0分成左半部分L0和右半部分R0,即:x0=IP(x)=L0R0置换表如表2-1所示。此表顺序为从上到下,从左至右。如初始置换把明文的第58位换至第1位,把第50位换至第二位,以此类推。,2023/1/19,表2-1 初始置换IP,58 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 38 30 22 14 664 56 48 40 32 24 16 857 49 41 33
7、25 17 9 159 51 43 35 27 19 11 361 53 45 37 29 21 13 563 55 47 39 31 23 15 7,2023/1/19,图2-5 DES加密算法,2023/1/19,2获取子密钥Ki DES加密算法的密钥长度为56位,但一般表示为64位,其中,每个第8位用于奇偶校验。在DES加密算法中,将用户提供的64位初始密钥经过一系列的处理得到K1,K2,K16,分别作为116轮运算的16个子密钥。现在来看如何获得这16个子密钥。首先,将64位密钥去掉8个校验位,用密钥置换PC1置换剩下的56位密钥;再将56位分成前28位C0和后28位D0两部分,即PC
8、1(K56)=C0D0。密钥置换PC-1如表2-2所示。,2023/1/19,表2-2 密钥置换PC1,57 49 41 33 25 17 91 58 50 42 34 26 1810 2 59 51 43 35 2719 11 3 60 52 44 3663 55 47 39 31 23 157 62 54 46 38 30 2214 6 61 53 45 37 2921 13 5 28 20 12 4,2023/1/19,接下来,根据轮数,这两部分分别循环左移1位或2位。具体每轮移位的位数如表2-3所示。,表2-3 每轮移动的位数,2023/1/19,移动后,将两部分合并成56位后通过压缩
9、置换PC2后得到48位子密钥,即Ki=PC-2(CiDi)。压缩置换如表2-4所示。,表2-4 压缩置换PC2,14 17 11 24 1 53 28 15 6 21 1023 19 12 4 26 816 7 27 20 13 241 52 31 37 47 5530 40 51 45 33 4844 49 39 56 34 5346 42 50 36 29 32,9,18?,2023/1/19,图2-6 子密钥产生,2023/1/19,3密码函数F1)函数F的操作步骤 密码函数F的输入是32比特数据和48比特的子密钥,其操作步骤如图2-5所示。(1)扩展置换(E)。将数据的右半部分Ri从3
10、2位扩展为48位。位选择函数(也称E盒)如表2-5所示。,2023/1/19,图2-7 F(Ri,Ki)计算,2023/1/19,表2-5 扩展置换(E),32 1 2 3 4 54 5 6 7 8 98 9 10 11 12 1312 13 14 15 16 1716 17 18 19 20 2120 21 22 23 24 2524 25 26 27 28 2928 29 30 31 32 1,2023/1/19,(2)异或。扩展后的48位输出E(Ri)与压缩后的48位密钥Ki作异或运算。(3)S盒替代。将异或得到的48位结果分成八个6位的块,每一块通过对应的一个S盒产生一个4位的输出。八
11、个S盒如表2-6所示。,2023/1/19,S盒的具体置换过程为:某个Si盒的6位输入的第1位和第6位形成一个2位的二进制数(从03),对应表中的某一行;同时,输入的中间4位构成4位二进制数(从015)对应表中的某一列(注意:行和列均从0开始计数)。例如,第8个S盒的输入为001011,前后2位形成的二进制数为01,对应第8个S盒的第1行;中间4位为0101,对应同一S盒的第5列。从表2-6中可得S8盒的第1行第5列的数为3,于是就用0011代替原输入001011。,2023/1/19,表 2-6 S 盒,2023/1/19,2023/1/19,2023/1/19,(4)P盒置换。将八个S盒的
12、输出连在一起生成一个32位的输出,输出结果再通过置换P产生一个32位的输出即:F(Ri,Ki)。表2-7为P盒置换。至此,密码函数F的操作就完成了。最后,将P盒置换的结果与最初的64位分组的左半部分异或,然后左、右半部分交换,接着开始下一轮计算。,2023/1/19,表2-7 P盒置换,16 7 20 2129 12 28 171 15 23 265 18 31 102 8 24 1432 27 3 919 13 30 622 11 4 25,2023/1/19,2)函数F的设计 函数F是DES加密的核心,它依赖于S盒的设计。这也适用于其它的对称分组加密算法。下面我们简单讨论一下有关F函数的一
13、些通用设计准则以及S盒设计问题。(1)F的设计准则。函数F的基本功能就是“扰乱(confusion)”输入,因此,对于F来说,其非线性越高越好,也就是说,要恢复F所做的“扰乱”操作越难越好。,2023/1/19,其它的设计准则还包括严格雪崩准则(SAC)和比特独立准则(BIC)。所谓SAC,就是要求算法具有良好的雪崩效应,输入当中的一个比特发生变化都应当使输出产生”尽可能多”的比特变化。严格地说,就是当任何单个输入比特位i发生变换时,一个S盒的第j比特输出位发生变换的概率应为1/2,且对任意的i,j都应成立。BIC的意思是当单个输入比特位i发生变化时,输出比特位j,k的变化应当互相独立,且对任
14、意的i,j,k均应成立。SAC和BIC可以有效的增强F函数的“扰乱”功能。,2023/1/19,(2)S盒设计。S盒的设计在对称分组密码研究领域中起着举足轻重的作用。本质上,S盒的作用就是对输入向量进行处理,使得输出看起来更具随机性,输入和输出之间应当是非线性的,很难用线性函数来逼近。显然,S盒的尺寸是一个很重要的特性。一个S盒其输入为n比特,输出为m比特。DES的S盒大小为64。S盒越大,就越容易抵制差分和线性密码分析。,2023/1/19,Mister和Adams提出了很多的S盒设计原则,其中包括要求S盒满足SAC和BIC的原则,以及S盒的所有列的全部线性组合应当满足一类称为bent函数的
15、高度非线性布尔函数的原则。Bent函数具有很多有趣的特性,其中,高度非线性和最高阶的严格雪崩准则对于S盒的设计尤为重要。,2023/1/19,Nyberg提出了以下几种S盒的设计和实践原则:随机性:采用某些伪随机数发生器或随机数表格来产生S盒的各个项。随机测试:随机选择S盒各个项,然后按照不同准则测试其结果。数学构造:根据某些数学原理来产生S盒。其好处就是可以根据数学上的严格证明来抵御差分和线性密码分析,并且可以获得很好的扩散(Diffusion)特性。,2023/1/19,4末置换函数IP-1 末置换是初始置换的逆变换。对L0和R0进行16轮相同的运算后,将得到的两部分数据合在一起,经过一个
16、末置换函数就可得到64位的密文c,即:c=IP-1(R16L16)(16指的是16轮)表2-8列出了该变换。,2023/1/19,表2-8 末 置 换IP-1,40 8 48 16 56 24 64 3239 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 2936 4 44 12 52 20 60 2835 3 43 11 51 19 59 2734 2 42 10 50 18 58 2633 1 41 9 49 17 57 25,2023/1/19,5总结根据上面所述,可以将DES算法归结如下:子密钥生成:C0D0=
17、PC1(K)for 1=i=16 Ci=LSi(Ci1)Di=LSi(Di1)Ki=PC2(CiDi),2023/1/19,加密过程:L0R0=IP(x)for 1=i=16Li=Ri1Ri=Li1 XOR f(Ri1,Ki)c=IP1(R16L16)v,2023/1/19,解密过程:R16L16=IP(c)for 1=i=16Ri1=LiLi1=Ri XOR f(Li,Ki)x=IP1(L0R0),2023/1/19,2.2.2三重DES,Des密钥56bit太短,1998年EFF用25万美元的计算机破译三重DES密钥56*3=168bit,2023/1/19,2.3 IDEA算法,国际数据
18、加密算法,分组长度为64位的分组密码算法,密钥长度是128bit具体实现见P26,2023/1/19,2.4 高级加密标准AES,1997年美国国家标准与技术研究所要求:比三重DES快,安全性不低于3DESRijndael(荣代尔)代替/置换算法,2023/1/19,2.5 序列密码(流密码),流密码(stream cipher)每次加密数据流的一位或一个字节密钥由序列发生器生成用于加密和解密的密钥序列古典流密码:Vigenere密码和Vernam密码分组密码(block cipher)将明文分成一段一段,将一段明文作为一个分组进行加密,每组分别在密钥的控制下变换成等长的输出密文序列。如:We
19、 will meet this afternoon.以5个字符为一组,则得到明文分组:wewil lmeet thisa ftern oonxx,其中不够一个分组的采用填充。,2023/1/19,流密码模型,密钥序列,密钥序列,明文,明文,解密,加密,密文,加密:ci=pi ki解密:pi=ci ki,密钥序列发生器,密钥序列发生器,流密码模型,2023/1/19,流密码和分组密码的比较,流密码优点:转换速度快;低错误扩散率缺点:低扩散率;易被恶意插入和篡改分组密码优点:高扩散率;无法插入符号缺点:加密速度慢;错误扩散,2023/1/19,本章讨论与设计方向,DES/AES算法实现与安全性分析Md5算法的原理与安全性分析,