安全加密协议¶
IKE协商完后,实际报文将使用安全加密协议(AH/ESP)对报文进行加密。
AH¶
Authentication Header Protocol,头部认证协议
AH 提供认证和数据的完整性,但是不提供加密。
通过计算IP头部的hash值,做完整性校验(去除IP头部的异变字段,如TTL,头部校验和).
具有抗重播能力(通过序列号,滑动窗口以及丢弃旧的报文实现)。
报头格式¶

| 字段 | 说明 |
|---|---|
| 下一个头 | 标识被传送数据的协议(TCP/UDP/ICMP) |
| 载荷长度 | 认证头包的大小 |
| 保留 | 为将来的应用保留(目前都置为0) |
| 安全参数索引 | 与IP地址一同用来标识安全参数 |
| 序列号 | 单调递增的数值,用来防止重放攻击 |
| 完整性校验值 | 包的哈希值,接受放通过同样的计算方式,确保数据完整性 |
传输模式¶


隧道模式¶


不足¶
AH在NAT/PAT时无法使用。
因为IP头部在计算hash值时,TTL和校验和被排除,但是ip和端口被包含在内。
但做NAT时,ip和端口会改变,导致ICV和AH校验失败。
ESP¶
与AH不同的是,ESP不对整个IP包进行认证和完整性保护,IP分组头部不被包括在内。
报头格式¶

| 字段 | 说明 |
|---|---|
| 安全参数索引 | 与IP地址一同用来标识安全参数 |
| 索引号 | 单调递增的数值,用来防止重放攻击 |
| 载荷数据 | 实际要传输的数据 |
| 填充 | 某些块加密算法用此将数据填充至块的长度 |
| 填充长度 | 以位为单位的填充数据的长度 |
| 下一个头 | 标识被传送数据所属的协议 |
| 认证数据 | 包含了认证当前包所必须的数据 |
传输模式¶


隧道模式¶


AH和ESP组合¶
传输模式¶


隧道模式¶


参考¶
RFC 4302 - IP Authentication Header
RFC 4303 - IP Encapsulating Security Payload (ESP)