摘要

  • 过渡模式可在发出的 PDU 中加入 HMAC-MD5,却不检查收到的 HMAC;未实现该机制的系统也可接受相应类型。链路上看见 MAC,不能证明入站门禁已经收紧。
  • 多密码轮换、purge 特殊形态和重启后的序列恢复分别扩大了不同权限。认证成功也只证明共享密钥政策下的来源与完整性,不证明拓扑正确、数据库收敛或流量交付。

同一个认证字段,经过两道不同的门

RFC 5304 在 IS-IS 类型 10 的 Authentication Information TLV 中,为 HMAC-MD5 分配认证类型 54。计算时把 Authentication Value 置零;LSP 还要把校验和与剩余生存期置零。算法说明了“如何复算”,没有说明“谁一定复算”。

标准明文允许过渡模式:本端发送的 PDU 带 HMAC-MD5,接收的 PDU 却不验证。这样可以分阶段部署,不必在同一时刻切断所有旧邻居。代价是抓包会提前呈现最终状态的外观,而接收政策仍处于旧状态。

更明显的兼容条款是:不实现 HMAC-MD5 的系统可以接受带该认证类型的 PDU。报文字段不能让接收端凭空获得执行能力。只有在实现了该机制、收到相应认证信息时,错误 Authentication Value 才必须导致丢弃。

因此,完整证据不是“TLV 存在”,而是:算法已实现、入站校验已启用、适用密钥集已加载、计算已发生、结果已记录、PDU 已拒绝或接纳、协议状态变化可见。缺任何一项,都不能把发送端的装饰当作接收端的执法。

RFC 5304 是 2008 年的 Standards Track 文档,取代 RFC 3567。它对当时密码研究的陈述不能作为今天新部署 HMAC-MD5 的建议;本文只分析验收语义。

一次成功,可能来自多把仍有权的密码

认证作用域随 PDU 变化。一级 SNP 使用区域认证字符串,二级 SNP 使用域字符串,IIH 使用链路级字符串,并且可能与 LSP 不同。“IS-IS 认证开启”不能说明每个表面使用哪份秘密。

轮换期间,实现可以尝试一组密码。这样能渐进更换,却使一次成功无法说明究竟哪把密码匹配。新密码生效、旧密码仍可用、多个候选之一成功,都可能汇总成同一个绿色计数器。

这不是 HMAC 数学失败,而是组织主动扩大了临时信任集合。候选集、顺序、启用时间、退役时间、作用域和重叠结束证明都应可查。没有截止时间的重叠,会把迁移工具变成永久额外权限。

RFC 5310 后来增加 Key ID 与通用 HMAC-SHA 安全关联,使选择更显式。但 ID 出现在包里,仍不等于所有接收端配置了相同链条。标识负责命名,运行状态负责决定。

purge 不是普通 LSP 的另一个取值

purge 把 LSP 的 Remaining Lifetime 置零,意图删除状态。RFC 5304 要求实现 HMAC-MD5 的发起方移除 LSP 主体,仅加入认证 TLV;接收端不得接受未认证 purge,也不得接受还含其他 TLV 的 purge。

这防止攻击者复制合法 LSP、把生存期改成零、再在不知道密码的情况下泛洪。接收过某条通告的能力,不应自动升级为删除该通告的权力。

审计也应把“普通 LSP HMAC 正确”和“purge 符合专用形态且认证正确”分开。形态被剥离、额外 TLV 不存在、适用密钥通过、状态确实被清除,四项共同构成删除回执。

新密码可能输给旧序列号

密码轮换后若路由器或 IS-IS 进程重启,它可能在新密码下从序列号 1 重新发 LSP。邻居仍保存更高序列的旧 LSP,因此拒绝新副本。路由器本应从邻居反射回来的旧副本学到更高序列。

问题是旧副本由旧密码认证,重启后的进程可能已不接受。它无法认证自己过去创建的状态,也无法经正常路径夺回自己的序列空间,只能等邻居把旧 LSP 超时。

RFC 5304 给出一个窄恢复:入站 LSP 认证失败、System ID 等于本地、序列又更高时,可以提升本地序列再重新泛洪。攻击者也能制造该条件,所以文档建议计数。

这里没有接受未认证的拓扑内容,只使用一个不可信坐标修复本地计数,再生成新的已认证 LSP。但由于该例外影响序列权力,每次触发都必须成为告警和审计事件。

认证过的路由器仍可能说错话

RFC 5304 说该机制相对明文密码提高攻击成本,也明确它不完美。它本身不防重放,不普遍防拒绝服务,也不防已失陷、故障或配置错误的路由器。持有密钥的成员可以用正确 HMAC 发布错误拓扑。

有效 HMAC 证明的是:某个被接受的共享密钥持有者生成了覆盖范围内未被修改的消息。它不证明该成员有权做这项具体变更,不证明语义正确,不证明所有节点使用同一密钥政策,也不证明 LSDB、FIB 或业务结果。

保证还依赖算法强度、密钥强度、实现正确性和所有参与者保密能力。共享秘密从任何一方泄露后,HMAC 无法区分不同持有者。

结论边界

本文不主张当前平台仍采用这些行为,也不建议新系统使用 HMAC-MD5。当前设计应遵循 RFC 5310 与更新安全指南。现网验证需要配置、拒绝计数、选中密钥、轮换时间、purge 日志、LSDB 与数据面测量。

可保留的结论是:认证材料、实现能力、执行开关、获胜密钥、消息专用权限和路由效果是六个事实。只查链路上的材料,会漏掉真正行使权力的接收条件。

来源