摘要
- RFC 2154 给每条 OSPF LSA 附加持久数字签名,并用 Public Key LSA 分发经可信实体认证的路由器公钥,使来源与被覆盖字节的完整性不再只依赖上一跳。
- 证书能限制 Router ID、角色和可宣告地址范围,却不能测量链路是否存在、度量是否诚实、外部路由是否获准或目的地是否可达。
- 可靠记录必须继续保存信任锚、密钥代次、LSA 时效、策略授权、拓扑佐证、SPF 选择、FIB 安装与实测交付等独立收据。
印章完好,机架却是空的
设想一条 LSA 从起源路由器发出,随后经过两个中间节点。三台接收设备都验证出同一签名,被保护的内容一字未改。值班人员最后走到它所指向的 stub 网段,却只看见空机架。密码学没有失败:它准确证明了错误声明来自谁。
这正是 RFC 2154 最值得重读的边界。1997 年 6 月发布的 Experimental 文档,不再只给相邻路由器交换的 OSPF 报文做认证,而是给 Link State Update 里的每条 LSA 单独签名。Hello、Database Description、Request 与 Update 外壳仍由逐跳机制保护,LSA 的签名则跟随内容穿过泛洪路径。
因此,中间路由器可以转发一条声明而不成为它的作者。验证成功支持两个有限结论:这些被覆盖字节由 Advertising Router 对应的密钥签出;其他路由器没有在途中改动它们。如果数据本来就是错的,签名只让责任来源更清楚。
公钥也要有自己的来源
任何路由器都可以公布一个公钥并声称某个 Router ID。RFC 2154 为此新增 Router Public Key LSA(PKLSA)。其中的证书由 Trusted Entity(TE)签署,携带 Router ID、角色、允许的地址范围、创建时间、算法和路由器公钥。接收者既要验证 TE 的认证,又要验证路由器对 PKLSA 的签名;任一失败都必须丢弃。
这不是一个绿灯,而是一条证据链。TE 公钥在 OSPF 之外配置;PKLSA 必须是当前版本;签名 LSA 必须引用相符的路由器密钥。若 LSA 先于密钥到达,只能等待配置的 MAX_TRANSIT_DELAY。新证书取代旧密钥后,路由器还要立即用新密钥重新起源自己的 LSA,网络则要淘汰旧密钥下的记录。
证书的地址范围能收窄路由器可以声称的空间,却不会亲自观察接口。它不能证明地址有人使用,不能证明端口 Up,也不能证明管理员批准了这一度量。证书是密钥与允许边界的来源记录,不是拓扑传感器。
年龄字段暴露了“不可变”的条件
LSA Age 会随泛洪而变化,所以通常不在签名覆盖范围内。RFC 2154 只为起源路由器主动生成的 MaxAge LSA 设置例外:当且仅当起源者把 Age 设为 MaxAge,签名才覆盖该字段。这样,起源者可以同步撤回自己的 LSA,中间路由器却不能伪造别人的签名撤回。
孤儿 LSA 仍会在各地自行老化到 MaxAge 并被丢弃。这比标准 OSPF 在某处达到 MaxAge 后触发全域同步清除更慢。文档接受了收敛代价,以关闭任意中间节点替别人发起清除的漏洞。
“签名有效”因此缺少很多上下文:验证器信任的是哪一代 TE 密钥?路由器证书是否已经被更新?当前 LSA 用的是新密钥还是被替换的旧密钥?这是起源者签署的 MaxAge,还是本地自然老化?这些都要靠协议状态和运维记录回答。
RFC 自己承认:说谎者也能正确签名
第 9 节没有掩饰残余风险。内部路由器可以给真实链路宣告错误度量,可以说断链仍然存在,也可以声称一个不存在的 stub 网段或主机路由。虚假的 transit 链路往往需要另一端也给出相应声明才会进入 SPF,但 stub 没有第二端可供比对。
ABR 可以对其他区域或骨干发布错误 Summary LSA。文档讨论过让多个 ABR 互相核验或重复生成摘要,但因计算与报文代价没有纳入设计。ASBR 更难:RFC 明确指出,自治系统内部没有一个与内部地址范围证书相当的权威,能够授权 ASBR 可以宣告哪些外部网络。
签名能在矛盾被发现后锁定来源,却不负责发现全部矛盾。RFC 2154 还把数据包转发排除在范围之外。一条验证通过的 LSA 进入 LSDB,SPF 算法正确选路,RIB/FIB 也可能装上了一个实际丢包的下一跳。
把九份收据留在同一时间线上
第一份记录 TE 信任锚及其安装者;第二份记录路由器证书、角色、地址范围与密钥代次;第三份保存 LSA 身份、序列号、覆盖字节哈希与验证结果;第四份解释密钥替换、Age 与 MaxAge。策略授权要单独记录。transit 链路的另一端、接口遥测或外部观测提供佐证。之后才是 LSDB 代次、SPF 选择、RIB/FIB 安装、数据平面探测与业务结果。
RFC Editor 记录、Datatracker 与文档历史说明它是 Experimental 记录;勘误页只修正一处拼写。RFC 2328提供标准 OSPFv2 背景。RFC 6039后来称当时没有部署经验,RFC 6863继续把端到端路由数据保护与逐包重放防护分开。RFC 7474解决的是重启后认证报文的新鲜度。一个已过期个人草案提出内部攻击批评,但没有 IETF 正式地位。
Heng Lu 的 Running-Code Primacy 要求由运行证据回答实际执行结果;Minimum Initial Specification支持把共同声明收窄到可本地验证的来源与完整性;Reality Layers提醒我们,符号层凭证不能借用执行层结果。这些是公开标注的编辑视角,不是 RFC 2154 的规范要求。
来源
- RFC Editor:RFC 2154
- RFC 2154 全文
- IETF Datatracker:RFC 2154
- IETF Datatracker 文档历史
- RFC 2154 勘误
- RFC 2328:OSPF Version 2
- RFC 6039:路由协议密码保护问题
- RFC 6863:OSPF 安全分析
- RFC 7474:OSPFv2 手工密钥安全扩展
- 关于 RFC 2154 的已过期个人 Internet-Draft
- Heng Lu:Running-Code Primacy
- Heng Lu:Minimum Initial Specification
- Heng Lu:Reality Layers
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance

