跳到主内容

RPKI and BGP Route Origin Validation

..标题:RPKI 和 BGP 路由源验证 .. slug:rpki-bgp-route-origin-validation .. 日期: 2026-04-07 12:00:00 世界标准时间 .. 标签:rpki、bgp、安全、路由、路由劫持、roa ..类别:文章 ..链接: .. 描述:RPKI 和路由源验证如何保护 BGP 免遭劫持和路由泄漏 — 涵盖 ROA、验证状态、RTR 协议和部署统计信息。 ..类型:文本

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 地址空间的委派方式:

  1. 互联网号码分配机构持有根信任锚。它向五个 RIR(ARIN、RIPE NCC、APNIC、LACNIC、AFRINIC)颁发资源证书,每个 RIR 都覆盖其地址空间。
  2. RIR向其成员(ISP、企业)颁发这些成员持有的地址空间的证书。
  3. 会员颁发最终实体 (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 之间的任何更具体的信息。
maxLength 是一种常见的错误配置向量。在 ROA 上设置 maxLength = 32 (IPv4) 或 maxLength = 128 (IPv6) 允许 ASN 通告任何更具体的子网,包括可用于劫持的 /32 主机路由。最佳实践:将 maxLength 设置为您实际宣布的最长前缀(通常与前缀长度相同)。

单个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 年获得关注。

参考

  • RFC 6480— 支持安全互联网路由的基础设施(RPKI 概述)
  • RFC 6482— 路线始发地授权 (ROA) 简介
  • RFC 6811— BGP 前缀来源验证
  • RFC 8210— RPKI 到路由器协议,版本 1 (RTR)
  • RFC 8416— 使用 RPKI 简化本地互联网号码资源管理(SLURM — 本地覆盖)
  • RFC 9286— 资源公钥基础设施 (RPKI) 清单
  • RFC 8205— BGPsec 协议规范
  • 曼RS— 共同商定的路由安全规范
  • Cloudflare RPKI 门户— 实时 ROA 查找