IPSec是网际层实现IP分组端到端安全传输的机制,由一组安全协议组成。
鉴别首部(Authentication Header,AH)和封装安全净荷(Encapsulating Security Payload,ESP)是其中两个协议,AH和ESP均实现IP分组源端鉴别和防重放攻击等功能,两者的差别是,AH只实现数据完整性检测,ESP实现数据加密和完整性检测。
为了实现安全关联的动态建立过程,设计了Internet 密钥交换协议(Internet Key Exchange Protocol,IKE)。IKE 用于完成安全关联两端之间的双向身份鉴别过程和安全关联相关安全参数的协商过程。
1、安全关联
为了实现数据发送者至接收者的安全传输,需要建立发送者与接收者之间的关联,这种以实现源端鉴别、数据加密和完整性检测为目的的关联称为安全关联(Security Association,SA)。
安全关联是单向的,用于确定发送者至接收者传输方向的数据所使用的加密算法和加密密钥、消息鉴别码(Message Authentication Code,MAC)算法和MAC 密钥等。
同一对发送者和接收者之间可以建立多个安全关联,因此,发送者不能简单通过数据的接收者确定安全关联,而且,以后的讨论中会指出:数据的目的地和安全关联的目的地可以不同。为此,发送者需要通过定义安全策略数据库(Security Policy Database,SPD)来判别数据传输所使用的安全策略。
SPD的目的是将数据分类,然后对不同类的数据施加不同的安全策略,这些安全策略可以是丢弃、使用IPSec和不使用IPSec。如果某类数据的安全策略是使用IPSec,需要将该类数据绑定到某个安全关联,如果该安全关联不存在,需要动态建立该安全关联。
为了实现数据发送者至接收者的安全传输,每一个安全关联需要定义下述参数。所有安全关联相关参数集合构成安全关联数据库(Security Association Database,SAD)。
序号:32位长度,作为AH或ESP首部中序号字段值,用于防止重放攻击。在安全关联存在期间,不允许出现相同序号的AH或ESP报文。
防重放攻击窗口:用于确定接收到的AH或ESP报文是否是重放报文。
AH信息:消息鉴别码(MAC)算法,MAC密钥,MAC密钥寿命,及其他用于AH的参数。
ESP信息:加密算法和加密密钥,MAC算法和MAC密钥,密钥寿命,及其他用于ESP的参数。
安全关联寿命:可以是一段用于确定安全关联存在时间的时间间隔,也可以是安全关联允许发送的字节数。一旦安全关联经过了安全关联寿命定义的时间间隔,或是发送了安全关联寿命允许发送的字节数,将立即终止该安全关联。
2、传输模式和隧道模式
传输模式:
用于保证数据端到端安全传输,并对数据源端进行鉴别,在这种模式下,
安全关联IPSec所保护的数据就是作为IP分组净荷的上层协议数据,如TCP、UDP报文和其他基于
网络IP的上层协议报文。
隧道模式
安全关联的两端是隧道的两端。在这种模式下,连接源端和目的端的内部网络被一个公共网络分隔,由于内部网络使用本地IP地址,而公共网络只能路由以全球IP地址为目的IP地址的IP分组,因此,直接以源端IP地址为源IP地址、目的端IP地址为目的IP地址的IP分组不能由公共网络正确地从路由器 R1 路由到路由器 R2,路由器 R1为了将源端至目的端的 IP 分组经过公共网络传输给路由器R2,将源端至目的端的IP分组作为净荷封装在以路由器R1的全球IP地址为源IP地址,路由器R2的全球IP地址为目的IP地址的IP分组中,这种将整个IP分组的净荷的封装方式就是隧道格式。
3、防止重放攻击
由于IPSec对源端至目的端的IP分组实现源端鉴别、数据加密和完整性检测,黑客伪造源端至目的端的AH或ESP报文是不可能的,即使黑客截获源端至目的端的AH或ESP报文,也无法篡改,或者解密AH或ESP报文包含的数据。但黑客可以重复转发截获的 AH 或 ESP报文,或是延迟一段时间后,再转发截获的AH或ESP报文。目的端必须能够区分出重复的AH或ESP报文和因为传输时延超长而失效的 AH或 ESP报文,防重放攻击机制就是解决上述问题的机制。
新建立源端至目的端的安全关联时,序号初始值为0。源端发送AH或ESP报文时,先将序号增1,然后将增1后的序号作为AH或ESP报文的序号字段值。在安全关联寿命内,不允许出现相同的序号,因此,目的端只要接收到序号重复的AH或ESP报文,确定是重复接收到的AH或ESP报文,予以丢弃。由于AH或ESP报文经过IP网络传输后,不是按序到达目的端,因此,序号小的AH或ESP报文后于序号大的AH或ESP 报文到达目的端是正常的,但AH或ESP报文经过IP网络传输的时延抖动有一个范围,如果某个 AH或 ESP报文的传输时延和其他 AH或 ESP报文传输时延的差值超出这个范围,可以认为该AH或ESP报文被黑客延迟了一段时间。防重放攻击窗口就用于定义正常的时延抖动范围。假定防重放攻击窗口值为W,目的端正确接收到的AH或ESP报文中最大序号值为N,则序号值为N-W+1~N的AH或ESP报文属于虽然传输时延大于序号为N的AH或ESP报文,但传输时延仍在正常的时延抖动范围内的AH或ESP报文,目的端正常接收这些AH或ESP报文。
对于防重放攻击窗口,目的端每接收到一个 AH或 ESP报文,执行如下操作。
(1)如果报文序号小于N-W+1,或者该序号对应的报文已经正确接收,丢弃该报文。
(2)如果报文序号在窗口范围内,且未接收过该序号对应的报文,接收该报文并将该序号对应的标志改为已正确接收该序号对应的报文。
(3)如果报文序号大于N,假定为L(L>N),将窗口改为L-W+1~L,并将序号L 对应的标志改为已正确接收该序号对应的报文。
AH
在传输模式下,在IP首部和净荷之间插入鉴别首部AH,在隧道模式下,整个IP分组作为隧道格式的净荷,在外层IP首部和净荷之间插入鉴别首部AH。