首页> 中国专利> 高效的域间路由协议前缀劫持检测方法

高效的域间路由协议前缀劫持检测方法

摘要

本发明为高效的域间路由协议前缀劫持检测方法,首先通过实时监控控制层路由异常驱动前缀劫持的检测过程,若发现路由异常,收集同一时刻异常前缀在多个路由服务器上的数据层可达性状态和控制层路由状态,计算状态信息向量的相关系数,判断路由异常是否为前缀劫持;本发明在确保检测准确率的同时极大的降低了检测延时,且对外部检测节点的依耐性很低,无需安装额外的检测软件,能够高效地实现对域间路由协议中前缀劫持的检测。

著录项

  • 公开/公告号CN102315988A

    专利类型发明专利

  • 公开/公告日2012-01-11

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN201110273857.7

  • 发明设计人 王之梁;向阳;尹霞;吴建平;

    申请日2011-09-15

  • 分类号H04L12/26(20060101);H04L12/56(20060101);

  • 代理机构61215 西安智大知识产权代理事务所;

  • 代理人贾玉健

  • 地址 100084 北京市海淀区100084信箱82分箱清华大学专利办公室

  • 入库时间 2023-12-18 04:08:41

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-09-04

    授权

    授权

  • 2012-03-07

    实质审查的生效 IPC(主分类):H04L12/26 申请日:20110915

    实质审查的生效

  • 2012-01-11

    公开

    公开

说明书

技术领域

本发明属于互联网技术领域,涉及域间路由协议安全领域,具体涉及一 种高效的域间路由协议前缀劫持检测方法。

背景技术

互联网由上万个独自运维的自治系统AS(Autonomous System)构成。 域间路由协议BGP(Border Gateway Protocol)控制着AS之间的报文转发 路径,对互联网的可靠性有着及其重要的影响。但是,由于在设计之初并没 有考虑安全性,BGP面临着严峻的安全问题,且至今没有被很好的解决。

具体来说,由于从邻居AS接收到的路由信息无法进行验证,错误的路由 信息会导致报文沿着错误的路径转发,进而使得IP地址前缀遭到劫持,影响 互联网的正常通信,造成经济损失。例如,美国国防部拥有的地址前缀经常 被注册于俄罗斯等国家的AS所劫持;2008年4月,巴基斯坦电信劫持了 YouTube的地址前缀,使其从全球互联网上“消失”了长达2个小时。

为了增强BGP协议的安全性,研究者提出了一系列方案。这些方案分为 两类:路由信息加密和前缀劫持检测。路由信息加密方案通常基于公钥基础 设施PKI(Public Key Infrastrueture)来验证路由签名信息的正确性,但 这类方案部署难度大,需要升级互联网上所有的边界网关路由器。前缀劫持 检测方案旨在通过监控域间路由系统来发现异常路由信息,并判断是否为前 缀劫持。在路由信息加密方案完全部署之前,前缀劫持检测方案作为一种有 效的手段,能为网络管理人员提供有价值的参考信息,帮助网络管理人员快 速准确地定位错误、修正路由、弥补损失。本发明提出的检测方法为前缀劫 持检测方案的一种。

互联网上的路由信息传播非常迅速,前缀劫持往往能在短时间内影响大 量AS,这就要求检测系统能够尽快地发现劫持,为网络管理人员争取时间。 另外,互联网上可供公开访问的探测节点对可执行的操作有着严格的限制, 这就要求检测系统尽量减少对外部检测节点的依赖,以降低实现、部署和维 护的难度。

现有的前缀劫持检测方案主要分为三大类:路由控制层检测方案,路由 数据层检测方案,控制层和数据层相结合的检测方案。路由控制层检测方案 的优点在于:可以利用实时BGP数据实现实时检测;能够掌握前缀劫持源的 信息。其缺点在于:检测准确率太低;生成的前缀劫持告警太多。

路由数据层检测方案的优点在于:检测准确率高;生成的前缀劫持告警 少。其缺点在于:需要进行持续性检测;大范围部署会对互联网核心网产生 较大压力,可扩展性不强;不能掌握劫持源的信息;不能实现实时检测,往 往需要耗费数分钟甚至数十分钟;不能检测子前缀劫持。

