本文目录导读:

BGP(边界网关协议)路由劫持是一种常见的网络攻击,攻击者通过伪造或篡改BGP路由公告,将流量引导至恶意目的地,RPKI(资源公钥基础设施)通过加密验证IP地址和AS(自治系统)之间的授权关系,有效防止此类劫持,以下是RPKI保护BGP路由劫持的核心机制和步骤:
RPKI的核心组件
- 资源证书(ROA,Route Origin Authorization):
IP地址持有者(如ISP或企业)通过RPKI签发ROA,明确声明“某IP前缀仅允许特定AS(或AS集合)发布”。- 示例:
0.2.0/24的ROA声明:仅AS 64496可发布该前缀。
- 示例:
- 验证基础设施:
全球RPKI仓库(如RIR维护的数据库)存储ROA,路由器通过RPKI-RTR协议(RFC 6810)从缓存服务器获取验证数据。
防护流程
步骤1:签发ROA
- IP地址持有人(如LIR、ISP)通过所在RIR(如ARIN、RIPE NCC)的RPKI工具创建ROA,指定:
- IP前缀(如
0.113.0/24) - 授权AS号(如
AS64496) - 最长前缀长度(如 /24,防止子网劫持)
- IP前缀(如
步骤2:路由器启用RPKI验证
- 配置BGP路由器通过RPKI-RTR协议连接验证缓存(如Cloudflare的
rpki-validator或自建服务)。 - 路由器对收到的BGP路由进行RPKI状态分类:
- Valid(有效):路由与ROA完全匹配(前缀、AS、长度均合规)→ 接受。
- Invalid(无效):路由与ROA冲突(如AS不符或更具体前缀未授权)→ 丢弃或设置低优先级。
- NotFound(未找到):无匹配ROA → 按原有策略处理(如接受但标记为不可信)。
步骤3:路由决策
- 启用RPKI的BGP路由器会自动拒绝Invalid路由,阻断劫持路径。
- 攻击者伪造AS 64500发布
0.113.0/24,但ROA仅授权AS 64496 → 该路由被标记Invalid → 丢弃。
- 攻击者伪造AS 64500发布
实际防护效果
- 阻止精确劫持:
ROA明确限制AS和前缀长度,即使攻击者伪造更具体的子网(如/25),若未授权也判定为Invalid。 - 降低误判风险:
RPKI只是验证“谁有权发布”,不检查路由合法性(如内容是否真实),但结合BGPsec(数字签名)可进一步验证路径完整性。
部署挑战与应对
-
ROA覆盖率不足:
全球只有约40%的IP前缀有ROA(2024年数据),未覆盖的前缀仍可能被劫持。
对策:优先为关键IP段(如CDN、银行)签发ROA,并推动社区签署。 -
RPKI配置错误:
误签ROA(如错误AS号)可能导致合法路由被标记Invalid。
对策:使用实验工具(如RIPE的bgpalerter)测试ROA,并设置“宽松模式”(将Invalid路由降级而非丢弃)。 -
缓存同步延迟:
RPKI数据更新可能滞后(最长24小时),劫持者可能利用“窗口期”。
对策:结合BGP Flowspec实时过滤,或使用流量黑洞(Blackhole)应急。
典型部署场景
- 企业自有IP段:
向RIR签发ROA,配置边界路由器RPKI验证,自动丢弃非授权路由。 - 云服务商或CDN:
为所有公告的IP前缀签发ROA,并设置Invalid路由强制丢弃,减少DDoS攻击盲区。
RPKI通过ROA提供“谁有权声明IP”的加密证据,直接阻断虚假AS发布的劫持路由,虽然无法解决所有BGP安全问题(如路径篡改),但结合BGPsec、流量监控(如BGPmon)和社区协作,可显著提升互联网路由的信任基础,部署时需注意ROA覆盖率、配置验证和应急响应机制。