第二章密码技术第2章密码技术2.1密码技术概述2.2传统的加密方法2.3常用加密技术介绍2.4加密技术的典型应用—数字签名2.5密钥管理2.6PGP加密软件简介第二章密码技术2.1密码技术概述返回本章首页第二章密码技术密码学包括两部分内容:编码学和编码分析学。编码学是通过编码技术将被保护信息的形式改变,使得编码后的信息除了指定的接收者外其他人无法理解的一门学问,也就是加密算法的研究和设计。密码分析学是研究如何攻破一个密码系统,将被加密的信息恢复,也就是密码破译技术。这两部分内容是矛与盾的关系。密码系统包括五个要素:明文信息空间、密文信息空间、密钥空间、加密变换E和解密变换D第二章密码技术1)明文:加密前的原始信息。2)密文:通过加密手段加密后的信息。3)加密过程:将明文进行数据转换成密文的过程。4)解密过程:利用加密的逆转换成密文恢复成明文的过程。5)密钥:控制加密和解密运算的符号序列。图2-1密码系统示意图第二章密码技术根据数据加密的方式,加密算法可以分为对称密钥加密算法和非对称密钥加密算法两种。对称算法是指加密和解密的过程使用同一个密钥。它的特点是运算速度非常快,适合用于对数据本身的加解密操作。常见的对称算法如各种传统的加密算法、DES算法等。相对于对称算法来讲,非对称算法的运算速度要慢得多,但是在多人协作或需要身份认证的数据安全应用中,非对称算法的运算具有不可替代的作用。在这种加密算法中有两个密钥,一个称为公钥,一个称为私钥。在加密时,公钥用于加密,私钥用于解密。如RSA算法、PGP算法等,通常用于数据加密,由于非对称算法的速度较慢,现在多采用对称算法与非对称算法相结合的加密方法,这样,既可以有很高的加密强度,也可以有较快的加密速度。此方法已广泛用于因特网的数据加密传送和数字签名。返回本节目录第二章密码技术一个较为成熟的密码体系,其算法应该是公开的,而密钥是保密的。在加密系统的设计中,密钥的长度是一个主要的设计问题。一个2位数字的密钥意味着有100种可能性,一个3位数字的密钥意味着有1000种可能性,一个6位数字的密钥意味着有100万种可能性。密钥越长,加密系统被破译的几率就越低。第二章密码技术2.2传统的加密方法2.2.1替换密码2.2.2变位密码返回本章首页第二章密码技术2.2.1替换密码在替代密码中,用一组密文字母来代替一组明文字母以隐藏明文,但保持明文字母的位置不变。最古老的替代密码是凯撒密码,它用D表示a,用E表示b,用F表示c,…,用C表示z,也就是说密文字母相对明文字母左移了3位。为清楚起见,一律用小写表示明文,用大写表示密文,这样明文的“cipher”就变成了密文的“FLSKHU”。依此类推,可以让密文字母相对明文字母左移K位,这样k就成了加密和解密的密钥。这种密码是很容易破译的,因为最多只需尝试25次(k=1~25)即可轻松破译密码。第二章密码技术较为复杂一点的密码,是使明文字母和密文字母之间的映射关系,它没有规律可循,比如将26个英文字母随意映射到其他字母上,这种方法称为单字母表替换,其密钥是对应于可能的密钥,即使计算机每微秒试一个密钥,也需要1013年。但事实上完全不需要这么做,破译者只要拥有很少一点密文,利用自然语言的统计特征,很容易就可破译密码。破译的关键在于找各种字母或字母组合出现的频率.返回本节目录第二章密码技术2.2.2变换密码换位有时也称为排列,它不对明文字母进行变换,只是将明文字母的次序进行重新排列。它的密钥必须是一个不含重复字母的单词或短语,加密时将明文按密钥长度截成若干行排在密钥下面,按照密钥字母在英文字母表中的先后顺序给各列进行编号,然后按照编好的序号按列输出明文即成密文。第二章密码技术破译的第一步是判断密码类型,检查密文中E、T、O、A、N、I等字母的出现频率,如果符合自然语言特征,则说明密文是用换位密码字的。第二步是猜测密钥的长度,也即列数。第三步是确定各列的顺序。第二章密码技术2.3常用加密技术介绍2.3.1DES算法2.3.2IDEA算法2.3.3RSA算法返回本章首页第二章密码技术2.3.1DES算法数据加密标准(DataEncryptionStandard,DES)是由IBM公司研制的加密算法,于1977年被美国政府采用,作为商业和非保密信息的加密标准被广泛采用。尽管该算法较复杂,但易于实现。它只对小的分组进行简单的逻辑运算,用硬件和软件实现起来都比较容易,尤其是用硬件实现使该算法的速度快。第二章密码技术1.DES算法的描述DES算法将信息分成64比特的分组,并使用56比特长度的密钥。它对每一个分组使用一种复杂的变位组合、替换,再进行异或运算和其他一些过程,最后生成64比特的加密数据。对每一个分组进行19步处理,每一步的输出是下一步的输入。下图显示了DES算法的主要步骤。第二章密码技术第二章密码技术2.DES算法的安全性DES算法的加密和解密密钥相同,属于一种对称加密技术。对称加密技术从本质上说都是使用替代密码和换位密码进行加密的。3.三重数据加密算法三重数据加密算法(ThreeDataEncryptionAlgorithm,TDEA)在1985年第一次为金融应用进行了标准化,在1999年合并到数据加密标准中。TDEA使用3个密钥,按照加密→解密→加密的次序执行3次DES算法。TDEA3个不同的密钥总有效长度为168比特,加强了算法的安全性。第二章密码技术2.3.2IDEA算法国际数据加密算法IDEA是瑞士的著名学者提出的。IDEA是在DES算法的基础上发展起来的一种安全高效的分组密码系统。IDEA密码系统的明文和密文长度均为64比特,密钥长度则为128比特。其加密由8轮类似的运算和输出变换组成,主要有异或、模加和模乘3种运算。第二章密码技术IDEA算法的密钥长度为128位,是DES密钥长度的两倍。它能够抵抗差分密码分析方法和相关密钥分析方法的攻击。科学家已证明IDEA算法在其8轮迭代的第4轮之后便不受差分密码分析的影响了。假定穷举法攻击有效的话,那么即使设计一种每秒种可以试验10亿个密钥的专用芯片,并将10亿片这样的芯片用于此项工作,仍需1013年才能解决问题。目前,尚无一篇公开发表的试图对IDEA进行密码分析的文章。因此,目前,应当说IDEA是一种安全性好、效率高的分组密码算法。第二章密码技术2.3.3RSA算法RSA算法采用非对称加密算法RSA算法是由R.Rivest,A.Shamir和L.Adleman于1997年提出的。目前,RSA被广泛应用于各种安全和认证领域,如Web服务器和浏览器信息安全、E-mail的安全和认证、对远程登录的安全保证和各种电子信用卡系统。第二章密码技术1.RSA算法的加密过程RSA算法加密过程的具体步骤如下。1)为字母制定一个简单的编码,如A~Z分别对应1~26。2)选择一个足够大的数n,使n为两个大的素数(只能被1和自身整除的数)p和q的乘积。为便于说明,在此使用n=p×q=3×11=33。3)找出一个数k,k与(p-1)×(q-1)互为素数。此例中选择k=3,与2×10=20互为素数。数字k就是加密密钥。根据数论中的理论,这样的数一定存在。4)将要发送的信息分成多个部分,一般可以将多个字母分为一部分。在此例中将每一个字母作为一部分。若信息是“SUZAN”,则分为S、U、Z、A和N。5)对每部分,将所有字母的二进制编码串接起来,并转换成整数。在此例中各部分的整数分别为19、21、26、1和14。6)将每个部分扩大到它的k次方,并使用模n运算,得到密文。在此例中分别是193mod33=28,213mod33=21,263mod33=20,13mod33=1和143mod33=5。接收方收到的加密信息是28、21、20、1和5。第二章密码技术2.RSA算法的解密过程1)找出一个数k’使得k×k’-1=0mod((p-1)×(q-1)),即k×k’-1能被(p-1)×(q-1)整除。K’的值就是解密密钥。在此例中选择k’=7,3×7-1=20,(p-1)×(q-1)=20,能被整除。2)将每个密文扩大到它的k’次方,并使用模n运算,可得到明文。在此例中分别为287mod33=9,217mod33=21,207mod33=26,17mod33=1和57mod33=14。接收方解密后得到的明文的数字是19、21、26、1和14,对应的字母是S、U、Z、A和N。第二章密码技术3.RSA算法的安全性RSA算法的加密过程要求n和k,解密过程要求n和k’。n和k以及算法都是公开的。现在已知n和k的情况下是否能很容易或很快求出k’,是衡量RSA算法安全性的关键因素。在已知n和k的情况下求k’的关键是对n的因式分解,找出n的两个素数p和q。而对算法的安全,就必须选择大的n,也就意味着密钥的长度要足够长。密钥长度越大,安全性也就越高,但相应的计算机速度也就越慢。由于高速计算机的出现,以前认为已经很具有安全性的512位密钥长度已经不再满足人们的需要。1997年,RSA组织公布当时密钥长度的标准是个人使用768位密钥,公司使用1024位密钥,而一些非常重要的机构使用2048位密钥。第二章密码技术2.4加密技术的典型应用2.4.1数字签名的定义2.4.2数字签名的实现2.4.3数字签名的发展方向返回本章首页第二章密码技术2.4.1数字签名的定义数字签名(DigitalSignature)是指信息发送者使用公开密钥算法的主要技术,产生别人无法伪造的一段数字串。要用计算机报文代替纸墨文件的传送,就必须找到解决亲笔签名来确定,这样,数字签名就应运而生了。如今,数字签名已经在诸如电子邮件、电子转账、办公室自动化等系统大量应用了。数字签名用来保证信息传输过程中信息的完整和提供信息发送者的身份认证。返回本节目录第二章密码技术2.4.2数字签名的实现数字签名可以用对称算法实现,也可以用非对称算法实现,还可以用报文摘要算法来实现。1.使用对称密钥算法进行数字签名由于这种方法是逐位进行签名的,所以只要有一位被改动过,接受方就得不到正确的数字签名,因此其安全性较好。其缺点是:签名太长,签名密钥及相应的验证信息不能重复使用,否则极不安全。第二章密码技术2.使用非对称密钥密码算法进行数字签名非对称密钥密码算法使用两个密钥:公开密钥和私有密钥,分别用于对数据的加密和解密,即如果用公开密钥对数据进行加密,只有用对应的私有密钥才能进行解密。如果用私有密钥对数据进行加密,则只有用对应的公开密钥才能解密。使用公钥密码算法进行数字签名的加密标准有:RSA,DSA,Diffie-Hellman等。其签名和验证过程为:发送方首先用公开的单向函数对报文进行一次变换,得到数字签名,然后利用私有密钥对数字签名进行加密后,附在报文之后一同发出。接收方用发送方的分开密钥对数字签名进行解密交换,得到一个数字签名的明文。发送方的分钥可以由一个可信赖的技术管理机构,即认证中以(CA)发布。接收方将得到的明文通过单向函数进行计算,同样得到一个数字签名,再将两个数字签名进行对比。如果相同,则证明签名有效,否则无效。第二章密码技术3.报文摘要算法报文摘要是最主要的数字签名方法。该数字签名方法是将数字签名与要发送的信息紧密联系在一起,它更适合于电子商务活动。使用报文摘要算法进行数字签名的通用加密标准有:SHA-1,MD5等。下面以MD5为例简要说明。MD5是目前应用最广泛的报文摘要算法,是一个可以为每个文件生成一个数字签名的工作。MD5属于一种HASH(哈希)函数,其定义为:算法以一个任意长信息作为输入,产生一个128位的“指纹”或“摘要信息”。第二章密码技术MD5提供了一种单向的HASH函数,是一种校验工具。它将一个任意长的字串作为输入,产生一个128位的“报文摘要”,附在信息报文后面,以防报文被篡改。MD5被认为对两个不同报文产生相同的报文摘要是不可计算的,并且对一个已给定的报文摘要,对另一个报文产生同样的报文摘要也是不可计算的。在计算机安全中,MD5算法是非常有效的一种对付特洛伊木马程序的工具。通过M