本文目录导读:

这是一个关于 RPKI(资源公钥基础设施,Resource Public Key Infrastructure) 路由安全的非常核心且专业的问题。
RPKI 是目前互联网上最关键的、用于防止 BGP 路由劫持和路由泄露的验证框架。
下面为你详细拆解:
问题的背景:为什么需要 RPKI?
互联网的“主干道”——BGP(边界网关协议),自诞生之初就有一个巨大的缺陷:它完全信任任何邻居发来的路由信息,而不进行真实性验证。
这导致了两类严重的攻击:
- 路由劫持(Route Hijacking):某人(恶意或意外)宣告了一个不属于自己的 IP 地址段,导致该IP段的流量被错误地引导到他的网络。
- 经典案例:2018年,一个名为 eBGP 的泄露事件导致恶意方劫持了亚马逊 DNS 服务器的 IP,窃取了大量加密货币。
- 路由泄露(Route Leak):一个网络将本应只发给它客户的路由,泄露给了它的上游或对等网络,导致这些网络错误地将流量通过它传输,可能造成服务中断或数据被监听。
- 前缀劫持 vs 子前缀劫持:攻击者宣告一个更精确的子前缀(更长的网络掩码),即使它不拥有这个前缀,根据BGP的最长匹配原则,所有流量会被引导到攻击者的网络。
RPKI 正是为了解决这些问题而生。
RPKI 的核心概念:数字证书 + 路由对象
RPKI 通过公钥基础设施(PKI)引入了一整套 信任链 和 数字签名 机制,它主要由两个关键对象组成:
a. 路由源授权(ROA,Route Origin Authorization)
这是最基础、最广泛部署的部分。ROA 是一个数字签名的对象,由 IP 地址块的合法持有者(你的公司从RIR/APNIC/ARIN等分配了一个/24的IP段)签发。
一个 ROA 包含了三个关键信息:
- IP前缀:哪个IP地址段(
0.113.0/24)。 - AS号(自治系统号):授权哪个 AS(
AS64496)可以宣告这个前缀。 - 最大前缀长度:授权宣告的具体掩码长度范围(
24,表示只能宣告/24,不能拆成更小的/25或/26来劫持)。
签署 ROA 就是告诉全世界:“听好了!只有 AS64496 有权宣告我的 203.0.113.0/24,并且最多只能以掩码 /24 宣告。”
b. 资源证书(Resource Certificate)
这是 RPKI 体系的“根”,IP 地址分配机构(如 IANA、RIR)给 IP 地址持有者颁发一个数字证书,证明持有者对该IP块的所有权,证书本身也记录了前缀和AS号的隶属关系,形成一条从 IANA -> RIR -> LIR/ISP -> 最终用户的信任链。
RPKI 的工作流程:验证与路由决策
-
创建:IP地址所有者(如一家公司)在它注册的RIR(如APNIC)的RPKI系统中,为其拥有的IP前缀创建一个 ROA,并指定被授权宣告的AS号和最大前缀长度。
-
发布:RIR将这个 ROA 签名后,发布到全球的 RPKI 资料库 中。
-
获取:所有参与的路由器(运行验证器)会定期从这些资料库同步并验证整个RPKI证书链。
-
验证:当一个路由器收到一条BGP路由更新(
0.113.0/24来自AS65534)时,它会查询本地缓存的RPKI数据:- 查找:
0.113.0/24是否有对应的 ROA? - 比对:该 ROA 是否授权了
AS65534来宣告?宣告的掩码是否在允许的范围内?
- 查找:
-
结果:路由器会得出三种验证状态,并据此采取行动:
- Valid(有效):BGP路由与ROA完全匹配。- 接受并正常使用。
- Invalid(无效):
- 前缀不匹配:该前缀没有任何ROA授权给这个AS宣告。
- AS不匹配:该前缀有ROA,但授权给了别的AS,而不是宣告者。
- 长度不匹配:宣告的掩码长度超出了ROA允许的最大值。
- 结果:路由器应拒绝这条路由。
- NotFound(未找到):该前缀没有任何ROA信息。- 这是最常见的情况(全球90%+前缀未签名),路由器通常会接受该路由,但无法验证其真实性。
RPKI 的部署现状与挑战
- 现状:全球部署速度正在加快,尤其是大型CDN(如Cloudflare、Akamai、Google)、云服务提供商、交换中心(IXP)和Tier 1 ISP都已广泛部署。
- 挑战:
- 部署率仍较低:虽然经过多年的努力,但全球ROA覆盖的IP前缀比例仍然只有20%-30%左右,大量小型网络尚未签署ROA。
- ROA管理复杂性:网络动态变化(如变更上游ISP、多宿主连接、BGP community)时,需要精确维护ROA,否则可能误伤自己。
- 过滤策略的“一刀切”问题:如果所有ISP都严格丢弃“Invalid”路由,一个小错误(例如忘记更新ROA)会导致流量完全中断,因此很多网络目前使用“软惩罚”(降低优先级)而非硬丢弃,但这降低了安全性。
- 信任根的安全:如果某个RIR的私钥泄露,攻击者可以签发假的ROA来劫持整个地区的前缀。
- 拉取和验证延迟:全球RPKI资料库的同步和本地验证的实时性对大型网络是技术挑战。
超越RPKI:BGPsec(BGP安全扩展)
RPKI 只解决了路由起源验证问题(即谁宣告了前缀),但它无法防止路由路径篡改(即中间网络恶意修改AS_PATH)。
为了解决这个问题,业界发展了 BGPSec (BGP Security),BGPSec 要求路由更新的每一跳都使用数字签名,从而确保 整条路径 的真实性,但BGPSec 部署复杂(需要支持签名的硬件、更高的计算开销、互操作性问题),实际部署远不如ROA普及。
RPKI 是目前对抗 BGP 路由劫持和路由泄露最主流、最成熟的技术。
- 核心价值:将IP地址所有权的信任从“朋友间的口头承诺”升级为“加密数字签名”。
- 关键组件:ROA 和 资源证书。
- 最终目标:让全球路由器能够验证收到的BGP路由的真实性,拒绝伪造的、非授权的路由。
对于任何管理着自主IP地址块的组织(公司、机构),部署RPKI签署ROA 是当前提升自身和全球互联网路由安全的最重要、最直接、成本最低的行动之一。