团队文章互联网怎样运作

RPKI 与 BGP 安全

BGP 交换路由,RPKI 则提供用于检查路由起源的证据。了解这项检查能保护什么、哪些问题仍未解决,以及谁控制着这些证据。

目录

微缩工程师在两台相连的网络设备旁,核对一张授权卡。
一位微型工程师在两台相连的网络设备旁检查一张授权卡。

BGP 传递路由宣告。起源验证将宣告所声称的起源与独立的授权数据进行比对。

一个网络声称自己能够到达某个互联网地址块。其他网络应该相信它吗?这正是比较 BGP 与 RPKI 时背后的问题。两者承担不同的任务:一个交换路由,另一个提供证据,帮助评估路由所声称的起源。

路由及其对应的证据

BGP 是独立运营的网络之间交换可达性信息的方式。一个地址块称为 IP 前缀;参与这种交换的网络由自治系统号,也就是 ASN 来标识。运营者依据路由宣告及自身策略选择路由。RFC 4271 定义了这一交换机制。

收到一条路由宣告,本身并不能证明其所声明的起源已获地址持有者授权。错误的起源可能来自配置失误,也可能来自劫持企图。实际后果可能是:服务器仍在运行,用户却突然无法访问服务。

RPKI 引入了一套证书和签名记录体系。路由起源授权,也就是 ROA,标明哪个 ASN 获准为指定前缀发起路由宣告。验证软件检查这些签名材料,并向路由器提供可用的授权数据。路由起源验证,也就是 ROV,则将宣告与这些数据进行比对。

一项有明确范围的检查

这项比对检查的是:起源 ASN 与所宣告的前缀长度,是否符合某条覆盖该前缀的授权。它不检查流量内容,也不会认证宣告路径中的每一个网络。一条路由即使通过了起源检查,仍可能被传播到不该到达的地方。

RFC 6811 定义了三种结果。Valid(有效)表示存在匹配的授权。Invalid(无效)表示存在覆盖该前缀的授权数据,但没有任何一条允许该起源与前缀长度的组合。NotFound(未找到)表示所用数据中没有覆盖该前缀的授权。这些是证据状态,并非对一条路由安全或恶意与否的完整裁定。

接下来如何处理,取决于接收方运营者配置的策略。网络可以拒绝 Invalid 宣告;仅仅发布一条 ROA,并不能强制其他所有网络都执行这项检查。BGP 仍然是路由交换机制。

为什么发生故障时,这一区别很重要

设想一项服务迁移到新的起源 ASN,但授权仍然只列出旧 ASN。新的宣告可能被判定为 Invalid。修复应从比对三方面开始:计划发布的宣告、实际使用中的授权数据,以及拒绝该宣告的策略。换一台路由器,或者认定线缆坏了,都没有找对原因。

运营者仍然需要适当的过滤规则、可靠的验证软件、监控,以及协调一致的变更。起源验证是这些工作中一项有用的检查;把它当作无所不能的安全认证,只会掩盖其余的依赖关系。

谁控制着证据?

Lu Heng 在札记 28 中,为维护记录与利用记录惩罚参与者划定了边界。当其他人依赖记录维护者所提供的记录时,记录维护者就能够影响正在运行的网络。但这种影响力本身,并不赋予它跨越国界、治理所有受影响者的授权。

他在札记 64 中提出,共同规则应仅限于唯一性、互操作性和安全所必需的内容,并由各方在本地验证、自愿采纳后续变更。其目标是让可信赖的协调机制可以被替换,而不是让某个管理方永久不可或缺。

对运营者而言,眼前的问题很实际:你的团队能否沿着一条路由,从其授权一路追溯到接收网络作出的决定?从这里入手,再阅读如何准备和维护起源授权。趁服务仍在正常运行时厘清这些关系,会更容易。