控制层和数据层相结合的检测方案综合了前两类方案的优点。但是已有 的此类检测方案存在以下不足:控制层异常仅仅作为数据层探测的驱动,孤 立的分析两个层面的检测信息,不能对检测信息进行关联;使用耗时的数据 层探测命令,使得检测延迟高达数分钟甚至数十分钟;使用复杂的数据层探 测命令,使得检测系统对外部探测节点的权限开放要求较高,部署和实现的 难度较大。

因此,需要本领域研究人员迫切解决的一个问题就是:如何在确保检测 准确率的同时,降低检测延迟和部署复杂度。本发明提出了一种高效的域间 路由协议前缀劫持检测方法。首先,通过实时接收和分析分布于全球的多个 域间路由监控点(BGP monitor)的BGP更新消息,统计路由信息,发现异常 路由信息,并形成本地的路由信息数据库;其次,一旦在控制层上发现异常 路由信息,检测系统同时登陆多个路由服务器(Routeserver),在每个路由 服务器上同时保持两个登陆连接,分别执行ping命令探测异常网络前缀中活 动IP地址的可达性,以及执行show ip bgp命令检查异常前缀在同一个路由 服务器上的BGP路由信息;最后,通过将从各个路由服务器上获取的当前时 刻数据层可达信息和控制层路由信息进行关联,计算此次控制层路由异常事 件在当前时刻的指纹(Fingerprint),判断路由异常是否由前缀劫持导致。

发明内容

为了克服上述现有技术的不足,本发明的目的在于提供一种高效的域间 路由协议前缀劫持检测方法,首先通过对多个域间路由监控点的BGP更新消 息进行实时监控来发现路由异常,其次将多个路由服务器上的异常前缀的数 据层可达信息和控制层路由信息进行关联,快速准确地识别前缀劫持。

为了实现上述目的,本发明采用的技术方案是:

高效的域间路由协议前缀劫持检测方法,所述方法是在任何一台连接到 互联网的计算机上按以下步骤实现的:

步骤1:主线程实时监控BGP路由异常,该步骤依次包含以下各子步骤:

步骤1.1:从M个域间路由监控点实时接收BGP路由更新消息,其中M>1;

步骤1.2:提取当前接收到的路由更新消息中的IP地址前缀f和AS路 径p={an,an-1,…,a1,a0},其中ai为此路由信息经过的AS号,a0为路由信 息的源AS号,0≤i≤n;

步骤1.3:检查路由信息是否出现异常,依次包括以下各子步骤:

步骤1.3.1:检查前缀f、源AS a0组成的二元组是否存在于本地路由信 息数据库中,若不存在则执行步骤1.4,否则执行步骤1.3.2;

步骤1.3.2:检查路径p中任意相邻AS二元组<ai+1,ai>是否存在于本地 路由信息数据库中,若不存在则执行步骤1.4,否则执行步骤1.3.3,其中0 ≤i<n;

步骤1.3.3:检查路径p中的任意相邻AS三元组<ai+1,ai,ai-1>是否存 在于本地路由信息数据库中,若不存在则执行步骤1.4,否则执行步骤1.1 其中0<i<n;

步骤1.4:派生出检测线程执行步骤2,主线程继续循环执行步骤1.1;

步骤2:检测线程快速检测当前路由异常是否为前缀劫持,该步骤依次 包含以下各子步骤:

步骤2.1:获取异常前缀f,获取前缀f中的活动IP地址a;

步骤2.2:派生出N组子线程(DT1,CT1),…,(DTi,CTi),…,(DTN, CTN)同时获取N个路由服务器R1,…,Ri,…,RN上前缀f的数据层可达性 状态和控制层路由状态,其中DTi执行步骤2.2.1,CTi执行步骤2.2.2,检 测线程自身继续执行步骤2.3,其中N>1:

步骤2.2.1:数据层探测子线程DTi循环探测活动IP地址a的可达性, 线程最大执行时间为MAX_T秒,该步骤依次包括以下各子步骤:

步骤2.2.1.1:线程DTi登录路由服务器Ri

步骤2.2.1.2:在Ri上执行ping命令探测IP地址a的可达性,将当前 时刻t下Ri到IP地址前缀f的数据层状态记为dit若ping探测结果为不可 达则dit赋值为0,否则dit赋值为1;

步骤2.2.1.3:若线程DTi持续执行时间大于等于MAX_T秒则终止,否则 继续执行步骤2.2.1.2;

步骤2.2.2:控制层检查子线程CTi循环检查异常前缀f的BGP路由信息, 线程最大执行时间为MAX_T秒,该步骤依次包括以下各子步骤:

步骤2.2.2.1:线程CTi登录路由服务器Ri

步骤2.2.2.2:在Ri上执行show ip bgp命令检查异常前缀f的BGP路 由信息,提取最优路由,将当前时刻t下Ri上前缀f的控制层状态记为cit, 若最优路由中含有步骤1.3中监控到的路由异常则cit赋值为0,否则cit赋 值为1;

步骤2.2.2.3:若线程DTi持续执行时间大于等于MAX_T秒则终止,否则 继续执行步骤2.2.2.2;

步骤2.3:获取当前时刻t各子线程收集到的数据层状态{d1t,…,dit,…, dNt}及控制层状态{c1t,…,cit,…,cNt};

步骤2.4:计算路由异常事件在当前时刻t时的指纹信息,即N维状态 向量Dt={d1t,…,dit,…,dNt}和Ct={c1t,…,cit,…,cNt}的关联系数:

FIGt=Σi=1N[(cit-Ct)(dit-Dt)]Σi=1N[(cit-Ct)2]×Σi=1N[(dit-Dt)2]

其中:

Ct=Σi=1NcitN,Dt=Σi=1NditN

步骤2.5:若FIGt大于等于阈值λ,则此次路由异常由前缀劫持所导致, 结束所有N组子线程,步骤2结束;

步骤2.6:若子线程尚未结束,则检测线程继续执行步骤2.3,否则将步 骤1.3中异常路由的<前缀f,源AS a0>二元组、AS路径p中所有相邻AS二 元组及所有相邻AS三元组加入到本地路由信息数据库中,步骤2结束。

所述M个域间路由监控点为多于1个的任意多个。

所述N个路由服务器为多于1个的任意多个。

所述“线程”用“进程”代替。

本发明与现有技术相比,具有以下优点:

(1)低误报率:本发明通过深度关联数据层可达信息和控制层路由信 息进一步降低了误报率,而现有方法即使综合考虑了两个层面的信息,也只 是在路由异常发生后孤立的分析数据层信息;

(2)低误报率:本发明的对路由异常的监控涵盖了更广的范围,包括 前缀-源AS二元组异常、邻居AS二元组异常和路由策略AS三元组异常,而 现有方法通常只考虑第一种异常;

(3)实时检测:本发明在前缀劫持识别的过程中仅仅执行简单的命令, 如ping、show ip bgp,检测延时往往小于10秒,而现有方法的检测延时通 常高达数分钟甚至数十分钟;

(4)易于部署:本发明对外部节点的依赖性很低,直接使用了现存的 公共服务,不需要在外部节点安装额外的软件;

同时,由于本发明综合考虑了控制层和数据层的信息,也具有现有方法 的优点:

(5)可扩展:前缀劫持检测过程仅仅在路由出现异常时被触发,无需 持续性检测;

(6)攻击者信息:本方法掌握了控制层路由信息,能检测劫持源;

(7)子前缀劫持:本方法监控了路由异常,能检测子前缀劫持。

附图说明

图1为本发明流程图,其中,实线箭头表示执行过程,虚线箭头表述派生 线程,双向箭头表示信息交互。

图2为本发明所监控的三种路由异常示意图,其中实线箭头表示正常路 由更新,虚线箭头表示异常路由更新,图2(a)为前缀-源AS异常的示意图, 图2(b)为路径中邻居AS二元组异常的示意图,图2(c)为路径中路由策略AS 三元组出现异常的示意图。

