王海洋 杨 言 王 维
1(中关村网络安全与信息化产业联盟 北京 100190) 2(北京国融工发投资管理有限公司 北京 100033)
(2567479016@qq.com)
互联网(Internet)由数量众多的名为自治系统(autonomous system, AS)的子网相互连接形成.截至2020年7月,全球已经有超过17万个自治系统被申请使用,其中与其他网络交互频繁、能被大量互联网使用者观测到的自治系统也超过6万个.自治系统的管理者可以根据自身组织的需求调整内部的网络配置或路由协议,实现自治化网络管理.边界网关协议(border gateway protocol, BGP)是目前自治系统间路由通信唯一被认可的协议.BGP协议要求各个自治系统宣告自身拥有的IP前缀以生成整个互联网的转发路径:每个自治系统收到来自其他AS的BGP路由更新时,会将自身的自治系统号(ASN)添加到名为AS路径的路由属性中,再进一步将该BGP更新传递给其他相邻网络.最终,各个AS会根据自身的路由选择策略维护前往不同前缀的最优路由,实现跨域通信.
然而BGP协议设计之时,主要关注于将阿帕网外部网关协议的集中路由机制转变到一个分布式的网络结构中,假想的应用环境为仅具有较少自治系统且均值得信赖的小型网络,故并未将安全性纳入考虑范围,因此BGP协议缺乏对BGP路由更新报文的安全验证,使得任意自治系统都可以篡改其宣告或转发的路由控制信息,从而影响域间路由过程.
随着网络规模的不断扩大,如今的互联网存在着许多不安全的因素,部分自治系统可以通过篡改BGP更新中的路由信息,达到对域间路由过程的定向攻击,其中最具代表性的是路由劫持(route hijacking).
路由劫持是指劫持者由于误配置或蓄意攻击,修改了正确的BGP路由信息,并通过BGP更新传播到其他自治系统,导致部分自治系统被伪造路由影响,访问此前缀的路由被吸引到劫持者的现象.路由劫持亦可被称作BGP劫持,它可以吸引被感染自治系统的路由经过劫持者,是互联网中常见的前缀劫持现象.当劫持者具有恶意目的时,它可以对吸引到的流量进行数据平面非法操作,影响被感染AS与正确源AS的通信质量及安全.如果劫持者将吸引到的流量进行丢弃就会产生路由黑洞,从而引发目标网络无法访问的网络中断事件;如果劫持者将吸引到的流量传回给正确目的地,它可以隐蔽地作为中间人(man-in-the-middle)对关键信息进行窃听或篡改.2008年2月,巴基斯坦电信发生了一起路由劫持事件[1],造成互联网中大量AS数小时无法访问YouTube,对世界各地的用户造成了明显的影响.而2011年的Link Telecom劫持[2]、2014年的Indosat劫持[3]和2017年的Rostelcom劫持等路由劫持事件均对部分地区的互联网接入产生了较大的干扰.
为了减轻路由劫持对域间路由的影响,近年来研究者们提出了许多不同类型的劫持防御机制,大体上可以分为2类:域间安全路由机制和路由劫持检测系统.域间安全路由机制是通过在路由过程中对BGP协议进行安全性增强,使BGP路由信息得到保护或校验,让劫持者难以任意更改其宣告或转发的BGP更新,并对异常的路由控制报文进行过滤或限制,达到阻止路由劫持产生或大范围传播的效果,代表方案有RPKI[4],BGPsec[5]等.而路由劫持检测系统则是一种后处理机制,是对互联网中已经形成的路由劫持事件进行快速观测、辨别及确认,以便及时地通知相关AS进行前缀管理或中止服务,减小路由劫持造成的损失.这类系统的代表工作有Argus[6],Artemis[7]等.其中,域间安全路由机制得到了更多的关注和研究.
然而,域间安全路由机制在实际部署时面临挑战:一方面,它们本质上是对BGP的安全扩展,需要在一定程度上更改BGP协议实现或者改变路由过程,对自治系统的边界服务器有更高的存储或计算需求,因此部署这些机制需要自治系统更新相关网络设备或提高路由维护成本,在经济层面存在阻碍;另一方面,这类安全路由机制如RPKI,Path-end[8]需要自治系统半公开自身的网络信息(持有前缀、邻居AS等),然而这些信息可能涉及该组织的商业竞争关系、政治安全考虑等,因此很多自治系统本能地排斥选择这一类域间安全路由机制.综上,域间安全路由机制虽然得到了学术界和互联网相关组织的倡导,但仍将在较长时期处于部分部署的状态.而在部分部署时期,对劫持的安全机制并不能达到其预期的效果:想要保护IP前缀对应的BGP更新不被篡改,常依赖于源AS、整条路径的AS或者被牵涉的路径片段对该机制的部署.但不同安全机制在部分部署时期的效果并不一致,了解在这一过渡时期各类安全机制对路由劫持的防御能力,可以更好地评估分析它的当下效用、预测其被接受的难易程度并帮助AS管理者根据自身需求进行选择,进而缩短部分部署状态的持续时间.
本文首先描述了互联网中较常见的几类路由劫持,并分析其修改路由信息的具体手段,对几种具有代表性的域间安全路由机制的原理进行了介绍,比较它们之间的差异及针对的劫持类型,总结其各自的优缺点,最后通过路由仿真,对不同类型的机制在不同部署率的场景下能够对路由劫持达到的防御能力进行了实验,从安全增强的角度归纳了过渡时期和理想时期选择安全机制的较优策略.
路由劫持是互联网自治系统级最常见的路由攻击现象之一,自其被观测到以来,对其可能造成的异常和具体作用范围已有不少研究分析和测量[9-11].为了减弱这些互联网的路由异常,研究者提出了域间安全路由机制和路由劫持检测系统对劫持进行防范.路由劫持检测系统是在劫持发生后进行的后处理措施,能够及时发现劫持的产生,并尽早通知相关AS检查路由状况,其代表工作包括Argus[6],Artemis[7],iSPY[12]和HEAP[13]等.但路由劫持检测系统只能够减弱路由劫持造成的负面影响,却不能阻止或限制伪造报文的产生和传播.因此,一系列域间安全路由机制被研究者陆续提出,包括RPKI[4],S-BGP[14],BGPsec[5],ASPA[15],Path-end[8],FSBGP[16],ROVER[17],soBGP[18]和QBGP[19]等.除了提出具体的安全路由机制,对它们进行的深度分析也是域间安全研究的热点,涉及它们可能引入的附加安全威胁[20]、部署的经济驱动力[21]、路由稳定性影响[22]等.而与防御能力相关,Goldberg等人[23]在2010年对当时较典型的安全机制RPKI,soBGP和S-BGP,从复杂度分析的角度比较了它们的防御性能.Lychev等人[22]在2013年的研究中提出,安全选路模型的变化可以对部分安全机制的防御效果产生明显的影响.
路由劫持可以根据不同的标准进行分类,其中较系统且最常用的分类方法是通过劫持手段进行区分.根据劫持者修改路由信息的具体方式不同,路由劫持可以被分类为错误源劫持(false origin hijacking)、错误链路劫持(false link hijacking)和错误策略劫持(false policy hijacking).错误源劫持是指劫持者直接宣告了1条不属于它的IP前缀,使该前缀的BGP更新报文中源AS发生了错误.错误链路劫持是指虽然源AS一致,但劫持者在AS路径中引入了1条实际不存在或尚未被观测到的域间链路.而错误策略劫持则指虽然源AS和路径中的链路均未出现异常,但这条AS路径违背了某些AS的出入转发策略.不论何种劫持手段,我们均可以使用AS路径和IP前缀的二元组表示路由劫持:对劫持者A来说,若其想要对属于受害者V的1条IP前缀f进行路由劫持,它会向邻居AS宣告前缀f的1条BGP更新报文,此时报文对应的路径属性为P,该劫持手段记为(P,f).当P与A路由表中通往前缀f的真实路径不一致时,A对V发起了针对前缀f的路由劫持.
在互联网中最常见的路由劫持即前缀劫持[9,24],它是指某个ASA宣告了一条属于其他ASV的IP前缀f,对吸纳到自身的流量进行丢弃或直接伪造V的身份与感染AS进行通信.如通过劫持手段划分它属于错误源劫持,即源AS与前缀的匹配关系发生错误,可以记为(〈A〉,f).错误链路劫持由于保证了源信息的正确性,因此劫持者宣告的AS路径至少包含自身的ASN和受害者V的ASN.根据劫持者在伪造路径中离受害者的AS跳数不同,可以再分为N跳错误链路劫持[8].最简单的错误链路劫持即1跳错误链路劫持,其二元组表示为(〈A,V〉,f).考虑到发生此类路由劫持后,受害者可以很容易地从伪造路由信息中追溯到劫持者,因此多跳错误链路劫持也被应用于一些情形中,例如(〈A,X,V〉,f)则是2跳错误链路劫持的表示,其中:A~X之间本不存在物理链路.具体地,如果X是受害者V的一个合法邻居N,我们称(〈A,X,V〉,f)是理智的2跳错误链路劫持;否则我们称(〈A,X,V〉,f)是盲目的2跳错误链路劫持.错误源劫持、1跳错误链路劫持、盲目的2跳错误链路劫持和理智的2跳错误链路劫持是互联网中较常见且具有一定吸引路由能力的路由劫持子类.
当然,除此之外还存在着一些其他类型的路由劫持,例如3跳及以上的错误链路劫持、错误策略劫持等.但多跳数的错误链路劫持由于宣告的AS路径较长,不具有较强的路由吸引能力,因而在互联网中较少被劫持者使用.而错误策略劫持由于需要对其他AS的入口或出口策略进行分析预测,因此常常要求劫持者具有较高的拓扑层级和路由收集能力,同时也需要宣告1条经拼凑得到的较长AS路径,因此也较少被研究者观测到.为了了解宣告的AS路径长度与路由劫持能力间的关系,我们通过改良后的路由树算法(routing tree algorithm)[25]模拟了正常的BGP选路及路由劫持发生后各个AS的路由收敛情况,以判断发生不同类型的路由劫持时劫持事件平均能影响到的AS比率.在模拟过程中,我们使用了CAIDA组织发布于2019年11月1日的互联网拓扑结构,同时遵循Gao-Rexford域间路由模型.通过更改二元组表示中宣告路径P的实际长度,对P值为1,2,3,4的情形分别随机选择了1 000组劫持者与受害者,计算该情形下路由劫持平均感染的AS比例,实验结果如表1所示.可以看出,当发起3跳及以上的错误链路劫持时(P=4),劫持平均影响到的AS范围不足15,因此恶意劫持者常采用更高效的劫持手段.
表1 路由劫持宣告路径长度与平均劫持率的关系
图1 RPKI的证书结构示例
域间安全路由机制利用安全证书、非对称加密等安全手段增强了BGP协议层面的安全性,使AS宣告或转发的BGP更新报文不能任意修改,以阻止路由劫持的产生和扩散.自路由劫持在20多年前被观测到并展开相关研究之后,安全路由机制的提出和改良就不断进行,迄今为止已经出现了几种具有代表性的安全机制.它们或者使用较简单的方法对典型的路由劫持进行抵御,或者能够保障一个非常安全的域间路由环境,或者能够在部分部署时取得明显的效用,因而频繁地被众多与劫持抵御相关的研究提及.这些安全机制主要包括RPKI[4],BGPsec[5],Path-end[8],ASPA[15]和FSBGP[16].
RPKI[4]是一种利用安全证书对域间路由进行的源验证机制,它能较好地针对错误源劫持进行防御.它使用了资源证书(RC) 和路由源授权证书(ROA)分别进行AS源信息的管理和公示:只有具有RC的自治系统能管理其对应IP前缀的源信息,每条源信息由ROA进行记录,同时这些AS还可以将部分子前缀分配给其他AS进行更精细的管理.图1给出了一个RPKI部分证书结构的例子.而当一个部署RPKI的AS收到路由更新时,其可以向上层具有RC的直属管理节点发起源验证,该管理节点逐步追溯,确定该前缀对应的最精确的ROA,根据其记录的源信息反馈给该AS以下3种路由验证状态之一:合法(valid)、未知(unknown)和不合法(invalid).对不合法的路由更新该自治系统应予以丢弃,而对未知的路由更新则应根据自身策略谨慎选择.
图2 BGPsec核心原理
BGPsec[5]是一种利用签名验证机制保障BGP更新中AS路径属性完整性的安全机制,它基本上继承了较早期的S-BGP主要技术原理,通过对AS路径进行嵌套签名保障其不会被恶意修改.如图2所示,1条BGP更新报文从A0形成,依次传向An+1.当ASAi收到该报文后,会先利用先前路径上各个AS的公钥进行签名验证,通过后再使用自己的私钥对上一个数字签名Si-1、自身的ASN以及下一跳ASN组成的三元组进行签名,并将签名结果增加到签名串的末端.由于签名结果是彼此嵌套的,因此任何一个数字签名的缺失或修改都会影响到BGPsec对报文的验证.另外,首个数字签名S0包括了IP前缀信息f,故BGPsec可以阻止劫持者进行源、链路以及策略的伪造,具有很高的安全性.
RPKI和BGPsec作为域间路由源验证问题和路径验证问题的解决方案被IETF组织标准化并积极地推动部署.不过由于经济成本、政治隐私等限制,它们的部署都受到了一定的限制,尤其是BGPsec更难被大多数AS在短期内接纳.为了维护域间路由在BGPsec未得到广泛部署时期的安全性,一些路径验证的过渡机制也被研究者提出,它们通过放松对BGP路径完整验证的目标,为互联网提供了一个相对安全的路由环境,能够在短期内取得较明显的安全回馈.
Path-end[8]扩展了RPKI的源验证机制,提出了源端验证的概念,即对前缀的源AS和1跳邻居AS进行校验.与RPKI使用ROA不同,Path-end使用名为公共仓库的分布式数据库存储验证所需的信息,尽量在不改变当前BGP路由设施的基础上提供源端验证,实现轻易部署.当前互联网的源端信息可以存储在大多数路由器的硬盘中,避免了设备的更替.Path-end验证机制是针对错误源劫持和1跳错误链路劫持涉及的安全机制,而当前频繁出现的具有较大吸引能力的劫持恰恰是这2种类型,因此具有较高的反馈收益.
ASPA[15]是一种利用自治系统间的商业关系和BGP无谷策略(valley-free policy)的授权格式标识符,用于对AS路径的上行部分(即客户-供应商链路)进行安全验证.与Path-end相似,它也是基于RPKI的源验证机制并进行了路径上的扩展.ASPA标识符中包含了AS对由自身ASN以及合法转发的供应商ASN组成的二元组的数字签名,它表示了客户对供应商的选择.与其他安全路由机制不同,ASPA仅会对来自客户或同伴的BGP更新进行验证,而忽视来自供应商的路由.并且,它不仅会验证源AS的供应商是否合法,同时还会检验经过其他AS的供应商关系,因此是一种针对AS完整路径的验证.在BGPsec尚未大规模部署时ASPA是一种能保证较高路径安全性的过渡机制.
FSBGP[16]利用对AS路径三元组进行签名验证来保证AS路径的完整性.与BGPsec不同,FSBGP没有采用嵌套签名的机制,而是对上1跳AS、当前AS和下一跳AS进行签名,原理如图3所示.这样,对具有重复路径的不同IP前缀的BGP更新而言,重复部分的数字签名是等同的,可以利用缓存减少验证计算的总次数,提高验证效率.不过,劫持者可以通过搜集并拼凑经过自身的BGP报文中的签名信息,构造1条完整的路径用于路由劫持,但这会提高劫持者发起劫持的成本及必要的路径长度,减少劫持的频率和影响范围.
表2将上述有代表性的5类域间安全路由机制的核心原理及主要优缺点进行了整理和比较.
图3 FSBGP核心原理
表2 典型域间安全路由机制的比较
已介绍的5种域间安全路由机制通过对AS路径中某些信息的真实性验证过滤或限制伪造路由在互联网中的传播.但根据验证的AS路径中的具体信息不同,这5种安全机制部署后能够抵御的路由劫持类型也不相同.我们首先关注在理想场景下,即域间安全路由机制在互联网中被完全部署时各种安全机制能够防御的劫持种类.
对任意的一个路由劫持(〈Nk,Nk-1, …N1,N0〉,f)而言,RPKI作为源验证机制会检查前缀f和源ASN0的绑定关系,因此在完全部署后可以消除域间错误源劫持;BGPsec由于会对整条路径每一步都作验证,保证该ASN是自治系统亲自加入的,因此在完全部署后可以避免路径毒化[26]和伪造,故能防御所有错误源劫持、错误链路劫持和错误策略劫持;Path-end进行了源端验证,不仅检查了f和N0的绑定关系,还验证了源端链路N0-N1的转发合理性,因此最终可以完全防御错误源劫持和1跳错误链路劫持;ASPA以RPKI为基础,可以杜绝错误源劫持的发生,同时在完全部署后每个AS都会检测来自同伴和客户的路由,保证每一跳暗示的商业关系客观存在,可以发现并过滤掉部分错误链路劫持和错误策略劫持,但它不能防御来自供应商的伪造路由,同时由于仅检查了商业关系,因此可能忽视拼凑商业关系形成的特殊伪造路径;而FSBGP完全部署后能够通过三元组的签名验证保证源的真实性,但是劫持者可以收集一段时间的路由信息,利用三元组拼凑出1条实际存在但违背入口或出口策略的路径,因此完全部署后能防御错误源劫持、错误链路劫持和部分错误策略劫持.我们将该分析结果汇总到表3中:
表3 典型域间安全路由机制完全部署后适用的劫持类型
以上分析结果显示,基于数字签名技术的BGPsec完全部署后具有最强的劫持防御能力.但正如前文所说,域间安全路由机制在部署上面临一些挑战,其中尤以BGPsec为甚.BGPsec和FSBGP需要对大量的BGP更新报文进行加密和验证,要求更高的存储和运算能力,改变了传播域间路由的选路流程,因此需要对边界路由器等网络设备进行更新,提高了路由的成本和维护开销,这对许多以盈利为目的的AS是不友好的.而RPKI,Path-end和ASPA都要求自治系统公开自身的部分网络信息,如IP前缀、BGP邻居关系、网络接入商等,这些信息可能涉及商业机密、政治合作关系、网络配置等敏感内容,因此难以保证内容的真实性,在接纳相应机制时也会受到排斥.因此,域间路由将在较长时期处于一个安全机制部分部署的过渡阶段.对这些机制防御能力的研究,我们更关注部分部署时的效果.
我们使用部署率来描述安全机制的部分部署程度,其含义为使用该安全机制的AS数目占互联网拓扑中AS总数的比例.实验仍然采用CAIDA在2019年11月1日发布的网络拓扑关系,遵循Gao-Rexford路由模型,模拟不同安全机制在不同部署率下对常见类型的路由劫持产生的防御作用.在每个实验场景下(即确定的安全机制、确定的部署率和确定的路由劫持类型),我们均模拟了20次随机发生在2个AS间的路由劫持过程,计算此时劫持能够感染的AS数目,并用未部署安全机制时的感染AS数目作为基准进行归一化,得到归一化劫持率.接着我们对这20组劫持率求得平均值,用来表达该部署率下安全机制对此类路由劫持的防御效果,平均劫持率越低安全机制部署后取得的收益越明显.图4展示了该实验的具体结果:
图4 域间安全路由机制部分部署时对常见劫持的抵御效果
通过图4我们可以归纳得出,之前介绍的几种具有代表性的域间安全路由机制均已实现或在RPKI的基础上进行了源AS的验证,因此对错误源劫持(〈A〉,f)具有接近线性的防御能力.而对1跳错误链路劫持(〈A,V〉,f)来说,RPKI完全不能进行抵御,而BGPsec,Path-end,ASPA和FSBGP都具有一定的防御能力,但是由于BGPsec需要对整条AS路径嵌套签名,因此在部分部署时效果低于其他3种安全路由机制.当劫持者进行盲目的2跳错误链路劫持(〈A,X,V〉,f)时,由于X-V可能是真实存在的链路,因此Path-end仍具有比BGPsec更好的防御效果,但不如ASPA和FSBGP的安全性.若劫持者进行理智的2跳错误链路劫持(〈A,N,V〉,f),此时的N是V的合法邻居,链路N-V真实存在,因此它能够完全绕过Path-end的源端检验,使其与RPKI一样不产生防御效果.同时,ASPA对此类劫持的抵御能力也不如FSBGP,这主要因为ASPA仅对来自客户和同伴的路由进行检验,而FSBGP的部署AS会对所有路由更新进行签名验证.
我们将以上分析和实验得到的结果进行总结,可以得到关于域间安全路由机制在不同时期的性质与选择策略如下:
1) 完全部署时
以上信息在各个企业间形成有效数据链通过EDI为信息交互通道形成信息共享机制,具体表现在:供应商-原料物流公司-生产加工商,EDI在这三者通过采购单、物流运输单、到货入库单形成有效数据集;生产商-物流公司-营销体系,EDI通过物流运输、销售单、营销合同作为信息互连互通的手段;社会公众-追溯平台,EDI作为查询信息的接口提供追溯信息的查询接口。
① BGPsec具有最强的防御能力,能够抵御所有类型的域间路由劫持;
② RPKI是开销相对较低的源验证方法,能够抵御最常见的路由劫持,即前缀劫持.
2) 部分部署时
① BGPsec在未广泛部署时防御能力不明显,不如其他类型的(部分)路径验证机制;
② Path-end可以对简单但影响力较大的1跳错误链路劫持有很好的防御能力,但不适用于更复杂的劫持类型;
③ ASPA和FSBGP对错误链路劫持都具有较好的部分部署收益,其中FSBGP的防御效果更好,但是与ASPA相比也需要路由器增加对签名验证的计算和存储能力;
④ RPKI是多种过渡时期安全机制的基础.
为了降低路由劫持对互联网带来的危害,研究人员提出了多种域间安全路由机制,其中,诸如RPKI和BGPsec机制已成为IETF组织标准化并积极推动部署,ASPA机制也正在标准化的进程之中.虽然BGPsec可以为域间路由带来最高安全等级的防御,基本杜绝路由劫持的产生,但由于部署成本和网络隐私等问题难以短时间内全面部署.要想缩短这一过渡时期需要对各类域间安全路由机制的防御能力有更深入的了解,以指导AS管理者认识各种机制的特点和能够提供的安全收益,作出符合自身需求的安全选择.
基于此,本文介绍了互联网中最常见的4类路由劫持,即错误源劫持、1跳错误链路劫持、盲目的2跳错误链路劫持和理智的2跳错误链路劫持;比较了几种典型的劫持防御机制的机理,包括RPKI,BGPsec,Path-end,ASPA和FSBGP;分析了完全部署时这些机制抵御的路由劫持类型,并模拟实验了在部分部署时期它们对常见类型的劫持能产生的防御作用.