IPsec 封装安全负载(IPsec ESP)是 IPsec 体系结构中的一种主要协议,其主要设计来在 IPv4 和 IPv6 中提供安全服务的混合应用。IPsec ESP 通过加密需要保护的数据以及在 IPsec ESP 的数据部分放置这些加密的数据来提供机密性和完整性。根据用户安全要求,这个机制既可以用于加密一个传输层的段(如:TCP、UDP、ICMP、IGMP),也可以用于加密一整个的 IP 数据报。封装受保护数据是非常必要的,这样就可以为整个原始数据报提供机密性。
ESP 头可以放置在 IP 头之后、上层协议头之前 (传送层),或者在被封装的 IP 头之前 (隧道模式)。IANA 分配给 ESP 一个协议数值 50,在 ESP 头前的协议头总是在“next head”字段(IPv6)或“协议”(IPv4)字段里包含该值 50。ESP 包含一个非加密协议头,后面是加密数据。该加密数据既包括了受保护的 ESP 头字段也包括了受保护的用户数据,这个用户数据可以是整个 IP 数据报,也可以是 IP 的上层协议帧(如:TCP 或 UDP)。
ESP 提供机密性、数据源认证、无连接的完整性、抗重播服务(一种部分序列完整性的形式) 和有限信息流机密性。所提供服务集由安全连接(SA)建立时选择的选项和实施的布置来决定,机密性的选择与所有其他服务相独立。但是,使用机密性服务而不带有完整性/认证服务(在 ESP 或者单独在 AH 中)可能使传输受到某种形式的攻击以破坏机密性服务。数据源验证和无连接的完整性是相互关联的服务,它们作为一个选项与机密性 (可选择的)结合提供给用户。只有选择数据源认证时才可以选择抗重播服务,由接收方单独决定抗重播服务的选择。
协议结构
| 16 | 24 | 32 bit |
| Security Association Identifier (SPI) | ||
| Sequence Number | ||
| Payload Data (Variable Length) | ||
| Padding (0-255 bytes) | ||
| Pad Length | Next Header | |
| Authentication Data (variable) | ||
- Security Association Identifier ― 一个伪随机值,用于识别数据报的安全联接(Security Association)。
- Sequence Number ― 包含无变化的增长计数器值,该值是强制性的,即使接收端不为特定 SA 提供 Anti-Replay 服务,它仍然存在。
- Payload Data ― 一个可变长字段,包括 Next Header 字段中描述的数据。
- Padding ― 供加密使用。
- Pad Length ― 指出 Pad 字节前的号码。
- Next Header ― 识别包含在有效负载数据字段中的数据类型。如 IPv6 中的扩展头或上层协议标识符。
- Authentication Data ― ―个可变长字段,包括在 ESP 数据包上计算的减去 Authentication Data 的完整校验值(ICV)。
相关协议:IPsec、AH、DES、AES、IKE、DOI、HMAC、HMAC-MD5、HMAC-SHA、PKI、IP、IPv6、ICMP
组织来源:ESP 由 IETF (www.ietf.org) 定义在 RFC 2406中。
相关链接:
http://www.javvin.com/protocol/rfc2406.pdf:IP Encapsulating Security Payload (ESP)


