一、IPSec概述1.IPSec的应用通过互联网安全分支机构接入通过互联网进行安全远程访问与合作者建立企业间联网和企业内联网接入加强电子商务安全性2.IPSec的好处IPSec有下列优点:当在路由器和防火墙中使用IPSec时,它对通过其边界的所有通信流提供了强安全性。公司或者工作组内部的通信不会引起与安全相关的开销。放火墙内的IPSec能在所有的外部流量必须使用IP时阻止旁路,因为防火墙是从互联网进入组织内部的唯一通道。IPSec位于传输层(TCP、UDP)之下,所以对所有的应用都是透明的。因此当防火墙或者路由器使用IPSec时,没有必要对用户系统和服务器系统的软件做任何改变。即使终端系统中使用IPSec,上层软件和应用也不会受到影响。IPSec可以对终端用户是透明的。不需要对用户进行安全机制的培训,如分发基于每个用户的密匙资料(keyingmaterial),或者在用户离开组织时撤销密匙资料。若有必要的话,IPSec能给个人用户提供安全性。这对网外员工非常有用,它对在敏感的应用领域中组建一个安全虚拟子网络也是有用的。3、IPSec体系结构包括以下几个基本部分:AH(AuthenticationHeader,认证报头)、ESP(EncapsulatingSecurityPayload,封装安全载荷)、IKE(InternetKeyManagement,密钥交换协议)、SA(SecurityAssociation,安全关联)、DOI(DomainofInterpretation,解释域)、认证和加密算法。SA是IPSec的基础,决定通信中采用的IPSec安全协议、散列方式、加密算法和密钥等安全参数,通常用一个三元组(安全参数索引、目的IP地址、安全协议)唯一表示。SA总是成对出现的,对等存在于两端的通信实体,是通信双方协商的结果。AH为IP数据报的IP头和上层协议数据提供完整性检查与数据源认证,并防止重放攻击。AH不提供数据加密服务。ESP提供数据内容的加密,根据用户安全要求,ESP既可以用于加密IP数据报的内容(如:TCP、UDP、ICMP、IGMP),也可以用于加密整个IP数据报。作为可选项,ESP也可以提供AH的认证服务。IPSec安全体系封装安全载荷(ESP)加密算法认证算法认证头(AH)解析域(DOI)密钥交换与管理(IKE)安全关联(SA)4.IPSec服务数据加密IPSec的数据加密服务由ESP(EncapsulatingSecurityPayload,封装安全载荷)提供,算法采用CBC(CipherBlockChaining,加密块链接)方式,这样确保了即使信息在传输过程中被窃听,非法用户也无法得知信息的真实内容。数据源地址验证、数据完整性检查IPSec使用HMAC(Hash-BaseMessageAuthenticationCode)进行数据验证。HMAC是使用单向散列函数对包中源IP地址、数据内容等在传输过程中不变的字段计算出来的,具有唯一性。数据如果在传输过程中发生改动,在接收端就无法通过验证。防止重放攻击IPSec使用AH(AuthenticationHeader,认证头)为每个SA(SecurityAssociation,安全关联)建立系列号,而接收端采用滑动窗口技术,丢弃所有的重复的包,因此可以防止重放攻击。5.IPSec的工作模式AH和ESP都支持两种使用模式:传输模式和隧道模式。传输模式通常应用于主机之间端对端通信,该模式要求主机支持IPSec。隧道模式应用于网关模式中,即在主机的网关(防火墙、路由器)上加载IPSec,这个网关就同时升级为SG(SecurityGateway,安全网关)。传输模式主要为上层协议提供保护,AH或ESP报头插入在IP报头和传输层协议报头之间。原始IP头传输模式应用ESP后:加密数据AH传输层包头(TCP/UDP)数据原始IP头ESP头传输层包头(TCP/UDP)数据ESP尾ESP认证验证数据原始IP头传输层包头(TCP/UDP)数据传输模式应用AH后:隧道模式,整个IP包都封装在一个新的IP包中,并在新的IP报头和原来的IP报头之间插入IPSec头(AH/ESP)。传输模式下的AH和ESP都没有对IP报头进行封装,隧道模式下整个IP包都被封装了。当采用ESP进行数据加密时,原始IP报头中的源地址和目的地址都被隐藏起来,具有更好的安全性。新IP头原始IP头隧道模式应用ESP后:加密数据AH传输层包头(TCP/UDP)数据新IP头原始IP头ESP头传输层包头(TCP/UDP)数据ESP尾ESP认证验证数据原始IP头传输层包头(TCP/UDP)数据隧道模式应用AH后:下表总结了传输模式和隧道模式的功能传输模式SA隧道模式SAAH对IP载荷和IP报头的选中部分、IPv6的扩展报头进行认证对整个内部IP包(内部报头和IP载荷)和外部IP报头的选中部分、外部IPv6的扩展报头进行认证ESP对IP载荷和跟在ESP报头后面的任何IPv6扩展报头进行加密加密整个内部IP包带认证的ESP对IP载荷和跟在ESP报头后面的任何IPv6扩展报头进行加密。认证IP载荷但不认证IP报头加密整个内部IP包。认证内部IP包二、封装安全载荷1.ESP格式安全参数索引(32bit):标识一个安全关联序列号(32bit):一个递增的计数值,提供了反重放功能载荷数据(payloaddata)(长度可变):这是被加密保护的传输层分段(传输模式)或者IP包(隧道模式)填充域(padding)(0~255字节):此域的目的将在后面讨论。填充长度(padlength)(8比特):标明此域前面一个域中填充数据的长度。邻接报头(nextheader)(8比特):通过标识载荷中的第一个报头来标识包含在载荷数据域中的数据类型。(例如IPv6的扩展报头)。完整性校验值(IntegrityCheckValue,ICV)(长度可变):一个可变长的域(必须为32比特的字长的整数倍),它包含ICV。ICV的计算参量为ESP包中除认证数据域外的其他部分。当使用任何组合式算法时,该算法本身既能够返回解密的明文,又能够返回一个示明完整性校验通过或不通过的信息。对组合式算法,通常应该会在ESP包(当选择完整性校验时)最后出现的ICV值会被省略。当选择完整性校验且省略ICV值时,在载荷数据内设置一种与ICV等价的方法去验证包的完整性则成为组合式算法的职责。2.加密和认证算法ESP服务加密载荷数据、填充域、填充长度和邻接报头域,如果用于加密载荷的算法需要使用密码同步数据,如初始向量(initializationvector,IV),则这些数据可以在载荷数据域的开始处显式地传输。如果包括IV,它虽然被看成是密文的一部分,但不会被加密。ICV域是可选的。仅当选择了完整性服务且该服务或者由一个单独的完整性算法提供,或者由用于ICV的组合式算法提供时,该域才会出现。ICV值是在加密完成后才被计算。这种处理顺序能使在对包解密前就可对接收者的重放或伪造作出快速的检测与拒绝,从而可以潜在地降低拒绝服务器攻击(DoS)的影响。它还对接收者对包的并行处理的可能性留有余地。也就是说,解密和完整性校验可以并行处理。注意,由于ICV值未作加密保护,对ICV值的计算需要用带密匙的完整性算法。3.填充填充(padding)域有如下几个作用:如果加密算法要求明文为某个数目字节的整数倍(如分块加密中要求明文是单块长度的整数倍),填充域用于把明文(包括载荷数据、填充、填充长度、邻接报头域)扩展到需要的长度。ESP格式要求填充长度和邻接报头域为右对齐的32比特的字,同样,密文也是32比特的整数倍,填充域用来保证这样的排列。增加额外的填充能隐藏载荷的实际长度,从而提供部分流量的保密。4.反重放服务重放攻击就是一个攻击者得到了一个经过认证的包的副本,稍后又将其传送到其希望被传送到的目的站点的攻击。重复的接收经过认证的IP包可能会以某种方式中断服务或产生一些不希望出现的结果。序列号域就是为了阻止这样的攻击而设计的。安全关联SA是发送端和接收端之间用于对它们之间传递的数据流提供安全服务的一个单向逻辑连接。5.传输模式和隧道模式AH和ESP都支持两种使用模式:传输模式和隧道模式。传输模式通常应用于主机之间端对端通信,该模式要求主机支持IPSec。隧道模式应用于网关模式中,即在主机的网关(防火墙、路由器)上加载IPSec,这个网关就同时升级为SG(SecurityGateway,安全网关)。传输模式主要为上层协议提供保护,AH或ESP报头插入在IP报头和传输层协议报头之间。原始IP头传输模式应用ESP后:加密数据AH传输层包头(TCP/UDP)数据原始IP头ESP头传输层包头(TCP/UDP)数据ESP尾ESP认证验证数据原始IP头传输层包头(TCP/UDP)数据传输模式应用AH后:隧道模式,整个IP包都封装在一个新的IP包中,并在新的IP报头和原来的IP报头之间插入IPSec头(AH/ESP)。传输模式下的AH和ESP都没有对IP报头进行封装,隧道模式下整个IP包都被封装了。当采用ESP进行数据加密时,原始IP报头中的源地址和目的地址都被隐藏起来,具有更好的安全性。新IP头原始IP头隧道模式应用ESP后:加密数据AH传输层包头(TCP/UDP)数据新IP头原始IP头ESP头传输层包头(TCP/UDP)数据ESP尾ESP认证验证数据原始IP头传输层包头(TCP/UDP)数据隧道模式应用AH后:传输模式ESP用于加密和认证(认证可选)IP携带的数据(如TCP分段),如图所示。当传输模式使用于IPv4时,ESP报头被插在传输层报头(例如TCP、UDP、ICMP)前面的IP包中,ESP尾(填充、填充长度和邻接报头域)被放在IP包的后面。如果选择认证,ESP认证数据域就被放在ESP尾部之后,整个传输层分段和ESP尾部一起被加密,认证覆盖了所有的密文和ESP报头。(a)应用ESP之前IPv4原始IP报头TCP数据IPv6原始IP报头TCP数据扩展头(如出现)原始IP报头TCPESP报头数据ESP认证ESP追踪加密的认证的IPv4新IP报头TCPESP报头数据ESP认证ESP追踪加密的认证的扩展报头扩展报头IPv6(c)隧道模式新IP报头原始IP报头原始IP报头TCPESP报头数据ESP认证ESP追踪加密的认证的IPv4原始IP报头TCPESP报头数据ESP认证ESP追踪加密的认证的dest端到端、目的地址、路由、帧IPv6(b)传输模式隧道模式ESP被用来加密整个IP包。在这种模式下,ESP报头是包的前缀,所以包与ESP尾部被一同加密,该模式可用来阻止流量分析。由于IP报头包含了目的地址,还可能包含源路由指示以及逐跳信息,所以不可能简单地传输带有ESP报头前缀的加密过的IP包。中间路由器不能处理这样的包。因此,使用能为路由提供足够信息却没有为流量分析提供信息的新IP报头封装整个模块(ESP报头、密文和验证数据,如果它们存在)是必要的。传输模式适合于保护支持ESP特性的主机之间的连接,而隧道模式在包含防火墙或其它类型的用于保护可信内网不受外网侵害的安全网关的配置中是有用的。在后一种情况下,加密发生在外部主机和安全网关之间,或者是发生在两个安全网关之间。这就减轻了网内主机的加密负担,并通过降低所需密匙数来简化密匙分发任务。另外,它阻止基于最终目的地址的流量分析。考虑以下情况:外部主机希望与受防火墙保护的内部网络主机通信,ESP在外部主机和防火墙中实现。从外部主机到内部主机的传输层分段将按照如下步骤传送。(1)远端将产生一个以目的地内部主机作为目的地址的内部IP包。这个包以ESP报头为前缀,然后加密包和ESP尾部,并且可能添加认证数据。再用目的地址是防火墙地址的新IP报头(基本报头和可选的扩展,如路由器和IPv6的逐跳信息)封装数据块,从而形成了外部的IP包。(2)将外部IP包路由到目的防火墙,每个中间