传输模式传输模式是 IPSec 的默认模式,用于进行端对端的通信(例如,用于客户端和服务器之间的通信)。当使用传输模式时,IPSec 只对 IP 负载进行加密。传输模式通过 AH 或 ESP 报头对 IP 负载提供保护。典型的 IP 负载包括 TCP 段(包含 TCP 报头与 TCP 段数据)、一条 UDP 消息(包含 UDP 报头与 UDP 消息数据)以及一条 ICMP 消息(包含 ICMP 报头与 ICMP 消息数据)。

身份验证报头传输模式
身份验证报头 (AH) 可对整个数据包(IP 报头与数据包中的数据负载)提供身份验证、完整性与抗重播保护。但是它不提供保密性,即它不对数据进行加密。数据可以读取,但是禁止修改。AH 使用加密哈希算法签名数据包以求得完整性。详细信息,请参阅使用哈希函数的数据完整性。

例如,使用计算机 A 的 Alice 将数据发送给使用计算机 B 的 Bob。IP 报头、AH 报头和数据的完整性都得到保护。这意味着 Bob 可以确定确实是 Alice 发送的数据并且数据未被修改。

完整性与身份验证是通过在 IP 报头与 IP 负载之间置入的 AH 报头提供的. 

 
在 IP 报头中使用 IP 协议 ID 51 来标识 AH。AH 可以独立使用,也可以与“封装式安全措施负载 (ESP)”协议组合使用。

AH 报头包含下列字段:

下一个报头
使用 IP 协议 ID来标识 IP 负载。例如,值 6 表示 TCP。

长度
表示 AH 报头的长度。

安全参数索引 (SPI)
与目标地址及安全协议(AH 或 ESP)组合使用,以确保通信的正确安全关联。接收方使用该值确定数据包是使用哪一安全关联标识的。

序数
为该数据包提供抗重播保护。序数是 32 位、递增的数字(从 1 开始),它表示通过通信的安全关联所发送的数据包数。在快速模式安全关联的生存期内序列号不能重复。接收方将检查该字段,以确认使用该数字的安全关联数据包还没有被接收过。如果一个已经被接收,则数据包被拒绝。

身份验证数据
包含完整性校验值 (ICV),也称为消息身份验证码,用于验证消息身份验证与完整性。接收方计算 ICV 值并对照发送方计算的值校验它,以验证完整性。ICV 是通过 IP 报头、AH 报头与 IP 负载来计算的。

使用 AH 报头进行数据包签名
AH 为了完整性而对整个数据包进行签名,除了在传输过程中可能更改的 IP 报头中的某些字段之外(例如,“生存时间”与“服务类型”字段)。如果除了 AH 外还在使用另一个 IPSec 报头,则会在所有其他 IPSec 报头前插入 AH 报头。 

 
封装式安全措施负载传输模式
封装式安全措施负载 (ESP) 不仅为 IP 负载提供身份验证、完整性和抗重播保护,还提供机密性。传输模式中的 ESP 不对整个数据包进行签名。只对 IP 负载(而不对 IP 报头)进行保护。ESP 可以独立使用,也可与 AH 组合使用。

例如,使用计算机 A 的 Alice 将数据发送给使用计算机 B 的 Bob。IP 负载经过加密和签名,以保护其完整性。收到并在完整性验证过程结束后,数据包中的数据负载便被解密。于是 Bob 可以确定确实是 Alice 发送的数据并且数据未被修改,没有其他人能够读取这些数据。

在 IP 报头中使用 IP 协议 ID 50 标识 ESP。如下图所示,ESP 报头置于 IP 负载之前,ESP 尾端与 ESP 验证尾端置于 IP 负载之后。

 
ESP 报头包含下列字段:

安全参数索引
与目标地址及安全协议(AH 或 ESP)组合使用时,确保通信的正确安全关联。接收方使用该值确定应该使用哪个安全相关联标识此数据包。

序数
为该数据包提供抗重播保护。序数是 32 位、递增的数字(从 1 开始),它表示通过通信的快速模式安全关联所发送的数据包数。在快速模式安全关联的生存期内序列号不能重复。接收方将检查该字段,以确认使用该数字的安全关联数据包还没有被接收过。如果有已被接收的数据包,则其将被拒绝。

ESP 尾端包含下列字段:

填充
填充 0~255 个字节用来确保使用填充字节加密的负载可达加密算法所需的字节边界。

填充长度
表示“填充”字段的长度(以字节为单位)。在使用填充字节的加密负载解密之后,接收方使用该字段来删除填充字节。

下一个报头
标识负载中的数据类型,例如 TCP 或 UDP。

ESP 验证尾端包含下列字段:

身份验证数据
包含完整性校验值 (ICV),也称为消息身份验证码,用于验证消息身份验证与完整性。接收方计算 ICV 值并对照发送方计算的值校验它,以验证完整性。ICV 是通过 ESP 报头、负载数据与 ESP 尾端计算的。

数据包签名与加密
如下图所示,ESP 可为 IP 负载提供保护。数据包的签名部分表示数据包的完整性和身份验证签名是在哪里进行的。数据包的加密部分表示什么信息受到机密性保护。

 
 
IP 报头未签名,也不必加以保护以防修改。要为 IP 报头提供数据完整性与身份验证,请使用 ESP 与 AH。

AH与ESP进行比较

IP报文|ESP报文|IP报文|IP负载(TCP报文,UDP段,ICMP报文)|ESP报尾|ESP AUTH报尾