图3为本发明的实施例,整个检测系统包括路由异常监控模块、前缀劫 持检测模块和活动IP收集模块:(1)路由异常监控模块持续接收来自实时 BGP更新数据源(如BGPmon)的路由信息,并分析是否发生路由异常;(2) 前缀劫持检测模块由路由异常监控模块驱动运行,通过登陆公开的路由服务 器快速检测路由异常是否为前缀劫持;(3)活动IP收集模块为辅助模块, 通过分析可公开下载的每日IP地址可达性探测结果(如iPlane),收集互 联网上的活动IP地址,供前缀劫持检测模块所用。

具体实施方式

下面结合附图和实施例对本发明做进一步详细说明。

如图1所示,本发明所述的高效的域间路由协议前缀劫持检测方法依次 有以下步骤:

步骤1,主线程通过对多个域间路由监控点的BGP更新消息进行实时监 控来发现路由异常;

步骤2,检测线程,主要是检测其在多个路由服务器上探测异常前缀的 数据层可达性状态和控制层路由状态,对状态进行关联,快速准确地检测路 由异常是否为前缀劫持。

下面,将对有关步骤进行详细说明:

步骤1,对多个域间路由监控点的BGP更新消息进行实时监控来发现路 由异常:

首先主线程从M个(M>1)域间路由监控点实时接收BGP路由更新消息。 对于接收到的每一条路由更新消息,提取其中的IP地址前缀f和AS路径 p={an,an-1,…,a1,a0}。这里ai(0≤i≤n)为此路由更新消息经过的AS 号,a0为路由更新消息的源AS号。接下来主线程对路由信息进行检查,判断 是否发生异常。具体来讲,主线程依次检查<前缀f,源AS a0>组成的二元组、 路径p中的任意相邻AS二元组以及任意相邻AS三元组是否存在于本地路由 信息数据库中。若上述信息均存在,则此路由为正常路由。若任意上述信息 不存在于本地路由信息数据库中,则此路由信息出现异常,将派生出检测线 程执行步骤2,验证其是否由前缀劫持导致。

已有一些公开的服务提供域间路由监控点的BGP路由更新消息,其中 BGPmon服务提供实时的BGP更新。该服务采集了分布于70多个AS的130多 台域间路由器上宣告的BGP更新消息,用户可以通过telnet实时接收这些路 由信息。

图2所示为本方法所监控的三种路由异常示意图。图2(a)为前缀-源AS 异常的示意图。图中前缀f真正的源为AS1,于是AS3宣告的到达前缀f的 路径为<3>的路由为错误路由,会导致前缀f被劫持。图2(b)为邻居AS二元 组异常的示意图。图中AS 1和AS3并没有真正相连,于是AS3宣告的路径为 <3,1>的路由为错误路由,会导致前缀f被劫持。图2(c)为路由策略AS三元 组异常的示意图。图中AS2由于自身路由策略的限制,并不能将从AS1学习 到的路由通告到AS3,于是AS3向外宣告的路径为<3,2,1>的路由为错误路由, 会导致前缀f被劫持。

已有方法通常只监控前缀-源AS异常,极少数监控AS二元组异常。通过 在控制层监控上述三类域间路由异常,可以发现绝大多数前缀劫持导致的路 由异常。这是因为,域间路由协议BGP是一种基于策略的路由。AS会根据自 身的路由策略决定是否向自己的邻居宣告某些路由。而BGP又是一种基于邻 居AS关系的路由协议,AS通常只会考虑邻居AS,而不会区分考虑路径中不 与自身相邻的AS。例如,在路径p={an,an-1,…,a1,a0}中,当AS ai在决 定是否将从ai-1学来的路由通告到ai+1时,ai只会考虑它与ai-1、ai+1的关系, 而不会考虑路径中的其它AS。这种基于邻居的路由策略是BGP最基本的特点。 虽然也可能存在其它复杂的路由策略,但根据whois数据库中的统计结果来 看,只有极少数路由策略会要求AS考虑其它不与自身相邻的AS。因此,本 发明中对图2所示的三类路由异常的监控,能发现绝大多数前缀劫持导致的 路由异常。

步骤2,检测线程在多个路由服务器上探测异常前缀的数据层可达性状 态和控制层路由状态,对状态进行关联,快速准确地识别前缀劫持。

