《网络信息安全技术密码技术.ppt》由会员分享,可在线阅读,更多相关《网络信息安全技术密码技术.ppt(59页珍藏版)》请在课桌文档上搜索。
1、第二章 密码技术,2.1 引言2.2 对称密码算法2.3 非对称密码算法2.4 数字签名算法2.5 单向散列函数2.6 章小结,1,第二章 密码技术 2.1 引言 密码技术是信息交换安全的基础,通过数据加密、消息摘要、数字签名及密钥交换等技术实现了数据机密性、数据完整性、不可否认性和用户身份真实性等安全机制,从而保证了网络环境中信息传输和交换的安全。密码算法大致可以分为三类:(1)对称密码算法,如DES、IDEA和RC等算法;(2)非对称密码算法,如RSA、DSA等算法;(3)单向散列函数,如MD5、MD2和SHA等算法。,2,第二章 密码技术,2.1 引言2.2 对称密码算法2.3 非对称密
2、码算法2.4 数字签名算法2.5 单向散列函数2.6 章小结,3,2.2、对称密码算法2.2.1 基本原理 对称密码算法是指加密和解密数据使用同一个密钥,即加密和解密的密钥是对称的,这种密码系统也称为单密钥密码系统。原始数据(即明文)经过对称加密算法处理后,变成了不可读的密文(即乱码)。如果想解读原文,则需要使用同样的密码算法和密钥来解密,即信息的加密和解密使用同样的算法和密钥。,4,对称密码算法的特点是计算量小、加密速度快。缺点是加密和解密使用同一个密钥,容易产生发送者或接收者单方面密钥泄露问题,在网络环境下应用时必须使用另外的安全信道来传输密钥,否则容易引起密钥泄露和信息失密问题。,5,6
3、,对称密码算法基本原理,2.2.2 DES密码算法 DES(Data Encryption Standard)作为 ISO 和 ANSI的数据加密标准已经有近三十年历史了,经受住了长期的各种密码分析攻击,仍保持较好的安全性。DES是一种分组密码算法,使用56位密钥将64位的明文转换为64位的密文,密钥长度为64位,其中有8位是奇偶校验位。在DES算法中,只使用了标准的算术和逻辑运算,加密和解密速度很快,并且易于实现硬件化和芯片化。,7,1.DES算法描述 对64位的明文分组进行加密操作。(1)首先通过一个初始置换(IP),将64位明文分组分成左半部分和右半部分,各为32位。(2)然后进行 16
4、 轮完全相同的运算,这些运算称为函数 f,在运算过程中,数据和密钥结合。(3)经过 16 轮运算后,再通过一个初始置换的逆置换(IP1),将左半部分和右半部分合在一起,最终得到一个64位的密文。每一轮的运算步骤如下:(1)首先进行密钥置换,通过移动密钥位,从56位密钥中选出48位密钥。,8,(2)然后进行 f 函数运算:通过一个扩展置换(也称 E 置换)将数据的右半部分扩展成48位;通过一个异或操作与48 位密钥结合,得到一个 48位数据;通过8个S-盒代换将48位数据变换成32位数据;对32位数据进行一次直接置换(也称P-盒置换)。(3)通过一个异或操作将函数 f 的输出与左半部分结合,其结
5、果为新的右半部分;而原来的右半部分成为新的左半部分。每一轮运算的数学表达式为:其中,L i和 R i为第 i 轮迭代的左半部分和右半部分。,9,10,2.DES算法关键操作(1)初始置换、逆初始置换及其参数表 DES算法在加密前,首先执行一个初始置换操作,按照规定的初始置换表将64位明文的位置进行变换,得到一个乱序的64位明文。经过16轮运算后,通过一个逆初始置换操作,按照规定的逆初始置换表将左半部分(32位)和右半部分(32位)合在一起,得到一个64位密文。初始置换和逆初始置换并不影响 DES 的安全性,其主要目的是通过置换将明文和密文数据变换成字节形式输出,易于DES芯片的实现。,11,(
6、2)密钥置换及其参数表 在64位密钥中,每个字节的第8位为奇偶校验位,经过密钥置换表置换后去掉奇偶校验位,实际的密钥长度为56位。在每一轮运算中,将从56位密钥中产生不同的48位子密钥 Ki,这些子密钥按下列方式确定:将56位密钥分成两部分,每部分为28位;根据运算的轮数,按照每轮左移位数表将这两部分分别循环左移 1位或 2位;按照压缩置换表从56位密钥中选出48位子密钥,它也称压缩置换或压缩选择。,12,(3)扩展置换及其参数表 按照扩展置换表将数据的右半部分 Ri 从32位扩展成48位,以便与48位密钥进行异或运算。(4)S-盒代换及其参数表 按照8个S-盒代换表将异或运算得到的48位结果
7、变换成32位数据。每个S-盒为一个非线性代换网络,有6位输入,4位输出,并且每个S-盒代换都不相同。48位输入被分成8个6位组,每个组对应一个S-盒代换操作。S-盒代换是 DES 算法的关键步骤,因为所有其它运算都是线性的,易于被分析,而S-盒代换是非线性的,其安全性高于其它步骤。,13,(5)P-盒置换及其参数表 S-盒输出的 32 位结果还要按照P-盒置换表将异或运算得到的进行一次P-盒置换,其中任何一位不能被映射两次,也不能省略。最后,P-盒置换的结果与 64 位数据的左半部分进行一个异或操作,然后左半部分和右半部分进行交换,开始下一轮运算。(6)DES解密 DES 使用相同的函数来加密
8、或解密每个分组,但两者的密钥次序是相反的。例如,如果每轮的加密密钥次序为K1,K2,K3,K16,则对应的解密密钥次序为K16,K15,K14,K1,并根据轮数密钥循环右移1位或2位。,14,3.DES工作模式 DES 的工作模式有四种:(1)电子密本(ECB);(2)密码分组链接(CBC);(3)输出反馈(OFB);(4)密文反馈(CFB)。ANSI的银行标准中规定加密使用ECB和CBC模式,认证使用CBC和CFB模式。在实际应用中,经常使用ECB模式。在一些安全性要求较高的场合下,使用CBC模式,它比ECB模式复杂一些,但可以提供更好的安全性。,15,4.DES实现方法 DES算法有硬件和
9、软件两种实现方法。硬件实现方法采用专用的DES芯片,使DES加密和解密速度有了极大的提高,例如,DEC公司开发的一种DES芯片的加密和解密速度可达1Gb/s,能在1秒内加密16.8 M个数据分组,并且支持 ECB 和 CBC 两种模式。还有一些DES芯片采用并行处理结构,在一个DES芯片中有多个可以并行工作的DES模块,并采用高速时钟,大大提高了DES加密和解密速度。,16,软件实现方法的处理速度要慢一些,主要取决于计算机的处理能力和速度。例如,在80486微机上,每秒可处理43K个DES分组;在HP 9000/887工作站上,每秒可处理196K个DES分组。在实际应用中,数据加密产品将引起系
10、统性能的下降,尤其在网络环境下应用时,将引人很大的网络延时。为了在安全性和性能之间求得最佳的平衡,最好采用基于DES芯片的数据加密产品。,17,5.三重DES算法 为了提高DES算法的安全性,人们还提出了一些 DES变型算法,其中三重DES算法(简称3DES)是经常使用的一种DES变型算法。在3DES中,使用两个或三个密钥对一个分组进行三次加密。在使用两个密钥情况下,第一次使用密钥K1,第二次使用密钥K2,第三次再使用密钥K1;在使用三个密钥情况下,第一次使用密钥K1,第二次使用密钥K2,第三次再使用密钥K3。经过3DES加密的密文需要2112次穷举搜索才能破译,而不是256次。3DES算法进
11、一步加强了DES的安全性,在一些高安全性的应用系统中,大都将3DES算法作为一种可选的加密算法。,18,19,6.DES安全性 对一个密码系统的评价尚无严格的理论和统一的标准,只能从抵抗现有密码分析手段的能力来评价一个密码系统的好坏。自从DES问世后,有很多的密码专家和研究机构对DES进行了大量的研究和分析,迄今为止还未找到破译DES的有效方法,经受住了近三十年的公开挑战和攻击,包括差分密码分析和相关密钥密码分析等方法的攻击。因此,多数人认为DES算法的安全性是良好的。也有人对DES提出了一些批评:DES的56位密钥可能太短、DES的迭代次数可能太小、S-盒可能存在不安全因素等。在1998年,
12、有人利用一台高速计算机,使用穷举搜索法在56小时内破译了DES。因此,在一些基于DES的数据加密系统中,可以通过增加DES的密钥长度或采用3DES等方法来增强DES的安全强度。,20,第二章 密码技术,2.1 引言2.2 对称密码算法2.3 非对称密码算法2.4 数字签名算法2.5 单向散列函数2.6 章小结,21,2.3、非对称密码算法2.3.1 基本原理 非对称密码算法是指加密和解密数据使用两个不同的密钥,即加密和解密的密钥是不对称的,这种密码系统也称为公钥密码系统(Public Key Cryptosystem)。非对称密码算法将随机产生两个密钥:一个用于加密明文,其密钥是公开的,称为公
13、钥;另一个用来解密密文,其密钥是秘密的,称为私钥。,22,23,非对称密码算法基本原理,如果两个人使用非对称密码算法传输机密信息,则发送者首先要获得接收者的公钥,并使用接收者的公钥加密原文,然后将密文传输给接收者。接收者使用自己的私钥才能解密密文。由于加密密钥是公开的,不需要建立额外的安全信道来分发密钥,而解密密钥是由用户自己保管的,与对方无关。从而避免了在对称密码系统中容易产生的任何一方单方面密钥泄露问题以及分发密钥时的不安全因素和额外的开销。非对称密码算法的特点是安全性高、密钥易于管理,缺点是计算量大、加密和解密速度慢。因此,非对称密码算法比较适合于加密短信息。,24,在实际应用中,通常采
14、用由非对称密码算法和对称密码算法构成混合密码系统,发挥各自的优势。使用对称密码算法来加密数据,加密速度快;使用非对称密码算法来加密对称密码算法的密钥,形成高安全性的密钥分发信道,同时还可以用来实现数字签名和身份验证机制。在非对称密码算法中,最常用的是RSA算法。在密钥交换协议中,经常使用Diffie-Hellman算法。,25,2.3.2 RSA算法 RSA算法是用三个发明人Rivest、Shamir和Adleman的名字命名的,它是第一个比较完善的公钥密码算法,既可用于加密数据,又可用于数字签名,并且比较容易理解和实现。RSA算法经受住了多年的密码分析的攻击,具有较高的安全性和可信度。1.R
15、SA算法描述 RSA的安全性基于大数分解的难度,其公钥和私钥是一对大素数的函数,从一个公钥和密文中恢复出明文的难度等价于分解两个大素数之和。,26,(1)两个密钥产生方法 选取两个大素数:p和q,并且两数的长度相同,以获得最大程度的安全性。计算两数的乘积:npq。随机选取加密密钥e,使 e 和(p1)(q1)互素。计算解密密钥 d,为满足 ed 1 mod(p1)(q1),则de1 mod(p1)(q1),d和n也互素。e 和 n 是公钥,d是私钥。两个素数p和q不再需要,可以被舍弃,但绝不能泄漏。(2)数据加密方法 对于一个明文消息m,首先将它分解成小于模数n的数据分组。例如,p和q都是10
16、0位的素数,n则为200位,每个数据分组mi 应当小于200位。,27,对于每个数据分组mi,按下列公式加密:ci mi e(mod n),其中e是加密密钥。将每个加密的密文分组ci 组合成密文c输出。(3)数据解密方法 对于每个密文分组ci,按下列公式解密:mi ci d(mod n),其中d是解密密钥。将每个解密的明文分组mi 组合成明文m输出。下面举一个简单的例子来说明RSA方法:假设p47,q71,则npq3337。选取加密密钥e,如e79,且 e和(p1)(q1)46703220互素(没有公因子)。,28,计算解密密钥 d791 mod 32201019,d 和n也互素。e和n是公钥
17、,可公开;d 是私钥,需保密;丢弃p和q,但不能泄漏。假设一个明文消息 m 6882326879666683,首先将它分解成小于模数n的数据分组,这里模数n为4位,每个数据分组mi可分成3位。m被分成六个数据分组:m1688;m2232;m3687;m4966;m5668;m6003(若位数不足,左边填充0补齐)。现在对每个数据分组 mi 进行加密:c1688 79 mod 33371570,c123279 mod 33372756,。,29,将密文分组 ci 组合成密文输出:c1570 2756 2091 2276 2423 158。现在对每个密文分组ci进行解密:m1 1570 1019
18、mod 3337688,m2 2756 1019 mod 3337232,。将每个解密的明文分组mi 组合成明文输出:m6882326879666683。,30,2.RSA实现方法 RSA有硬件和软件两种实现方法。不论何种实现方法,RSA的速度总比DES慢得多。因为 RSA 的计算量要大于DES,在加密和解密时需要做大量的模数乘法运算。例如,RSA在加密或解密一个200位十进制数时大约需要做1000次模数乘法运算,提高模数乘法运算的速度是解决RSA效率的关键所在。硬件实现方法采用专用的RSA芯片,最快的512位模数RSA芯片速度为1Mb/s。同样使用硬件实现,RSA比DES慢大约1000倍。软
19、件实现方法的速度要更慢一些,与计算机的处理能力和速度有关。同样使用软件实现,RSA比DES慢大约100倍。,31,3.RSA安全性 在RSA问世后的近三十年中,有很多的密码专家和研究机构对RSA进行了大量的研究和分析,迄今为止还未找到破译RSA的有效方法。对于破译RSA,穷举搜索法并不是有效的方法,主要采用分解因子的方法来分解n。因为破译者手中有公钥e和模数n,要找到解密密钥d,则必须分解n。由于分解因子问题是众所周知的数学难题,迄今为止还未找到分解因子的有效算法。这就是RSA算法的安全性基础。然而,RSA在理论上还存在一定的空白点,也就是不能确切地证明它的安全性。,32,2.3.3 Diff
20、ie-Hellman算法 Diffie-Hellman 算法的数学基础是基于有限域的离散对数,有限域上的离散对数计算要比指数计算复杂得多。Diffie-Hellman算法主要用于密钥分配和交换,不能用于加密和解密信息。Diffie-Hellman算法的基本原理是:首先A和B两个人协商一个大素数n和g,g是模 n的本原元。这两个整数不必是秘密的,两人可以通过一些不安全的途径来协商,其协议如下:(1)A选取一个大的随机整数 x,且计算Xg x mod n,然后发送给B。(2)B选取一个大的随机整数y,且计算Yg y mod n,然后发送给A。,33,(3)A计算kY x mod n。(4)B计算k
21、 X y mod n。由于k和k 都等于g x y mod n,其他人是不可能计算出这个值的,因为他们只知道n、g、X和Y。除非他们通过离散对数计算来恢复x和y。因此,k是A和B独立计算的秘密密钥。n和g的选取对系统的安全性产生很大的影响,尤其n应当是很大的素数,因为系统的安全性取决于大数(与n同样长度的数)分解的难度。基于Diffie-Hellman算法的密钥交换协议可以扩展到三人或更多的人。,34,第二章 密码技术,2.1 引言2.2 对称密码算法2.3 非对称密码算法2.4 数字签名算法2.5 单向散列函数2.6 章小结,35,2.4、数字签名算法2.4.1 基本原理 在日常的社会生活和
22、经济往来中,如签订经济合同、契约、协议以及银行业务等很多场合都离不开签名或盖章,它是个人或组织对其行为的认可,并具有法律效力。在计算机网络应用中,尤其是电子商务中,电子交易的不可否认性是必要的,它一方面要防止发送方否认曾发送过消息;另一方面还要防止接收方否认曾接收过消息,以避免产生经济纠纷。提供这种不可否认性的安全技术就是数字签名。,36,数字签名包括消息签名和签名认证两个部分。对于一个数字签名系统必须满足下列条件:(1)一个用户能够对一个消息进行签名。(2)其他用户能够对被签名的消息进行认证,以证实该消息签名的真伪。(3)任何人都不能伪造一个用户的签名。(4)如果一个用户否认对消息的签名,可
23、以通过第三方仲裁来解决争议和纠纷。公钥密码系统为数字签名提供了一种简单而有效的实现方法。假如A向B发送一个消息M,现使用基于公钥密码系统的数字签名方法对消息M进行签名和签名认证,其过程如下:,37,(1)A使用自己的私钥加密消息M,生成签名S;(2)A将消息M和签名S发送给B;(3)B使用A的公钥解密S,恢复信息M,并比较两者的一致性来验证签名。,38,在数据加密系统中,发送者使用接收者的公钥加密所发送的数据,接收者使用自己的私钥来解密数据,目的是保证数据的机密性,但不验证数据。同时,它还要解决密钥分配和分发问题。在数字签名系统中,签名者使用自己的私钥加密关键性信息(如信息摘要)作为签名信息,
24、并发送给接收者,接收者则使用签名者的公钥来解密签名信息,并验证签名信息的真实性。有些数字签名算法,如DSA(Digital Signature Algorithm)本身不具有数据加密和密钥分配能力,主要通过变换计算来产生和验证签名信息。而有些数据加密算法,如RSA则可用于数字签名。,39,2.4.2 DSA算法 DSA是美国国家标准技术协会(NIST)在其制定的数字签名标准(DSS)中提出的数字签名算法。DSA基于公钥体系,用于接收者验证数据完整性和数据发送者的身份,也可用于第三方验证签名和所签名数据的真实性。在DSS标准中规定,数字签名算法应当无专利权保护问题,以便推动该技术的广泛应用,给用
25、户带来经济利益。由于DSA无专利权保护,而RSA受专利保护。因此,DSS选择了DSA而没有采纳RSA。结果在美国引起很大的争论。一些购买RSA专利许可权的大公司从自身利益出发强烈反对DSA,给DSA推广应用带来一定的影响。,40,1.DSA算法描述 在DSA中,使用了如下的参数:(1)p是从512位到1024位长的素数,且是64的倍数。(2)q是160位长且与p1互素的因子。(3)gh(p1)/q mod p,其中h是小于p1并且满足h(p1)/q mod p大于1的任意数。(4)x是小于q的数。(5)yg x mod p。在上述参数中,p、q和g是公开的,可以在网络中被所有用户公用,x是私钥
26、,y是公钥。另外,在标准中还使用了一个单向散列函数H(m),规定为安全散列算法(SHA)。,41,下面A对消息m签名和B对签名验证过程:(1)A产生一个小于q的随机数k。(2)A对消息m进行签名:r(g k mod p)mod qs(k1(H(m)x y)mod q r和s是A的签名,并发送给B。(3)B通过下列计算来验证签名:ws1 mod qi(H(m)w)mod qj(rw)mod qv(g i y j)mod p)mod q 如果vr,则签名有效。,42,2.DSA安全性 对DSA持反对意见的人怀疑DSA的安全性,认为DSA的密钥长度太短,最初的实现将模数设置为512位,它只能提供短期
27、的、勉强合格的安全性。后来,NIST将密钥长度调整为在512位和1024位之间可变。从长远的安全性来看,1024位的密钥长度是能够保证足够的安全性。,43,另外,有人发现在DSA中存在一种阈下信道(Subliminal Channels)。所谓阈下信道是指可以在签名中隐藏信息的秘密通道,只有知道该通道的人才能读取被隐藏的信息。显然,阈下信道可能成为DSA实现者设置后门的一种手段,在用户每次签名时,通过阈下信道可能泄漏私人信息或私钥,造成很大的安全隐患。不过,NIST对这种阈下信道的说法未作出评论。总之,作为美国政府使用的数字签名标准中的DSA算法,其安全性是有保证的。,44,2.4.3 基于R
28、SA的数字签名算法 虽然美国的数字签名标准中没有采纳RSA算法,但RSA的国际影响还是很大的,在ISO 9796标准中建议将RSA作为数字签名标准算法,业界也广泛认可RSA。因此,RSA已经成为事实上的国际标准。由于RSA的加密算法和解密算法是互为逆变换,所以可以用于数字签名系统。假定用户A的公钥为n和e,私钥为d,M为待签名的消息,A的秘密(加密)变换为D,公开(解密)变换为E。那么A使用RSA算法对M的签名为:S D(M)M d(mod n),45,用户B收到A的消息M和签名S后,可利用A的公开变换E来恢复M,并验证签名:E(S)(M d mod n)e M 因为只有A知道D,根据RSA算
29、法,其他人是不可能伪造签名的,并且A与B之间的任何争议都可以通过第三方仲裁来解决。如果要求对一个消息签名并加密,每个用户则需要两对公钥:(1)公钥对k1(n1,e1)用于签名;(2)公钥对k2(n2,e2)用于加密,并且n1hn2,h是为避免重新分块问题而设置的阈值(例如h10199)。,46,在这种情况下,其签名并加密过程如下:(1)用户A首先使用自己的私钥对消息 M 签名,然后使用用户B的加密公钥对签名加密:C EB2(DA1(M)(2)用户B收到C后,首先使用自己的私钥来解密,然后使用用户A的签名公钥来恢复M,并验证签名:EA1(DB2(C)EA1(DB2(EB2(DA1(M)EA1(D
30、A1(M)M 基于公钥体系的RSA算法不仅可以用于数据加密,还可以用于数字签名,并且具有良好的安全性。因此,在实际中得到广泛的应用,很多基于公钥体系的安全系统和产品大都支持 RSA算法。,47,第二章 密码技术,2.1 引言2.2 对称密码算法2.3 非对称密码算法2.4 数字签名算法2.5 单向散列函数2.6 章小结,48,2.5.1 基本原理为了防止数据在传输过程中被篡改,通常使用单项散列函数对所传输的数据进行散列计算,通过验证散列值确认数据在传输过程中是否被篡改。为了保护数据的完整性,发送者首先计算所发送数据的检查和,并使用Hash函数计算该检查和的散列值,然后将原文和散列值同时发送给接
31、收者。接收者使用相同的算法独立地计算所接收数据的检查和及其散列值,然后与所接收的散列值比较。若两者不同,则说明数据被改动。,49,当Hash函数H(M)作用于一个任意长度的消息M时,将返回一个固定长度m的散列值,即h=H(M)。Hash函数具有以下性质:给定一个消息M,很容易计算出散列值h.给定散列值h,很难根据H(M)=h计算出消息M.给定一个消息M,很难找到另一个消息M且满足H(M)=H(M).实际中,Hash函数建立在压缩函数的基础上。对于一个长度为m的输入,Hash函数将输出长度为n的散列值。压缩函数的输入是消息分组的前一轮输出。分组Mi的散列值hi为:hi=f(Mi,hi-1).该散
32、列值和下一轮消息分组一起作为压缩函数的下一轮输入,最后一个分组的散列值就是整个消息的散列值。,50,2.常用散列函数(1)Message Digest(MD)系列 MD系列是由国际著名密码学家图灵奖获得者兼公钥加密算法RSA的创始人Rivest设计,包括MD2(1989年针对8位计算机上实现),MD4(1990年针对32位计算机上实现)和MD5(1991年提出的,是对MD4的改进版,包括其散列值为128位)。,51,(2)SHA(Security Hash Algorithm)系列 由美国专门制定密码算法的标准机构NIST和NSA(国家安全局),在1993年,在MD5基础上首先提出SHA-0,
33、1995年SHA-1被提出(即美国的FIPS PUB 180-1标准),消息散列为160位。现今SHA-1作为DSA数字签名的标准,在2003年,相继对SHA系列算法进行扩展,提出SHA-256、SHA-384、SHA-512。,52,(3)MAC(Message Authentication Code)算法MAC是一种与密钥相关的单项散列函数,称为消息鉴别码。MAC包括一个密钥,只有拥有相同密钥的人才能鉴别这个散列,实现消息的可鉴别性。MAC既可用于验证多个用户之间数据通信的完整性,也用于单个用户鉴别磁盘文件的完整性。将单向散列函数转换成MAC可以通过对称加密算法加密散列值来实现,将MAC转
34、换成单向散列函数只需将密钥公开即可。,53,(4)其它散列算法 HAVAL可以用来实现可图性判定,RIPEMD-128、RIPEMD-160是欧洲MD5和MD4算法的研究者提出的替代算法,Tiger算法主要是设计思想是在64位和32位计算机上能够很好的使用Hash算法。,54,比较,55,MD5曾经是最广泛的摘要算法,但自从在美国加州圣巴巴拉召开的国际密码学会议(Crypto2004)山东大学的王小云教授做了破译MD5、HAVAL-128、MD4和RIPEMD算法的报告,囊括了对MD5、HAVAL-128、MD4和RIPEMD四个著名HASH算法的破译结果。王小云的研究成果表明了从理论上讲电子
35、签名可以伪造,必须及时添加限制条件,或者重新选用更为安全的密码标准,以保证电子商务的安全。,56,2007年,Marc Stevens,等人进一步指出通过伪造软件签名,可重复性攻击MD5算法;2008年,荷兰埃因霍芬技术大学科学家成功把2个可执行文件进行了MD5碰撞,使得这两个运行结果不同的程序被计算出同一个MD5;同年12月一组科研人员通过MD5碰撞成功生成了伪造的SSL证书,这使得在https协议中服务器可以伪造一些根CA的签名,因此MD5散列算法已不安全,不再推荐使用。,57,第二章 密码技术,2.1 引言2.2 对称密码算法2.3 非对称密码算法2.4 数字签名算法2.5 单向散列函数2.6 章小结,58,本章总结,密码学是信息安全的基础。密码算法主要用于实现数据保密性、数据完整性、以及抗抵赖性等安全机制。一个安全协议或安全系统中可能需要提供多种安全机制和服务,这些安全服务使用单一的密码算法是难以实现的,需要将多种密码有机地组合成一个混合密码系统来实现。一般情况下,算法的安全性和处理开销成正比。密码算法有硬件和软件两种实现方法,硬件实现方法不仅速度快,并且安全性更高。,59,