什么是认证报头 (AH) 格式?
认证报头 (AH) 用于为 IP 数据报提供完整性和认证。它也支持重放保护。这些服务是无连接的,这意味着它们基于每个数据包工作。
AH 以以下两种模式使用:
- 传输模式
- 隧道模式
AH 认证与 IP 数据报相同。在传输模式下,IP 报头中的一些字段在传输过程中会发生变化,接收方无法预测其值。这些字段称为可变字段,AH 不保护它们。
可变 IPv4 字段
可变 IPv4 字段如下:
- 服务类型 (TOS)
- 标志
- 分片偏移
- 生存时间 (TTL)
- 报头校验和
为了保护这些字段,必须使用隧道模式。IP 数据包的有效负载被认为是不可变的,并且始终受 AH 保护。
AH 处理仅应用于非分段的 IP 数据包。而应用了 AH 的 IP 数据包可以被中间路由器分段。
在这种情况下,目标主机首先重新组装数据包,然后对其应用 AH 处理。
如果输入到 AH 处理的 IP 数据包似乎是分片,则将其丢弃。
这可以防止重叠分片攻击,这种攻击滥用分片重组算法来创建伪造的数据包并强制它们通过防火墙。
未能通过身份验证的数据包将被丢弃,并且永远不会传递到上层。
这种操作模式大大降低了成功拒绝服务攻击的可能性。
AH 格式
AH 格式在 RFC 2402 中有描述。下图显示了 IP 数据包中认证报头字段的位置。
字段如下:
下一个报头
这是一个 8 位字段,用于标识后续内容的类型。此字段的值从 IP 报头协议字段集合中选择,设置为 51,协议字段中的值将进入 AH 下一个报头字段。
有效负载长度
这是一个 8 位长字段,包含以 32 位字表示的 AH 报头长度减 2。它与 IP 数据包的实际有效负载长度无关。例如,如果使用默认选项,则值为 4(三个 32 位固定字加上三个 32 位的认证数据减去二)。
保留
保留供将来使用。其长度为 16 位,设置为零。
安全参数索引 (SPI)
长度为 32 位。
序列号
这个 32 位字段是一个单调递增的计数器,用于重放保护。这是一个可选字段。发送方始终包含此字段,接收方是否处理它则由接收方决定。序列号的起始值初始化为零。使用 SA 传输的第一个数据包的序列号为 1。序列号不允许重复。
认证数据
这是一个可变长度字段,包含完整性校验值 (ICV),并为 IPv4 填充到 32 位或为 IPv6 填充到 64 位。