贾 佳, 延志伟, 耿光刚, 金 键
一种改进的BGP路由源认证机制①
贾 佳1,2, 延志伟2, 耿光刚2, 金 键1
1(中国科学院计算机网络信息中心, 北京 100190)2(中国互联网络信息中心互联网域名管理技术国家工程实验室, 北京 100190)
资源公钥基础设施(Resource Public Key Infrastructure, RPKI)是当前用于保护互联网码号资源分配真实性的技术. 作为一种支撑域间路由安全的体系, 它解决了边界网关协议(Border Gateway Protocol, BGP)缺乏路由源认证的问题. 然而当前RPKI体系中的依赖方(Relying Party, RP)与路由器数据同步机制可能会导致路由源授权(Route Originate Authorization, ROA)信息缺乏真实性和有效性, 并且不断查询缓存列表会带给路由器很大的性能负载. 据此, 本文提出一种改进的BGP路由源认证方案, 发送端路由器实时申请存储在RP中的ROA证书, 将其附加到BGP update报文中进行传输, 以待对等端路由器申请证书公钥对证书进行验证并完成路由源认证功能. 该方案将原来周期性更新路由器缓存列表机制改为路由器实时申请认证机制, 有效解决了RP与路由器数据同步可能导致的ROA存在错误的问题, 降低路由器查询缓存列表造成的路由器运行负载. 此外, 本文通过Quagga仿真实验表明该方案具有可行性, 并对该方案的适用情形进行了具体分析.
边界网关协议; 资源公钥基础设施; 路由源授权; 安全机制; 前缀劫持
BGP协议是当前互联网中唯一的域间路由协议, 其本身存在的安全漏洞会使整个互联网面临严峻的安全威胁[1-3], 比如路由劫持攻击[4-6]、路由泄露[7]等. 根据BGP协议规范, 路由器通过发送update报文来通告其他路由器自己发生变更的路由信息, 并且对接收到的任何update报文都采取无条件信任的处理机制, 这种机制就给了攻击者可乘之机.
如图1所示, 路由器R1向R2发送的update报文中携带的IP地址10.0.0.0/24并不属于R1, 而此IP地址真正的持有者R4也通过R3向R2发送路由信息. R2会收到两个针对该IP地址的路由通告update报文, 其AS_PATH分别为1和3 4. 根据AS_PATH路径最短原则[8], R2优先选择R1到达10.0.0.0/24. 由于R2没有任何认证机制证明消息的合法性和真实性, R2中目的地为10.0.0.0/24的流量原本应该路由到R4中, 却被劫持到R1中, 造成前缀劫持攻击.
图1 前缀劫持实例
前缀劫持攻击的结果可能会导致路由黑洞(black hole)和中间人攻击(man-in-the-middle attack), 甚至造成互联网的大规模瘫痪[9]. 前缀劫持的根本原因在于BGP协议缺乏一个安全可信的路由源认证机制. 为了弥补BGP存在的设计缺陷, 降低域间路由传播中的安全威胁. S-BGP(secure BGP)[10], SoBGP[11]等方法应运而生.
与此同时, IETF SIDR工作组正在开发的RPKI[12]也为解决BGP安全问题提供了完整的设计思路. 基于RPKI的BGP路由安全机制不仅弥补了S-BGP计算开销大、部署困难的问题, 还解决了soBGP由于缺乏信任锚的地址授权认证体系导致的安全性显著下降的问题[8].
2.1 RPKI简介
RPKI是一种公钥基础设施, 用来保障互联网基础码号资源(包括AS号, IP地址)的可信分配和安全使用. RPKI体系由三部分构成, 分别是资源公钥基础设施(RPKI)、数字签名对象和分布式数据仓库. 其中RPKI是本套体系中最核心的组成部分.
如图2所示, RPKI的证书发布体系沿袭传统的地址分配逻辑, 按照互联网数字分配机构(Internet Assigned Numbers Authority, IANA)、地区性互联网注册机构(Regional Internet Registries, RIRs)、本地互联网注册机构(Native Internet Registries, NIRs)/互联网服务提供商(Internet Service Providers, ISPs)逐层向下发布认证权威(Certification Authority, CA)证书. 每一个最底层的资源持有者都拥有一段不可再细分的IP地址资源, 资源持有者用所属的CA证书继续签发EE(End-Entity)证书, 用来对路由源ROA的信息进行签名[13]. ROA包含了IP地址块以及资源持有者指定用于通告该段地址的AS号. 简单来说, 一个ROA就是地址所有者ISP授权某AS发起某IP前缀路由的担保, 从而对路由源进行合法性验证.
图2 RPKI资源分配架构图
如图3所示, RP是连接RPKI和BGP路由系统的重要桥梁, RP从RPKI体系中获取所有ROA证书并进行验证, 将合法的ROA信息存储在RP数据库. 当BGP路由器向RP申请更新时, RP将最新验证结果反馈给BGP路由器. BGP路由器则根据验证结果构建自己的过滤表项和缓存列表. 当BGP路由器接收到来自对等端发送的update报文, 首先查询本地缓存列表update报文信息是否真实有效, 再进行路由选择.
如果在支持RPKI的情况下, 图1的路由器R2将会周期性地从RP获取所有的ROA信息, 当R1向 R2发送IP地址为10.0.0.0/24的update报文时, R2首先查询本地的路由器缓存列表, 检查R1是否具有通告当前IP地址的权利. 如果匹配正确, 则验证成功. 由此可见RPKI路由源认证功能有效地防御了前缀劫持攻击.
图3 BGP路由源认证
2.2 RPKI存在的问题
在RPKI体系中, RP与BGP路由器交互协议设计如图4所示[14], 每个路由器要与一个或者多个RP建立并保持连接, 以此来建立客户端/服务器关系. 每个路由器都将配置一个缓存列表, 用来接收从RP发送来的所有的ROA信息.
图4 RP与路由器交互机制
然而, BGP路由器通过定期向RP发送更新请求机制, 来更新路由器缓存列表信息, 不论RP是否已经将数据库进行更新, 由此可能会对BGP路由器缓存列表中ROA信息的真实性和准确性产生影响. 同时, BGP路由器缓存列表数量级非常大, 不断查询路由器缓存列表会加重路由器的运行负载.
由此可见, RP与BGP路由器交互机制可能会导致ROA信息缺乏真实性和有效性, 并且对路由器造成很大的性能威胁.
3.1 改进方案介绍
为了解决RP与BGP路由器数据同步机制导致的安全和性能问题, 本文提出了一种改进的BGP路由源认证方案: 发送方将从RP申请的ROA证书附加到update报文中进行传输, 接收端路由器实时申请证书公钥对ROA证书合法性与真实性进行验证, 并用合法ROA信息对update报文中IP与AS信息进行路由源验证. 路由器验证成功后, 将合法的ROA信息存储到本地缓存列表并采用定期清空的处理机制. 该方案中提到的证书公钥经由RP验证可以保证其正确性.
此缓存列表数量级非常小并且清空缓存周期短, 其本身带来的查询消耗可以忽略不计, 旨在减小路由器实时申请和验证ROA证书带来的额外流量负载. 同时, 实时申请和定期清空缓存列表的机制保证了验证ROA信息的真实性和准确性, 有效解决了当前机制中RP与路由器数据同步可能导致的ROA存在错误的缺陷.
改进方案的详细设计流程如图5所示.
① 路由器R1向RP申请ROA证书.
② R1将ROA证书作为update报文路径属性的一部分附加到update报文中.
③ R1将ROA证书发送到对等端路由器R2.
④ R2接收到ROA证书后, 向RP申请ROA证书公钥并解密证书.
⑤ 通过查看证书所携带的AS号与IP前缀信息来验证当前update报文中的AS是否有通告当前IP的权利.
⑥ 如果验证正确则继续传递, 否则将此包丢弃.
⑦ BGP路由器将申请到的ROA信息保存到本地缓存列表, 以待下一次验证. BGP路由器缓存列表采用定期清空的机制, 以防止更新不及时导致的信息错误.
图5 改进方案交互机制
3.2 改进方案可行性仿真过程
Quagga[15]是一种能够将Linux系统打造成一台功能完备的路由器的开源软件. 其能够同时支持RIP、OSPF、BGP等诸多TCP/IP协议. Quagga拥有模块化设计、运行速度快、可靠性高等特性. 由于Quagga采用了模块化设计, 所以在其运行时要运行多个守护进程. 其中zebra进程用来更新内核的路由表, bgpd进程则负责进行BGP协议的路由更新.
本文通过修改Quagga开源代码, 将静态的ROA信息(包括AS号, IP地址及前缀)添加到BGP协议的update报文中. ROA作为路径属性的一部分传递到对等端路由器, 并在对等端完成路由源认证. 当验证失败时, 错误日志中记录ROA信息无效并将此包丢弃.
本文提到的Quagga实验旨在验证将ROA证书附加到update报文中进行传输, 并在接收端进行验证的方案具有可行性, 可以将此方案部署到更复杂的路由拓扑结构.
实验步骤:
① 发送端从模拟的RP中获取ROA静态信息添加到update报文中.
② 将ROA信息通过update报文传递到对等端路由器.
③ 对等端路由器接收到更新信息后, 也从RP获取相应的ROA信息, 并将两者进行比较, 验证接收到的ROA信息是否真实有效.
④ 通过合法的ROA信息, 验证当前AS是否有通告当前IP前缀的权利, 即进行路由源认证.
仿真实验拓扑图如图6所示.
图6 仿真拓扑图
3.3 改进方案可行性仿真结果
路由器R2接收到传递的ROA信息如图7所示.
图7 路由器R2信息接收图
当验证失败时, R2路由器错误日志记录显示如图8所示.
图8 错误日志记录图
本文通过Quagga仿真技术模拟BGP路由器, 成功将静态的ROA信息传递到对等端, 并完成了路由源认证功能.
当前方案与改进方案对比分析如下:
① 当前机制如图9上侧所示: 假设从RP到路由器传输的
当=1/s(每秒有1个报文发送到路由器), 路由器缓存列表长度为(因为有个对象, 每个对象为一行). 假设使用穷举法进行表查询, 查询每一行需要1s, 验证时间为1s. 则平均查找时间为O(m), 由于最优情况查询时间为1s, 最差情况查询时间为ms, 所以平均查找时间为, 验证时间. 所以当v=1/s时, 所需时间为:
当v=n/s(每秒有n个报文发送到路由器), 所需时间为:
图9 性能对比图
② 改进方案(不考虑本地存储ROA)如图9下方所示: 发送端路由器仍从RP获取ROA证书. 设路由器向RP申请1个ROA证书的时间为, RP向路由器反馈时间为.
由于接收端路由器需要获取证书公钥并对证书进行解密, 所以改进方案中ROA证书验证时间相较于直接验证AS和IP需要消耗更长时间(不考虑申请公钥所导致的与RP的交互负载). 设对ROA证书验证时间为.
当=1/s, 所需时间为:
当=n/s, 理想情况下为:
假设发送端路由器每个update报文携带的ROA证书都需要重新申请, 由于其频繁访问RP数据库, 会加重路由器和RP的运行负载, 使得申请和反馈时间增长. 当速率为n/s时, 申请和反馈时间为并且假设, 所以所需时间为:
通过以上数据分析, 可以得出两种机制查询和验证时间分别为:
设:
因为
所以, T1与T2有两个交点, 由于m>=0, a>=0, b>=0, 所以T1与T2有一个交点, 如图10所示.
图10 时间对比图
综上所述:
当v
RPKI针对BGP协议存在的安全缺陷, 通过引进ROA证明源AS对某IP前缀拥有通告的权利, 对路由源进行认证, 从而有效解决了BGP协议中对源认证缺失的安全问题. 但是在路由源认证模块中, 由于路由器要定期更新本地的路由器缓存列表, 从而导致RP数据库与路由器缓存列表在数据同步方面存在安全隐患和性能缺陷. 路由器缓存列表更新周期直接影响着缓存列表中ROA信息的正确性与真实性.
本文在此基础上, 提出了一种改进的BGP路由源认证方案. 将从RP获取的ROA证书附加到update报文中, 接收端路由器从RP申请可信的ROA证书公钥并进行解密, 与update报文信息进行比较从而验证路由源信息的真实性. 本文通过Quagga仿真技术模拟BGP update报文传输, 验证静态的ROA信息附加到update报文的方案切实可行, 同时分析了当前方案和改进方案的适用情况和时间开销.
1 Kuhn R, Sriram K, Montgomery D. Border gateway protocol security[Technical Report], 800-54, Gaither-sburg: NIST, 2007.
2 Murphy S. BGP security vulnerabilities analysis. RFC 427 2, 2006.
3 Nordstrom O, Dovrolis C. Beware of BGP attacks. ACM SIGCOMM Computer Communication Review, 2004, 34 (2): 1–8.
4 Andy G. Hacker Redirects Traffic from 19 Internet Providers to Steal Bitcoins. http://www.wired.com/2014/08/isp-bitcoin- theft/. 2014.
5 Matsuzaki Y. Prefix hijacked. https://conference.apnic.net /data/41/apricot-2016-maz-hijack_1456100828.pdf. 2016.
6 Chika Y. BGP Hijack Issue in 2015. https://conference.apnic. net/data/41/janog37-chika-rev7-en_1455078267_1456002602.pdf. 2016.
7 Massive route leak causes Internet slowdown. http://www. bgpmon.net/massive-route-leak-cause-internet-slowdown/#comments-wrap.
8 Matthew C, Jennifer R. BGP routing policies in ISP networks. IEEE Network, 2005.
9 黎松,诸葛建伟,李星.BGP安全研究.软件学报,2013,24(1): 121–138.
10 Secure BGP project (S-BGP).2004. http://www.ir.bbn.com/ sbgp/.
11 White R. Securing BGP through sec ure origin BGP (SoBGP). The Internet Protocol Journal, 2003, 6(3): 15–22.
12 Lepinski M, Kent S. An infrastructure to support secure Internet routing. RFC 6480, 2012.
13 Huston G, Michaelson G. Validation of route origination using the resource certificate public key infrastructure (PKI) and route origin authorizations (ROAs). IETF RFC 6483, 2012.
14 Bush R, Austein R. The resource public key infrastructure (RPKI) to router protocol. RFC 6810, 2015.
15 Quagga Routing Suite. http://www.ourg/quagga /.
16 Osterweil E, Manderson T, White R, et al. Sizing estimates for a fully deployed RPKI. Verisign Labs, TR, 2012, 1120005.
Improved Validation Mechanism of Route Origination in BGP
JIA Jia1,2, YAN Zhi-Wei2, GENG Guang-Gang2, JIN Jian1
1(Computer Network Information Center, Chinese Academy of Sciences, Beijing 100190, China)2(National Engineering Laboratory for Naming and Addressing, China Internet Network Information Center, Beijing 100190, China)
Resource public key infrastructure (RPKI) is a kind of technology which is used to protect the authenticity of Internet code number resources allocation and a kind of system of supporting inter-domain routing security which solves the problem of the lack of validation of route origination in BGP. However, it may result in the lack of authenticity and validity of ROA information due to the current data synchronism mechanism between the relying party of RPKI system and BGP routers. Meanwhile, it will bring a lot of performance load of BGP routes that query the cache lists continuingly. In this paper, we propose an improved method for route origination authentication. The sender routers real-timely apply for ROA certificates from RP and transmit them to the peer routers with the update message. Then the peer routers can apply for the public key to verify the certificates and verify the authenticity of the route originate. The verification mechanism is changed from updating the cache list periodically to real-time application for certification. It can effectively solve the problem that the ROA of the RP and the router data synchronization may be wrong, and reduce the running load of routes caused by querying the cache lists effectively. It is proved that the feasibility of the scheme using the simulation tool of Quagga and we make the detailed analysis for the applicable situation of two mechanisms.
BGP; RPKI; ROA; security mechanism; prefix hijacking
2016-04-19;收到修改稿时间:2016-05-26
[10.15888/j.cnki.csa.005541]