1计算机网络第7章网络安全27.3数字签名7.4鉴别7.5密钥分配7.6因特网使用的安全协议7.7链路加密与端到端加密7.8防火墙7.2两类密码体制7.2两类密码体制根据数据加密的方式,可以将加密技术分为:对称加密和非对称加密。也称为:密钥加密技术和公钥加密技术。37.2.1对称密钥密码体制7.2.2公钥密码体制7.2.1对称密钥密码体制对称密码体制是一种传统密码体制,也称为私钥密码体制。在对称加密系统中,加密和解密采用相同的密钥。由于加解密密钥相同,需要通信的双方必须选择和保存他们共同的密钥,各方必须信任对方不会将密钥泄密出去,实现数据的机密性和完整性。例如:凯撒加密机制、维吉尼亚算法、简单替换、多表替换算法等(26个字母、组合太少)。大多数古典算法属于对称密码体制著名和广泛使用的对称密钥算法主要包括DES算法、三重DES算法和AES算法等。4现代对称密码算法数据加密标准DES数据加密标准(DES)属于常规密钥密码体制,是一种分组加密算法。1977年,美国政府采纳IBM公司设计的发案作为机密数据的正式数据加密标准DES,是美国国家标准学会(ANSI)的数据加密算法,同时也得到了国际标准化组织的认可。按照加密标准数据加密算法,在加密前,先对整个明文进行分组。每一个组长为64bit。然后对每一个64bit二进制数据进行加密处理,产生一组64bit密文数据。最后将各组密文串接起来,即得出整个的密文。5DES使用的密钥为64bit(实际密钥长度为56bit,有8bit用于奇偶校验)。DES的明显缺点是它实际上就是一种单字符替代,而这种字符的长度是64bit。对于DES算法,相同的明文就产生相同的密文。这对DES的安全性来说是不利的。为了提高DES的安全性,可采用加密分组链接的方法。DES的保密性仅取决于对密钥的保密,而算法是公开的。尽管人们在破译DES方面取得了许多进展,目前只有穷举法(暴力破解,尝试密钥空间中的每一个密钥试图从密文恢复明文。)搜索密钥破解。DES是世界上第一个公认的实用密码算法标准,它曾对密码学的发展做出了重大贡献。6方法算法思想:DES算法将输入的明文分为64位的数据分组,使用64位的密钥进行变换,每个64位明文分组数据经过初始置换、16次迭代和逆初始置换3个主要阶段,最后输出得到64位密文。7明文。。。64位块初始置换左边32位右边32位56位密钥右边28位左边28位循环左移重新合并成56位密钥压缩后得到48位扩展变换成48位s盒压缩成32位经过P置换成32位XORXOR新右边32位新左边32位经过16轮后得到的64位逆置换。。。1从第4步开始重复进行15轮,加第一轮共计是16轮迭代35681064位密文循环左移9247因为其有效密码只有56位,DES算法不能提供足够的安全性,为此提出了三重DES(TripleDES),该算法使用两个密钥,执行三次DES算法。明文密文密钥K1密钥K1DES加密DES加密DES解密密钥K2明文密文密钥K1密钥K1DES解密DES解密DES加密密钥K2设使用的两个密钥分别为K1和K2,其算法的步骤:(1)用密钥K1对明文进行DES加密。(2)用密钥K2对步骤一的结果进行DES解密。(3)再用密钥K1对步骤二的结果进行DES加密。(4)当K1=K2时,三重DES的效果就和一重DES一样。87.2两类密码体制97.2.1对称密钥密码体制7.2.2公钥密码体制7.2.2公钥密码体制1.公钥密码概述1976年,由Hellman以及Merkle分别提出了所谓公开密钥密码(简称公钥密码)体制思想。以公开密钥作为加密密钥,以用户私有密钥作为解密密钥,实现多个用户加密的消息只能由一个用户解读。以用户私有密钥作为加密密钥而以公开密钥作为解密密钥,可实现由一个用户加密的消息能多个用户解读。注意:前者用于保密通信,后者用于数字签名。公开密钥体制为解决计算机网络中的安全问题提供了新的理论和技术基础。10RSA使用两个密钥,一个公共密钥,一个专用密钥。如:用其中一个加密,则用另一个解密,密钥长度从40~2048bit可变,加密时也把明文分成块,块的大小可变,但不能超过密钥的长度。RSA算法把每一块明文转化为与密钥长度相同的密文块。密钥越长,加密效果越好,但加密、解密的开销也越大,所以要在安全与性能之间折衷考虑,一般64bit是较合适的。RSA的一个比较知名的应用是安全套接层(SSL)。美国和加拿大SSL用128位RSA算法,由于出口限制,在其他地区包括中国通用的是40位版本。公钥加密算法中使用最广的是RSA11公钥加密系统中,加密和解密使用两个不同的密钥,加密密钥(公开密钥)向公众公开,谁都可以使用,解密密钥(秘密密钥)只有解密人自己知道,非法使用者根据公开的加密密钥无法推算出解密密钥,因此称为公钥密码体制。E加密算法D解密算法密钥对产生源发送者接收者加密密钥PK解密密钥SK密文Y=EPK(X)明文X=DSK(EPK(X))明文X122.RSA公开密钥密码算法使用两个数字:e和d,作为公钥与私钥。e公钥私钥解密加密密文明文明文AB计算e,d和nd分发给公众3.RSA密码系统原理RSA密码系统的安全性基于大数分解的困难性。根据数论,寻求一对大素数的乘积很容易,但要对这个乘积进行因式分解则非常困难,因此,可以把一对大素数的乘积公开作为公钥,而把素数作为私钥,从而从一个公开密钥和密文中恢复出明文的难度等价于分解两个大素数之积。4.RSA的密码选择(1)选择两个不同的大素数p和q(一般都为100位左右的十进制数字),计算乘积,得。(2)计算另一个整数φ(n)3。随机取一整数e,1<e<φ(n),且e和φ(n)互素。此时可求得d以满足:ed=1mod φ(n),则可以得到d=e–1mod φ对外公布e和n作为公钥,我们记为{e,n},保留d和n作为私钥,记为{d,n}。modeYXnmoddXYn加密和解密RSA加密消息m时,(这里假设m是以十进制表示的),首先将消息分成大小合适的数据分组,假设为X,然后对分组分别进行加密。每个分组的大小应该比n小。设Y为明文分组加密后的密文,则加密公式和解密公式为加密时:解密时:用户B使用以下的步骤选择私钥与公钥举例:RSA选择两个素数,p=7,q=17计算出:计算出:在1到96中间选取一个与96互素的数e,若选e=5。根据5d=1mod96可解出d,d=77,因为ed=577=385=496+1=1mod96于是,公钥为(e,n)={5,119},密钥为(d,n){77,119}。717119npq()(1)(1)61696npq加密过程加密:密文:即明文19对应的密文为66解密:先计算,再除以119,得出商为1.06…,余数为19即明文:5192476099eX77140661.27...10dYmod2476099mod11966eYXn140mod1.27...10mod11919dXYn首先将明文划分为一个个分组,使得每个明文分组的值不超过n,即不超过119。假设明文X=19。对于RSA算法,同样的明文映射为同样的密文。RSA体制的保密性在于对大数进行因数分解很花时间,但其并不是不可攻破的。公钥密码的优点:尽管通信双方不认识,但只要提供密钥的认证中心(CertificateAgency,CA)可靠,就可以进行安全通信,这正是Web商务所要求的。公钥密码方案比私钥密码方案处理速度慢。通常把公钥密码与私钥密码技术结合起来。即用公钥密码技术在通信双方之间传送私钥密码技术中的密钥,而用私钥密码技术来对实际传输的数据加密、解密。另外,公钥密码技术也用来对私有密钥进行加密。除加密功能外,公钥系统还可以提供数字签名。19207.3数字签名7.4鉴别7.5密钥分配7.6因特网使用的安全协议7.7链路加密与端到端加密7.8防火墙7.2两类密码体制7.3数字签名数字签名是使用某人的私钥加密特定消息摘要散列值而得到的结果,通过这种方法把人同特定的消息联系起来,类似于手书签名。数字签名与手书签名的区别在于,手书签名是模拟的,且因人而异。而数字签名是0和1的数字串,因消息而异。利用数字签名的功用如下1.报文鉴别接收者能够核实发送者对报文的签名;2.报文的完整性发送者事后不能抵赖对报文的签名;3.不可否认接收者不能伪造对报文的签名。现在已有多种实现各种数字签名的方法。但采用公钥算法更容易实现。21一种是对整体消息的签名,即经过密码变换后被签名的整体消息;另一种是对压缩消息的签名,即附加在被签名消息之后或某一特定位置上的一段签名图样。22数字签名有两种若按明文、密文的对应关系划分每一种又分为两个子类一类是确定性数字签名,其明文与密文一一对应,它对一特定消息的签名不变化,如RSA、Ra-bin等签名;另一类是随机化的或概率式数字签名,它对同一消息的签名是随机变化的,取决于签名算法中的随机参数的取值。一个明文可有多个合法的数字签名。即签名算法(SignatureAlgorithm)验证算法(VerificationAlgorithm)。对M的签名可简记为Sig(M)=S,对S的验证简记为Ver(S)={真,伪}={0,1}。1991年8月,美国NIST公布了用于标准签名算法DSA。1994年12月1日,它被正式采用为美国联邦信息处理标准。签名算法或签名密钥是秘密的,只有签名人掌握;验证算法应当公开,以便于他人进行验证。体制的安全性在于,从M和其签名S难以推出K或伪造一个M′,使M′和S可被证实为真。23一个签名体制一般含有两个组成部分公开密钥:p为512~l024bit的素数;q为160bit长的素数,且为(p-1)的因子。g=h(p-1)/qmodq,其中1<h<p-1且g>1的整数。y=gxmodp秘密密钥:0<x<q,且为随机产生的整数。签名过程:0<k<q,且为随机产生的整数。r=(gk(modp))modq,s=(k-1(H(m)+xr))modq(r,s)作为对消息m的签名,H(x)为安全的Hash(散列)函数。验证过程:w=s-1modqu1=(H(m)xw)modqu2=(rw)modqv=((gu1xyu2)modp)modq若v=r,则对m的签名有效。其中H(x)可选择美国推荐的标准算法SHA或MD5等安全散列算法。基本算法DSA算法的安全性也依赖于有限域上的离散对数问题,安全强度和速度均低于RSA算法,其优点不涉及专利问题。24密文)(AXDSK数字签名的实现D运算明文X明文XABA的私钥SKA因特网签名核实签名E运算密文)(AXDSKA的公钥PKA25具有保密性的数字签名)(AXDSK)(AXDSK核实签名解密加密签名E运算D运算明文X明文XABA的私钥SKA因特网E运算B的私钥SKBD运算加密与解密签名与核实签名))((ABXDESKPKB的公钥PKBA的公钥PKA密文26277.3数字签名7.4鉴别7.5密钥分配7.6因特网使用的安全协议7.7链路加密与端到端加密7.8防火墙7.2两类密码体制7.4鉴别报文鉴别使得通信的接收方能够验证所收到的报文(发送者和报文内容、发送时间、序列等)的真伪。使用加密就可达到报文鉴别的目的。但在网络的应用中,许多报文并不需要加密。应当使接收者能用很简单的方法鉴别报文的真伪。28在信息的安全领域中,对付被动攻击的重要措施是加密,而对付主动攻击中的篡改和伪造则要用鉴别(authentication)。鉴别与授权不同•鉴别与授权(authorization)是不同的概念。•授权涉及到的问题是:所进行的过程是否被允许(如是否可以对某文件进行读或写)。297.4.1报文鉴别7.4.2实体鉴别7.4.1报文鉴别许多报文并不需要加密但却需要数字签名,以便让报文的接收者能够鉴别报文的真伪。然而对很长的报文进行数字签名会使计算机增加很大的负担(需要进行很长时间的运算。当我们传送不需要加密的报文时,应当使接收者能用很简单的方法鉴别报文的真伪。30报文摘要MD•A将