OSPF 是否使用使用 MD5 的数据包校验和?

网络工程 思科 路由 ospf
2021-07-07 08:04:55

当我们为 OSPF 路由器配置 MD5 认证时,会创建一个消息摘要,它是通过MD5 算法运行的预定义消息摘要密钥的组合一个区域的路由器之间必须相同,例如:

  • 消息摘要密钥 = cisco
  • md5("cisco") = "dfeaf10390e560aea745ccba53e044ed"

我的问题

  • 这个 MD5 哈希对数据包的哪一部分进行校验和?
  • OSPF 会检查整个数据包吗?或者究竟是什么?

请包括您的参考。

3个回答

RFC

            (c) The MD5 authentication algorithm is run over the
                concatenation of the OSPF packet, secret key, pad
                and length fields, producing a 16 byte message
                digest (see [Ref17]).

非常感谢我亲爱的朋友 Kev Santillan 组建思科学习网络

这是 OSPF 标准标头

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Version #   |     Type      |         Packet length         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          Router ID                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           Area ID                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Checksum            |             AuType            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Authentication                          |

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Authentication                          |

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

如 RFC RFC2328 第 A.3.1 节所述

这是使用来自RFC2328 Section 2.2 的MD5 的修改数据包

 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   Version #   |     type      |        Packet Length          |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                          Router ID                            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                           Area ID                             |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   Reserved - Must be Zero     | AuType=Keyed Message Digest Fn|
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

 |   Reserved - Must be Zero     |    Key ID    | Auth Data Len  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |               Sequence Number (non-decreasing)                |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 /           (OSPF Data Length-24) bytes Data                    /
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 / Authentication Data  (var. length; 16 bytes when MD5 is used) /
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

如图所示,校验和设置为零,身份验证类型字段设置为密钥消息摘要(类型 2)。64 位认证字段被重新定义为三个部分,即:密钥 ID、认证数据长度和加密序列号字段。附加的由认证数据组成的尾端是消息摘要算法的输出。

校验和的部分是数据包的 OSPF 部分和用零填充的密钥,使其长度为 16 字节。在wireshark 中,ospf 部分是作为 OSPF 标头和 ospf Hello 数据包一部分的数据,除了作为实际 md5 哈希的 Auth crypt 数据。

MD5[ospf packet + (key+padding)] = 校验和。此校验和应与 ospf 数据包的 Auth crypt 数据中的一个匹配,以进行成功验证。