Internet 所提供的廉价专线服务 – IPSec技术 一、 前言
以往一般企业在建立企业分支机构之间和分支机构与总部间的通信时,只能够选择电信公司的DDN专线或ATM/帧中继虚电路服务。这些都是昂贵的通信服务,会大大增加企业的运营成本。不过,随着Internet的出现和普及,企业内部的通信有了很多不同的选择;在价格方面也有显著的节省。Internet的确提供了前所未有的覆盖范围,但同时也制造了严峻的安全性问题。企业理所当然地希望能利用Internet来建立他们分支机构之间和分支机构与总部间的连接,但是首先要解决的是在IP公网上的安全问题;而IPSec技术就是建立IP专线网络的重要环节。
二、 IPsec体系结构
IPSec是由一系列RFC标准协议所组成的体系,用以提供访问控制、数据起源的验证、无连接数据的完整性验证、数据内容的机密性、抗重播保护以及有限的数据流机密性保证等服务。IPSec是在网络层实现数据加密和验证,提供端到端的网络安全方案。由于加密后的数据包仍然是一般的IP数据包,所以这种结构完全能够很好地应用在Internet上。 IPSec的一系列RFC标准协议除RFC2401外,还包括RFC2402(验证头,AH)、RFC2406(封装安全
载荷,ESP)、RFC2407(用于Internet安全联盟和密钥管理协议ISAKMP的Internet IP安全解释域)、RFC2408(ISAKMP)、RFC2409(Internet密钥交换,IKE)、RFC2411(IP安全文档指南)、RFC2412(OAKLEY密钥确定协议)等。
IPSec组件包括安全协议验证头(AH)和封装安全载荷(ESP)、安全关联(SA)、密钥交换(IKE)及加密和验证算法等。
1. 验证头(AH)
验证头(Authentication Header,AH)是一个安全协议头(如图1所示),为IP 包提供无连接的完整性验证、数据源认证和选择性抗重播服务,但没有提供机密性安全服务,可在传输模式和隧道模式下使用。通过使用数据完整性检查,可判定数据包在传输过程中是否被修改;通过使用数据源验证机制,终端系统或网络设备可对用户或应用进行验证,过滤通信流。验证机制还可防止地址欺骗攻击(及重播攻击)。AH提供的数据完整性与ESP提供的数据完整性稍有不同,AH对外部IP头各个部分进行身份验证。抗重播服务,亦称为部分序号完整性服务,是指防止攻击者截取和复制IP包,然后发送到源目的地。在任何一种情况下,AH头都会紧跟在 一个IP 头之后。AH 头之后的数据,在传输模式下,将是处于保护中的上层协议数据(如TCP 或UDP );在通道模式下将是一个完整的IP 数据包。
320 8 16
Authentication Data (variable)
Sequence Number Field
Security Parameters Index (SPI)
RESERVED Payload Length Next Header
AH 头各字段含义如下:
• 下一头(8比特):标识紧跟验证头的下一个头的类型。在传输模式下,将是
处于保护的上层协议的值,如UDP 或TCP 的协议值。在通道模式下,将是值4,表示IP -in -IP(IPv4)封装或IPv6封装的41这个值。
• 载荷长度(8比特):以32位字为单位的验证头的长度,再减去2。例如,缺
省的验证数据字段的长度是96比特(3个32位字),加上3个字长的固定头,头部共6个字长,因此该字段的值为4。
• 保留(16比特):为将来使用。
• 安全参数索引(32比特):用于与外部IP 头的目的地址一起标识一个安全关
联。
• 序号(8比特):单增的计数器值,用于提供抗重播功能。
• 验证数据(可变):该字段的长度可变(但应为32位字的整数倍),包含的数
据有数据包的ICV (完整性校验值)或MAC 。
RFC2402对AH 头的格式、位置、验证的范围及进入和外出处理规则进行了描述。
2. 封装安全载荷(ESP )
封装安全载荷(Encapsulating Security Payload)也是一个安全协议头(如图2所示),采用加密和验证机制,为IP 数据报提供数据源验证、数据完整性、抗重播和机密性安全服务,可在传输模式和隧道模式下使用。ESP 头插在IP 头和上层协议头(如TCP 或UDP 头)之间,隧道模式下,要对整个IP 包封装,ESP 头位于内外IP 头之间。 Authentication Data (variable)
Security Parameters Index (SPI)
320 8 16
Sequence Number
Payload Data (variable)
Next Header
Padding (0-255 bytes)
Pad Length
验证头各字段含义如下:
• 安全参数索引(32比特):用于和IP头之前的目标地址以及协议一起标识一个安全关联。
• 序号(32比特):单增的计数器值。
• 载荷数据(可变):传输层数据段(传输模式)或IP包(隧道模式),通过加密受到保护。也可在
保护数据字段中包含一个加密算法可能需要用到的初始化向量(IV)。以强制实施的算法(DES-CBC)来说,IV是“受保护数据”字段中的第一个8位组。
• 填充(0~255字节):额外的字节。有些加密算法要求明文长度是8的某个整倍数。
• 填充长度(8比特):表示填充的字节数。
• 下一头(8比特):通过标识载荷中的第一个头(如IPv6中的扩展头,或诸如TCP之类的上层协议头),决定载荷数据字段中数据的类型。
• 验证数据(可变):长度可变的字段(应为32位字的整数倍),用于填入ICV。ICV的计算范围为ESP包中除掉验证数据字段的部分。
RFC2406对ESP头的格式、位置、验证的范围及进入和外出处理规则进行了描述。
3. 安全策略和安全关联(SP,SA)
安全策略(Security Policy,SP)指示对IP数据包提供何种保护,并以何种方式实施保护。安全关联(Security Association,SA)是两个应用IPsec实体(主机、路由器)间的一个单向逻辑连接,决定保护什么、如何保护以及谁来保护通信数据。SA是安全策略的具体化和实例化。为了确保互操作性,IPsec规定了与SA 相关的两个名义性数据库--安全策略库(SPD)和安全关联库(SAD)。
4. Internet密钥交换(IKE)
IKE属于一种混合型协议,由Internet安全关联和密钥管理协议(ISAKMP)和两种密钥交换协议OAKLEY与SKEME组成。IKE创建在由ISAKMP定义的框架上,沿用了OAKLEY的密钥交换模式以及SKEME的共享和密钥更新技术,还定义了它自己的两种密钥交换方式。
IPsec的密钥管理包括安全关联(SA)的协商、密钥的确定和分配,有手工和自动两种方式。IPsec默认的自动密钥管理协议是IKE,虽然不一定要使用IKE,但是手工配置安全关联是非常困难和复杂的。IKE规定了自动验证IPsec对等实体、协商安全服务和产生共享密钥的标准。
5.加密和验证算法
IPsec加密算法用于ESP。目前的IPsec标准要求任何IPsec实现都必须支持DES (RFC 2405)。另外,IPsec标准规定可使用3DES、RC5、IDEA、3IDEA、
CAST 和Blowfish 。众所周知,用DES 加密来保证消息的安全不合适。因此,未来的许多IPsec 实现将支持3DES 和AES (高级加密标准)。
IPsec 用HMAC 作为验证算法,可用于AH 和ESP 。HMAC 将消息的一部分和密钥作为输入,以消息鉴别码(MAC )作为输出。MAC 保存在AH 头的验证数据字段中。目的地收到IP 包后,使用相同的
验证算法和密钥计算验证数据。如果计算出的MAC 与数据包中的MAC 相同,则认为数据包是可信的。HMAC 与现有的散列函数结合使用,如HMAC-SHA-1-96 (RFC 2404)和HMAC-MD5-96 (RFC 2403)等,可提高安全强度。
RFC2411对IPsec AH 和ESP 使用的加密和验证算法的规范进行了描述,并在其他一些文档中对DES 、HMAC-MD5、HMAC-SHA-1等算法标准进行了描述。
6.IPsec 的模式
IPsec 使用传输模式和隧道模式保护通信数据(如图3所示)。IPsec 协议和模式有4种可能的组合:AH 传输模式、AH 隧道模式、ESP 传输模式和ESP 隧道模式。但在实际应用中,一般不采用AH 隧道模式,因为该组合所保护的数据与AH 传输模式相同。
传输模式
隧道模式
DATA
DATA
IP HEADER DATA
IP HEADER
传输模式用于两台主机之间,保护传输层协议头,实现端到端的安全。它所保护的数据包的通信终点也是IPsec 终点。当数据包从传输层递给网络层时,AH 和ESP 会进行“拦截”,在IP 头与上层协议头之间需插入一个IPsec 头(AH 头或ESP 头)。当同时应用AH 和ESP 传输模式时,应先应用ESP ,再应用AH ,这样数据完整性可应用到ESP 载荷。
隧道模式用于主机与路由器或两部路由器之间,保护整个IP数据包。它将整个IP 数据包(称为内部IP头)进行封装,然后增加一个IP头(称为外部IP头),并在外部与内部IP头之间插入一个IPsec头。该模式的通信终点由受保护的内部IP 头指定,而IPsec终点则由外部IP头指定。如果IPsec终点为安全网关,则该网关会还原出内部IP包,再转发到最终的目的地。
IPsec支持嵌套隧道,即对已隧道化的数据包再进行隧道化处理。
三、 IPsec的安全实现机制
1. 访问控制
访问控制是指防止未经授权对资源进行访问。IPsec环境中,需要进行访问控制的资源通常为主机中的数据和计算能力、安全网关内的本地网及其带宽。
IPsec使用身份认证机制进行访问控制。两个IPsec实体试图进行通信前,必须通过IKE协商SA,协商过程中要进行身份认证。身份认证采用公钥签名机制,使用数字签名标准(DSS)算法或RSA算法,而公钥通常是从证书中取得的。
2. 数据源验证
数据源验证对数据起源所声明的身份进行验证。通常与无连接数据完整性相结合。
IPsec使用消息鉴别机制实现数据源验证服务。发送方在发送数据包前,要用消息鉴别算法HMAC计算MAC。HMAC将消息的一部分和密钥作为输入,以MAC作为输出。MAC保存在IPsec头(AH、ESP头)的验证数据字段中。目的地收到IP包后,使用相同的验证算法和密钥计算验证数据。如果计算出的MAC与数据包中的MAC相同,则认为数据包是可信的,即通过验证。
3. 无连接完整性和抗重播
无连接完整性服务对单份数据包是否被修改进行检查,而对数据包的到达顺序不作要求。IPsec使用数据源验证机制实现无连接完整性服务。
IPsec的抗重播服务,亦称为部分序号完整性服务,是指防止攻击者截取和复制IP包,然后发送到源目的地。IPsec根据IPsec头中的序号字段,使用滑动窗口原理,实现抗重播服务。
因为IP协议提供的服务是不可靠的和无连接的,即不保证数据包能够到达,也不保证按顺序到达,所以IPsec要求接收方维持一个大小为W的窗口(缺省时,W=64),窗口右边界表示已接到的有效数据包的最大序号N。对于到达的任何有效(验证正确的)数据包,如序号在N-W+1至N之间,则接收方应在窗口的相应位置作标记。数据包到达后,要进行进入处理。其过程如下:如数据包序号落在窗口内,且不是重发的,则进行MAC验证。如验证正确,则应在窗口的相应位置作标记。