网络安全协议1安全协议概述安全协议本质上是关于某种应用的一系列规定,包括功能、参数、格式、模式等,通信各方只有共同遵守协议才能互相操作。在信息网络中,可以在ISO七层协议中的任何一层采取安全措施。大部分安全措施都采用特定的协议来实现,如在网络层加密和认证采用IPSec协议,在传输层加密和认证采用SSL协议等。TCP/IP协议栈中的安全3一、SSL协议的概述OSI协议层信源加密应用层表示层会话层传输层SOCKSSSL/TLS应用相关信道加密网络层链路层物理层PPTP/L2TPIPSec代理防火墙/保密网关动态包过滤防火墙静态包过滤防火墙加密/安全技术OSI协议层安全协议OSI七层协议与信息安全1.1应用层安全协议SSHSETS-HTTPPGPS/MIMESSH在实际工作中,SSH协议通常是替代TELNET协议、RSH协议来使用的。它类似于TELNET协议,允许客户机通过网络连接到远程服务器并运行该服务器上的应用程序,被广泛用于系统管理中。该协议可以加密客户机和服务器之间的数据流,这样可以避免TELNET协议中口令被窃听的问题。该协议还支持多种不同的认证方式,及用于加密包括FTP数据外的多种情况。SETSET(安全电子交易)协议是电子商务中用于安全电子支付最典型的代表协议。它是由MasterCard和VISA制定的标准,这一标准的开发得到了IBM、Microsoft、Netscape、SAIC、Terisa和Verisign的投资以及其他信用卡和收费卡发行商的支持。SET是在一些早期协议(SEPP、VISA、STT)的基础上整合而成的,它定义了交易数据在卡用户、商家、发卡行、收单行之间的流通过程,以及支持这些交易的各种安全功能(数字签名、Hash算法、加密等)。S-HTTP是在超文本传输协议(HTTP)基础上建立起来的,但HTTP中不包含安全性机制,因此提出了安全HTTP(S-HTTP)。它是对HTTP的扩展,描述了一种使用标准加密工具来传送HTTP数据的机制。S-HTTP工作在应用层,同时对HTML进行了扩展,服务器方可以在需要进行安全保护的文档中加入加密选项,控制对该文档的访问及加密、解密、签名算法等。由于缺乏厂商的支持,S-HTTP协议现在已经几乎不再使用。PGPPGP(PrettyGoodPrivacy)主要用于安全电子邮件,它可以对通过网络进行传输的数据创建和检验数字签名、加密、解密以及压缩。除电子邮件外,PGP还被广泛用于网络的其他功能之中。PGP的一大特点是源代码免费使用、完全公开。S/MIMES/MIME是在MIME(多用途Internet邮件扩展)规范中加入了获得安全性的一种方法,提供了用户和认证的形式化定义,支持邮件的签名和加密。1.2传输层安全协议SSLPCTTLSSSLSSL(安全套接字层,SecureSocketLayer)是由Netscape开发的安全协议。它工作在传输层,独立于上层应用,为应用提供一个安全的点对点通信隧道。由协商过程和通信过程组成,协商过程用于确定加密机制、加密算法、交换会话密钥服务器认证以及可选的客户端认证,而通信过程秘密传送上层数据。主要用于支持HTTP服务,也可支持任何应用层协议,如Telnet、FTP等。PCTPCT(私密通信技术,PrivateCommunicationTechnology)是Microsoft开发的传输层安全协议,它与SSL有很多相似之处。现在PCT已经同SSL协议合并为TLS(传输层安全)协议,只是习惯上仍然把TLS协议称为SSL协议。1.3网络层安全协议为了开发在网络层保护IP数据的方法,IETF成立了IP安全协议工作组(IPSec),定义了一系列在IP层对数据进行加密的协议:IP验证头协议(AH)IP封装安全载荷协议(ESP)Internet密钥管理协议(IKMP)2IPSecIPSec综述IPSec结构封装安全载荷协议(ESP)验证头协议(AH)Internet密钥交换(IKE)2.1IPSec综述IPSec是一个工业标准网络安全协议,它有两个基本目标:保护IP数据包安全为抵御网络攻击提供防护措施IPSec结合密码保护服务、安全协议组和动态密钥管理,三者共同实现这两个目标。IPSec保护数据的形式认证:通过认证可以确定所接受的数据与所发送的数据是否一致,同时可以确定申请发送者在实际上是真实的还是伪装的发送者;数据完整验证:通过验证,保证数据在从原发地到目的地的传送过程中没有发生任何无法检测的丢失与改变;保密:使相应的接受者能获取发送的真正内容,而无关的接受者无法获知数据的真正内容。IPSec(IPSecurity)是一种由IETF设计的端到端的确保IP层通信安全的机制。IPSec协议的定义文件包括了12个RFC文件和几十个Internet草案,已经成为工业标准的网络安全协议。定义IPSec协议族的各RFCRFC内容2401IPSec体系结构2402AH(AuthenticationHeader)协议2403HMAC-MD5-96在AH和ESP中的应用2404HMAC-SHA-1-96在AH和ESP中的应用2405DES-CBC在ESP中的应用2406ESP(EncapsulatingSecurityPayload)协议2407IPSecDOI2408ISAKMP协议2409IKE(InternetKeyExchange)协议2410NULL加密算法及在IPSec中的应用2411IPSec文档路线图2412OAKLEY协议IPSec体系结构图图1IPSec体系结构IPSec工作模式IPSec有两种运行模式:传输模式(TransportMode)隧道模式(TunnelMode)AH和ESP都支持这两种模式,因此有4种可能的组合:传输模式的AH隧道模式的AH传输模式的ESP隧道模式的ESPIPSec传输模式传输模式要保护的内容是IP包的载荷.可能是TCP/UDP等传输层协议,也可能是ICMP协议。传输模式为上层协议提供安全保护。通常情况下,传输模式只用于两台主机之间的安全通信。正常情况下,传输层数据包在IP中被添加一个IP头部构成IP包。启用IPSec之后,IPSec会在传输层数据前面增加AH或者ESP或者二者同时增加,构成一个AH数据包或者ESP数据包,然后再添加IP头部组成新的IP包。IPSec隧道模式隧道模式保护的内容是整个原始IP包,隧道模式为IP协议提供安全保护。通常情况下,只要IPSec双方有一方是安全网关或路由器,就必须使用隧道模式。路由器将需要进行IPSec保护的原始IP包看作一个整体,将这个IP包作为要保护的内容,前面添加AH或者ESP头部,然后再添加新的IP头部,组成新的IP包之后再转发出去。以ESP为例,示意如下。应用ESP:IP+ESP[IP+TCP]IPSec隧道模式的数据包有两个IP头:内部头和外部头。内部头由路由器背后的主机创建,外部头由提供IPSec的设备(可能是主机,也可能是路由器)创建。隧道模式下,通信终点由受保护的内部IP头指定,而IPSec终点则由外部IP头指定。如IPSec终点为安全网关,则该网关会还原出内部IP包,再转发到最终目的地。2.2IPSec结构传输模式用来保护上层协议,而通道模式用来保护整个IP数据报。IP头数据TCP头IP头TCP头IPSec头数据IP头IP头IPSec头TCP头数据原始的IP包传输模式受保护的包通道模式受保护的包位于传输模式和通道模式下的数据包2.3安全协议—AHAH(AuthenticationHeader,验证头部协议)由RFC2402定义,是用于增强IP层安全的一个IPSec协议。该协议可以提供无连接的数据完整性、数据来源验证和抗重放攻击服务。AH协议对IP层的数据使用密码学中的验证算法,从而使得对IP包的修改可以被检测出来MAC算法与HASH算法非常相似。区别在于MAC算法需要一个密钥(key),而HASH算法不需要MAC算法将输入报文和密钥结合在一起然后应用HASH算法。这种MAC算法称为HMAC,例如HMAC-MD5、HMAC-SHA1通过HMAC算法可以检测出对IP包的任何修改,从而保证了IP包内容的完整性和IP包来源的可靠性。不同的IPSec系统,其可用的HMAC算法也可能不同,但是有两个算法是所有IPSec都必须实现的:HMAC-MD5和HMAC-SHA1AH头部格式AH协议和TCP、UDP协议一样,是被IP协议封装的协议之一一个IP包的载荷是否是AH协议,由IP协议头部中的协议字段判断AH协议是51(TCP协议是6,UDP协议是17)。如果一个IP包封装的是AH协议,在IP包头(包括选项字段)后面紧跟的就是AH协议头部AH头部(1)下一个头(NextHeader)最开始的8位,表示紧跟在AH头部的下一个载荷的类型,也就是紧跟在AH头部后面数据的协议。在传输模式下,该字段是处于保护中的传输层协议的值,比如6(TCP)、17(UDP)或者50(ESP)。在隧道模式下,AH所保护的是整个IP包,该值是4,表示IP-in-IP协议(2)载荷长度(PayloadLength)接下来的8位,其值是以32位(4字节)为单位的整个AH数据(包括头部和变长的认证数据)的长度再减2(3)保留(reserved)16位,作为保留用,实现中应全部设置为0(4)SPI(SecurityParameterIndex,安全参数索引)SPI是一个32位整数,与源/目的IP地址、IPSec协议一起组成的三元组可以为该IP包唯一地确定一个安全关联SA(IPSec提供安全服务的数据流的发送者到接收者的一个单向逻辑关系)。[1,255]保留为将来使用,0保留本地的特定实现使用。(5)序列号(SequenceNumber)序列号是一个32位整数,作为一个单调递增的计数器,为每个AH包赋予一个序号。当通信双方建立SA时,计数器初始化为0。SA是单向的,每发送一个包,外出SA的计数器增1;每接收一个包,进入SA的计数器增1。该字段可以用于抵抗重放攻击。(6)验证数据(AuthenticationData)可变长部分,包含了验证数据,也就是HMAC算法的结果,称为ICV(IntegrityCheckValue,完整性校验值)。该字段必须为32位的整数倍,如果ICV不是32位的整数倍,必须进行填充,用于生成ICV的算法由SA指定AH传输模式AH插入到IP头部(包括IP选项字段)之后,传输层协议(如TCP、UDP)或者其他IPSec协议之前AH传输模式2.AH隧道模式在隧道模式中,AH插入到原始IP头部字段之前,然后在AH之前再增加一个新的IP头部。AH隧道模式4数据完整性检查在应用AH进行处理时,相应的SA应该已经建立,因此AH所用到的HMAC算法和密钥已经确定。AH协议验证的范围包括整个IP包,验证过程概括如下:在发送方,整个IP包和验证密钥被作为输入,经过HMAC算法计算后得到的结果被填充到AH头部的“验证数据”字段中;在接收方,整个IP包和验证算法所用的密钥也被作为输入,经过HMAC算法计算的结果和AH头部的“验证数据”字段进行比较,如果一致,说明该IP包数据没有被篡改,内容是真实可信的。在应用HMAC算法时,有一些因素需要考虑。在IP字段中,有一些是可变的,而且在传输过程中被修改也是合理的,不能说明该数据包是被非法篡改的。这些字段在计算HMAC时被临时用0填充。ToS(TypeofService):8位的服务类型字段指出了延时、吞吐量和可靠性方面的要求。表示分片的3位标志——DF(Don’tFragment)、MF(MoreFragments)等。分片偏移字段:标志字段后面的13位的偏移字段。TTL:生命期,为了防止IP包的无限次路由,每经过一个路由器,该字段减1,当TTL变为0时,被路由器抛弃。头部校验和:中间路由器对IP包头部作了任何修改之后,必须重新计算头部校验和,因此该字段也是可变的