一些未来的发展方向随着计算机网络的发展,网络中的安全问题也日趋严重。本节讨论计算机网络面临的安全性威胁、安全的内容和一般的数据加密模型。7.1网络安全问题概述7.1网络安全问题概述7.1.1
计算机网络面临的安全性威胁7.1.2
安全的计算机网络7.1.3
(accesscontrol)对计算机系统的安全性是非常重要的。必须对访问网络的权限加以控制,并规定每个用户的访问权限。7.1.2安全的计算机网络用户A向B发送明文X,通过加密算法E运算后,就得出密文Y。明文X
截获密文Y明文X密文Y截取者篡改ABE
运算加密算法D运算解密算法互联网加密密钥KE解密密钥KD密钥源安全信道7.1.3数据加密模型加密和解密用的密钥K
(key)是一串秘密的字符串(即比特串)。明文通过加密算法E
和加密密钥K
变成密文:接收端利用解密算法D
运算和解密密钥
K
解出明文X。解密算法是加密算法的逆运算。(7-1)Y
EK(X)(7-2)DK(Y)
DK(EK(X))
X加密密钥和解密密钥可以一样,也可以不一样。密钥通常由密钥中心提供。当密钥需要向远地传送时,一定要通过另一个安全信道。密钥密码编码学(cryptography)是密码体制的设计学。密码分析学(cryptanalysis)则是在未知密钥的情况下从密文推演出明文或密钥的技术。密码编码学与密码分析学合起来即为密码学
(cryptology)。一些重要概念如果不论截取者获得了多少密文,但在密文中都没有足够的信息来唯一地确定出对应的明文,则这一密码体制称为无条件安全的,或称为理论上是不可破的。如果密码体制中的密码不能被可使用的计算资源破译,则这一密码体制称为在计算上是安全的。一些重要概念7.2.1
对称密钥密码体制7.2.2
公钥密码体制7.2两类密码体制7.2.1对称密钥密码体制所谓常规密钥密码体制,即加密密钥与解密密钥是相同的密码体制。这种加密系统又称为对称密钥系统。明文X
密文Y加密密钥K明文X密文YABE
运算加密算法D
和解密算法D也都是公开的。虽然私钥SK
是由公钥PK决定的,但却不能根据PK计算出
SK。应当注意任何加密方法的安全性取决于密钥的长度,以及攻破密文所需的计算量。在这方面,公钥密码体制并不具有比传统加密体制更加优越之处。由于目前公钥加密算法的开销较大,在可见的将来还看不出来要放弃传统的加密方法。公钥还需要密钥分配协议,具体的分配过程并不比采用传统加密方法时更简单。公钥算法的特点密钥对产生器产生出接收者B的一对密钥:加密密钥PKB
和解密密钥SKB。加密密钥PKB
就是接收者B的公钥,它向公众公开。解密密钥SKB
就是接收者B的私钥,对其他人都保密。发送者A用B的公钥PKB
对明文X
加密(E
运算)后,接收者B用自己的私钥SKB
解密(D
运算),即可恢复出明文:(7-4)公钥算法的特点(7-5)加密密钥是公开的,但不能用它来解密,即:加密和解密运算可以对调,即加密和解密是互逆的:(7-6)公钥密码体制不同密钥明文X
密文YB的公钥PKB明文X密文YABE
7.3数字签名基于公钥的数字签名的实现明文X
密文YA的公钥PKA明文X密文YABD
运算加密算法E
运算解密算法互联网核实签名A的私钥SKA签名基于公钥的数字签名的实现因为除A外没有别人能具有A的私钥,所以除A外没有别人能产生这个密文。因此B相信报文X
是A签名发送的。若A要抵赖曾发送报文给B,B可将明文和对应的密文出示给第三者。第三者很容易用A的公钥去证实A确实发送X
给B。反之,若B将X
伪造成X',则B不能在第三者前出示对应的密文。这样就证明了B伪造了报文。具有保密性的数字签名同时实现秘密通信和数字签名核实签名解密加密签名E
运算D
运算明文X明文X
ABA的私钥SKA互联网E
运算B的私钥SKBD
运算加密与解密签名与核实签名B的公钥PKBA的公钥PKA密文7.4.1
报文鉴别7.4.2
实体鉴别7.4鉴别7.4鉴别在信息的安全领域中,对付被动攻击的重要措施是加密,而对付主动攻击中的篡改和伪造则要用鉴别
X的完整性,防篡改和伪造。长的明文X散列函数H(X)10010…1011TheABCComputerNetwork………………………多对一的单向变换得出固定长度的散列值
逆向变换是不可能的2.实用的密码散列函数MD5和SHA-1通过许多学者的不断努力,已经设计出一些实用的密码散列函数(或称为散列算法),其中最出名的就是MD5和SHA-1。报文摘要算法MD5公布于RFC1321(1991年),并获得了非常广泛的应用。SHA-1比MD5更安全,但计算起来却比MD5要慢些。MD5算法MD5是报文摘要MD(MessageDigest)的第5个版本。报文摘要算法MD5公布于RFC1321(1991年),并获得了非常广泛的应用。MD5的设计者Rivest曾提出一个猜想,即根据给定的MD5报文摘要代码,要找出一个与原来报文有相同报文摘要的另一报文,其难度在计算上几乎是不可能的。基本思想:用足够复杂的方法将报文的数据位充分“弄乱”,报文摘要代码中的每一位都与原来报文中的每一位有关。MD5算法计算步骤:附加:把任意长的报文按模264
计算其余数(64位),追加在报文的后面(长度项)。填充:在报文和长度项之间填充1~512位,使得填充后的总长度是512的整数倍。填充的首位是1,后面都是0。报文1000…00长度项报文长度带填充位的长度,模512余448总长度,512的整数倍64位MD5算法计算步骤(续):分组:把追加和填充后的报文分割为一个个512位的数据块,每个512位的报文数据再分成4个128位的数据块。计算:将4个128位的数据块依次送到不同的散列函数进行4轮计算。每一轮又都按32位的小数据块进行复杂的运算。一直到最后计算出MD5报文摘要代码(128位)。安全散列算法(SHA-1)安全散列算法SHA(SecureHashAlgorithm)是由美国标准与技术协会NIST提出的一个散列算法系列。SHA比MD5更安全,但计算起来却比MD5要慢些。已制定SHA-1、SHA-2、SHA-3等版本。安全散列算法(SHA-1)基本思想:要求输入码长小于264
位,输出码长为160位。将明文分成若干512位的定长块,每一块与当前的报文摘要值结合,产生报文摘要的下一个中间结果,直到处理完毕。共扫描5遍,效率略低于MD5,抗穷举性更高。3.报文鉴别码MACMD5实现的报文鉴别可以防篡改,但不能防伪造,因而不能真正实现报文鉴别。例如:(1)入侵者创建了一个伪造的报文M,然后计算出其散列H(M),并把拼接有散列的扩展报文冒充A发送给B。(2)B收到扩展的报文(M,H(M))后,通过散列函数的运算,计算出收到的报文MR
。B收到此报文后,用共享对称密钥KAB
进行签名后发回给A。A用B的公钥核实签名。如能得出自己原来发送的不重数RA,就核实了和自己通信的对方的确是B。同样,A也用自己的私钥对不重数RB
进行签名后发送给B。B用A的公钥核实签名,鉴别了A的身份。公钥密码体制虽然不必在互相通信的用户之间秘密地分配共享密钥,但仍有受到攻击的可能。使用不重数进行鉴别C冒充是A,发送报文给B,说:“我是A”。B选择一个不重数RB,发送给A,但被C截获了。C用自己的私钥SKC
冒充是A的私钥,对RB
加密,并发送给B。B向A发送报文,要求对方把解密用的公钥发送过来,但这报文也被C截获了。C把自己的公钥PKC
冒充是A的公钥发送给B。B用收到的公钥PKC
对收到的加密的RB
发送给A,但同样被C截获后也照样转发给A。中间人C用自己的私钥SKC
对RB
加密后发回给B,使B误以为是A发来的。A收到RB
后也用自己的私钥SKA
加密后发回给B,中途被C截获并丢弃。B向A索取其公钥,此报文被C截获后转发给A。中间人攻击说明C把自己的公钥PKC
冒充是A的发送给B,而C也截获到A发送给B的公钥PKA
。B用收到的公钥PKC(以为是A的)对数据加密发送给A。C截获后用自己的私钥SKC
解密,复制一份留下,再用A的公钥PKA
对数据加密后发送给A。A收到数据后,用自己的私钥SKA
解密,以为和B进行了保密通信。其实,B发送给A的加密数据已被中间人C截获并解密了一份。但A和B却都不知道。7.5.1对称密钥的分配7.5.2
公钥的分配7.5密钥分配7.5密钥分配由于密码算法是公开的,网络的安全性就完全基于密钥的安全保护上。因此在密码学中出现了一个重要的分支——密钥管理。密钥管理包括:密钥的产生、分配、注入、验证和使用。本节只讨论密钥的分配。密钥分配是密钥管理中最大的问题。密钥必须通过最安全的通路进行分配。7.5密钥分配网外分配方式:派非常可靠的信使携带密钥分配给互相通信的各用户。网内分配方式:密钥自动分配。但随着用户的增多和网络流量的增大,密钥更换频繁(密钥必须定期更换才能做到可靠),派信使的办法已不再适用,而应采用网内分配方式。7.5.1对称密钥的分配目前常用的密钥分配方式是设立密钥分配中心KDC(KeyDistributionCenter)。KDC是大家都信任的机构,其任务就是给需要进行秘密通信的用户临时分配一个会话密钥(仅使用一次)。假设用户A和B都是KDC的登记用户,并已经在KDC的服务器上安装了各自和KDC进行通信的主密钥(masterkey)KA
和KB。“主密钥”可简称为“密钥”。对称密钥的分配A密钥分配中心KDCA,B,KABKB
……用户专用主密钥A,B,KABKABKB
A,BB用户主密钥
A
KAB
KB
是一次性的,因此保密性较高。KDC分配给用户的密钥KA
和KB,应定期更换,以减少攻击者破译密钥的机会。目前最出名的密钥分配协议是KerberosV5。Kerberos既是鉴别协议,同时也是KDC,它已经变得很普及,现在是互联网建议标准。Kerberos使用比DES更加安全的高级加密标准AES进行加密。KerberosABKerberosA
ASTGSKTG
KAA,KSKS,ABKerberosA
KAA,KSKS,A并不保存密钥KA
。A需键入正确口令,利用适当的算法生成密钥KA
。这个口令随即被销毁。ABKerberosA
ASTGSTKAB,
A,KABKBT+1KAB
A,KSTKS,B,KTGA,KABKB,
B,KABKSKTG
KAA,KSKS,Kerberos密钥分配说明A用明文(包括登记的身份)向鉴别服务器AS表明自己的身份。AS向A发送用A的对称密钥KA
加密的报文,这个报文包含A和TGS通信的会话密钥KS,以及AS要发送给TGS的票据(这个票据是用TGS的对称密钥KTG
加密的)。Kerberos密钥分配说明A向TGS发送三个项目:转发鉴别服务器AS发来的票据。服务器B的名字。这表明A请求B的服务。请注意,现在A向TGS证明自己的身份并非通过键入口令(因为入侵者能够从网上截获明文口令),而是通过转发AS发出的票据(只有A才能提取出)。票据是加密的,入侵者伪造不了。用
KS
加密;给B的票据用B的密钥KB
加密。请注意,现在入侵者不能提取KAB,因为不知道KA
加1来证实收到了票据。B向A发送的报文用密钥KAB
加密。以后,A和B就使用TGS给出的会话密钥KAB
进行通信。Kerberos要求“松散的”同步Kerberos要求所有使用Kerberos的主机必须在时钟上进行“松散的”同步。所谓“松散的”同步是要求所有主机的时钟误差不能太大,例如,不能超过5分钟的数量级。这个要求是为了防止重放攻击。7.5.2公钥的分配在公钥密码体制中,如果每个用户都具有其他用户的公钥,就可实现安全通信。但不能随意公布用户的公钥,因为无法防止假冒和欺骗。使用者也无法确定公钥的真正拥有者。7.5.2公钥的分配需要有一个值得信赖的机构——即认证中心CA(CertificationAuthority),来将公钥与其对应的实体(人或机器)进行绑定(binding)。认证中心一般由政府出资建立。每个实体都有CA发来的证书
运输层安全协议7.6.3
(EncapsulationSecurityPayload)协议有关加密算法的三个协议(在此不讨论)互联网密钥交换IKE(InternetKeyExchange)协议IPsec由三部分组成AH协议提供源点鉴别和数据完整性,但不能保密。ESP协议比AH协议复杂得多,它提供源点鉴别、数据完整性和保密。使用ESP或AH协议的IP数据报称为IP安全数据报(或IPsec数据报)。Ipsec支持IPv4和IPv6。AH协议的功能都已包含在ESP协议中。IP安全数据报有两种工作方式运输方式(transportmode)在整个运输层报文段的前后分别添加若干控制信息,再加上IP首部,构成IP安全数据报。适合于主机到主机之间的安全传送。需要使用IPsec的主机都运行IPsec协议。原始IP数据报原始IP首部TCP/UDP报文段原始IP首部TCP/UDP报文段添加的首部添加的尾部IP安全数据报IP安全数据报有两种工作方式隧道方式(tunnelmode)
在原始的IP数据报的前后分别添加若干控制信息,再加上新的IP首部,构成一个IP安全数据报。需要在IPsec数据报所经过的所有路由器上都运行IPsec协议。隧道方式常用来实现虚拟专用网VPN。原始IP数据报原始IP首部TCP/UDP报文段原始IP首部TCP/UDP报文段添加的首部添加的尾部IP安全数据报新IP首部IP安全数据报有两种工作方式无论使用哪种方式,最后得出的IP安全数据报的IP首部都是不加密的。所谓“安全数据报”是指数据报的数据部分是经过加密的,并能够被鉴别的。通常把数据报的数据部分称为数据报的有效载荷
(payload)。安全关联SA在发送IP安全数据报之前,在源实体和目的实体之间必须创建一条网络层的逻辑连接。此逻辑连接叫做安全关联SA(SecurityAssociation)。IPsec就把传统互联网无连接的网络层转换为具有逻辑连接的网络层。安全关联的特点安全关联是从源点到终点的单向连接,它能够提供安全服务。在安全关联SA上传送的就是IP安全数据报。如要进行双向安全通信,则两个方向都需要建立安全关联。若n
个员工进行双向安全通信,一共需要创建(2+2n)条安全关联SA。路由器R1
到R2
的安全关联SA假定公司总部的主机H1
要和分公司的主机H2
通过互联网进行安全通信。公司总部与分公司之间的安全关联SA就是在路由器R1
和R2
之间建立的。公司总部互联网SAR1IP安全数据报H1R2H2分公司H3从H1
到H2从H1
到H2从R1
到R2主机H1
到H3
之间的通信假定公司总部的主机H1
要和内部的主机H3
进行通信。由于都在公司内部,不需要加密,因此不需要建立安全关联。公司总部互联网R1H1R2H2分公司H3从H1
到H3路由器R1
到主机H2
的安全关联SA若公司总部的主机H1
要和某外地业务员的主机H2
进行安全通信,需要在公司总部的路由器R1
和外地业务员的主机H2
建立安全关联SA。公司总部互联网SAR1IP安全数据报H1H2业务员从H1
到H2安全关联SA状态信息一个32位的连接标识符,称为安全参数索引SPI(SecurityParameterIndex)。安全关联SA的源点和终点的IP地址(例如路由器R1和R2的IP地址)。所使用的加密类型(例如,DES或AES)。加密的密钥。完整性检查的类型(例如,使用报文摘要MD5或SHA-1的报文鉴别码MAC)。鉴别使用的密钥。2.IP安全数据报的格式隧道方式下的IP安全数据报的格式协议=50IP安全数据报新的IP首部
IP安全数据报的有效载荷发送在前加密的部分鉴别的部分安全参数索引SPI
序号32位
填充填充长度下一个首部8位8位32位ESP的有效载荷4ESP首部报文鉴别码MAC原始的IP数据报的有效载荷原始的IP首部ESP尾部
2.IP安全数据报的格式隧道方式下的IP安全数据报的格式协议=50IP安全数据报新的IP首部
IP安全数据报的有效载荷发送在前鉴别的部分安全参数索引SPI
加密的部分
填充填充长度下一个首部8位8位32位ESP的有效载荷4报文鉴别码MAC原始的IP数据报的有效载荷原始的IP首部ESP尾部
ESP首部
IP安全数据报的有效载荷发送在前安全参数索引SPI
鉴别的部分
填充填充长度下一个首部8位8位32位ESP的有效载荷4原始的IP数据报的有效载荷原始的IP首部ESP尾部
报文鉴别码MAC
2.IP安全数据报的格式注意:在“原始的IP首部”中,用主机H1
和H2
的IP地址分别作为源地址和目的地址。而在IP安全数据报的“新的IP首部”中,用路由器R1
的IP地址分别作为源地址和目的地址。3.IPsec的其他构件安全关联数据库SAD(SecurityAssociationDatabase)存放SA。安全策略数据库SPD(SecurityPolicyDatabase)指明什么样的数据报需要进行IPsec处理。互联网密钥交换IKE(InternetKeyExchange)为IP安全数据报创建安全关联SA。互联网密钥交换IKEIKE是个非常复杂的协议,在2014年10月已成为互联网的正式标准[RFC7296]。以另外三个协议为基础:Oakley——是密钥生成协议[RFC2412]。安全密钥交换机制SKEME(SecureKeyExchangeMechanism)——是用于密钥交换的协议。它利用公钥加密来实现密钥交换协议中的实体鉴别。互联网安全关联和密钥管理协议ISAKMP(InternetSecureAssociationandKeyManagementMechanism)——用于实现IKE中定义的密钥交换,使IKE的交换能够以标准化、格式化的报文创建安全关联SA。7.6.2运输层安全协议现在广泛使用的有以下两个协议:安全套接字层SSL(SecureSocketLayer)运输层安全TLS(TransportLayerSecurity)
SSL和TLS安全套接层SSL由Netscape于1994年开发,广泛应用于基于万维网的各种网络应用(但不限于万维网应用)。SSL作用在端系统应用层的HTTP和运输层之间,在TCP之上建立起一个安全通道,为通过TCP传输的应用层数据提供安全保障。1996年发布SSL3.0,成为Web安全的事实标准。1999年,IETF在SSL3.0基础上推出了传输层安全标准TLS,为所有基于TCP的网络应用提供安全数据传输服务。SSL/TLS的位置在发送方,SSL接收应用层的数据,对数据进行加密,然后把加了密的数据送往TCP套接字。在接收方,SSL从TCP套接字读取数据,解密后把数据交给应用层。互联网IP应用层(HTTP)网络接口层TCPSSL/TLSIP应用层(HTTP)网络接口层TCPSSL/TLS运输层不使用安全协议和使用安全协议的对比IPTCP应用层IPTCP(a)(b)应用层应用程序应用程序SSL子层TCP
套接字TCP
套接字SSL
SSL安全会话建立过程浏览器A服务器BA支持的加密算法B选定的加密算法B的数字证书协商加密算法用CA发布的公钥鉴别B的证书协商加密算法tt顾客
SSL安全会话建立过程浏览器A服务器BA支持的加密算法B选定的加密算法B的数字证书用B的公钥加密的秘密数会话密钥的产生完成协商加密算法用CA发布的公钥鉴别B的证书产生秘密数用秘密数产生会话密钥用秘密数产生会话密钥协商加密算法tt顾客
SSL安全会话建立过程浏览器A服务器BA支持的加密算法B选定的加密算法B的数字证书用B的公钥加密的秘密数会话密钥的产生完成数据传输(用会话密钥加密)协商加密算法用CA发布的公钥鉴别B的证书产生秘密数用秘密数产生会话密钥用秘密数产生会话密钥协商加密算法tt顾客
SSL安全会话建立过程协商加密算法。
浏览器A向服务器B发送浏览器的SSL版本号和一些可选的加密算法。
B从中选定自己所支持的算法(如RSA),并告知A。服务器鉴别。
服务器B向浏览器A发送包含其RSA公钥的数字证书。
A使用该证书的认证机构CA公开发布的RSA公钥对该证书进行验证。会话密钥计算。由浏览器A随机产生一个秘密数。
用服务器B的RSA公钥进行加密后发送给B。
双方根据协商的算法产生共享的对称会话密钥。安全数据传输。
双方用会话密钥加密和解密它们之间传送的数据并验证其完整性。7.6.3应用层安全协议本节仅讨论应用层中有关电子邮件的安全协议。发送电子邮件是个即时的行为。发送方A和接收方B并不会为此而建立任何会话。电子邮件安全协议就应当为每种加密操作定义相应的算法,以及密钥管理、鉴别、完整性保护等方法。PGP(PrettyGoodPrivacy)PGP(PrettyGoodPrivacy)是一个完整的电子邮件安全软件包,包括加密、鉴别、电子签名和压缩等技术。PGP并没有使用什么新的概念,它只是将现有的一些算法如MD5,RSA,以及IDEA等综合在一起而已。虽然PGP已被广泛使用,但PGP并不是互联网的正式标准。PGP工作原理PGP提供电子邮件的安全性、发送方鉴别和报文完整性。假定A向B发送电子邮件明文X,使用PGP进行加密。A有三个密钥:A的私钥、B的公钥和A生成的一次性密钥。B有两个密钥:B的私钥和A的公钥。A的私钥X散列H加密报文摘要报文鉴别码MAC
X一次性密钥加密B的公钥
加密A邮件发送PGP工作原理PGP提供电子邮件的安全性、发送方鉴别和报文完整性。假定A向B发送电子邮件明文X,使用PGP进行加密。A有三个密钥:A的私钥、B的公钥和A生成的一次性密钥。B有两个密钥:B的私钥和A的公钥。在发送方A的PGP处理过程A的私钥X散列H加密报文摘要报文鉴别码MAC
加密A邮件发送PGP工作原理PGP提供电子邮件的安全性、发送方鉴别和报文完整性。在接收方B的PGP处理过程A的公钥MD5运算X一次性密钥B的私钥加密的扩展的邮件解密加密的密钥解密解密H报文摘要H(X)报文摘要比较接收MAC假定A向B发送电子邮件明文X,使用PGP进行加密。A有三个密钥:A的私钥、B的公钥和A生成的一次性密钥。B有两个密钥:B的私钥和A的公钥。PGP工作原理PGP提供电子邮件的安全性、发送方鉴别和报文完整性。在接收方B的PGP处理过程A的公钥MD5运算X一次性密钥B的私钥加密的扩展的邮件解密加密的密钥解密解密H报文摘要H(X)报文摘要比较接收MAC假定A向B发送电子邮件明文X,使用PGP进行加密。A有三个密钥:A的私钥、B的公钥和A生成的一次性密钥。