2020/1/171第2章密码学应用基础本章学习重点掌握内容:密码学基本术语密码体制分类传统密码体制私钥密码体制的主要特点公钥密码体制的主要特点杂凑函数的基本概念典型密码算法2020/1/172第2章密码学应用基础2.1概述2.2私钥密码体制2.3公钥密码体制2.4杂凑函数2.5密码算法应用实例——PGP2.6实验——PGP加密并签名邮件2020/1/1732.1概述密码学(Cryptology)是研究密码编制、密码破译和密钥管理的一门综合性应用科学。其主要研究内容包括两个分支:密码编码学(Cryptography)和密码分析学(Cryptanalytics),两者既相互对立,又相互促进发展。密码编码学是研究如何对信息进行编码实现信息的隐蔽;密码分析学是研究如何分析破译密码。2020/1/1742.1概述2.1.1密码学发展历史分为三个阶段第一阶段是从古代到1949年。这一时期被称作“科学密码学的前夜”,所研究的内容被称为古典密码学。第二阶段是从1949年到1975年。1949年Shannon发表的“保密系统的信息理论”一文标志着密码学从此成为一门科学,由此拉开了现代密码学研究的序幕。该文,奠定了密码学的理论基础。(私钥密码体制)第三阶段从1976年至今。非对称密钥提出,开创了公钥密码学的新纪元。2020/1/1752.1概述2.1.2密码学基本术语明文、密文被隐蔽的消息被称做明文(PlainText),通常用P或M表示。隐蔽后的消息被称做密文(CipherText),通常用C表示。发送者、接收者在信息传送过程中,主动提供信息的一方称为发送者,得到信息的一方称为接收者。2020/1/176鉴别:消息的接收者应该能够确认消息的来源,入侵者不可能伪装成他人。完整性:消息的接收者应该能够验证在传送过程中消息有没有被修改,入侵者不可能用假消息代替合法消息。抗抵赖:发送者事后不可能虚假地否认他发送的消息。2020/1/1772.1.2密码学基本术语加密、解密、加密算法、解密算法将明文变换成密文的过程称为加密(Encryption)。将密文变换成明文的过程称为解密(Decryption)。对明文进行加密时所采用的一组规则称为加密算法(EncryptionAlgorithm)。通常用E表示。对密文进行解密时所采用的一组规则称为解密算法(DecryptionAlgorithm)。通常用D表示。密钥加密和解密算法的操作通常都是在一组密钥(Key)的控制下进行的,分别称为加密密钥和解密密钥。通常用Ke和Kd表示。2020/1/1782.1.2密码学基本术语截收者在消息的传输和处理系统中,除了信息的合法授权接收者外,还有非授权者,他们通过各种手段,如:搭线窃听、电磁窃听、声音窃听等来窃取机密信息,称其为截收者。主动攻击、被动攻击攻击者主动向系统窜扰,采用删除、更改、增填、重放、伪造等手段向系统注入假消息,以达到一定的目的,这样的攻击手段称作主动攻击;对一个密码系统采取截获密文进行分析的这类攻击称作被动攻击。密码系统通常简称为密码体制(Cryptosystem),由五元组(M,C,K,E,D)构成密码系统模型参见图2-1。五元组(M,C,K,E,D)描述如下:明文空间M,它是全体明文的集合;密文空间C,它是全体密文的集合;C=EK(M),M=DK(C)2020/1/179密钥空间K,它是全体密钥的集合,其中每一个密钥K均由加密密钥和解密密钥组成;加密算法E,它是由明文空间到密文空间的加密变换;解密算法D,它是由密文空间到明文空间的解密变换。攻击者信道解密算法明文加密算法明文MMCC安全信道加密密钥解密密钥KeKd密钥K2020/1/1710密码系统模型2020/1/1711基本术语消息被称为明文(Plaintext)。用某种方法伪装消息以隐藏它的内容的过程称为加密(Encryption),被加密的消息称为密文(Ciphertext),而把密文转变为明文的过程称为解密(Decryption)。对明文进行加密操作的人员称作加密员或密码员(Cryptographer).密码算法(CryptographyAlgorithm):是用于加密和解密的数学函数。密码员对明文进行加密操作时所采用的一组规则称作加密算法(EncryptionAlgorithm).所传送消息的预定对象称为接收者(Receiver).接收者对密文解密所采用的一组规则称为解密算法(DecryptionAlgorithm).2020/1/17122.1概述2.1.3密码体制分类根据密钥的特点对称密码体制(SymmetricCryptosystem)单钥(One-Key)体制或私钥(PrivateKey)体制或传统密码体制(ClassicalCryptosystem);非对称密码体制(AsymmetricCryptosystem)。双钥(Two-Key)或公钥(PublicKey)密码体制。2020/1/1713加密体制分类按照加密密钥和解密密钥是否相同,可将现有的加密体制分为:单钥加密体制和双钥加密体制。1、单钥加密体制单钥加密体制又称为私钥或对称加密体制。这种体制的加密密钥和解密密钥相同或者本质上相同(即从其中一个可以很容易地推出另一个)。2、双钥加密体制双钥加密体制又称公钥(或非对称)加密体制。这种体制的加密密钥和解密密钥不相同,而且从其中一个很难推出另一个。这样加密密钥可以公开,而解密密钥可由用户自已秘密保存。2020/1/1714密码体制分类根据加密模式的不同,密码可以分为序列密码和分组密码。1、序列密码:又称为密钥流密码。这种体制是将明文M看成是连续的比特流或字符流(m1m2m3…),并用密钥序列K(k1k2k3…)中的第i个元素ki对明文中的mi进行逐位加密。这种密码由于没有固定的规律可寻,因此也不容易被破解。但由于这种序列密码是密钥对明文的逐位加密,因此需要和明文等长的密钥序列,如果明文太长,将不利于密钥的制订和管理。2020/1/1715密码体制分类——分组密码2、分组密码:先将明文划分为固定长度的数据组,以组为单位进行加密。即用一个固定的变换对一个比较大的明文数组进行操作。这种密码的密钥相对较短,因此出于安全的考虑,加密变换的算法起着至关重要的作用2020/1/17162.1.3密码体制分类按照加密方式不同,私钥密码体制被分为流密码(StreamCipher)(或称序列密码)分组密码(BlockCipher)区别是:流密码是将明文消息按字符逐位加密;分组密码是将明文消息先进行分组,再逐组加密。目前多数私钥密码体制采用的是分组密码体制,仅有少量的加密体制采用的是流密码体制。2020/1/1717需要指出:无论哪种密码体制,密码算法的安全性依赖于密钥的安全。或者说,一个密码系统的安全性不依赖于算法,而仅与密钥有关。2020/1/1718密码体制发展过程:1.古典密码体制2.私钥密码体制3.现代密码体制2020/1/17191.古典密码体制经典加密技术:替代技术:替代是指明文中的每个元素被映射为另一元素置换技术:置换是指明文中的元素被重新排列2020/1/17201.单表替代(monoalphabetic)每一个明文字母被任意地对应到一个密文字母。密钥有26字母长。明文字母:abcdefghijklmnopqrstuvwxyz密文字母:DKVQFIBJWPESCXHTMYAUOLRGZN明文:ifwewishtoreplaceletters密文:WIRFRWAJUHYFTSDVFSFUUFYA2020/1/1721替代技术——凯撒密码最早的替代密码算法首先用于军事每一个字母用后面的第3个字母替代例如:meetmeafterthetogapartyPHHWPHDIWHUWKHWRJDSDUWB规则:明文中的每一个字母按照英文字母的顺序被排在其后面的第三个字母所替代而产生相应的密文。2020/1/1722凯撒密码的原理:c≡m+kmod26令26个字母分别对应于整数0~25比如a=1,b=2……y=25,z=0。凯撒加密变换实际上是c≡m+kmod26,k叫密钥。比如:datasecurity对应数据序列4,1,20,1,19,5,3,21,18,9,20,25k=5时,得密文序列9,6,25,6,24,10,8,0,23,14,25,4如果选取k1,k2两个参数,其中k1与26互素,令c≡k1m+k2mod26。这种变换称为仿射变换2020/1/1723凯撒密码-安全性仅有26种可能性A映射到A,B,..Z蛮力攻击(穷举攻击)试尽所有可能性需要能够识别什么是明文例如:破解密文GCUAVQDTGCM2020/1/17242.多表替代技术——Playfair密码英国人CharlesWheatstone于1854发明,但以他的朋友BaronPlayfair命名。通过加密两个字母来增进安全性。Playfair密码的密钥为5*5的矩阵:关键词为MONARCHYMONARCHYBDEFGI/JKLPQSTUVWXZ矩阵构造规则:从左至右,从上至下填入该关键词的字母(去除重复字母),然后再以字母表顺序将余下的字母填入矩阵剩余空间。字母I和J看作一个字母。2020/1/1725Playfair密码-编码原则将明文中的双字母组合成一个单元对待重复字母插入X“balloon”转变为balxloon同一行的两个字母,以右边的字母来代替如“ar”用“RM”代替同一列的两个字母,以下边的字母来代替如“mu”用“CM”代替否则用对角线的字母代替如“hs”用“BP”代替MONARCHYBDEFGI/JKLPQSTUVWXZ2020/1/1726Hill密码由纽约Hunter大学的数学家LesterHill于1929年发明。Hill在35岁时(1926年)获得Yale大学的博士学位。Hill加密算法的基本思想是将明文字母通过线性变换将它们转换为密文字母。取m个连续明文字母,用m个密文字母替代。C1=(k11p1+k12p2+k13p3)mod26C2=(k21p1+k22p2+k23p3)mod26C3=(k31p1+k32p2+k33p3)mod26加密:C=Ek(P)=KP解密:P=Dk(C)=K-1C2020/1/1727例子:当m=2时,明文元素x=(x1,x2),密文元素y=(y1,y2)若K=,可得K-1=若对明文july加密,它分成2个元素(j,u),(l,y),分别对应于(9,20),(11,24),有====于是对july加密的结果为DELW。Hill密码的例子17831111182377831120914072609943241116888721212211783112020/1/1728Hill密码的例子为了解密,Bob计算且因此,得到了正确的明文“july”2094311182372411221111182372020/1/1729Hill密码的例子2例如:密钥(密码学中好象没有密匙一词)矩阵1302明文:HITHERE去空格,2个字母一组,根据字母表顺序换成矩阵数值如下,末尾的E为填充字元:HITHEREE8(H)20(T)5(E)5(E)9(I)8(H)18(R)5(E)HI经过矩阵运算转换为IS,具体算法参考下面的说明:|13|8=1*8+3*9=35MOD26=9=I|02|9=0*8+2*9=18MOD26=18=H2020/1/1730Vigenere(维吉尼亚)密码:ci≡(mi+ki)m