RPKI and BGP Route Origin Validation
RPKI 和 BGP 路由源验证
资源公钥基础设施如何防止路由劫持 - 涵盖 ROA 信任链、验证状态、RTR 协议以及目前的部署情况。
1. 为什么BGP没有本机来源验证
BGP 是为所有参与者都值得信任的合作互联网而设计的。路由器接受 UPDATE 消息并传播它,无需加密验证始发 AS 实际上已被授权宣布这些 IP 前缀。这意味着任何 AS(通过错误配置或恶意)都可以宣布其他人的前缀,并且该声明可能会在几分钟内传播到全球。
加速 RPKI 采用的著名事件:
- 2008 年 — 巴基斯坦电信:PTCL 意外地宣布了 YouTube 地址空间的更具体前缀 (208.65.153.0/24),导致 YouTube 在全球范围内陷入黑洞约 2 小时,然后上游提供商撤回了该路由。
- 2010年——中国电信:中国电信发起了约 50,000 个属于美国军事、政府和商业网络的前缀,持续约 18 分钟。究竟是意外还是故意,从未得到证实。
- 2018 年 — Amazon Route 53 DNS 劫持:攻击者使用 BGP 劫持 205.251.196.0/24 (Amazon DNS),重定向加密货币钱包流量以窃取资金。该攻击使用了 eNet (AS10297) 的 BGP 更新。
- 2019 年 — 欧洲流量通过中国电信重新路由:由于BGP路由泄漏,欧洲移动流量(包括沃达丰和瑞士Swisscom)通过中国电信重新路由约2小时。
2. RPKI 信任层次结构
RPKI(RFC 6480)构建 X.509 证书的层次结构,反映 IP 地址空间的委派方式:
- 互联网号码分配机构持有根信任锚。它向五个 RIR(ARIN、RIPE NCC、APNIC、LACNIC、AFRINIC)颁发资源证书,每个 RIR 都覆盖其地址空间。
- RIR向其成员(ISP、企业)颁发这些成员持有的地址空间的证书。
- 会员颁发最终实体 (EE) 证书并签名路线始发地授权(ROA) — 授权特定 ASN 发起特定前缀的签名证明。
验证者从五个 RIR 存储库(以及任何委托存储库)下载此签名的对象层次结构,验证证书链,并构建经过验证的 ROA 有效负载 (VRP) 表。然后路由器通过以下方式查询本地 RPKI 缓存:RTR协议 (RFC 8210) 获取此表并对传入的 BGP 更新执行源验证。
3. 航线始发地授权 (ROA)
资产回报率(RFC 6482) 是一个包含三个字段的签名对象:
- ASN:授权发起前缀的自治系统。
- 前缀:正在授权的IP前缀(IPv4或IPv6)。
- 最大长度:ASN 有权公布的最大前缀长度。如果未指定,则仅授权确切的前缀。例如,如果将 /20 前缀设置为 24,ASN 还可能会宣布 /20 和 /24 之间的任何更具体的信息。
单个ROA可以为同一ASN授权多个前缀,但一个ROA不能为单个前缀授权多个ASN。要允许辅助 ASN(例如,传输提供商或 CDN)发起您的前缀,请为该 ASN 创建单独的 ROA。
4. 验证状态
当路由器收到 BGP UPDATE 时,它会执行源验证(RFC 6811)针对其本地 VRP 表:
| 状态 | 健康)状况 | 典型的本地偏好治疗 |
|---|---|---|
| 有效的 | 至少有一个 ROA 覆盖该前缀(前缀 ⊆ ROA 前缀 AND 前缀长度 ≤ maxLength)并且 ROA 的 ASN 与 BGP UPDATE 的原始 ASN 匹配 | +20 或首选(常见) |
| 无效的 | 至少有一个 ROA 覆盖该前缀,但没有覆盖 ROA 具有匹配的 ASN 且 maxLength ≥ 公布的前缀长度 | 设置 local-pref 0 或丢弃(操作员选择;RFC 6811 建议允许但标记) |
| 未找到 | 不存在涵盖已公布前缀的 ROA | 不变(按照 RPKI 存在之前的方式处理) |
关键洞察:无效的比问题更有力的证据未找到。 NotFound 只是表示前缀所有者尚未创建 ROA。无效意味着存在 ROA,表明此 ASN 是不是授权 - 错误配置或劫持的强烈信号。
5.RTR协议
路由器本身不会验证 X.509 证书链——这会导致计算成本高昂,并且需要保留完整的 RPKI 缓存。取而代之的是一个专门的RPKI验证器(Routinator、OctoRPKI、Fort、rpki-client)下载并验证完整的 RPKI 存储库,并通过 RTR 协议(RFC 8210)。
RTR 使用 TCP(IANA 分配的端口 323;Routinator 等验证器默认使用端口 3323,以避免需要 root 权限)和增量同步机制:验证器发送序列号,路由器仅请求自上次同步以来的增量。即使对于大型 VRP 表(目前全球约有 400,000 多个 IPv4 条目),这也会使带宽保持较低水平。
6. 部署与统计
截至 2026 年初,RPKI 部署已达到显着规模:
- 超过 50% 的全球路由 IPv4 前缀至少有一个覆盖 ROA(高于 2019 年的约 10%)。
- 大多数 1 级和 2 级 ISP 现在都会执行路由源验证并丢弃或取消无效路由的优先级。
- MANRS(路由安全共同商定规范)要求创建 RPKI ROA 作为成员资格的先决条件,并发布每个 AS 一致性仪表板。
实时统计:NIST RPKI 监控器, 遥控潜水器++, APNIC RPKI 统计数据.
7. 超越 ROV:ASPA 和 BGPsec
RPKI 路由源验证仅验证原产地 ASN被授权公布前缀。它不会验证 AS_PATH — 攻击者仍然可以构建一个虚假的 AS_PATH,并在末尾添加合法的原始 AS。两个 IETF 标准解决了这个问题:
- BGP安全协议 (RFC 8205):路径中的每个 AS 都会对 UPDATE 进行加密签名,从而创建牢不可破的监管链。要求所有中转 AS 支持 BGPsec — 这是一个重大的部署障碍。截至 2026 年,很少部署。
- 阿斯帕(自治系统提供商授权,草案 ietf-sidrops-aspa-配置文件):AS 签署一个列出其授权上游提供商的对象。验证者可以检测无效的无谷路径(例如,客户像提供商一样宣布路线)。比 BGPsec 更易于部署,并且将于 2025-2026 年获得关注。