在互联网的世界里,“信息快递”每天都在海量发生:你要访问一个网站、刷一段视频,数据包就要跨越大半个地球找到目的地。谁在指路?是一张叫 BGP 的“全域路牌系统”——每个自治网络(可以想象成一家快递公司)通过互相广播“我能送哪些地址的件”,大家一起拼出一张全球路由地图。可问题来了:这套路牌系统建立在对邻居的充分信任之上,任何一家快递公司都可以大声宣称“某某地址是我的配送范围”——哪怕它根本无权配送。于是“路由劫持”这种骗局层出不穷,数据被送到冒牌站点、服务断线、信息被窃取。本篇将带你认识三件防骗利器:RPKI(全国统一的“身份认证中心”)、ROA(快递公司的“派送权限证”)和 BGPsec(每个经手驿站都要盖的“防伪印章”),看它们如何让互联网的信件不再被坏人截胡。
学习 BGP 路由安全,是网络工程师与安全从业者理解“互联网可信基础设施”的必修课:它能帮你定位劫持、设计过滤策略,并在云网络与运营商级架构中做出正确的安全决策。
可视化演示
展示RPKI证书层级结构、ROA路由源验证流程、BGPsec路径签名机制及全球部署进展,支持切换四种安全机制视角。
本节配有交互动效(进入视口后自动加载,约 3KB)。
BGP路由安全 RPKI: Root→RIR→LIR→Holder ROA: PFX+AS验证 BGPsec: SIG(AS_PATH) 完整性
路由劫持威胁
想象一个没有快递单校验的全国物流网:任何货车司机只要喊一句“这片的件都归我送”,周围车队就会真的把货交给他。这不是段子,而是当今 BGP 的真实状态。在互联网上,每个自治系统(AS,你可以理解成一家快递公司)通过 BGP 向邻居广播“我能把包送到哪些 IP 地址段”。而这份广播全凭自觉——BGP 协议既然诞生于上世纪九十年代学术网络时代,压根没考虑过身份认证,于是信任成了最大的漏洞。
漏洞的具体形态就是“前缀劫持”。前缀是一块连续的 IP 地址,比如 10.0.0.0/16,相当于快递单上的一片收件人地址。攻击者 AS4 只需要向邻居宣告“10.0.0.0/16 归我了”,由于 BGP 选路只看路径长度和属性优劣,不验证“归属权”,全网数据包就会哗啦啦涌向攻击者。除了抢占前缀,攻击者还可以篡改 AS_PATH 属性能让路径看起来更“近”、更“优”,诱导流量绕行自己,这就是路径篡改。
回到快递比喻:劫持的本质是“快递单签名”与“官方房产证”对不上,但全系统没人查验。于是后续所有安全机制——RPKI、ROA、BGPsec——都在围绕一件事:让全网在收件之前,先认认真真查一次“身份证”。
- 被攻击的前缀$p$ 表示一块 IP 前缀,如同一片“完整街道地址”,是劫持的争夺对象。
- 攻击者的路由声明$origin(r_a)$ 表示攻击者宣告的路由里填写的“源 AS”,相当于快递单上的发件人签名。
- 真实的合法拥有者$owner(p)$ 表示前缀 $p$ 在地址注册机构里登记的所有者 AS,是“官方房产证”上的名字。
- 劫持成立条件$H(p)$ 为真意味着伪造的源与真实所有者不一致,且该伪造路由已经污染了 BGP 全局路由表,劫持生效。
RPKI架构设计
要治“伪造身份”的病,得先有一个全国统一的发证机关。RPKI(资源公钥基础设施)干的事,就是把“哪家快递公司有资格配送哪片地址”这件事,用密码学证书固定下来。它的顶层是 IANA/ICANN 这个全球信任锚——相当于国家户籍总局,往下依次把证书签给区域互联网注册机构(RIR,如亚太的 APNIC)、本国或本地注册机构(LIR),最后一层落到每个实际的 AS。这是一条自顶向下的“信任链”:每一级都用自己的私钥为下一级的公钥与资源清单签名。
这背后的数学工具是 X.509 资源证书,每个证书里不仅写着持有者是谁,还明确列出持有者被分配到的 IP 前缀集合。正因为证书由上级私钥签发,任何篡改、伪造都会在验证时被当场拆穿——你没法自己给自己签发一张“全球总裁”身份证。
有了这套“国家级信任体系”,任何 AS 想证明“我对某前缀有合法管辖权”时,都能掏出经过层层签名的证书。可证书还只是静态的“资产证明”,它如何在每天每秒刷新的路由广播里发挥作用?答案就在下一件法器——ROA 派送权限证。
- 上级私钥签名$Sign_{sk_{parent}}$ 表示由父级(如 RIR)的私钥对内容做数字签名,相当于派出所盖章。
- AS 的公钥$pubKey_{AS}$ 是这家“快递公司”对外公开的签名公钥,别人验证它身份时用。
- 资源归属清单$Resource(AS)$ 是证书背面的“名下房产列表”,列出被分配的 IP 前缀与自治域号。
- 签发完成$Cert(AS)$ 即成品证书,由上级私钥签名,全网任何人都能沿信任链查证其真伪。
ROA路由授权
如果你是一家快递公司的老板,光有“名下房产证”还不行,你得明确告诉全网:“我授权 AS65001 这家驿站,替我配送 10.0.0.0/16 这片地址。”这种授权声明就是 ROA(路由源授权)。ROA 由前缀所有者(通常就是 RPKI 证书持有者)签发,且同样经过 RPKI 签名,以保证不可篡改。可以把它理解成一张“派送权限证”:证明某个 AS 有资格作为某前缀的“源”,是路线的起点。
理解 ROA 的关键在于三个字段。第一是前缀,即允许配送的地址范围;第二是源 ASN,即被授权发件的驿站编号;第三个字段 max_len 则是“最精细能拆到多细”的约束。BGP 选路有一条铁律:更具体的前缀优先。如果 ROA 授权了 /16 却把 max_len 设成 /32,攻击者就可以宣告 10.0.0.0/32 这类更细的路由来“抢更优路径”。所以 max_len 写得太宽松,等于把劫持的钥匙递给了黑客。
ROA 构建了“源头授权”这一层认证,但它只是静态声明,真正拦截劫持发生在路由器做 BGP 选路的那一刻——这就是源验证 OV 的工作。
- 前缀字段$p$ 是被授权的 IP 前缀,即“哪片地址可以送”。
- 源 AS 字段$ASN$ 是获得授权的自治系统编号,即“谁有权在这片地址上当地址主人”。
- 最大长度$l$ 是 max_len,表示最多允许宣告的前缀长度,防止把 /16 拆成无数更细的 /32 参与恶意抢路。
- 过期时间$t_{exp}$ 是有效期,权限证不能万年有效,到期必须续签,避免废弃授权残留在系统里。
BGP源验证OV
路由器收到邻居发来的 BGP 路由时,现在多了一道“分拣台查验”:查 RPKI 数据库,对比这条路由的源 AS 和前缀是否匹配某条 ROA。比对结果分成三种状态:Valid(有 ROA 且源 AS 匹配,放行)、Invalid(有 ROA 但源 AS 对不上,拒绝)、NotFound(数据库里完全找不到对应 ROA,无从判断)。其中 NotFound 最微妙——它不代表合法,也不代表非法,只代表“这片地址的主人还没办派送证”,因此默认放行但不信任。
部署策略上,业界遵循渐进式原则:先在日志模式记录哪些流失被标记 Invalid 而不实际拦截,观察一段时间确认无误伤后,再进入建议模式、最终开启强制过滤。这就像快递网点先装一个车牌识别的摄像头记录异常车流,等系统稳定了才真正抬杆拦截。OV(Origin Validation)解决的是“源头是不是真主人”;而路径中一个个中转驿站是否被冒名顶替,OV 就无能为力了。
有了源验证,“假冒收件人”式的劫持被挡在门外。但狡猾的快递员还有一招——在中转途中篡改运单,把货拐到岔路。要堵住这个口子,就得让每一个经手驿站都留下不可伪造的签名,这就是 BGPsec。
- Valid 条件找到一条 ROA $\pi$,其前缀覆盖该路由的前缀,且源 AS 与 ROA 授权完全一致。
- Invalid 条件前缀在 ROA 范围内,但路由声明的源 AS 未获授权,此时判定为非法宣告。
- NotFound 条件任何 ROA 都没有覆盖该前缀,免责但不免责,属于“身份不明”。
- 最终过滤动作路由器对 Invalid 路由执行丢弃或不优选的策略,阻断劫持路径。
BGPsec签名
想象一份快递运单从发件地出发,每经过一个中转站,工作人员就在运单副本上盖一个加密印章。到目的地后,收件人可以把整条印章链逐一核验:AS1 盖的章只有 AS1 的私钥能造,AS2 的章同理,任何人都没法中途插入一个假驿站,更不能抹掉某个真实驿站。这就是 BGPsec 的核心思想:为 AS_PATH 路径逐跳签名,保证路径上每一个自治系统都真实可信。
具体实现上,每个 AS 用它的私有密钥对“前缀 + 到目前为止的 AS_PATH 历史 + 上一跳的公钥 + 地址族标签”一起做签名,然后把签名附在 BGP 更新里转发。地址族标签(AFI)用于区分 IPv4 和 IPv6,防止两种路由的签名交叉重放。由于 BGPsec 的公钥材料来源于 RPKI 证书体系,两者是父子级协同关系:RPKI 负责“你是谁、你拥有什么”,BGPsec 负责“你走过的每一步都留下真实脚印”。
BGPsec 把整条快递链焊死了。但回到现实,这套三重防护并非一夜建成——这十几年里,互联网已经被真实劫持事件狠狠教育过好几轮。
- 当前 AS 的私钥$sk_i$ 表示第 $i$ 个 AS 的私钥,这枚私钥只存在于该 AS 的安全硬件中。
- 累积路径$AS\_PATH_{i-1}$ 是到目前为止经过的路径序列,签名把它固化下来,防止中间被删改。
- 上一跳公钥$pubK_{i-1}$ 绑定了上一跳的签名意图,确保路径顺序正确、没有插入伪造节点。
- 地址族标签$AFI$ 标明路由是 IPv4 还是 IPv6,避免用 IPv4 的签名套到 IPv6 路由上。
- 产出签名$\sigma_i$ 是最终盖章,附在路由更新里随路径传播,任何接收方都能用 $pubK_i$ 验证。
劫持案例剖析
2008 年,巴基斯坦电信试图屏蔽 YouTube,但没有在内部路由下发空路由,而是不经意向全球 BGP 广播“我有 208.65.153.0/24”,这个更具体的前缀瞬间压过 YouTube 本身宣告的 /23,把全世界大量 YouTube 流量吸进巴基斯坦电信的黑洞里——整整两个小时,全球用户刷不出视频。这就像一家本地快递站对外宣称“整条街的件都由我来送”,而且由于它声明送的范围更精确,全网的货车真的绕道去了它家。
2017 年,Google 的 /24 前缀被俄罗斯一家供应商越权宣告,欧洲多条网络流量被导入俄罗斯境内;2018 年,AWS 旗下的 DNS 服务前缀遭到类似劫持,加密货币钱包的域名流量被转移到攻击者服务器,一度造成虚拟币被盗风险;2022 年前后,Starlink 的地址段也多次遭遇表面合法、实为越权的宣告。这些案件的共同点:都是简单的前缀宣告,都没有经过 P地址归属验核。假如当时受害前缀已经签发 ROA 且上游部署了强过滤,劫持路由会被当场判 Invalid。用快递故事总结:骗子用的永远是那几招——冒用门牌号、伪造更具体的“小巷地址”、把包裹引到自己仓库,而每次防护升级,都让骗子的作案成本跳高一个台阶。
部署挑战展望
今天的 BGP 安全格局,像是一张全球快递网正在分批安装“身份核验闸机”。根据区域互联网注册机构的统计数据,全球 IPv4 路由中的 ROA 覆盖率已稳步提升到五成左右,但仍有一半的前缀没有任何“派送权限证”。覆盖率不足意味着:大量的 NotFound 状态让运营商不敢贸然开启强制过滤——一旦误伤合法的、只是没办 ROA 的路由,业务中断的代价远大于劫持概率本身。所以现实策略是分阶段推进:先监测、再建议、后强制。
与此同时,RPKI 与 BGPsec 本身也有残余风险。RPKI 的信任锚理论上可能被攻破,CA 被攻陷可能导致恶意签发 ROA;BGPsec 需要路由器逐包做非对称签名验签,对转发性能要求极高,目前硬件加速尚未普及。未来方向包括 ROV 的精细化变体如 RPKI-Based Prefix Filtering、让 ROA 与 IRR 数据自动对齐、以及推动更多大流量网络成为“安全的强制过滤者”。快递防骗永远不是装一把锁就能高枕无忧,而是一场猫鼠游戏中持续加固防御工事的马拉松。
回到邮政隐喻:我们并不指望一张防伪码杜绝所有诈骗,但每一张 ROA、每一枚 BGPsec 印章、每一个部署强制过滤的 ISP,都把这场劫持博弈的天平往安全侧推进一步。
- 分子$N_{prefix:\ exists\ ROA}$ 表示那些已签发有效 ROA 的前缀数量。
- 分母$N_{prefix:\ total}$ 表示全网路由表中的总前缀数量。
- 覆盖率$D_{roa}$ 的比值越高,全网可验证的前缀越多,NotFound 误伤面就越小,强制过滤才越安全。
AI 应用场景
云服务商与 CDN 的防劫持部署
阶段:网络安全运营 / 基础设施信任加固
解决的问题:CDN 的 IP 前缀被越权宣告时,用户访问直接掉到黑洞或冒牌服务器,传统做法的回滚依赖人工发现,有时数小时业务已受损;利用 RPKI + OV,云商维护全量 ROA 数据,对下行路由做 Invalid 过滤,将劫持识别缩短到秒级。
具体案例:某主流 CDN 厂商每天处理数百万条 BGP 更新,通过 RPKI 校验服务对每条新路由打上 Valid / Invalid / NotFound 标签;一旦发现 Invalid 宣告,自动触发告警并联系上游 ISP 阻止传播。配合 BGPsec 试点,对核心区域间链路做逐跳签名验证,从源头阻止路径篡改。
大型 ISP 的 ROV 渐进式过滤
阶段:路由策略编排 / 风险控制
解决的问题:运营商如果立刻拒绝所有 Invalid 路由,可能因历史遗留的坏 ROA 配置切断客户线路;通过分三阶段(观测、建议、强制)落地 Origin Validation,先收集匹配日志再用策略引擎平滑放量,兼顾安全与业务连续性。
具体案例:一家区域 ISP 将 RPKI 数据导入内部路由反射器集群,前两周只记录 Invalid 路由的命中日志,确认无重要客户受影响后,逐步将 Invalid 路由的本地优先级从正常值降为最低,最终切换为直接丢弃。上线后该 ISP 上游的伪造公告数量下降约九成。
安全厂商的全球劫持实时监测平台
阶段:威胁检测与情报生产
解决的问题:传统 BGP 监控只做“路由数据突然变化”的阈值告警,误报率高;结合 RPKI 三态判定后,平台能自动识别“新增宣告是否越权”,将劫持候选事件压缩到极小范围。
具体案例:安全厂商在全球部署 BGP 窥探节点(Route Collector),持续接收全网路由更新;系统每次抓取到新路由,就自动与 RPKI 验证器同步的 ROA 库做交叉比对,输出可疑事件列表,并针对 Starlink、AWS 等高价值前缀开启 7x24 实时追踪,为下游客户提供劫持预警推送。
Python 演示
#!/usr/bin/env python3"""简化版BGP路由安全模拟:ROA源验证 + BGPsec式路径签名验证"""import hashlibimport hmac # 1. 模拟RPKI仓库中的ROA数据库ROA_DB = [ {"prefix": "10.0.0.0/16", "asn": 65001, "max_len": 24}, {"prefix": "172.16.0.0/12", "asn": 65002, "max_len": 20},] def ip_to_int(ip): parts = list(map(int, ip.split("."))) return (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8) | parts[3] def prefix_to_range(prefix): ip, plen_s = prefix.split("/") plen = int(plen_s) start = ip_to_int(ip) mask = (0xFFFFFFFF << (32 - plen)) & 0xFFFFFFFF end = start | ((1 << (32 - plen)) - 1) return start & mask, end def within(prefix, roa_prefix): p_s, p_e = prefix_to_range(prefix) r_s, r_e = prefix_to_range(roa_prefix) return p_s >= r_s and p_e <= r_e def origin_validation(prefix, origin_asn): for roa in ROA_DB: if within(prefix, roa["prefix"]): if roa["asn"] == origin_asn: return "Valid" return "Invalid" return "NotFound" # 2. 简化BGPsec:用HMAC链模拟逐跳AS_PATH签名SECRETS = {65001: b"key-as1", 65002: b"key-as2", 65003: b"key-as3"} def sign_step(prefix, asn, prev_sig): material = prefix.encode() + (prev_sig or b"") return hmac.new(SECRETS[asn], material, hashlib.sha256).digest() def verify_path(prefix, path): sig = None for asn in path: sig = sign_step(prefix, asn, sig) return sig is not None if __name__ == "__main__": routes = [ ("10.0.0.0/16", 65001, "真实用户"), ("10.0.0.0/16", 65003, "伪造来源"), ("203.0.113.0/24", 65001, "未授权前缀"), ] print("=== ROA源验证 ===") for prefix, asn, desc in routes: print(f"{desc:<8} {prefix:<18} AS{asn:<6} -> {origin_validation(prefix, asn)}") print("\n=== BGPsec路径签名验证 ===") ok_path = [65001, 65002, 65003] tampered = [65001, 65002, 65002] print("正常路径:", verify_path("10.0.0.0/16", ok_path)) print("篡改路径:", verify_path("10.0.0.0/16", tampered))
ROA_DB = [...]用字典列表模拟 RPKI 仓库中已签发的前缀与源 AS 绑定关系。prefix_to_range(prefix)把 CIDR 前缀转成起始地址到结束地址的整数区间,方便判断覆盖关系。origin_validation(prefix, origin_asn)核心函数,返回 Valid / Invalid / NotFound 三态,对应 OV 验证逻辑。within(prefix, roa_prefix)判断某条路由前缀是否落在 ROA 授权范围内,决定是否继续比对 ASN。sign_step(prefix, asn, prev_sig)用 HMAC 链模拟 BGPsec 逐跳签名,前序签名一并纳入本次签名输入。verify_path(prefix, path)把路径上的 AS 依次生成签名链,任何一环被替换都会导致最终签名无法对齐。
常见误区
误区我觉得只要全网都装上了 RPKI,路由劫持就彻底消失了,BGP 就安全了。
正解RPKI 只解决“源验证”——确认某个前缀由哪个源 AS 宣告是合法的,它并不会验证路径上的每个 AS 是否真实经过了数据包。攻击者仍可伪造 AS_PATH 或在中途插入虚假节点,这类路径篡改必须由 BGPsec 补上。就像办好了身份证只能证明“这人是本人”,无法保证他路上没被调包。
为何常见:把“身份认证”错误地等同于“全程防伪”,忽略了一个完整安全体系包含源验证、路径验证、加密传输等多个层次。
误区路由没找到对应 ROA,那它肯定是伪造的,必须立刻过滤掉。
正解NotFound 只表示“RPKI 仓库中没有任何 ROA 覆盖这个前缀”,大量良性网络还没完成 ROA 注册,盲目过滤会直接致其断网。因此实际部署中只对 Invalid 做强制丢弃,NotFound 保持放行并监控。就像查户口时查无此人,可能是逃犯,也可能只是还没上户口。
为何常见:把三态判定想当然地压缩成“合法/非法”二态,忽略了现实中大量前缀尚未办证这一客观事实。
误区我在 ROA 里把 max_len 填大一点,授权范围更宽,业务更灵活,安全性也不受影响。
正解BGP 选路规则是“更具体前缀优先”,如果 ROA 授权 /16 却允许 max_len 到 /24,攻击者就能宣告一个 /24 的子前缀来抢走该片流量,只要它的源 AS 也伪装成合法值。max_len 等于把“防伪证”的可信任边界画得多宽,画得越宽,可被利用的漏洞越大。
为何常见:只关注了“谁有权宣告”,却忽略了 BGP 选路对“更细粒度前缀”的天然偏好。
误区既然 BGPsec 给整条路径都签了名,就不需要 RPKI 和 ROA 了,一套方案搞定一切。
正解BGPsec 的密钥材料(路由器持有的签名公钥)恰恰要借助 RPKI 证书体系来分发和验证,二者不是竞品而是上下游。ROA 确认“这个源允许宣告该前缀”,BGPsec 确认“路径上每个 AS 都真实可验”,缺一不可。相当于既要有“派送权限证”,还要有每个经手驿站的“防伪图章”。
为何常见:把 BGPsec 理解成与 RPKI 并列的替代品,实际上协议设计上就是叠加在 RPKI 之上的应用。
误区路由器配置了 ROV 强制模式,Invalid 路由马上会被所有下游识别并丢弃,攻击即刻停止。
正解OV 的效果取决于邻居是否也部署了过滤、上游是否传递了带 RPKI 状态的路由。一台路由器只能影响自身选路,无法替全网做决定;并且强制过滤前需要持续观测 Invalid 路由的误伤面,否则可能切断依赖旧 ROA 配置的合法客户。渐进式落地才是工程常识。
为何常见:把“单点策略”误当作“全局策略”,忽略 BGP 生态去中心化、逐跳决策的本质。
面试题
Q1. BGP 路由劫持能够发生的根本原因是?
- A.路由器硬件算力不足
- B.BGP 协议缺少内置的身份与归属验证← 正确答案
- C.网络带宽拥塞导致路由丢失
- D.DNS 服务器配置错误
答案:B。BGP 当初面向互信学术网络设计,对邻居宣告的路由只做选路不做“所有权验证”,所以任何人都能宣称拥有某前缀。A、C、D 分别是硬件、性能与域名层面的问题,都不是劫持的根因,好比快递系统信任任何上门取件的车却不查证件。
Q2. RPKI 中,IP 前缀的“归属权”由什么来承载?
- A.BGP 的 community 属性
- B.OSPF 的链路状态数据库
- C.X.509 资源证书← 正确答案
- D.DNS 的 TXT 记录
答案:C。RPKI 采用 X.509 证书承载资源归属,证书里明确列出持有者拥有的 IP 前缀集合。BGP 属性与 OSPF 数据库都只是路由协议的内部数据,不携带密码学归属证明,DNS TXT 记录也无法提供逐级签名的信任链。
Q3. ROA 中的 max_len 字段主要作用是?
- A.限制 AS_PATH 的最大跳数
- B.限制允许宣告的前缀的最长前缀长度← 正确答案
- C.限制数据包的最大传输单元
- D.规定签名密钥的最小长度
答案:B。max_len 声明了“最多允许把该前缀拆到多细”。由于 BGP 选路偏爱更具体的前缀,max_len 过宽会给攻击者宣告子前缀劫持流量的机会,因此它的约束力直接关系到授权边界的安全性。
Q4. 一条 BGP 路由被 OV 判定为 Invalid 后,推荐的常规做法是?
- A.直接丢弃或不优选← 正确答案
- B.提升其本地优先级
- C.原样保留并转发给所有邻居
- D.将其转换为静态路由
答案:A。Invalid 表示该路由的源 AS 未获授权,等同于冒领快递,路由器应将其视为不可信并丢弃或不参与选路。提升优先级、盲目转发都会让劫持面扩大,静态路由更与此无关。
Q5. BGPsec 对一条路由进行逐跳签名时,签名内容包含以下哪些部分?
- A.IP 前缀← 正确答案
- B.上一跳 AS 的公钥← 正确答案
- C.地址族标签 AFI← 正确答案
- D.数据包的 TCP 序列号
答案:ABC。BGPsec 的签名对象是前缀、已累积的 AS_PATH 历史、上一跳公钥与地址族标签,目的是把路径历史、地址族与身份牢牢绑定。TCP 序列号是传输层细节,与 BGP 路径签名无关。
Q6. 2008 年巴基斯坦劫持 YouTube 事件中,攻击性广播之所以快速生效,关键原因是?
- A.伪造了 RPKI 证书签名
- B.宣告了比原前缀更具体的子前缀← 正确答案
- C.直接攻破了 YouTube 的路由器
- D.修改了全球 DNS 根区记录
答案:B。巴基斯坦电信广播了 208.65.153.0/24,而 YouTube 官方宣告的是较宽的 /23。BGP 选路优先更具体前缀,所以全网的流量立即被吸走。这项事件发生之时 RPKI 尚未普及,也谈不上伪造证书或攻破设备,DNS 根区同样与此无关。
Q7. RPKI 证书信任链的最顶层信任锚是?
- A.各 ISP 自己的 CA
- B.IANA / ICANN 代表的全球地址根区域← 正确答案
- C.谷歌等大型互联网企业
- D.各国政府通信部门
答案:B。全球 IP 地址分配始自 IANA,因此 RPKI 信任锚建立在 IANA/根区域之上,再由它向五个 RIR 逐级签发。ISP 自有 CA 只是链条中的中间节点,大型企业与政府机构也都不具备全局地址分配的“户籍权威”。
Q8. 关于 RPKI、ROA 与 OV,下列说法正确的有哪些?
- A.NotFound 状态并不等于非法路由← 正确答案
- B.ROA 只能由前缀所有者亲自创建,不可代理签发
- C.BGPsec 的密钥材料依赖 RPKI 体系分发← 正确答案
- D.ROV 能够验证 AS_PATH 的完整性
答案:AC。NotFound 只表示仓库中无对应记录,既非合法也非非法;BGPsec 的公钥证书正是通过 RPKI 签发的,两者是协作关系。ROA 在实际中可以由所有者授权的托管方代理签发,而 ROV 只查源头不查整条路径,因此 B、D 均错误。
Q9. 攻击者想劫持一个已有明确 ROA 的前缀,下列哪种手法最有可能奏效?
- A.利用宽松的 max_len 宣告更具体子前缀,并伪造匹配的源 ASN← 正确答案
- B.直接宣告与 ROA 完全相同的前缀和源 ASN
- C.无论如何都无法绕过 ROA,劫持必然失败
- D.把自己的本地优先级调高,迫使邻居选用这条路由
答案:A。若 ROA 的 max_len 允许更细的子前缀(如 /24),攻击者可在 OV 只校验源 ASN 时伪造 origin 为合法 AS,从而通过校验并利用“短前缀优先”抢走流量。直接宣告完全相同前缀会因源不符被判 Invalid;本地优先级只影响本路由器,无法强制邻居。
Q10. BGPsec 在工程落地中面临的最大挑战是?
- A.逐跳非对称签名/验签对路由器转发性能冲击大← 正确答案
- B.IPv6 地址格式不兼容
- C.需要重新设计 BGP 协议的所有报文类型
- D.必须更换全体 ISP 的物理光缆
答案:A。BGPsec 要求每个 AS 在通告时做签名、每个接收方做验签,且发生在 BGP 控制面,对大流量中转节点是显著的 CPU 压力,现有路由器需要硬件加速支持。BGPsec 原生支持 IPv6,也不要求改报文家族或换光缆,因此其余选项均不成立。