1、2018/10/14,1,第2章 密码学应用基础,本章学习重点掌握内容: 密码学基本术语 密码体制分类 传统密码体制 私钥密码体制的主要特点 公钥密码体制的主要特点 杂凑函数的基本概念 典型密码算法,2018/10/14,2,第2章 密码学应用基础,2.1 概述 2.2 私钥密码体制 2.3 公钥密码体制 2.4 杂凑函数 2.5 密码算法应用实例PGP 2.6 实验PGP加密并签名邮件,2018/10/14,3,2.1 概述,密码学(Cryptology)是研究密码编制、密码破译和密钥管理的一门综合性应用科学。其主要研究内容包括两个分支:密码编码学(Cryptography)和密码分析学(C
2、ryptanalytics),两者既相互对立,又相互促进发展。 密码编码学是研究如何对信息进行编码实现信息的隐蔽; 密码分析学是研究如何分析破译密码。,2018/10/14,4,2.1 概述,2.1.1 密码学发展历史 分为三个阶段 第一阶段是从古代到1949年。这一时期被称作“科学密码学的前夜”,所研究的内容被称为古典密码学。 第二阶段是从1949年到1975年。1949年Shannon发表的“保密系统的信息理论”一文标志着密码学从此成为一门科学,由此拉开了现代密码学研究的序幕。该文,奠定了密码学的理论基础。(私钥密码体制) 第三阶段从1976年至今。非对称密钥提出,开创了公钥密码学的新纪元
3、。,2018/10/14,5,2.1 概述,2.1.2密码学基本术语 明文、密文 被隐蔽的消息被称做明文(Plain Text),通常用P或M表示。 隐蔽后的消息被称做密文(Cipher Text),通常用C表示。 发送者、接收者 在信息传送过程中,主动提供信息的一方称为发送者,得到信息的一方称为接收者。,2018/10/14,6,鉴别:消息的接收者应该能够确认消息的来源,入侵者不可能伪装成他人。 完整性:消息的接收者应该能够验证在传送过程中消息有没有被修改,入侵者不可能用假消息代替合法消息。抗抵赖:发送者事后不可能虚假地否认他发送的消息。,2018/10/14,7,2.1.2密码学基本术语,
4、加密、解密、加密算法、解密算法 将明文变换成密文的过程称为加密(Encryption)。 将密文变换成明文的过程称为解密(Decryption)。 对明文进行加密时所采用的一组规则称为加密算法(Encryption Algorithm)。通常用E表示。 对密文进行解密时所采用的一组规则称为解密算法(Decryption Algorithm)。通常用D表示。 密钥 加密和解密算法的操作通常都是在一组密钥(Key)的控制下进行的,分别称为加密密钥和解密密钥。通常用Ke和Kd表示。,2018/10/14,8,2.1.2密码学基本术语,截收者 在消息的传输和处理系统中,除了信息的合法授权接收者外,还有
5、非授权者,他们通过各种手段,如:搭线窃听、电磁窃听、声音窃听等来窃取机密信息,称其为截收者。 主动攻击、被动攻击 攻击者主动向系统窜扰,采用删除、更改、增填、重放、伪造等手段向系统注入假消息,以达到一定的目的,这样的攻击手段称作主动攻击;对一个密码系统采取截获密文进行分析的这类攻击称作被动攻击。 密码系统 通常简称为密码体制(Cryptosystem),由五元组(M,C,K,E,D)构成密码系统模型参见图2-1。 五元组(M,C,K,E,D)描述如下: 明文空间M,它是全体明文的集合; 密文空间C,它是全体密文的集合; C=EK(M),M=DK(C),2018/10/14,9,密钥空间K,它是
6、全体密钥的集合,其中每一个密钥K均由加密密钥和解密密钥组成; 加密算法E,它是由明文空间到密文空间的加密变换; 解密算法D,它是由密文空间到明文空间的解密变换。,2018/10/14,10,密码系统模型,2018/10/14,11,基本术语,消息被称为明文(Plaintext)。用某种方法伪装消息以隐藏它的内容的过程称为加密(Encryption),被加密的消息称为密文(Cipher text),而把密文转变为明文的过程称为解密(Decryption)。 对明文进行加密操作的人员称作加密员或密码员(Cryptographer). 密码算法(Cryptography Algorithm):是用于
7、加密和解密的数学函数。 密码员对明文进行加密操作时所采用的一组规则称作加密算法(Encryption Algorithm). 所传送消息的预定对象称为接收者(Receiver). 接收者对密文解密所采用的一组规则称为解密算法(Decryption Algorithm).,2018/10/14,12,2.1 概述,2.1.3密码体制分类 根据密钥的特点 对称密码体制(Symmetric Cryptosystem) 单钥(One-Key)体制或私钥(Private Key)体制或传统密码体制(Classical Cryptosystem); 非对称密码体制(Asymmetric Cryptosys
8、tem)。 双钥(Two-Key)或公钥(Public Key)密码体制。,2018/10/14,13,加密体制分类,按照加密密钥和解密密钥是否相同,可将现有的加密体制分为:单钥加密体制和双钥加密体制。 1、单钥加密体制 单钥加密体制又称为私钥或对称加密体制。这种体制的加密密钥和解密密钥相同或者本质上相同(即从其中一个可以很容易地推出另一个)。 2、双钥加密体制 双钥加密体制又称公钥(或非对称)加密体制。这种体制的加密密钥和解密密钥不相同,而且从其中一个很难推出另一个。这样加密密钥可以公开,而解密密钥可由用户自已秘密保存。,2018/10/14,14,密码体制分类,根据加密模式的不同,密码可以
9、分为序列密码和分组密码。 1、序列密码:又称为密钥流密码。 这种体制是将明文M看成是连续的比特流或字符流(m1m2m3),并用密钥序列K(k1k2k3)中的第i个元素ki对明文中的mi进行逐位加密。 这种密码由于没有固定的规律可寻,因此也不容易被破解。但由于这种序列密码是密钥对明文的逐位加密,因此需要和明文等长的密钥序列,如果明文太长,将不利于密钥的制订和管理。,2018/10/14,15,密码体制分类分组密码,2、分组密码:先将明文划分为固定长度的数据组,以组为单位进行加密。即用一个固定的变换对一个比较大的明文数组进行操作。 这种密码的密钥相对较短,因此出于安全的考虑,加密变换的算法起着至关
10、重要的作用,2018/10/14,16,2.1.3密码体制分类,按照加密方式不同,私钥密码体制被分为 流密码(Stream Cipher)(或称序列密码) 分组密码(Block Cipher) 区别是:流密码是将明文消息按字符逐位加密;分组密码是将明文消息先进行分组,再逐组加密。 目前多数私钥密码体制采用的是分组密码体制,仅有少量的加密体制采用的是流密码体制。,2018/10/14,17,需要指出:,无论哪种密码体制,密码算法的安全性依赖于密钥的安全。 或者说,一个密码系统的安全性不依赖于算法,而仅与密钥有关。,2018/10/14,18,密码体制发展过程:,1.古典密码体制2.私钥密码体制3
11、.现代密码体制,2018/10/14,19,1.古典密码体制,经典加密技术:替代技术:替代是指明文中的每个元素被映射为另一元素置换技术:置换是指明文中的元素被重新排列,2018/10/14,20,1.单表替代(monoalphabetic),每一个明文字母被任意地对应到一个密文字母。 密钥有26字母长。 明文字母: abcdefghijklmnopqrstuvwxyz 密文字母: DKVQFIBJWPESCXHTMYAUOLRGZN 明文: ifwewishtoreplaceletters 密文: WIRFRWAJUHYFTSDVFSFUUFYA,2018/10/14,21,替代技术凯撒密码,
12、最早的替代密码算法 首先用于军事 每一个字母用后面的第3个字母替代 例如: meet me after the toga party PHHW PH DIWHU WKH WRJD SDUWB 规则:明文中的每一个字母按照英文字母的顺序被排在其后面的第三个字母所替代而产生相应的密文。,2018/10/14,22,凯撒密码的原理:c m + k mod 26,令26个字母分别对应于整数025比如a=1,b=2y=25,z=0。 凯撒加密变换实际上是 c m + k mod 26,k叫密钥。 比如: data security对应数据序列 4,1,20,1,19,5,3,21,18,9,20,25
13、k=5时,得密文序列 9,6,25,6,24,10,8,0,23,14,25,4 如果选取k1,k2两个参数,其中 k1 与 26 互素,令ck1m + k2 mod 26。这种变换称为仿射变换,2018/10/14,23,凯撒密码-安全性,仅有26种可能性 A 映射到 A,B,Z 蛮力攻击(穷举攻击) 试尽所有可能性 需要能够识别什么是明文 例如: 破解密文“GCUA VQ DTGCM“,2018/10/14,24,2.多表替代技术Playfair密码,英国人Charles Wheatstone 于1854 发明, 但以他的朋友Baron Playfair命名。 通过加密两个字母来增进安全性
14、。 Playfair密码的密钥为5*5的矩阵:关键词为 MONARCHY M O N A R C H Y B D E F G I/J K L P Q S T U V W X Z矩阵构造规则:从左至右,从上至下填入该关键词的字母(去除重复字母),然后再以字母表顺序将余下的字母填入矩阵剩余空间。字母I和J看作一个字母。,2018/10/14,25,Playfair密码-编码原则,将明文中的双字母组合成一个单元对待 重复字母插入X“ balloon” 转变为 “ba lx lo on“ 同一行的两个字母,以右边的字母来代替 如“ar” 用 “RM”代替 同一列的两个字母,以下边的字母来代替 如“mu
15、” 用“CM”代替 否则用对角线的字母代替 如“hs” 用“BP”代替,M O N A R C H Y B D E F G I/J K L P Q S T U V W X Z,2018/10/14,26,Hill密码,由纽约Hunter大学的数学家Lester Hill于1929年发明。Hill在35岁时(1926年)获得Yale大学的博士学位。 Hill加密算法的基本思想是将明文字母通过线性变换将它们转换为密文字母。 取m个连续明文字母,用m个密文字母替代。 C1=(k11p1+k12p2+k13p3) mod 26 C2=(k21p1+k22p2+k23p3) mod 26 C3=(k31
16、p1+k32p2+k33p3) mod 26 加密:C = Ek(P) = KP 解密:P = Dk(C) = K-1C,2018/10/14,27,例子:当 m=2时,明文元素x=(x1,x2),密文元素y=(y1,y2)若K= ,可得K-1 = 若对明文 july加密,它分成2个元素(j,u),(l,y),分别对应于(9,20),(11,24),有= = =于是对 july加密的结果为DELW。,Hill密码的例子1,2018/10/14,28,Hill密码的例子,为了解密,Bob计算 且 因此,得到了正确的明文“july”,2018/10/14,29,Hill密码的例子2,例如:密钥(密
17、码学中好象没有“密匙“一词)矩阵 1 3 0 2 明文:HI THERE 去空格,2个字母一组,根据字母表顺序换成矩阵数值如下,末尾的E为填充字元: HI TH ER EE 8(H) 20(T) 5 (E) 5 (E)9(I) 8(H) 18(R) 5 (E)HI 经过矩阵运算转换为 IS,具体算法参考下面的说明: |1 3| 8 =1*8+3*9=35 MOD26=9 =I |0 2| 9 =0*8+2*9=18 MOD26=18=H,2018/10/14,30,Vigenere(维吉尼亚)密码 : ci( mi + ki) mod 26,这是一种典型的多表替代密码,相当于多个凯撒密码即一个
18、明文字母可以表示为多个密文字母。 方法如下: 设密钥k=k1k2kn,明文M=m1m2mn,加密变换Ek(M)=c1c2cn。 其中 ci( mi + ki) mod 26,i=1,2n。 例如,Mdata security,kbest。首先将M分解为长为4的序列data secu rity 每一节利用密钥kbest加密得密文c=Ek(M)=EELT TIUN SMLR 总结:把每一个密钥字母作为一个凯撒密码来加密明文,2018/10/14,31,网络加密方式 (补充),1 链路加密 2 节点加密 3 端端加密,2018/10/14,32,1 链路加密,链路加密是目前最常用的一种加密方法,通常
19、用硬件在网络层以下(1、2层)的物理层和数据链路层中实现,它用于保护通信节点间传输的数据。图2-4表示了这种加密方式的原理。,链路加密方式有两个缺点;一是全部报文都以明文形式通过各节点的计算机中央处理机,在这些节点上数据容易受到非法存取的危害;二是由于每条链路都要有一对加密/解密设备和一个独立的密钥,维护节点的安全性费用较高,因此成本也较高。,2018/10/14,33,2 节点加密,节点加密是链路加密的改进,其目的是克服链路加密在节点处易遭非法存取的缺点。其加密原理如图2-5所示。,2018/10/14,34,3 端端加密,网络层以上的加密,通常称为端端加密。端端加密是面向网络高层主体进行的
20、加密,即在协议表示层上对传输的数据进行加密,而不对下层协议信息加密。协议信息以明文形式传输,用户数据在中间节点不需要加密。端端加密原理如图2-6所示。,2018/10/14,35,端端加密具有链路加密和节点加密所不具有的优点: (1)成本低。出于端端加密在中间任何节点上都不解密,即数据在到达目的地之前始终用密钥加密保护着,所以仅要求发送节点和最终的目标节点具有加密/解密设备,而链路加密则要求处理加密信息的每条链路均配有分立式密钥装置。 (2)端端加密比链路加密更安全。(3)端端加密可以由用户提供,因此对用户来说这种加密方式比较灵活。,2018/10/14,36,2.私钥密码体制,私钥密码的加密
21、、解密密钥相同或者容易互相推出。 根据对明文加密方式的不同,私钥密码体制可分为流密码和分组密码。 流密码也叫序列密码,是指一次仅对单个比特(字节)进行运算的算法; 分组密码是将明文消息分组(每组含多个字符),逐组加密。 常见的私钥密码算法有:DES、AES、IDEA、RC4、RC5等。,2018/10/14,37,私钥密码算法比较,2018/10/14,38,DES对称加密技术,DES(Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。DES使用一个56位的密钥以及附加的8位奇偶校验位,产生最大64位的分组大小
22、。攻击DES的主要形式被称为蛮力的或彻底密钥搜索,即重复尝试各种密钥直到有一个符合为止。,2018/10/14,39,DES算法的历史,美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告。加密算法要达到的目的有四点: 提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改; 具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握; DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础; 实现经济,运行有效,并且适用于多种完全不同的
23、应用。,2018/10/14,40,DES算法的安全性,DES算法正式公开发表以后,引起了一场激烈的争论。1977年Diffie和Hellman提出了制造一个每秒能测试106个密钥的大规模芯片,这种芯片的机器大约一天就可以搜索DES算法的整个密钥空间,制造这样的机器需要两千万美元。 1993年R.Session和M.Wiener给出了一个非常详细的密钥搜索机器的设计方案,它基于并行的密钥搜索芯片,此芯片每秒测试5107个密钥,当时这种芯片的造价是10.5美元,5760个这样的芯片组成的系统需要10万美元,这一系统平均1.5天即可找到密钥,如果利用10个这样的系统,费用是100万美元,但搜索时间
24、可以降到2.5小时。可见这种机制是不安全的。,2018/10/14,41,DES算法的安全性,1997年1月28日,美国的RSA数据安全公司在互联网上开展了一项名为“密钥挑战”的竞赛,悬赏一万美元,破解一段用56比特密钥加密的DES密文。计划公布后引起了网络用户的强力响应。一位名叫Rocke Verser的程序员设计了一个可以通过互联网分段运行的密钥穷举搜索程序,组织实施了一个称为DESHALL的搜索行动,成千上万的志愿者加入到计划中,在计划实施的第96天,即挑战赛计划公布的第140天,1997年6月17日晚上10点39分,美国盐湖城Inetz公司的职员Michael Sanders成功地找到
25、了密钥,在计算机上显示了明文:“The unknown message is: Strong cryptography makes the world a safer place”。,2018/10/14,42,DES算法的原理,DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式有两种:加密或解密。DES算法是这样工作的:如Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key
26、去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。,2018/10/14,43,DES算法的实现步骤,DES算法实现加密需要三个步骤: 第一步:变换明文。对给定的64位比特的明文x,首先通过一个置换IP表来重新排列x,从而构造出64位比特的x0,x0=IP(x)=L0R0,其中L0表示x0的前32比特,R0表示x0的后32位。 第二步:按照规则迭代。规则为 Li = Ri-1 Ri = Lif(Ri-1,Ki) (i=1,2,316) 经过第一步变换已经得到L0和R0的值,其中符号表示的数学运算是异或,f表示一种置换,由S盒置换构成,Ki是一些由密钥编排函
27、数产生的比特块。f和Ki将在后面介绍。,2018/10/14,44,第三步:对L16R16利用IP-1作逆置换,就得到了密文y。加密过程如图8-4所示。,2018/10/14,45,DES加密的四个关键点:,从图中可以看出,DES加密需要四个关键点:1、IP置换表和IP-1逆置换表。 2、函数f。 3、子密钥Ki。 4、S盒的工作原理。,2018/10/14,46,(1)IP置换表和IP-1逆置换表,输入的64位数据按置换IP表进行重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换IP表如表8-1所示。,2018/10/14,47,IP置换与逆置换,将输入64位比特的第58位换到
28、第一位,第50位换到第二位,依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位。比如:置换前的输入值为D1D2D3D64,则经过初始置换后的结果为:L0=D58D50.D8,R0=D57D49.D7。经过16次迭代运算后。得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置的逆运算,例如,第1位经过初始置换后,处于第40位,而通过逆置换IP-1,又将第40位换回到第1位,其逆置换IP-1规则表8-2所示。,2018/10/14,48,逆置换表IP-1,2018/10/14,49,(2)函数f,函数f有两个输入:3
29、2位的Ri-1和48位Ki,f函数的处理流程如图8-5所示。,2018/10/14,50,E变换,E变换的算法是从Ri-1的32位中选取某些位,构成48位。即E将32比特扩展变换为48位,变换规则根据E位选择表,如表8-3所示。,2018/10/14,51,Ki是由密钥产生的48位比特串,具体的算法下面介绍。将E的选位结果与Ki作异或操作,得到一个48位输出。分成8组,每组6位,作为8个S盒的输入。每个S盒输出4位,共32位,S盒的工作原理将在第四步介绍。S盒的输出作为P变换的输入,P的功能是对输入进行置换,P换位表如表8-4所示。,2018/10/14,52,(3)子密钥ki 假设密钥为K,
30、长度为64位,但是其中第8、16、24、32、40、48、64用作奇偶校验位,实际上密钥长度为56位。K的下标i的取值范围是1到16,用16轮来构造。构造过程如图8-6所示。,2018/10/14,53,首先,对于给定的密钥K,应用PC1变换进行选位,选定后的结果是56位,设其前28位为C0,后28位为D0。PC1选位如表8-5所示。,2018/10/14,54,第一轮:对C0作左移LS1得到C1,对D0作左移LS1得到D1,对C1D1应用PC2进行选位,得到K1。其中LS1是左移的位数,如表8-6所示。,2018/10/14,55,表8-6中的第一列是LS1,第二列是LS2,以此类推。左移的
31、原理是所有二进位向左移动,原来最右边的比特位移动到最左边。其中PC2如表8-7所示。,2018/10/14,56,第二轮:对C1,D1作左移LS2得到C2和D2,进一步对C2D2应用PC2进行选位,得到K2。如此继续,分别得到K3,K4K16。,2018/10/14,57,(4)S盒的工作原理,S盒以6位作为输入,而以4位作为输出,现在以S1为例说明其过程。假设输入为A=a1a2a3a4a5a6,则a2a3a4a5所代表的数是0到15之间的一个数,记为:k=a2a3a4a5;由a1a6所代表的数是0到3间的一个数,记为h=a1a6。在S1的h行,k列找到一个数B,B在0到15之间,它可以用4位
32、二进制表示,为B=b1b2b3b4,这就是S1的输出。DES算法的解密过程是一样的,区别仅仅在于第一次迭代时用子密钥K15,第二次K14、最后一次用K0,算法本身并没有任何变化。DES的算法是对称的,既可用于加密又可用于解密。,2018/10/14,58,DES算法的应用误区,DES算法具有比较高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的,当然,随着科学技术的发展,当出现超高速计算机后,我们可考虑
33、把DES密钥的长度再增长一些,以此来达到更高的保密程度。,2018/10/14,59,2.2 私钥密码体制 2.2.1简化DES(S-DES)(不讲),为了帮助读者加深对DES算法的理解,掌握DES算法的结构,本节介绍简化DES(S-DES)。 S-DES与DES有着相似的性质和结构,但是参数要比DES小得多 算法结构如图所示,2018/10/14,60,2018/10/14,61,2.2.1简化DES(S-DES) (不讲),S-DES算法 描述 S-DES的密钥产生在S-DES算法中,由收发双方共享的10位密钥通过置换和移位操作产生了两个8位密钥,这两个8位密钥被分别用在加解密的不同阶段,
34、如图描述了密钥产生过程。下面介绍其产生过程,2018/10/14,62,2.2.1简化DES(S-DES) (不讲),置换P10 置换P10被定义为:移位操作(LS-1) LS-1表示循环左移一位。 置换P8 从移位操作输出的10位密钥中选取8位,按下表的规则运用置换P8:移位操作LS-2 LS-2表示循环左移2位。,2018/10/14,63,2.2.1简化DES(S-DES),S-DES加密(不讲) S-DES加密过程包括4个函数,5步操作。下面根据这些函数使用的先后顺序对这四个函数进行详细介绍。,2018/10/14,64,2.2.1简化DES(S-DES),初始置换(IP) S-DES
35、算法的输入是一个8位明文分组,我们首先使用函数对其进行初始置换 函数 S-DES算法最复杂的部分,它由置换函数和代换函数组合而成。函数可按如下方式表达。设L和R分别是的八位输入的左边4位和右边4位。F是一个4位到4位的映射。则函数可以表示为其中,SK是子密钥,第一轮取值为K1 ,第二轮取值为K2 ,是按位异或函数。,2018/10/14,65,2.2.1简化DES(S-DES) (不讲),函数F主要包括4步操作。 第一步:E/P扩展置换操作 4 1 2 3 2 3 4 1 第二步:与子密钥异或相加 将8位子密钥K1与E/P扩展置换输出的八位按位异或。 S盒运算 将第二步的输出结果分为左右两部分
36、,各4位。将左4位输入到中得到一个2位的输出。将右4位输入中产生另一个2位的输出。S盒的操作规则如下:第1位和第4位作为一个2位二进制数决定了S盒的行,第2位和第3位决定了S盒的列。输出也是一个2位的二进制数。,2018/10/14,66,S盒,2018/10/14,67,2.2.1简化DES(S-DES) (不讲),第四步:置换操作P4 接下来,由和的输出组成的4位数据再进行如下置换操作: 2 4 3 1 交换函数SW 函数只改变输入的最左边4位。交换函数SW将输入的左4位和右4位交换,这样再次作用的就是不同的4位了。交换函数SW的输出被第二次输入到函数, 逆置换() 在S-DES算法的最后
37、,使用的逆置换如下表所示: 4 1 3 5 7 2 8 6,2018/10/14,68,2.2 私钥密码体制,2.2.2 DES简介 S-DES与DES的算法结构相同,但DES的参数较大,其输入为64位分组,函数迭代16圈,因此需要产生16个子密钥。DES的初始输入密钥为64位,其中有效密钥为56位(初始密钥的第8i(i = 1,8)比特是奇偶校验位),利用子密钥生成算法由56位密钥产生16个48位子密钥。,2018/10/14,69,2.2.2 DES简介,DES的意义 具体表现在以下几个方面 它公开展示了能完全适应某一历史阶段中信息安全要求的一种密码体制的构造方法; 它是世界上第一个数据加
38、密标准,并确立了这样一个原则,即算法的细节可以公开而密钥必须是保密的; 它极大地推动了密码算法标准化工作; 它的出现及引发的讨论确立了安全设计和使用分组密码的若干准则,并引发了分组密码设计的高潮; 它推动了密码分析理论和技术的快速发展,先后出现了差分分析、线性分析等多种新的有效的密码分析方法。,2018/10/14,70,2.2.2 DES简介,多重DES 双重DES双重DES的密钥长度为112比特,可有效地增加算法强度 三重DES算法,2018/10/14,71,2.2 私钥密码体制 2.2.3 高级加密标准AES,AES的基本要求:比三重DES快而且至少和三重DES一样安全,分组长度为12
39、8比特,密钥长度为128/192/256比特。 流程框图,2018/10/14,72,2.2 私钥密码体制,2.2.4 分组密码工作模式 指以某个分组密码算法为基础,构造一个分组密码系统方法,构造出的分组密码系统不仅可以解决对任意长度的明文加密问题,还可以构造随机数生成器、流密码、消息认证码及杂凑函数等。 实质:研究在不同应用环境中如何使用分组密码算法。主要有:电码本,密码分组链接,密码反馈,输出反馈 共4种工作模式。,2018/10/14,73,1.电码本ECB(Electronic Code Book)模式,特点:最简单的分组密码工作模式是电码本(ECB)模式,每次使用相同的密钥处理一个固
40、定长度为n位的明文分组(以DES为例,就是64位明文分组)。 主要优点 : 无差错传播。在传输过程中,一个密文分组的丢失或传输错误不影响其它分组的正确解密,即传输中的差错不会传播到其它分组块。不同明文分组的加密可并行实施,尤其是硬件实现时速度很快。 主要缺点有: 容易暴露明文的数据模式,即相同明文会生成相同密文,无法抵御统计攻击。 无法抵抗组的重放、嵌入和删除等攻击。为了克服该模式的弱点,可以在加密处理中引入少量的记忆等。,2018/10/14,74,2.密码分组链接CBC(Cipher Block Chaining)模式,(可将重复的明文组加密成不同的密文组) 加密模式可以表示为其解密模式可
41、以表示为加密第一组明文时,需要与一个初始矢量(IV)异或后再加密,即解密最后一组密文时,也需要初始矢量(IV)的参与,即,2018/10/14,75,CBC模式的优缺点,CBC模式的优点有: 能够隐蔽明文数据模式,相同的明文分组未必蕴涵着相同的密文分组。 在一定程度上能够识别攻击者在密文传输中是否对数据作了窜改,如组的重放、嵌入或删除等。 具有自同步功能。密文出现丢块和错块不影响后续密文块的脱密。若从第t块起密文块正确,则第t+1个明文块就能正确求出。 模式的缺点: CBC模式的缺点是具有有限的错误传播特性。,2018/10/14,76,3. s比特密码反馈CFB(Cipher Feedbac
42、k)模式,加密算法可以表示为:CFB模式的解密算法可以表示为,2018/10/14,77,4. s比特输出反馈OFB(Output Feedback)模式,OFB用加密函数的输出填充OFB的移位寄存器,CFB模式则用密文单元来填充移位寄存器。 优点是传输过程中在某位上发生的错误不会影响其它位。OFB的缺点是,抗消息流篡改攻击的能力不如CFB,即密文中的某位取反,恢复出的的明文相应也取反。,2018/10/14,78,4-1 S位输出反馈加密模式,2018/10/14,79,4-2 S位输出反馈解密模式,2018/10/14,80,3.公钥密码体制,公开密钥算法(非对称算法)的加密的密钥和解密的
43、密钥不同,而且解密密钥不能根据加密密钥计算出来,或者至少在可以计算的时间内不能计算出来。之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。加密密钥叫做公开密钥(简称公钥),解密密钥叫做私人密钥(简称私钥)。公开密钥K1加密表示为:EK1(M)=C。公开密钥和私人密钥是不同的,用相应的私人密钥K2解密可表示为:DK2(C)=M。,2018/10/14,81,2.3 公钥密码体制,2.3.1 概述,2018/10/14,82,非对称密码体制,加密密钥和解密密钥各不相同,发送信息的人利用接收者的公钥发送加密信息,接收者再利用自己专有的私
44、钥进行解密。 也称公钥加密 目前公钥体制广泛的用于CA认证,数字签名和密钥交换等领域。 非对称加密的基本原理依赖于大整数因子分解的困难性和复杂性,2018/10/14,83,非对称加密算法RSA加密原理,密文=(明文)emod n 明文=(密文)dmod n 私钥=d,n 公钥=e,n,2018/10/14,84,RSA算法过程(1),密钥产生过程 选择p和q。其中p和q都是素数,且p和q不相等; 计算n=pq; 计算H(n)=(p-1)(q-1); 选择整数e,使之满足gcd(H(n),e)=1,1 e H(n); 计算d,使之满足(d*e) mod H(n)=1; 得到公钥PU=e,n,私
45、钥PR=d,n。,2018/10/14,85,RSA算法过程(2),加密 明文Mn,由加密公式C=Me mod n得到密文。 解密 密文Cn,由解密公式M=Cd mod n得到明文。,2018/10/14,86,RSA示例,首先产生公钥和私钥 选择了两个素数,例如选择p=11,q=13 现在计算n=pq,这意味着n=11*13=143 现在必须计算H(n)=(p-1)(q-1)=10*12=120 选择对于H(n)=120的一个互质数为e,这里选择e=7 必须决定d,以便使(d*e) mod H(n) =1,因此(d*7)mod 120=1,并且d必须小于120 可以得到d=103(103乘以
46、7等于721.721除以120等于6,余数为1) 私钥是103,143 公钥是7,143,2018/10/14,87,RSA示例,如果希望发送的消息为9(明文),可以使用加密公式:密文=97 mod 143=48 收到加密之后,要使用解密算法:明文=48103 mod 143=9 加解密的过程如图3-5所示。,2018/10/14,88,RSA示例,2018/10/14,89,第五章 公钥密码体制,公钥密码体制的基本原理 RSA算法 ElGamal密码体制 椭圆曲线密码体制,2018/10/14,90,公钥密码体制,常规密钥密码体制采用的是对称方法,使用相同的密码。缺点: 从加密的算法和密码,
47、可以推导出解密的算法和密码。 在多个发送者和单一接收者来说,不方便。 如何安全地分发密钥。,2018/10/14,91,公钥密码体制,能够有效计算公钥PK和私钥SK。 从已知的公钥PK不能推导出私钥SK。 发送方用公钥PK进行加密,而接收方用私钥SK进行解密,还原出明文,即:DSK(EPK(P)= P。,2018/10/14,92,公钥密码学的历史,76年Diffie和Hellman发表了“密码学的新方向”,奠定了公钥密码学的基础 公钥技术是二十世纪最伟大的思想之一 改变了密钥分发的方式 可以广泛用于数字签名和身份认证服务 78年,RSA算法 PKI,2018/10/14,93,如:银行有很多
48、客户,每个客户都用公钥加密,而银行则用私钥解密。,公开密钥密码体制,2018/10/14,94,公钥算法应用:保密,2018/10/14,95,公钥算法应用:认证,2018/10/14,96,基本思想和要求,涉及到各方:发送方、接收方、攻击者 涉及到数据:公钥、私钥、明文、密文 公钥算法的条件: 产生一对密钥是计算可行的 已知公钥和明文,产生密文是计算可行的 接收方利用私钥来解密密文是计算可行的 对于攻击者,利用公钥来推断私钥是计算不可行的 已知公钥和密文,恢复明文是计算不可行的 (可选)加密和解密的顺序可交换,2018/10/14,97,如何设计一个公钥算法,公钥和私钥必须相关,而且从公钥到
49、私钥不可推断 必须要找到一个难题,从一个方向走是容易的,从另一个方向走是困难的 如何把这个难题跟加解密结合起来计算可行和不可行的界,2018/10/14,98,RSA的密钥产生过程,RSA算法由三位科学家Rivest、Shamir和Adleman提出。 选择密钥的步骤: 1随机选择两个大素数p和q。 2计算公开的模 n=p*q 。 3计算欧拉函数 (n)=(p-1)*(q-1)。 4随机选一整数 e,1e(n) ,((n),e)=1,即(n)和e互素。 5计算d ,满足 ed mod (n) =1。 得到公钥和私钥,公钥为( e , n ),私钥为 d 。,2018/10/14,99,RSA,加密/解密过程: 1将明文划分为一个个数据块P,其中0Pn。 2C为P对应的密文。则: 加密: C= Pe (mod n) 解密: P= Cd (mod n),