本申请涉及路由安全技术领域,具体涉及一种路由起源授权的自动签发方法和装置。
背景技术:
互联网被划分为许多较小的自治系统(autonomoussystem,as),目前,自治系统之间的路由选择协议是边界网关协议(bordergatewayprotocol,bgp)。bgp将为数众多、拓扑各异、大小不一的as连接在一起并相互交换路由信息。
作为路径矢量协议,bgp在传播路由时使用update消息携带路径信息。路径信息用于指示到达该路由的网络拓扑,也用于路由选择。bgp传播的路径信息主要包含网络层可达信息(networklayerreachabilityinformation,简称nlri)和路径属性(pathattribute)。nlri包含ip地址前缀和长度,用于标识目的网络的cidr地址。路径属性描述到达该cidr地址的路由的属性。其中as_path属性列出了到达目的网络所经过的一串as路径。
如图1所示,自治系统as1是ip地址前缀16.1.0.0/16的合法持有者,它通过bgp的update消息向外通告nlri为16.1.0.0/16,as_path为1的路由,该路由通告被as2接收到;as2一方面将目的地址包含在16.1.0.0/16地址块中的ip数据包经该路由发送给as1,另一方面把自己的as号加到as_path的最前端,并继续向外通告该路由,即向外通告nlri为16.1.0.0/16,as_path为21的路由。
然而,bgp协议在安全方面的设计存在较大的不足。针对bgp的安全问题,互联网码号资源公钥基础设施(resourcepublickeyinfrastructure,rpki)被设计出来。它的基本思想是构建一个pki(公钥基础设施)来完成对互联网码号资源(internetnumberresource,inr)的所有权(分配关系)和使用权(路由起源授权,routeoriginationauthorizations,简称roa)的认证,用这些“认证信息”来指导bgp路由器,帮助其检验bgp消息的真实性,从而避免域间路由劫持。其中,inr包含ip资源(ip地址前缀)和as资源(as号)。
如图2所示,rpki主要包括ca(certificationauthority,数字证书认证机构)和rp(relyingparty,依赖方)两个机构。ca机构负责资源分配,即进行证书及相关签名对象的颁发工作,图中的iana、apnic、cnnc等均为ca机构。rp机构用来同步ca机构颁发的证书及签名对象,bgp路由模块通过向rp获取路由授权信息进行路由的起源认证。
在rpki范畴内,任何inr持有者均是一个ca,每一个inr持有者都可以将其持有的inr的一部分拿出来,进一步分配给其他机构,每一次inr分配行为都对应一张资源证书(resourcecertification,rc)的签发,且该资源证书由签发者进行签名。
如果该体系中的某个资源证书持有者拥有供自己使用(而不是向下分配)的ip地址前缀,需要授权一个as对该ip前缀发起路由通告时,需要使用自己的ca证书签发一张ee(endentity,末端实体)资源证书,然后用该ee证书签发一条路由起源授权(routeoriginauthorizations,roa),其中包含若干个三元组<prefix,maxlength,asα>,其含义为:授权as号为α的自治域发起对前缀prefix,以及它所有直到长度为maxlength的子前缀的路由起源通告。为了方便起见,roa通常使用以下的书写形式:<10.1.0.0/16-18,asα>,其中prefix为10.1.0.0/16,maxlength为18,被授权的自治系统为asα。
在rpki部署环境中,当bgp边界路由器收到一个bgp消息时,它可根据从rp获取的inr使用权信息集合执行路由起源验证,并根据验证结果和本地策略决定是否接受该bgp消息。例如,针对上例bgp消息的验证过程如下所示:
a)遍历inr使用权信息集合,找出ip前缀包含或者等于10.1.0.0/16的所有inr使用权信息,得到一个集合,记做“候选inr使用权信息集”;
b)如果“inr使用权信息集合”为空,则该bgp消息的验证结果为“未知”;
c)如果“inr使用权信息集合”不为空,且存在任何一个inr使用权信息的源as等于as1,则该bgp消息的验证结果为“有效”;
d)否则,该bgp消息的验证结果为“无效”。
由于rpki的证书发布体系是inr分配体系的一种镜像,因此,rpki的资源分配和资源使用必须遵循一定的inr分配原则,也就是说,子证书/roa中的资源一定要包含在其父证书中,称之为“纵向inr资源包含关系”,rp的资源包含关系验证算法正是出于这一目的以检测inr持有者资源分配过程中存在的不规范。为了防止资源转移过程中,基于“makebeforebreak”原则签发的资源证书导致的域间路由系统的不稳定,五大rir(regionalinternetregistry,区域性互联网注册机构)信任锚点持有的自签名资源证书中的inr扩展项由自持有地址池变更为“0/0”,也就是包含所有ipv4地址、ipv6地址和asn。因此,inr重复分配以及inr重复使用等不正常行为发生的可能性急剧增加,并可能对域间路由系统产生不利影响。
另外,自治系统在域间路由系统中广播的ip前缀与实际持有的ip前缀并没有严格的一一对应关系,比如,流量工程和负载均衡均需要更细粒度的流量控制,inr持有者需要广播比其持有ip前缀更具体的子前缀,于是,rpki使得inr持有者可通过设置roa的maxlength字段来达到以上目的。另外,由于多宿主和bgpanycast的存在,rpki允许将同一个ip前缀授权给不同的自治系统,也就是说,包含相同ip前缀但是不同asn的roa允许存在,并且,随着rpki对as0roa的支持,inr持有者可通过该机制对其持有的ip前缀表达出现在域间路由系统中的否定意愿。但是,inr持有者可能错误配置maxlength字段或者错误签发roa,从而导致inr重复分配和重复使用这一异常情况的发生,例如,inr持有者将同一个ip前缀既分配给其客户又留给自己使用,表现为客户的资源证书中包含该ip前缀,同时其签发的roa包含该ip前缀,或者,inr持有者既将同一个ip前缀保留给将来使用,也授权给自治系统,表现为针对同一个ip前缀,as0roa和asα(α≠0)roa均存在。
相关技术中,rpki资料库中存在许多roa,有些roa虽然能够通过rp的验证流程被视为有效,但是由于rp的验证流程并不进行“横向的inr包含关系”检查,即inr持有者是否重复分配以及重复授权了其持有的inr,因此,这些roa被bgp边界路由器使用后,仍然会对域间路由系统产生威胁。为最大力度地保证rpki提供的安全认证服务,需要从源头上切断这种有效但是违反inr使用规则的roa,减少由于人工操作导致的配置错误和签发错误。
技术实现要素:
为至少在一定程度上克服相关技术中存在的问题,本申请提供一种路由起源授权的自动签发方法和装置。
根据本申请实施例的第一方面,提供一种路由起源授权的自动签发方法,包括:
将ip前缀划分到多个不同的前缀集合中;
根据预设的使用策略对多个所述前缀集合进行检验;
检验通过后,根据不同的前缀集合为每个前缀集合中的ip前缀签发相应的路由起源授权或资源证书。
进一步地,所述将ip前缀划分到多个不同的前缀集合中,包括:
将持有的ip前缀拆分为若干ip子空间;
根据预设的使用策略将所述ip子空间划分到多个不同的前缀集合中。
进一步地,所述根据预设的使用策略将所述ip子空间划分到多个不同的前缀集合中,包括:
根据预设的使用策略确定自己使用的ip子空间、保留为将来使用的ip子空间、分配给客户使用的ip子空间;
将自己使用的ip子空间划分到授权前缀集中;
将保留为将来使用的ip子空间划分到保留前缀集中;
将分配给客户使用的ip子空间划分到分配前缀集中;
其中,所述授权前缀集、保留前缀集和分配前缀集均为预先准备好的前缀集合。
进一步地,所述根据预设的使用策略对多个所述前缀集合进行检验,包括:
检验多个所述前缀集合之间是否存在冲突;
如果多个所述前缀集合中包括分配前缀集,则检验分配前缀集的内部是否存在冲突。
进一步地,所述检验多个所述前缀集合之间是否存在冲突,包括:
对全部的前缀集合求并集;
对任意两个前缀集合求交集;
如果前缀集合的并集等于全部ip前缀的集合,且任意两个前缀集合之间的交集为空集,则多个前缀集合之间不存在冲突。
进一步地,所述检验分配前缀集的内部是否存在冲突,包括:
检验分配前缀集内部的所有子集的并集是否等于分配前缀集;
检验分配前缀集内部的任意两个子集之间的交集是否为空集;
如果并集等于分配前缀集且交集为空集,则分配前缀集的内部不存在冲突。
进一步地,所述根据不同的前缀集合为每个前缀集合中的ip前缀签发相应的路由起源授权或资源证书,包括:
获取授权自治系统信息和客户信息;
根据所述授权自治系统信息为授权前缀集中的ip前缀签发第一路由起源授权;其中,每个自治系统对应签发一个第一路由起源授权;
根据预设的配置信息为保留前缀集中的ip前缀签发第二路由起源授权;
根据所述客户信息为分配前缀集中的ip前缀签发资源证书;其中每个客户对应签发一张资源证书。
根据本申请实施例的第二方面,提供一种路由起源授权的自动签发装置,包括:
划分模块,用于将ip前缀划分到多个不同的前缀集合中;
检验模块,用于根据预设的使用策略对多个所述前缀集合进行检验;
签发模块,用于在检验通过后,根据不同的前缀集合为每个前缀集合中的ip前缀签发相应的路由起源授权或资源证书。
根据本申请实施例的第三方面,提供一种计算机设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述存储器中的计算机程序,以实现如上任意一种实施例所述方法的操作步骤。
根据本申请实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上任意一种实施例所述方法的操作步骤。
本申请的实施例提供的技术方案具备以下有益效果:
本申请的方案基于inr使用策略,检查ip前缀是否满足inr使用策略,是否存在inr分配和授权冲突;当检查通过后,自动根据inr持有者的意愿签发相应的资源证书和路由起源授权,从而防止由于人工操作导致的inr重复分配和inr重复授权,而这种异常是无法被rpki依赖方所检测到的。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是一个bgp协议更新消息实例的示意图。
图2是rpki体系的结构示意图。
图3是根据一示例性实施例示出的一种路由起源授权的自动签发方法的流程图。
图4(a)~(c)是根据一示例性实施例示出的一种前缀树的示意图。
图5是根据一示例性实施例示出的一种路由起源授权的自动签发装置的电路框图。
图6是根据一示例性实施例示出的一种计算机设备的电路结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的方法和装置的例子。
本申请提供的路由起源授权的自动签发方法,可以应用于如图2所示的rpki体系中。任何inr持有者均是一个ca,该方法可以应用于inr持有者本身,也可以应用于inr持有者的辅助设备。
图3是根据一示例性实施例示出的一种路由起源授权的自动签发方法的流程图。该方法可以包括以下步骤:
步骤s1:将ip前缀划分到多个不同的前缀集合中;
步骤s2:根据预设的使用策略对多个所述前缀集合进行检验;
步骤s3:检验通过后,根据不同的前缀集合为每个前缀集合中的ip前缀签发相应的路由起源授权或资源证书。
本申请的方案基于inr使用策略,检查ip前缀是否满足inr使用策略,是否存在inr分配和授权冲突;当检查通过后,自动根据inr持有者的意愿签发相应的资源证书和路由起源授权,从而防止由于人工操作导致的inr重复分配和inr重复授权,而这种异常是无法被rpki依赖方所检测到的。
下面结合具体的应用场景,对本申请的方案进行拓展说明。
如图4(a)所示,inr持有者从rir或者isp处获取的ip前缀p表示的ip地址空间可由一棵前缀树表示。在这棵树中,每个叶子节点是只含单个ip地址的前缀(或称为ip地址),每个非叶子节点有两个子节点,与之对应地,每个ip前缀有两个子前缀。另外,在并未对ip前缀p根据使用方式进行划分之前,inr持有者可以在域间路由系统中广播p以及其包括p12,p34,p1,p2,p3和p4在内的所有子前缀集。当inr持有者按照图4(b)对ip前缀p进行划分后,即p1为自己使用,p2保留为将来使用,p3和p4分配给其客户使用,inr持有者仅仅能够广播自己持有并使用的ip前缀,包括p,p12,p34,p1及其子前缀,如图4(c)所示。
于是,inr持有者对其持有的ip前缀p可自定义如下inr使用策略,inr持有者首先将ip前缀p分为n个子空间p1,p2,...,pn-1,pn,其中:
自己使用的ip空间为p1,p2,...,pl,称之为授权前缀集(prefix(authorized));
保留为将来使用的ip空间为pl+1,pl+2,...,pm,称之为保留前缀集(prefix(reserved));
分配给客户使用的ip空间为pm+1,pm+2,...,pn,称之为分配前缀集(prefix(allocated))。
一些实施例中,所述将ip前缀划分到多个不同的前缀集合中,包括:
将持有的ip前缀拆分为若干ip子空间;
根据预设的使用策略将所述ip子空间划分到多个不同的前缀集合中。
一些实施例中,所述根据预设的使用策略将所述ip子空间划分到多个不同的前缀集合中,包括:
根据预设的使用策略确定自己使用的ip子空间、保留为将来使用的ip子空间、分配给客户使用的ip子空间;
将自己使用的ip子空间划分到授权前缀集中;
将保留为将来使用的ip子空间划分到保留前缀集中;
将分配给客户使用的ip子空间划分到分配前缀集中;
其中,所述授权前缀集、保留前缀集和分配前缀集均为预先准备好的前缀集合。
本方案需要检测inr持有者自定义的inr使用策略是否有自相矛盾的地方,以及根据检测有效的inr使用策略签发roa和资源证书。首先,该机制检测inr持有者自定义的inr使用策略的正确性,即需要满足以下两个条件:
prefix(authorized)∪prefix(reserved)∪prefix(allocated)=p;
其次,该机制可根据inr持有者针对授权前缀集需要授权的自治系统签发asα(α≠0)roa,并为保留前缀集签发as0roa,同时为分配给客户的分配前缀集签发资源证书,并根据客户的数量决定资源证书的数量。需要注意的是,由于负载均衡、流量工程以及多宿主的原因,同一个ip前缀可能授权给多个自治系统,即多个roa可能包含同一ip前缀,但是具有不同的asn。因此,在签发资源证书和roa之前,该机制将会进行以下检查,以确定资源证书和roa签发的正确性。
(1)针对prefix(authorized),p1∪p2∪,...∪pl=prefix(authorized),且
(2)针对prefix(reserved),pl+1∪pl+2∪,...∪pm=prefix(reserved),且
(3)针对prefix(allocated),pm+1∪pm+2∪,...∪pn=prefix(allocated),且
一些实施例中,所述根据预设的使用策略对多个所述前缀集合进行检验,包括:
检验多个所述前缀集合之间是否存在冲突;
如果多个所述前缀集合中包括分配前缀集,则检验分配前缀集的内部是否存在冲突。
一些实施例中,所述检验多个所述前缀集合之间是否存在冲突,包括:
对全部的前缀集合求并集;
对任意两个前缀集合求交集;
如果前缀集合的并集等于全部ip前缀的集合,且任意两个前缀集合之间的交集为空集,则多个前缀集合之间不存在冲突。
一些实施例中,所述检验分配前缀集的内部是否存在冲突,包括:
检验分配前缀集内部的所有子集的并集是否等于分配前缀集;
检验分配前缀集内部的任意两个子集之间的交集是否为空集;
如果并集等于分配前缀集且交集为空集,则分配前缀集的内部不存在冲突。
需要说明的是,只要求分配前缀集中的子集不能存在交集,表现两个资源证书中的inr不能重复,否则同一个inr分配给不同的客户。而对于保留前缀集和授权前缀集,允许它们的子集存在交集。
一些实施例中,所述根据不同的前缀集合为每个前缀集合中的ip前缀签发相应的路由起源授权或资源证书,包括:
获取授权自治系统信息和客户信息;
根据所述授权自治系统信息为授权前缀集中的ip前缀签发第一路由起源授权;其中,每个自治系统对应签发一个第一路由起源授权;
根据预设的配置信息为保留前缀集中的ip前缀签发第二路由起源授权;
根据所述客户信息为分配前缀集中的ip前缀签发资源证书;其中每个客户对应签发一张资源证书。
为进一步详述本申请的技术方案,结合详细案例对整体方案进行说明。
inr持有者alice从其isp处获取了一个ip前缀p=10.1.0.0/16,并且将其划分为四个子空间,分别为p1=10.1.0.0/18,p2=10.1.64.0/18,p3=10.1.128.0/18和p4=10.1.192.0/18,并为其自定义了inr使用策略,即p1为自己使用,用于本网络的主机编号,p2保留为将来使用,p3和p4分别分配给客户bob和客户carol。
该机制可根据inr持有者自定义的inr使用策略得出授权前缀集prefix(authorized)=p1,保留前缀集prefix(reserved)=p2,分配前缀集prefix(allocated)=p3,p4。得到这三个集合后,该机制对其进行冲突检查,通过检查后即可判断该inr使用策略满足相应条件,即prefix(authorized)∪prefix(reserved)∪prefix(allocated)=p,
在进行资源证书和roa签发之前,该机制需要对每一个前缀集进行检查:
p1=prefix(authorized);
p2=prefix(reserved);
p3∪p4=prefix(allocated);
与此同时,该机制根据从inr持有者处获取的授权自治系统信息和maxlength信息,以及客户信息,从而确定asα(α≠0)roa的签发数量(一个asn对应一个roa)和资源证书的数量(一般情况下,一个客户对应一张资源证书)。as0roa的数量相对而言较为灵活,用户可进行设置或者选择默认设置,默认设置下,该机制将所有保留前缀集中的ip前缀全部通过一个as0roa进行签,以表明这些ip前缀不应出现在域间路由系统中。
于是,该机制签发了以下四个rpki数据对象,它们分别是:
asαroa(p1,maxlength,asα);
as0roa(p2,maxlength,as0);
rcbob(p3);
rccarol(p4)。
应当理解的是,虽然图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图5是根据一示例性实施例示出的一种路由起源授权的自动签发装置的电路框图。参照图5,该装置包括:
划分模块,用于将ip前缀划分到多个不同的前缀集合中;
检验模块,用于根据预设的使用策略对多个所述前缀集合进行检验;
签发模块,用于在检验通过后,根据不同的前缀集合为每个前缀集合中的ip前缀签发相应的路由起源授权或资源证书。
关于上述实施例中的装置,其中各个模块执行操作的具体步骤已经在有关该方法的实施例中进行了详细描述,此处不再详细阐述说明。上述数据缓存处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本申请的实施例还提供一种计算机设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述存储器中的计算机程序,以实现一种路由起源授权的自动签发方法:将ip前缀划分到多个不同的前缀集合中;根据预设的使用策略对多个所述前缀集合进行检验;检验通过后,根据不同的前缀集合为每个前缀集合中的ip前缀签发相应的路由起源授权或资源证书。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于接入网络,从而与外部的终端进行通信连接。该计算机程序被处理器执行时以实现一种路由起源授权的自动签发方法。
本申请的实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现一种路由起源授权的自动签发方法:将ip前缀划分到多个不同的前缀集合中;根据预设的使用策略对多个所述前缀集合进行检验;检验通过后,根据不同的前缀集合为每个前缀集合中的ip前缀签发相应的路由起源授权或资源证书。
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。