「IPSec」- AH, Authentication Header(RFC 2402)

IP.Protocol == 51

验证头(Authentication Header, AH)是 IPSec 协议集合中的另个重要安全协议,用于为 IP 提供数据完整保护、数据原始身份认证、防重放服务,但不提供机密性保护;

原理简述

AH 仅支持认证功能,不支持加密功能。AH 在每一个数据包的标准 IP 报头后面添加一个 AH 报文头。AH 对数据包和认证密钥进行 Hash 计算,接收方收到带有计算结果的数据包后,执行同样的 Hash 计算并与原计算结果比较,传输过程中对数据的任何更改将使计算结果无效,这样就提供了数据来源认证和数据完整性校验。AH 协议的完整性验证范围为整个 IP 报文;

特性特征

数据原始身份认证:AH 定义保护方法、报头的位置、身份验证的覆盖范围以及输出和输入处理规则,但没有对所用的身份验证算法进行定义;

防重放服务:与 ESP 一样,AH 没有硬性规定防重放保护,是否使用防重放服务由接收端自行选择。发送端无法得知接收端是否会检查其序列号,其结果是发送端必须一直认定接收端正在采用防重放服务;

数据完整保护:AH 与 ESP 提供的数据完整性稍有不同;AH 对外部 IP Header 部分也会进行身份验证;

机密性保护:由于 AH 不提供机密性保证,所以它也不需要加密算法,所 AH 头比 ESP 头简单得多。由于不需要填充和一个填充长度指示器,因此也不存在尾部字段。另外,也不需要一个初始化向量;

封装结构

                | IP Header | AH | Data |                   // 传输模式

                     | IP Header | Data |                   // 原始数据

| New IP Header | AH | IP Header | Data |                   // 隧道模式

进行认证的部分:

  • 传输模式:验证整个 IP 报文所有不变的部分(在传输过程中,将发生改变的字段(类似 TTL 等等),不会被 AH 进行验证)
  • 隧道模式:验证整个 IP 报文所有不变的部分,包括 New IP Header 在内(同理,依旧验证不变的部分)

报文格式

认证部分不包括:服务类型,分段偏移,存活时间,头校验和;

鉴于 SRC-IP-ADDR 与 DST-IP-ADDR 会被校验,所以 AH 无法穿越 NAT 服务;

Sequence Number:序列号,是个从 1 开始的单项递增的计数器,唯一地标识每一个数据包,用于防止重放攻击;
Sequence Number:

SPI:IPsec 安全参数索引,用于唯一标识 IPsec 安全联盟;

Authentication Data:该字段包含数据完整性校验值 ICV(Integrity Check Value),用于接收方进行完整性校验。可选择的认证算法有 MD5、SHA1、SHA2、SM3;

参考文献

IPsec – Wikipedia/
The TCP/IP Guide – IPSec Authentication Header (AH)