首页 百科知识 认证头协议规范

认证头协议规范

时间:2022-06-17 百科知识 版权反馈
【摘要】:5.3.4 认证头协议规范1.认证头协议介绍认证头协议保护IP数据库,提供无连接的完整性和数据源头的认证,以及防止“重放攻击”服务。它与数据包的目的IP地址、安全协议类型一道,唯一地确定了这一数据包所用的安全联结。在计数快接近溢出时,收发双方应重新协商来建立一个新的安全联结。

5.3.4 认证头协议规范

1.认证头协议介绍

认证头(Authenication Header)协议保护IP数据库,提供无连接的完整性和数据源头的认证(统称为认证),以及防止“重放攻击”服务。AH协议所提供的认证覆盖了IP头的大多数字段和上层协议的所有字段。但是,IP头中的某些字段值在报文传送的过程中会被路由器改变,所以报文的发送方不可能预知信宿方所见的这些字段的值。所以,AH不能保护这样的字段。RFC 1826定义的是AH的一个老版本,现在已不再推荐对它提供支持,RFC2402中定义了最新版本的AH。

AH可以单独应用,也可以与ESP协议一起应用,还可以以隧道方式嵌套使用,我们注意到,ESP协议也提供可选择的认证服务,AH与ESP二者的认证服务的差别在于它们计算时所覆盖的范围不同。也就是说,ESP认证不覆盖ESP头前面的IP头。

2.报文格式

AH协议头格式如图5-8所示:

img95

图5-8 AH协议头格式

其中的字段意义如下:

(1)上层协议:上层协议字段为8bit,定义了紧接AH头的上层协议类型。

(2)负荷长度:这是一个8位的字段,其值等于AH头长度(以32位字计算)减去2。通常情况下的认证数据长度为96位,加上前面的3个字长的定长部分,那么,负荷长度域的值等于4。如果使用“空白”认证方式(在调试情况下时),认证数据长度为0,那么,这一域的值等于1。

(3)保留字段:用于今后的扩充,应填0。

(4)安全参数索引值:SPI是一个32位的值,用以区分那些目的IP地址和安全协议类型相同,但算法不同的数据包。它与数据包的目的IP地址、安全协议类型(AH)一道,唯一地确定了这一数据包所用的安全联结。IANA(Internet Assigned Numbers Authority)保留从1到255的值。SPI的值在SA建立时由目的主机确定。值0为内部保留值,在实际传输过程,IP数据包的SPI不能取0值。如果一个新的SA尚未建立好,即它的密钥还在通信双方协商之时,这时,该SA内部的SPI值要取为0。

(5)序号:序号为32位的整数,它代表一个单调递增计数器的值。即使收方不使用“防重放攻击”功能时,发方也一定要发送这一序号。是否处理序号,取决于收方,即发方总是传送序号,但收方不必强制性处理它。当一个安全联结建立时,发方和收方的计数器都清零。第一个发出的报文中的序号值为1。如果使用“防重放”功能,计数不能循环,即让计数器变成0。在计数快接近溢出时(232),收发双方应重新协商来建立一个新的安全联结。

(6)认证数据:这个域的长度可变,它存放IP数据包的完整性校验值(ICV)。认证数据一定要为整数个32位字长。在这个域中,也可以添加填充字节,从而使AH头的长度满足32位字长对齐的要求。认证数据的实际长度由所使用的认证算法确定,如采用HMACMD5-96时,它的长度为96bit。

3.协议首部处理

(1)位置

由于安全联结有传输和隧道两种模式,AH认证头的位置也不相同。

①传输模式

在传输模式下,AH头紧接在IP头后,并位于上层协议头之前(如TCP、UDP、ICMP等),或位于其他已插入的IPSec头之前。一个IP数据包在经AH传输协议处理前后的对比如图5-9所示。

图5-9 安全联结两种模式下的AH头位置

②隧道模式

在隧道模式下,内层的IP头含有该IP数据包的最终目的地址和最初源地址,外层的IP头可能含有与内层不同的地址,如隧道网关的地址。在隧道模式下,AH协议保护了整个内层IP数据包,与传输模式类似,AH头的位置也是紧接在最外面的IP头之后。

(2)算法一致性要求

对于一个AH处理的IP数据包,用于计算完整性检查值(ICV)所使用的认证算法由与之相应的安全联结定义。在点对点通信的情况下,默认使用带密钥的消息认证算法(HMAC),它可以基于对称加密算法(如DES),也可以基于单向HASH算法(如MD5和SHA-1)。

(3)认证值的计算

①计算覆盖的范围

AH头的ICV计算覆盖如下区域:

● 在传输过程中,IP头中那些不变字段,或是尽管变,但其值可以被预测的字段。

● AH头和可能的填充字节,认证数据在ICV计算时全部填0。

● 上层协议数据,这些数据在传输过程中不会发生变化。

②可变域的处理

如果IP数据包中的字段在传输过程中会发生改变,在计算ICV时,要把它们填为0值。如果字段虽然会被改变,但可以预测它在收方一侧的值,那么,在计算ICV时,这个字段要填入预测值。采取填值方式而不采取计算时跳过(省略)的方式,能够保证计算数据对齐。同时,这种方式也相当于认证了IP数据包的长度。

在传输过程中,IP头和它的选项可能发生改变:

i)IP头

IPv4头中的字段有不变的,有可变的,也有可变但是可预测的:

● 不变字段:版本号、IP头长度、数据包总长、标识、上层协议、源地址、目的地址(没有源选径选项时)。

● 可变但可预测的字段:目的地址(有源选径选项时)。

● 可变且不可预测的字段:服务类型(TOS)、标志、生存期、头校验和。

TOS:尽管在IP协议中,TOS是不可变的,但有些路由器要修改这个字段的值。

标志:因为IP数据包在传输过程中可能被分段,所以标志字段的DF位有可能发生变化。

生存期:这个字段的值随经过的路由器而变化,因此也不可预测。

头校验和:如果上述几个字段发生变化,它的值自然随之改变。

ii)IP选项

在IPv4中,每一选项都被视为一个整体,所以尽管选项的类型和长度没有发生改变,只要其内容改变了,但这一选项都被认为是可变的。对于这种情况,在计算ICV时,须把这个选项整体填充为0。

(4)填充处理

①认证数据填充

为了使AH头的长度为32位字长的整数倍,认证数据可能要附加填充字节。常用的认证算法(如MD5-96)的输出长度是96位,这时不需要填充字节。但对于其他算法,由于输出长度的原因,就有必要进行填充。填充的内容由具体的算法规定。

②包长填充

认证算法一般要求输入数据的长度是运算所用的分组块长度的整数倍。如果所要计算的IP数据包的长度不满足这一要求,在计算ICV之前,要在该数据包尾补充字节,填充字节的值为0。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