Skip to main content

6.7.3 密钥MD5和严格密钥MD5认证 (Keyed MD5 and Meticulous Keyed MD5 Authentication)

密钥MD5和严格密钥MD5认证 (Keyed MD5 and Meticulous Keyed MD5 Authentication) 机制与其他协议中使用的机制非常相似。在这些认证方法中,在每个系统中配置一个或多个密钥(带有相应的密钥ID)。其中一个密钥包含在对发出的BFD控制报文计算的MD5 [MD5] 摘要中,但密钥本身不在报文中携带。为了帮助避免重放攻击,每个报文中还携带一个序列号。对于密钥MD5,序列号偶尔递增。对于严格密钥MD5,序列号在每个报文上递增。

如果密钥ID与配置的密钥之一匹配,包含所选密钥的MD5摘要与报文中携带的摘要匹配,并且序列号大于或等于最后接收的序列号(对于密钥MD5),或者严格大于最后接收的序列号(对于严格密钥MD5),则接收系统接受该报文。

使用密钥MD5和严格密钥MD5认证的发送 (Transmission Using Keyed MD5 and Meticulous Keyed MD5 Authentication)

Auth Type字段必须 (MUST) 设置为2(密钥MD5)或3(严格密钥MD5)。Auth Len字段必须 (MUST) 设置为24。Auth Key ID字段必须 (MUST) 设置为当前认证密钥的ID。Sequence Number字段必须 (MUST) 设置为bfd.XmitAuthSeq。

认证密钥值是一个最多16字节的二进制字符串,必须 (MUST) 放置到Auth Key/Digest字段中,必要时用尾随的零字节填充。为了互操作性,配置密钥的管理接口必须 (MUST) 接受ASCII字符串,并且应该 (SHOULD) 还允许以十六进制形式配置任意二进制字符串。可以 (MAY) 支持其他配置方法。

必须 (MUST) 对整个BFD控制报文计算MD5摘要。生成的摘要必须 (MUST) 在传输之前存储在Auth Key/Digest字段中(替换密钥,密钥不得 (MUST NOT) 在报文中携带)。

对于密钥MD5,bfd.XmitAuthSeq可以 (MAY) 以循环方式递增(当作为无符号32位值处理时)。当会话状态改变时,或者当传输的BFD控制报文携带与先前传输的报文不同的内容时,应该 (SHOULD) 递增bfd.XmitAuthSeq。何时递增bfd.XmitAuthSeq的决定不在本规范的范围内。有关讨论,请参见下面标题为"安全考虑"的部分。

对于严格密钥MD5,bfd.XmitAuthSeq必须 (MUST) 以循环方式递增(当作为无符号32位值处理时)。

使用密钥MD5和严格密钥MD5认证的接收 (Receipt Using Keyed MD5 and Meticulous Keyed MD5 Authentication)

如果接收到的BFD控制报文不包含认证段,或者Auth Type不正确(密钥MD5为2或严格密钥MD5为3),则必须 (MUST) 丢弃接收到的报文。

如果Auth Key ID字段与配置的认证密钥的ID不匹配,则必须 (MUST) 丢弃接收到的报文。

如果Auth Len字段不等于24,则必须 (MUST) 丢弃该报文。

如果bfd.AuthSeqKnown为1,则检查Sequence Number字段。对于密钥MD5,如果序列号位于bfd.RcvAuthSeq到bfd.RcvAuthSeq+(3Detect Mult) 的范围之外(包含,当作为无符号32位循环数字空间处理时),则必须 (MUST) 丢弃接收到的报文。对于严格密钥MD5,如果序列号位于bfd.RcvAuthSeq+1到bfd.RcvAuthSeq+(3Detect Mult) 的范围之外(包含,当作为无符号32位循环数字空间处理时),则必须 (MUST) 丢弃接收到的报文。

否则(bfd.AuthSeqKnown为0),bfd.AuthSeqKnown必须 (MUST) 设置为1,并且bfd.RcvAuthSeq必须 (MUST) 设置为接收到的Sequence Number字段的值。

用接收到的Auth Key ID字段选择的认证密钥替换Auth Key/Digest字段的内容。如果整个BFD控制报文的MD5摘要等于接收到的Auth Key/Digest字段的值,则必须 (MUST) 接受接收到的报文。否则(摘要与Auth Key/Digest字段不匹配),必须 (MUST) 丢弃接收到的报文。