0

这本身不是一个编程问题,但它与我试图制作的 ac 程序有关,以便响应 cisco 路由器发送的 ip sla 控制消息。我知道它使用 MD5 和密钥链来验证数据包(可以是 MD5 或 HMAC)。我知道关于 HMAC 和 MD5 的理论,以及关于书上理论给我们的所有信息和密钥以及所有这些东西……但我有一个问题,至少对我来说似乎不是很简单,那就是哪一个是经过散列并添加到数据包中的“消息”,以便另一端可以知道他的数据包是有效的?

谢谢你的帮助...

编辑:我有两台路由器,一台作为 ip sla 生成器,另一台作为 ip sla 响应器。ip sla 生成器使用 MD5 和密钥对发送的数据进行身份验证。

使用 Wireshark 捕获离开 ip sla 生成器接口的数据包我发现了这个:

未身份验证的数据包:
IP标头
45000000000000000000000000FF1136E3C0A801C3C0A801A6
UDP HEADER E2E607AF003CCDBD PAIMOLAD 010400003400000000000000000000000000000000000000000000000000000000000000000000000000000000


用密钥“ Cisco”进行身份验证的数据包:
IP Header
45000050000000000000000000000FF1136E3C0A801C3C0A801A6
UDP
HEADER C20107AF003CD296
有效载荷
010440034000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000个CC01415001CEC5CCERCECREN1CCERCECRECER LOAD LOLA

*在有效负载的末尾,您可以看到 0x01ff 是用于验证数据包的密钥号,而 0xb9c0ae94fec238bd43d13129a6625ed 是验证字符串

Capturing another Authenticated packet with key "cisco" I got this:
IP Header
4500005000000000ff1136e3c0a801c3c0a801a6
UDP Header
d47607af003cc021
Payload
01040034000000000004001000000000c0a801a6ea6014500001001c00000000* 01ff0000b9c0ae94fec238bd43d13129a6625eda *

如您所见,UDP 标头发生了变化,但经过身份验证的消息保持不变,这导致我推断要散列的消息只是有效负载,但散列以下组合不会产生所需的身份验证:

  • 有效载荷的 MD5 未经过身份验证
  • 有效载荷的 MD5 未经身份验证 + 十六进制密钥
  • 有效载荷的 Hmac-Md5 未经过身份验证
  • 有效载荷的 Hmac-Md5 未经身份验证 + 十六进制密钥
  • 更多组合太长无法列出...

所以我认为消息并不像有效负载那么简单,或者思科使用的身份验证方法不标准。我错过了什么吗?或者还有什么我可以尝试的?

谢谢你的帮助...

4

1 回答 1

1

答案是:是的,这取决于协议(我找不到)。不过,我在文档中没有看到任何提及 HMAC,因此密钥更有可能作为哈希计算的最后一部分包含在内,但不在包中(当然)。这与附加零不同。然后将普通的 MD5 哈希用作一些穷人的身份验证方案。

所有这些都来自思科令人困惑的文档和相对难以阅读的问题——当然还有加密的一般知识。

于 2012-04-14T13:05:11.957 回答