首先,检测线程获取异常前缀f和f中的活动IP地址a。活动IP地址 的获取方法有多种,实践中一般将f中的第一个IP地址x.x.x.1作为候选, 同时从可公开下载的每日IP地址可达性探测结果(如iPlane)中提出换后 IP,并对所有候选地址进行确认,更新活动IP数据库,以供检测线程所用。 图3所示的实施例中,活动IP收集模块是一个辅助性模块,实践中可灵活实 现。

然后,检测线程派生出N组(N>1)子线程(DT1,CT1),…,(DTi,CTi),…, (DTN,CTN)同时获取N个路由服务器R1,…,Ri,…,RN上前缀f的数据层 可达性状态和控制层路由状态。所有子线程的最大执行时间为MAX_T秒。其 中,数据层探测子线程DTi在Ri上循环执行ping命令探测活动IP地址a的 可达性,将当前时刻t下Ri到IP地址前缀f的数据层状态记为dit,若ping 探测结果为不可达则dit赋值为0,否则dit赋值为1。控制层检查子线程CTi 在Ri上循环执行show ip bgp命令检查异常前缀f的BGP路由信息,提取最 优路由,将当前时刻t下Ri上前缀f的控制层状态记为cit,若最优路由中含 有步骤(1.3)中监控到的路由异常则cit赋值为0,否则cit赋值为1。

与此同时,检测线程循环获取当前时刻t时各子线程收集到的数据层状 态{d1t,…,dit,…,dNt}及控制层状态{c1t,…,cit,…,cNt},计算路由异 常事件在当前时刻t时的指纹信息,即N维状态向量Dt={d1t,…,dit,…,dNt} 和Ct={c1t,…,cit,…,cNt}的关联系数:

FIGt=Σi=1N[(cit-Ct)(dit-Dt)]Σi=1N[(cit-Ct)2]×Σi=1N[(dit-Dt)2]

其中:

Ct=Σi=1NcitN,Dt=Σi=1NditN

若FIGt大于等于阈值λ,则此次路由异常由前缀劫持所导致,结束所有 N组子线程。若MAX_T秒内FIGt均小于阈值λ,则将步骤1中异常路由的< 前缀f,源AS a0>二元组、AS路径p中所有相邻AS二元组及所有相邻AS三 元组加入到本地路由信息数据库中,检测线程结束。

用数据层可达性状态Dt和控制层路由状态Ct的关联系数作为判断前缀劫 持的标准,其依据在于:若出现路由异常的AS均不能访问异常前缀f,而路 由正常的AS均能正常访问前缀f,则一般可认定此路由异常为前缀劫持。具 体来说,数据层可达性状态和Dt和控制层路由状态Ct的关系及其可能的路由 原因如下表所示:

表1

但是,由于域间路由信息存在一定的收敛时间,两个状态向量Dt和Ct的值一般都不会呈现如表1所示的理想值。因此本发明通过计算相关系数来 描述二者的正相关程度。相关系数越接近于1,说明路由异常为前缀劫持的 可能性越高。另外,同时登陆的路由服务器越多,检测的准确率会越高。根 据实践中能掌握的路由服务器数量,可将阈值λ设置为[0.5,1.0]之间的某 个值。

由于路由事件一般能在1分钟内收敛,实践中子线程的最长执行时间 MAX_T可取为120秒。另外,子线程只需在路由服务器上执行的命令(ping 和show ip bgp)都非常简单,而且不需要很高的访问权限。几乎所有公开 的Route-server和Looking-glass均允许任何用户执行上述命令。实践中很 容易通过脚本使用这些路由服务器,并不需要在这些节点上安装额外的软件。

实验和评价:

根据图3所示的实施例,我们实现了基于本发明的一个演示系统。系统 从BGPmon接收实时路由更新数据,监控路由异常。每天从iPlane下载IP 地址可达性探测结果,更新活动IP数据库。每当有路由异常发生时,同时登 录到40个公开的rout e-server上,获取异常前缀的数据层可达性状态和控 制层路由状态。每个子线程在route-server上执行的时间为MAX_T=120秒, 检测阈值λ设为0.6。

在检测系统开始运行后的两个月内,共监控到11688个路由异常,通过 系统的验证最终识别出68个可能的前缀劫持。这些前缀劫持的检测时延大多 数在10秒以内。

由此可见,本发明达到了预期目的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号