IPSec提供了两种安全机制:认证和加密。认证机制使IP通信的数据接收方能够确认数据发送方的真实身份以及数据在传输过程中是否遭篡改。加密机制通过对数据进行编码来保证数据的机密性,以防数据在传输过程中被窃听。IPSec 协议组包含Authentication Header(AH)协议、Encapsulating Security Payload(ESP)协议和Internet Key Exchange(IKE)协议。其中AH协议定义了认证的应用方法,提供数据源认证和完整性保证;ESP协议定义了加密和可选认证的应用方法,提供可靠性保证。在实际进行IP通信时,可以根据实际安全需求同时使用这两种协议或选择使用其中的一种。AH和ESP都可以提供认证服务,不过,AH提供的认证服务要强于ESP。IKE用于密钥交换(将在以后部分讨论)。
一、Authentication Header(AH)协议结构
AH协议为IP通信提供数据源认证、数据完整性和反重播保证,它能保护通信免受篡改,但不能防止窃听,适合用于传输非机密数据。AH的工作原理是在每一个数据包上添加一个身份验证报头。此报头包含一个带密钥的hash散列(可以将其当作数字签名,只是它不使用证书),此hash散列在整个数据包中计算,因此对数据的任何更改将致使散列无效--这样就提供了完整性保护。
AH报头位置在IP报头和传输层协议报头之间,见图一。 AH由IP协议号" 51"标识,该值包含在AH报头之前的协议报头中,如IP报头。AH可以单独使用,也可以与ESP协议结合使用。
图1 AH报头
AH报头字段包括:
·Next Header(下一个报头): 识别下一个使用IP协议号的报头,例如,Next Header值等于"6",表示紧接其后的是TCP报头。
·Length(长度): AH报头长度。
·Security Parameters Index (SPI,安全参数索引): 这是一个为数据报识别安全关联的 32 位伪随机值。SPI 值 0 被保留来表明"没有安全关联存在"。
·Sequence Number(序列号):从1开始的32位单增序列号,不允许重复,唯一地标识了每一个发送数据包,为安全关联提供反重播保护。接收端校验序列号为该字段值的数据包是否已经被接收过,若是,则拒收该数据包。
·Authentication Data(AD,认证数据): 包含完整性检查和。接收端接收数据包后,首先执行hash计算,再与发送端所计算的该字段值比较,若两者相等,表示数据完整,若在传输过程中数据遭修改,两个计算结果不一致,则丢弃该数据包。
数据包完整性检查:
如图二所示,AH报头插在IP报头之后,TCP,UDP,或者ICMP等上层协议报头之前。一般AH为整个数据包提供完整性检查,但如果IP报头中包含"生存期(Time To Live)"或"服务类型(Type of Service)"等值可变字段,则在进行完整性检查时应将这些值可变字段去除。
图2 AH为整个数据包提供完整性检查
二、Encapsulating Security Payload(ESP)协议结构
ESP为IP数据包提供完整性检查、认证和加密,可以看作是"超级 AH", 因为它提供机密性并可防止篡改。ESP服务依据建立的安全关联(SA)是可选的。然而,也有一些限制:
·完整性检查和认证一起进行。
·仅当与完整性检查和认证一起时,"重播(Replay)"保护才是可选的。
·"重播"保护只能由接收方选择。
ESP的加密服务是可选的,但如果启用加密,则也就同时选择了完整性检查和认证。因为如果仅使用加密,入侵者就可能伪造包以发动密码分析攻击。
ESP可以单独使用,也可以和AH结合使用。一般ESP不对整个数据包加密,而是只加密IP包的有效载荷部分,不包括IP头。但在端对端的隧道通信中,ESP需要对整个数据包加密。
如图三所示,ESP报头插在IP报头之后,TCP或UDP等传输层协议报头之前。ESP由IP协议号"50"标识。
图3 ESP报头
、报尾和认证报尾
ESP报头字段包括:
·Security Parameters Index (SPI,安全参数索引):为数据包识别安全关联。
·Sequence Number(序列号):从1开始的32位单增序列号,不允许重复,唯一地标识了每一个发送数据包,为安全关联提供反重播保护。接收端校验序列号为该字段值的数据包是否已经被接收过,若是,则拒收该数据包。 ESP报尾字段包括:
·Padding(扩展位):0-255个字节。DH算法要求数据长度(以位为单位)模512为448,若应用数据长度不足,则用扩展位填充。
·Padding Length(扩展位长度):接收端根据该字段长度去除数据中扩展位。
·Next Header(下一个报头):识别下一个使用IP协议号的报头,如TCP或UDP。
ESP认证报尾字段:
·Authentication Data(AD,认证数据): 包含完整性检查和。完整性检查部分包括ESP报头、有效载荷(应用程序数据)和ESP报尾。见图四。
图4 ESP的加密部分和完整性检查部分
如上图所示,ESP报头的位置在IP报头之后,TCP,UDP,或者ICMP等传输层协议报头之前。如果已经有其他IPSec协议使用,则ESP报头应插在其他任何IPSec协议报头之前。ESP认证报尾的完整性检查部分包括ESP报头、传输层协议报头,应用数据和ESP报尾,但不包括IP报头,因此ESP不能保证IP报头不被篡改。ESP加密部分包括上层传输协议信息、数据和ESP报尾。
三、ESP隧道模式和AH隧道模式
以上介绍的是传输模式下的AH协议和ESP协议,ESP隧道模式和AH隧道模式与传输模式略有不同。
在隧道模式下,整个原数据包被当作有效载荷封装了起来,外面附上新的IP报头。其中"内部"IP报头(原IP报头)指定最终的信源和信宿地址,而"外部"IP报头(新IP报头)中包含的常常是做中间处理的安全网关地址。
与传输模式不同,在隧道模式中,原IP地址被当作有效载荷的一部分受到IPSec的安全保护,另外,通过对数据加密,还可以将数据包目的地址隐藏起来,这样更有助于保护端对端隧道通信中数据的安全性。
ESP隧道模式中签名部分(完整性检查和认证部分)和加密部分分别如图所示。ESP的签名不包括新IP头。
图5 ESP隧道模式
下图标示出了AH隧道模式中的签名部分。AH隧道模式为整个数据包提供完整性检查和认证,认证功能优于ESP。但在隧道技术中,AH协议很少单独实现,通常与ESP协议组合使用。
图6 AH隧道模式
|