AH 协议
AH 协议提供 3 类安全服务:数据完整性、数据源认证(身份验证)和反重播。AH 协议能够保护通信免受篡改,但是由于不能加密数据,不提供机密性,也就不能防止被窃听,只适用于传输非机密数据。在 IP 首部中使用 IP 协议号 51 来标识 AH。
1、AH 工作原理
AH 协议在每一个 IP 数据包上添加一个 AH 首部(认证首部)。此首部包含一个带密钥的散列值,此散列值由整个数据包计算得到,因此对数据的任何更改都将使散列无效,从而对数据提供了完整性保护。例如,主机 A 将数据发送给主机 B,通过签名来防止修改,这样主机 B 对签名进行验证,可以确定是主机 A 发送的数据并且未经修改。
AH 通过密钥的散列来提供传输数据的完整性。目前支持的散列算法包括 HMAC MD5 和 HMAC SHA。MD5 产生一个 128 位的值,而 SHA 产生一个 160 位的值。SHA 通常更安全,但不如 MD5 快。
2、AH 传输模式
在传输模式中,AH 为提供完整性和身份验证而对整个数据包进行签名,签名就是在 IP 首部(报头)和传输协议(TCP 或 UDP)首部之间放置 AH 首部(报头)。AH 首部位于 IP 数据报首部和传输层协议首部之间。
3、AH 隧道模式
AH 隧道模式使用 AH 首部与新的外部 IP 首部(隧道 IP 报头)来封装 IP 数据包,并对整个数据包进行签名以求完整性并进行验证。AH 隧道模式不提供隧道内容的保密,只提供更强的完整性和身份验证。AH 签署整个数据包后,一旦隧道的源发出数据包,就不能更改其源和目标地址。
4、AH 首部格式
下一个首部:该字段长度为 8 位,指示 AH 首部之后一个首部的类型,也就是使用 IP 协议号来标识 IP 有效载荷。例如,紧接其后的是 TCP 首部,则该字段值为 6。·
长度:该字段长度为 8 位,以 32 位字长为单位,指明 AH 首部的长度。·
保留:该字段长度为 16 位,留作将来使用,目前必须将其置为 0。
SPI:该字段长度为 32 位,用于标识一个 SA(安全关联)。SPI 即 IKE 协商 SA 时指定的安全参数索引,与目的地址及安全协议(AH 或 ESP)组合使用,以确保通信的正确安全关联。接收方使用该值确定数据包是使用哪一个安全关联标识的。有关 SA 与 SPI 的详细介绍请参见 12.2.6 节。
序列号:该字段长度为 32 位,表示报文的编号。在安全关联的生存期内序列号不能重复,从而为安全关联提供反重播保护。
认证数据:该字段长度可变,包含完整性校验值,也称为报文验证代码,用来进行报文认证与完整性验证。该字段值实际上是将散列函数应用到整个 IP 数据报的结果。
5、AH 首部添加过程
AH 首部添加过程如下。
将 AH 首部加到 IP 有效载荷上,但认证数据字段要置为 0。
可能需要在 IP 数据部分加入填充,以使总长度为 4 字节的倍数,便于特定散列函数处理。
基于总的分组长度进行散列,在 IP 首部中只有在传输中不发生变化的那些字段才包含在报文摘要的计算中。
将认证数据插入到 AH 首部中。
将协议字段值改为 51,然后再加上 IP 首部。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/68abbf0e46242aaaeece79d3d】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论