第四章安全协议§4.1链路层安全协议数据链路层安全性是指在数据链路上各个节点之间能够安全地交换数据。它表现为以下两个方面:1、数据机密性:防止在数据交换过程中数据被非法窃听;2、数据完整性:防止在数据交换过程中数据被非法篡改。数据交换过程中数据机密性和完整性主要通过密码技术实现的,即通信双方必须采用一致的加密算法来解决数据机密性和完整性的问题。数据链路层安全协议增强了数据链路层协议的安全性,即在数据链路层协议的基础上增加了安全算法协商和数据加密/解密处理的功能和过程。本章主要介绍基于PPP的数据链路层安全协议。点到点协议PPP介绍基于PPP的数据链路层安全协议之前,首先简单介绍一下点到点协议PPP。在现在的远程通信中,一般采用点到点协议PPP(Point-to-PointProtocol),它提供了一种在异步或同步串行链路上封装、传输多种协议数据报的标准方法,并且能够充分地支持IP。PPP主要由三个部分组成:1、PPP数据封装方法:用于对多种协议的数据报进行PPP封装;2、连接控制协议LCP(LinkControlProtocol);用于建立、终止、配置和测试PPP连接;3、网络控制协议NCP(NetworkControlProtocol):用于在PPP连接上建立和配置不同的网络层协议。1、PPP封装由于PPP可以支持多种协议数据报的传输,它采用了一个统一的数据报格式对这些不同协议的数据报进行PPP封装,这种数据报格式称为PPP数据报,如下图所示:协议域:一般为2个字节,它指出了在信息域中所封装数据报的协议类型。协议类型的编码由IANA统一分配和管理;信息域:可以为0或多个字节,其中的内容是特定协议类型的数据报,而协议类型由协议域指示;填充域:可以为0或多个字节。因为PPP可以根据需要插入一些填充字节。协议域信息域填充域2、连接控制协议LCPLCP主要用于建立、终止、配置和测试PPP连接。它提供了一种可扩展的连接参数协商和配置机制,可用于在建立PPP连接时配置和优化连接参数,并且提供了对连接的附加管理能力,以便获得最佳的PPP连接传输性能;LCP定义了三种LCP数据报LCP配制报文:其中包括配置请求、配置确认、配置否认和配置拒绝等四种报文类型,用于建立和配置PPP连接;LCP终止报文:其中包括终止请求和终止确认两种报文,用于终止PPP连接;LCP测试报文:其中包括代码拒绝、协议拒绝、回送请求、放弃请求、身份标识和连接剩余时间等报文类型,用于管理和测试PPP连接。LCP数据报文是一种协议域为Oxc021的特定数据报,并通过代码域定义了上述各种LCP数据报文,具体如下图所示:Oxc021信息域填充域数据域长度域(2)标识域(2)代码域(2)信息域填充域数据域长度域(10)标识域()代码域(1)Oxc021Type(3)Length(Ox04)C023(PAP)C223(CHAP)3、网络控制协议NCPNCP用于在PPP连接上建立和配置不同的网络层协议,使得在同一PPP连接上可同时传输多种网络层协议的数据报,但通信双方必须配置和使用相同的网络层协议;NCP包含了一组网络控制协议,分别对应不同的网络层协议,其中IP所对应的网络控制协议是IP控制协议IPCP(IPControlProtocol);IPCP用于在PPP连接上建立、配置和终止IP,只有通信双方使用ICPC配置了IP后,才能在PPP连接上发送和接收IP数据报;IPCP同样定义了一组IPCP数据报和配置选项,它们都是与IP有关,而与建立、终止和配置PPP连接本身没有关系。Ox8021信息域填充域代码域(1)标识域()长度域(10)数据域Type(3)Length(Ox04)IpAddress在缺省情况下PPP连接不需要进行身份认证。如果需要对某一方或双方身份进行认证,则必须在建立PPP连接时配置连接认证协议。PPP提供了两种可选择的连接认证协议:(1)口令认证协议PAP(PasswordAuthenticationProtocol)(2)挑战-握手协议CHAP(Challenge-HandshakeAuthenticationProtocol)(1)口令认证协议PAPPAP是一种两次握手认证协议,被认证方认证方通过交换一系列PAP数据报实现身份认证过程;两次握手认证过程如下:Step1.在建立PPP连接后,首先由被认证方向认证方发送PAP认证请求报文,PAP认证请求报文中含有表示被认证方身份的用户名和口令等认证信息;Step2.认证方接收到PAP认证请求报文后,根据认证信息对被认证方的身份合法性进行认证,然后根据认证结果返回PAP认证确认报文或PAP认证否认报文;如果认证方确认了被认证方的身份合法性,则认证过程结束,准备转入数据报文传输;否则,重复进行上述认证,直到确认被认证方的身份合法性,或者重复一定次数后,认证方终止PPP连接.PAP中用户的用户名和口令在网络上是以明文传输的,这影响了PAP协议的安全性.(2)挑战-握手协议CHAPCHAP是一种三次握手认证协议,被认证方和认证方通过交换一系列CHAP报文实现身份认证过程.其三次握手认证过程如下:Step1.在建立PPP连接后,首先由认证方向被认证方发送CHAP挑战报文中含有标识符和挑战值等信息.其中挑战值是由认证方随即产生的杂乱的字节流,具有全局唯一性和不可预测性;Step2.被认证方接收到CHAP挑战报文后,根据CHAP挑战报文中的标识符和询问值,使用单向散列函数计算出响应值,并使用单密钥加密算法加密响应值.然后通过CHAP响应报文传送给认证方,以证明自己的身份;Step3.认证方接收到CHAP响应报文后,将返回的响应值与期望的响应值比较.相同,则说明对方身份合法;否则,非法,终止PPP连接.CHAP中使用的单向散列函数是MD5,因此,使用单向散列函数得到的响应值的长度为128位,即16个字节.CHAP中的密钥是不在网络上进行传送的,因此,其安全性要高于PAP.但计算响应值会产生的一定的系统延迟.初始状态通信过程结束NCPCHAP认证连接建立阶段(LCP)CHAP点到点隧道协议PPTPPPTP最初由Microsoft公司提出,并将该协议集成到了WindowsNT操作系统中.为了推动PPTP的开发和应用,专门成立了PPTP论坛,经过多次修改,于1999年7月公布了PPTP标准文档-RFC2637.PPTP是PPP的扩展,提供了一种通过IP网络传送PPP数据报文的方法.PPTP采用了Client/Server体系结构,定义了两个基本构件:一是客户端的PPTP访问集中器PAC(PPTPAccessConnectrator);二是服务器端的PPTP网络服务器PNS(PPTPNetworkServer).它采用了一种增强的通用路由封装GRE(GenericRoutingEncapsulation)协议在PAC和PNS之间建立了一个基于PPP会话的传输隧道,提供了多协议封装和多PPP通道捆绑传输功能,同时提供了对封装的PPP报文的流量控制和拥塞控制机制.PPTP由两部分组成:一是在PAC-PNS之间的控制连接,负责建立、管理和释放一个PPP会话;二是在PAC-PNS之间构造一个传输隧道,通过IP网络传送PPP数据报文。PPTP应用过程如下:1、在PAC和PNS之间建立一个TCP会话,这个TCP会话的目的端口是固定的,为1723,源端口可以是任意的空闲端口;2、通过这个TCP会话,PAC和PNS之间通过控制连接管理报文,建立控制连接;(PAC和PNS也可以通过控制连接管理报文释放、测试控制连接)3、控制连接建立以后,PAC和PNS之间就可以进行呼叫的管理,包括建立呼入、呼出,释放呼叫等等。此处的呼入、呼出是相对于PNS而言的;例如,当通过PSTN与PAC相连的用户客户端拨号时,PAC的相应的接入线路就会产生震铃,此时,PAC就是向PNS发出一个呼入请求消息,PNS如果确认可以接入,就会向PAC返回一个成功的呼入应答消息,PAC收到后就会响应用户客户端的拨号,在用户客户端和PAC之间建立连接,同时PAC向PNS发送一个呼入连接消息,表示与用户客户端的连接已经建立;4、到此时,用户客户端和远程服务器的物理连接实际上已经建立起来了。用户客户端此时就可以用PPP协议和远程服务器端进行通信了,包括PPP连接的建立、实际的数据报文的交换等等,这个实际数据报文在到达PAC之间是封装在PPP报文中。当这些PPP报文到达PAC后,都将被放入隧道中传输到PNS端,即这些PPP报文都会被增强的GRE协议封装起来,在PAC和PNS之间的IP网络上进行传输。5、在完成数据传输后,PNS和PAC中的任何一方都可以使用相应的控制消息释放这个PPP会话。从PPTP的应用过程中可以发现,PPTP中没有身份认证和消息完整性的保护,PPP数据报文在GRE隧道中进行传输也是明文方式的,并没有进行任何的加密保护措施,存在着信息可能被窃听或篡改的安全隐患。PPTP需要依靠PPP中的PAP或CHAP进行身份认证;在一些实际的PPTP系统中,主要通过一个附加的端到端加密协议来解决数据传送的机密性问题。如在Microsoft和PPTP系统中,通过微软点到点加密MPPE协议提供了数据加密传送的方法。MPPE假设通信双方存在共享的密钥,并使用RC4密码算法来加密数据报。使用PPTP协议来为远端用户访问外地服务器提供了一些便利;在PPTP出现以前,一个公司员工出差到外地,如果需要访问公司的局域网,则需要拨一个长途号码来连接公司的接入服务器;而利用PPTP协议,该员工只需拨当地ISP提供的号码,然后利用IP网络连接到公司局域网。既节省了费用,也提供了一定的安全性;如果某一个公司的局域网络不是IP网络,公司员工的Laptop使用的也不是IP网络,此时,公司员工想要直接通过互联网网络公司局域网是不可能的。PPTP则提供了一种手段,它利用隧道的方式屏蔽了网络协议所造成的路由障碍。通过PPTP协议,远程访问公司局域网和在本地访问基本上是透明的。好象提供了一条专用通道,实际上PPTP也是实现VPN的一种方式。L2TP协议L2TP也是一种基于PPP的隧道传输协议,通过在IP、ATM、帧中继等公用网络上建立传输隧道来传送PPP数据报文。L2TP是由Cisco、Ascend、Microsoft和RedBack等公司共同发起制定的,于1999年8月公布了L2TP标准文档-RFC2661。L2TP同样采用了Client/Server体系结构,定义了两个基本构件:1、客户端的L2TP访问集中器LAC(L2TPAccessConcentrator),用于发起呼叫和建立隧道;2、服务器端的L2TP网络服务器LNS(L2TPNetworkServer),提供了隧道传输服务,也是所有隧道的终点。L2TP综合了PPTP和Cisco公司的L2F(LayerTwoForwarding)协议的优点,功能和技术更加全面,可以看作是PPTP的改进方案;L2TP和PPTP非常相似,主要在以下一些方面存在差异:1、L2TP支持PSTN、ISDN和ADSL;而PPTP只支持PSTN和ISDN线路;2、L2TP可以在IP网络(使用UDP封装)上、帧中继网络的永久虚电路(PVC)、X.25网络的虚电路(VC)上和ATM网络的虚电路上建立隧道;而PPTP只能在IP网络上建立隧道;3、L2TP可以在两个端点间使用多个隧道,用户可以针对不同的服务质量创建不同的隧道;而PPTP只能在两端点之间建立单一隧道;4、L2TP提供了包头压缩功能;而PPTP不支持包头压缩功能;5、L2TP提供了隧道认证功能;而PPTP则不支持隧道认证。§4.2网络层安全协议网络层,对于Internet而言就是IP层,它的安全性包括认证、保密和密钥管理三方面。认证可保证收到的IP数据报的确是由IP报头所标