200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 一种基于区块链的可验证域间路由验证方法与流程

一种基于区块链的可验证域间路由验证方法与流程

时间:2023-12-06 06:51:07

相关推荐

一种基于区块链的可验证域间路由验证方法与流程

本发明涉及网络安全技术,尤其涉及用于发现和解决现有域间路由协议bgp存在的由路由单点攻击或路由多点合谋攻击引起的违反路由策略的问题的方法。

背景技术:

互联网域间路由的安全问题已经研究了很多年。大多数与安全相关的工作都集中在路由伪造上,如s-bgp(securebgp,安全域间路由协议)、sobgp(secureoriginbgp,安全源域间路由协议)、irv(inter-domainroutingvalidation,域间路由验证)等。s-bgp通过基于pki(publickeyinfrastructure,公钥基础设施)中的证书验证路由路径属性,来确保信息的安全性。sobgp只能提供起源身份验证,不能提供路径身份验证。irv是一种集中式解决方案,其操作与路由协议无关。它要求每个as向irv服务器报告,它与其他as的连接关系。相关研究将安全多方计算技术引到域间路由中,将私有信息分离到不同的计算实体(指计算机这类能进行运算的机器)中,并且结果由多个计算实体计算。还有相关研究在不揭示拓扑结构的情况下改变路由通告的原理,并且可以通过回溯的方式来计算最短路径。

路由单点攻击可通过多节点协同路由验证的手段检查出来,即路由节点通过与其他路由节点进行协同合作,共同验证路由策略是否被违反。但这种方法有个前提条件是路由系统中只有一个恶意节点,通过多个诚实节点协同检查路由是否违反路由策略,从而发现违反路由策略的问题。如果有多个恶意节点,则无法通过多个节点系统检查路由是否违反路由策略,因为一个路由节点不清楚它收到来自其他路由节点的路由协同验证信息是否是真实的。路由多点合谋攻击引起的违反路由策略问题即是指有多个恶意路由节点参与路由过程时,造成路由策略被违反的问题,并且这种攻击无法被检查出来,目前还没有公开技术文献涉及抵御该类攻击的方法。

技术实现要素:

本发明要解决的技术问题是:针对现有域间路由协议bgp存在由路由单点攻击或路由多点合谋攻击引起的违反路由策略的问题,提供一种基于区块链的可验证域间路由验证方法,实现对发布的路由信息进行验证,验证该路由信息是否符合路由策略,本发明既能验证路由单点攻击引起的违反路由策略的问题,又能验证路由多点合谋攻击引起的违反路由策略的问题。

本发明所采用的技术方案是:

第一步,构建基于区块链的可验证域间路由系统,基于区块链的可验证域间路由系统由可验证域间路由子系统和路由行为验证子系统组成,它们之间通过网络相连。

可验证域间路由子系统由多个自治域组成,每个自治域中有多个路由器。与现有网络中常用的路由子系统相比,主要是修改了现有域间路由器的路由软件系统,在域间路由器路由软件系统中增加了路由行为验证代理模块,它与路由软件系统的其他模块通过进程间调用通信。路由行为验证代理模块与路由行为验证子系统的路由行为验证终端通过网络相连,路由行为验证代理模块根据路由软件系统发送的路由信息(指路由器之间传输的路由报文,由源as号、目的as号、时间戳、路由前缀、路由操作等字段组成)构造路由基本信息(包含路由发送者id,路由接收者id,路由发送时间戳,路由前缀地址,路由操作,路由分类信息;路由发送者id由路由信息的源as号进行哈希得到;路由接收者id由路由信息的目的as号进行哈希得到;路由发送时间戳由路由信息的时间戳得到,路由前缀地址由路由信息的路由前缀字段得到;路由操作设置由路由信息的路由操作字段得到;路由分类信息根据路由信息的路径长度生成,以16位二进制表示,假设路径长度是nn,则路由分类信息的第nn位二进制设置为1,其他位设置为0,nn为正整数)和路由证据,生成路由验证请求信息,将路由证据、路由验证请求信息发送到路由行为验证终端。路由证据由路由基本信息、前向路由证据prp、路由信息标识idr、路由接收者签名和公钥、路由发送者签名和公钥这五部分组成,前向路由证据prp指向已存储在路由证据区块链中的一个路由证据;路由信息标识idr是路由信息的唯一标识,在路由验证过程中代替路由信息;路由接收者签名指路由接收者收到路由信息时的签名,路由接收者公钥指用来进行非对称加密的公钥,路由行为验证子系统使用路由接收者签名和公钥字段来验证路由接收者确实接收到该路由信息;路由接收者签名指路由接收者收到路由信息时的签名,路由接收者公钥指用来进行非对称加密的公钥,路由行为验证子系统使用路由接收者签名和公钥字段来验证路由证据的内容是否被篡改;路由证据签名指路由发送者对路由信息进行的签名,保证路由信息的完整性,防止被伪造和篡改。路由验证请求信息包括待验证的路由基本信息。

路由行为验证子系统由路由行为验证终端和路由验证区块链系统组成。路由行为验证终端部署在自治域内(一个自治域可部署n台路由行为验证终端,n为正整数),路由行为验证终端与路由行为验证代理模块、路由验证区块链系统相连,路由行为验证终端从路由行为验证代理模块接收路由证据和路由验证请求信息,根据路由证据构造路由证据验证提案,将路由证据验证提案、路由证据交易(路由证据交易结构与fabric平台的交易结构是一样的,路由证据交易内容包括路由证据及各背书节点签名)和路由验证请求信息发送给路由验证区块链系统;路由行为验证终端由路由证据处理模块、路由验证请求处理模块组成。

路由验证区块链系统主要进行三方面工作:(1)接收并处理路由证据验证提案,验证路由证据是否正确;(2)接收并处理路由证据交易,将交易打包成区块,将区块存入路由证据区块链;(3)验证路由验证请求信息并将验证结果反馈给路由行为验证代理模块。

路由验证区块链系统与路由行为验证终端相连,基于fabric区块链平台实现,由背书节点、排序节点、提交节点、路由证据区块链、配置文件组成。

背书节点上安装路由证据验证链码,从路由行为验证终端接收路由证据验证提案和路由验证请求信息,路由证据验证链码是验证路由证据的程序,它检查路由证据的路由基本信息、路由证据签名是否正确,检查路由证据对应的路由信息是否是最佳路由,为通过验证的路由证据进行背书。排序节点接收从路由行为验证终端发送来的路由证据交易;排序节点对路由证据交易进行共识操作,共识完成后构造区块、将区块发给提交节点;提交节点从排序节点接收区块并将区块放到路由证据区块链中。路由证据区块链由区块组成,一个区块分为两大部分:区块头和区块体,区块头里面存储着区块的头信息,包含区块大小、上一区块的哈希值,本区块体的哈希值,区块id以及时间戳,区块体存储交易计数和交易,交易中存放路由证据,区块体的长度可变,区块头一般为84字节。配置文件存储在每个节点上。配置文件存放路由验证区块链系统的配置信息,配置文件包含背书节点、排序节点、提交节点的数量,以及这些节点的网络拓扑信息(包括节点的地址、节点之间的连接关系)。

第二步,启动路由行为验证子系统。

2.1启动路由验证区块链系统。

2.1.1根据路由验证区块链系统中的配置文件,启动配置文件指定数量的背书节点、提交节点、排序节点。

2.1.2背书节点、提交节点和排序节点根据配置文件中网络拓扑信息里的地址信息,自动配置地址,并根据配置文件中网络拓扑信息建立通信连接。

2.1.3路由证据区块链中的所有背书节点设置背书策略,背书策略说明一个路由证据验证提案只有得到指定数量的背书节点的背书后,才能提交给排序节点。

2.1.4初始化路由证据区块链为空。

2.1.5排序节点根据配置文件指定的网络拓扑信息构建共识网络,共识网络中的所有排序节点在收到路由交易时并行运行共识算法(如pbft(实用拜占庭容错算法,出自1999年召开的国际会议osdi的一篇论文《practicalbyzantinefaulttolerance》)等)。共识网络中的所有排序节点等待从背书节点发来的路由证据交易。

2.1.6提交节点等待接收排序节点发来的区块。

2.2启动可验证域间路由子系统所有自治域中的所有路由行为验证终端,以任意一台路由行为验证终端(命名为tp)为例来说明启动过程,方法是:

2.2.1路由行为验证终端tp初始化,包括设置自治域信息(即自治域编号)、设置路由验证区块链系统中将与tp相连的背书节点地址(只有1个)、设置路由验证区块链系统中将与tp相连的排序节点地址(只有1个)。

2.2.2根据2.2.1初始化时设置的背书节点地址,tp向该背书节点进行身份认证。身份认证采用常用的基于口令的认证方式,如果身份认证通过,向该背书节点发送连接申请,转2.2.3。如果身份认证未通过,则启动失败,转2.2.5。

2.2.3背书节点向tp发送“同意建立连接”消息。

2.2.4tp从背书节点接收“同意建立连接”消息,启动工作完成,转第三步。

2.2.5tp启动失败,转2.2.1。

第三步,令可验证域间路由子系统中任意一个自治域as1内的所有成功启动的路由行为验证终端(假设有n1个,n1≤n,n为as1中的路由行为验证终端的个数,n为正整数)侦听来自可验证域间路由子系统的信息,确认是否与其路由行为验证代理模块建立连接。

3.1由于本发明针对的是域间路由协议,可验证域间路由子系统中所有域间路由器(假设有m台,m为正整数)启动路由软件系统。

3.2可验证域间路由子系统中所有域间路由器启动路由行为验证代理模块,m台域间路由器并行向路由行为验证终端发送自治域信息、路由器信息,为描述方便,以任意一个自治域(令为as1)中任意一台域间路由器(命名为r1)来为例来说明,方法是:

3.2.1r1的路由行为验证代理模块进行初始化,包括设置路由行为验证代理模块所在路由器(即r1)所属自治域(命名为as1)信息(即as1的自治域编号)、设置r1的信息(即路由器r1的id)、设置as1内的n个路由行为验证终端地址(即路由行为验证终端的ip地址)。

3.2.2路由行为验证代理模块将自治域as1信息、路由器r1信息发送给as1内的n1个成功启动的路由行为验证终端,申请与as1内的任意一个成功启动的路由行为验证终端(命名为rt1-1)(一个自治域中的n个路由行为验证终端之间可以连接、也可以不连接)建立连接,将自治域as1信息及路由器r1信息发送给路由行为验证终端rt1-1。

3.3rt1-1的路由验证请求处理模块侦听来自as1的消息。

3.4rt1-1的路由验证请求处理模块通过从as1收到的自治域信息及路由器r1信息判定路由器r1是否属于as1,若属于as1,则记录路由器r1信息,同意与r1的路由行为验证代理模块建立连接,转第四步;如果不属于,则拒绝与r1的路由行为验证代理模块建立连接,转3.3。

第四步,自治域as1中的任意一台路由器(以r1为例)向自治域as2中的一台路由器(令为t,t属于as2)发送路由信息ri。

第五步,路由器t接收来自r1的路由信息ri,根据情况,发送路由信息确认报文,方法如下:

5.1路由器t检查路由信息ri的正确性(检查方法采用bgp路由协议检查路由信息的方法)。如果检查正确,转5.2;如果检查有错误,则丢弃ri,转第六步。

5.2路由器t构造并发送路由信息确认报文给路由器r1,方法如下:

5.2.1从ri中提取出路由基本信息。

5.2.2路由器t根据ri构造路由信息确认报文riq,方法是:在ri后面,加上路由器t的公钥及签名。获取路由器t签名的方法是:使用路由器t的私钥,对ri的路由基本信息进行签名,得到路由器t对于ri的路由基本信息的签名。

5.2.3路由器t将riq发送给路由器r1,转第六步。

第六步,r1等待从路由器t接收路由信息确认报文riq。如果路由器r1收到从路由器t发来的路由信息确认报文riq,转第七步。如果在设置的时间阈值δ(时间阈值δ一般设置为10秒钟)内仍未收到路由信息确认报文riq,转第四步。

第七步,r1、as1的路由行为验证终端rt1-1、路由验证区块链系统相互配合按第八步~第十四步的流程构造路由证据、构造路由证据验证提案、对路由证据验证提案进行验证(包括完整性检查、最佳路由检查)、对路由证据验证提案进行背书、判断有背书节点签名的路由证据验证提案是否满足背书策略、生成路由证据交易、对路由证据交易进行共识排序、生成区块并更新路由验证区块链;同时路由器t、as2的路由行为验证终端rt2-1、路由验证区块链系统相互配合按第十五步~第二十步的流程构造验证路由请求报文、检查验证路由请求报文是否正确、在路由验证区块链检索是否存在路由请求对应的路由证据、向路由器t反馈路由信息的验证结果。

第八步,r1的路由行为验证代理模块根据ri构造路由证据,将路由证据发送给路由行为验证子系统,方法是:

8.1r1的路由行为验证代理模块构造路由证据re,方法是从路由信息ri中提取相关内容,得到路由基本信息、前向路由证据prp、路由信息标识idr、路由接收者签名和公钥、路由发送者签名和公钥,将它们组合成re:

8.1.1构建路由基本信息,路由发送者id由路由信息的源as号进行哈希得到;路由接收者id由路由信息的目的as号进行哈希得到;路由发送时间戳由路由信息的时间戳得到,路由前缀地址由路由信息的路由前缀字段得到;路由操作设置由路由信息的路由操作字段得到;路由分类信息根据路由信息的路径长度生成,以16位二进制表示,假设路径长度是nn,则路由分类信息的第nn位二进制设置为1,其他位设置为0,nn为正整数;

8.1.2构建前向路由证据prp,指向已存储在路由证据区块链中的一个路由证据,假设prp所指向的路由证据对应路由信息ri’,路由信息ri’是路由器r1收到的来自其他路由器的路由信息,r1在ri’后加上自身信息,即得到路由信息ri;

8.1.3构建路由信息标识idr,即将路由发送者id、路由接收者id、路由发送时间戳、路由前缀地址、路由操作、路由分类信息的哈希值组合成idr。

8.1.4将路由接收者收到路由信息时的签名作为路由接收者签名,将路由接收者自身的公钥作为路由接收者公钥;

8.1.5将路由发送者发送路由证据时的签名作为路由发送者签名,将路由发送者自身的公钥作为路由发送者公钥。

8.2路由器r1的路由行为验证代理模块将路由证据re发送给路由行为验证终端rt1-1。

第九步,路由行为验证终端rt1-1从路由器r1的路由行为验证代理模块接收re,将re构造成一个路由证据验证提案(命名为rea),将rea发送到与rt1-1有连接关系的一个背书节点(令为bs1)。rea的结构与当前各类区块链平台(如fabric)上提案结构(参见《hyperledgerfabric开发实战——快速掌握区块链技术》第6章,杨毅著,电子工业出版社,第1版)相同,rea构造方法采用当前各类区块链平台(如fabric)上提案构造方法(参见《hyperledgerfabric开发实战——快速掌握区块链技术》第6章,杨毅著,电子工业出版社,第1版)。

第十步,背书节点bs1监测是否从rt1-1接收到rea,若接收到rea,检查rea的完整性,若rea完整,根据背书策略将rea发送到背书策略规定的另外k个与bs1相连的背书节点,k为正整数,转第十一步。若rea不完整,转第十步继续等待。

第十一步,接收到rea的k个背书节点对rea并行进行验证:从rea提取路由证据,调用路由证据验证链码验证路由证据,得到k个路由证据验证提案结果,k个背书节点对rea进行验证的方法相同,以k个背书节点中的任意一个背书节点(令为bsi)来说明,方法是:

11.1bsi从rea中提取出路由证据re,提取路由证据的方法采用当前各类区块链平台(如fabric)从提案里提取数据的方法(参见《hyperledgerfabric开发实战——快速掌握区块链技术》第6章,杨毅著,电子工业出版社,第1版)。

11.2bsi执行路由证据验证链码,对re进行验证,方法如下:

11.2.1检查re的路由基本信息,方法是:

11.2.1.1检查路由验证区块链中是否存在re里面包含的前向路由证据prp,若不存在,丢弃re,转11.5;若存在,判定路由验证区块链中包含的prp中的路由发送时间戳是否比re中的路由发送时间戳要早,若早,转11.2.1.2;若不早,则丢弃re,转11.5。

11.2.1.2检查re中的路由前缀地址是否与路由验证区块链中包含的prp中的路由前缀地址相同,若相同,转11.2.1.3;若不相同,丢弃re,转11.5。

11.2.1.3检查re中的路由分类信息是否与路由验证区块链中包含的prp中的路由分类信息一致,若一致,转11.2.2;若不一致,丢弃re,转11.5。

11.2.2检查re的签名,方法是:

11.2.2.1使用re的路由发送者公钥检查路由发送者的签名是否正确,若正确,转11.2.2.2;若不正确,丢弃re,转11.5。使用re的路由发送者公钥检查路由发送者的签名是否正确的方法是:使用路由发送者公钥,对re内容进行哈希操作,比对哈希操作的结果与re的路由发送者签名是否一致。

11.2.2.2使用re的路由接收者公钥检查路由接收者的签名是否正确。若正确,转11.2.3;若不正确,丢弃re,转11.5。

11.2.3检查re对应的路由信息是否是最佳路由,方法是:

搜索路由验证区块链,推断r1(此时是路由发送者)是否已经接收到比当前要验证的路由(即re对应的路由信息中的路由)更好的路由,方法是

使用r1的id、路由前缀地址作为索引,在路由验证区块链进行检索,查找是否存在满足索引条件的路由证据:

11.2.3.1如果在路由验证区块链找到一个路由证据re’,满足re’的路由分类信息优于re的路由分类信息(即re’对应路由信息的路径长度小于re对应路由信息的路径长度),证明有路由器曾经给r1发送过更好的路由,但r1没有把这个路由信息发送给路由接收者t,即re对应的路由信息不是最优路由,将re丢弃,转11.5;

11.2.3.2如果在路由验证区块链没有找到满足索引条件的路由证据,则说明路由发送者r1发送给路由接收者t的路由信息是最优路由,则re通过最优路由验证,转11.3。

11.3bsi为路由证据验证提案rea进行背书,生成路由证据验证提案结果,背书方法采用当前各类区块链平台(如fabric)背书的方法,路由证据验证提案结果的内容为路由证据验证提案rea和背书节点bsi签名。

11.4bsi将带有bsi签名的路由证据验证提案结果(此时说明路由证据验证提案通过了验证)发送给路由行为验证终端rt1-1,转第十二步。

11.5bsi生成背书节点签名字段为空的路由证据验证提案结果(说明路由证据验证提案未通过验证),并将该路由证据验证提案结果发送给路由行为验证终端rt1-1,转第十二步。

第十二步,路由行为验证终端rt1-1陆续接收来自于k个背书节点的路由证据验证提案结果,判断从k个背书节点陆续收到的路由证据验证提案结果中通过验证的路由证据验证提案是否满足背书策略,方法是:

12.1检查陆续收到的k个路由证据验证提案结果中带有背书节点签名字段的路由证据验证提案结果数是否大于等于k1(k1是在背书策略中规定的,即至少有k1个背书节点签名的路由证据,才可以向排序节点提交路由证据交易,1≤k1≤k)。如满足,转12.2;如果不满足,则表示没有k1个背书节点为路由证据验证提案进行背书签名,不满足背书策略,表示此轮域间路由证据无法存入区块链,转第二十一步。

12.2路由行为验证终端rt1-1将k1个路由证据验证提案结果打包成一个路由证据交易(路由证据交易结构与fabric平台一样,只是路由证据交易结构中交易内容存放的是路由证据及各背书节点签名),采用当前各类区块链平台(如fabric)打包交易的方法。将路由证据交易发送给与rt1-1通信的任意一个排序节点(命名为px1),转第十三步。

第十三步,排序节点px1判断是否从rt1-1接收到路由证据交易,若接收到路由证据交易,转13.1;若未接收到,转第十三步等待。

13.1检查交易内容是否符合背书策略(检查签名背书节点数量),如果不符合,转13.5。如果符合,转13.2。

13.2排序节点px1将路由证据交易发送到路由验证区块链系统中其它所有的排序节点。

13.3路由验证区块链系统中所有排序节点(包括px1)对接收到的路由证据交易进行共识排序(采用区块链fabric所公布的共识算法pbft)。如果达成共识,转13.4;如果没有达成共识,则转13.5。

13.4路由验证区块链系统中所有排序节点采用区块生成方法,将路由证据交易生成新的区块,n个排序节点生成的区块相同。生成区块采用当前各类区块链平台(如fabric)生成区块方法,将该区块广播到路由验证区块链系统中所有提交节点,转第十四步。

13.5路由验证区块链系统中所有排序节点丢弃路由证据交易,转第二十一步。

第十四步,路由验证区块链系统中所有提交节点从与之相连的排序节点接收新的区块,将区块加入到路由证据验证区块链中,检查区块里的交易是否有效(验证交易的签名是否有效、交易是否满足背书策略)。如果检查有效,说明该交易是经背书节点签名背书过的,路由验证区块链系统中所有提交节点将区块加入本地路由验证区块链中,转第二十一步。如果检查无效,则丢弃该区块,转第二十一步。

第十五步,路由器t验证路由信息ri,方法如下:

15.1路由器t的路由行为验证代理模块构造验证路由请求,并将验证路由请求发送给t所属自治域(令为as2)的路由行为验证终端,方法如下:

15.1.1路由行为验证代理模块从ri中提取路由基本信息。

15.1.2路由行为验证代理模块构造ri的验证路由请求报文riqb。riqb的内容包括ri的路由基本信息、路由器t公钥、路由器t对ri的路由基本信息的签名。

15.1.3路由行为验证代理模块将riqb发送给as2的路由行为验证终端(令为rt2-1)。

第十六步,as2的路由行为验证终端rt2-1收到来自路由器t的riqb,检查riqb的签名是否正确,判断签名的方法是:使用路由器t的公钥,对riqb内容进行哈希操作,比对哈希操作的结果与riqb的路由器t签名是否一致。如果签名一致,说明正确,将riqb发送给路由验证区块链系统的与rt2-1相连的背书节点,转第十八步;如果签名不一致,说明不正确,转第十七步。

第十七步,丢弃验证路由请求报文riqb,转第二十一步。

第十八步,路由验证区块链系统的与rt2-1相连的任意一个背书节点接收riqb,对riqb进行验证:

18.1检查riqb的签名是否正确,如果签名正确,转18.2;如果签名不正确,转第十七步。

18.2从riqb中提取路由信息标识idr。

18.3在路由证据区块链中检索idr,如果在路由证据区块链中找到一个与idr相同的匹配项,则验证通过,转18.4;否则,验证失败,转18.6。

18.4构造一个路由信息验证成功报文riyc,即在riqb尾部加上验证成功标记、背书节点签名,将riyc反馈给路由行为验证终端rt2-1。

18.5rt2-1将riyc转发给路由器t,转第十九步。

18.6构造一个路由信息验证失败报文riys,即在riqb尾部加上验证失败标记、背书节点签名,将路由信息验证失败报文反馈给路由行为验证终端rt2-1。

18.7rt2-1将riys转发给路由器t,转第二十步。

第十九步,路由器t接收riyc,认为路由信息ri符合路由策略,则从ri学习到新的路由,将新的路由添加到路由表中。学习路由和添加路由表的方法,与公知的路由学习和添加路由方法相同,转第二十一步。

第二十步,路由器t接收riys,认为路由信息ri违反路由策略,丢弃ri,转第二十一步。

第二十一步,转第四步。

采用本发明可以达到以下技术效果:

1.本发明通过第八步至第十四步,进行验证路由证据并存储在路由证据区块链中;通过第十五步至第二十步,结合路由证据区块链,可检查一个路由器发送的路由信息是否满足路由策略,从而发现由于单点及多点攻击引发的违反路由策略情况。

2.本发明在第八步至第十四步进行路由验证时,采用路由证据代替路由信息参与路由验证过程,保护了路由数据隐私安全性,使得路由隐私信息得以保护;

3.本发明采用区块链存储路由证据,使得本发明提出的“基于区块链的可验证域间路由验证系统”具有较好的安全性和鲁棒性,提高了路由证据伪造的难度;通过区块链系统和路由行为验证终端的配合使用,可检查出由路由单点攻击以及多点合谋攻击造成的违反路由策略的问题,解决目前域间路由中多点合谋攻击难以被发现的难题。

附图说明

图1为本方法所述的一种基于区块链的可验证域间路由系统;

图2是本发明区块数据结构图

图3是本发明总体流程图。

具体实施方式

图3是本发明总体流程图。如图3所示,本发明包括以下步骤:

第一步,构建基于区块链的可验证域间路由系统,基于区块链的可验证域间路由系统如图1所示,由可验证域间路由子系统和路由行为验证子系统组成,它们之间通过网络相连。

可验证域间路由子系统由多个自治域组成,每个自治域中有多个路由器。在域间路由器路由软件系统中增加了路由行为验证代理模块,它与路由软件系统的其他模块通过进程间调用通信。路由行为验证代理模块与路由行为验证子系统的路由行为验证终端通过网络相连,路由行为验证代理模块根据路由软件系统发送的路由信息构造路由基本信息和路由证据,生成路由验证请求信息,将路由证据、路由验证请求信息发送到路由行为验证终端。路由证据由路由基本信息、前向路由证据prp、路由信息标识idr、路由接收者签名和公钥、路由发送者签名和公钥这五部分组成;路由证据签名指路由发送者对路由信息进行的签名。路由验证请求信息包括待验证的路由基本信息。

路由行为验证子系统由路由行为验证终端和路由验证区块链系统组成。路由行为验证终端部署在自治域内(一个自治域部署n台路由行为验证终端,n为正整数),路由行为验证终端与路由行为验证代理模块、路由验证区块链系统相连,路由行为验证终端从路由行为验证代理模块接收路由证据和路由验证请求信息,根据路由证据构造路由证据验证提案,将路由证据验证提案、路由证据交易(路由证据交易内容包括路由证据及各背书节点签名)和路由验证请求信息发送给路由验证区块链系统;路由行为验证终端由路由证据处理模块、路由验证请求处理模块组成。

路由验证区块链系统主要进行三方面工作:(1)接收并处理路由证据验证提案,验证路由证据是否正确;(2)接收并处理路由证据交易,将交易打包成区块,将区块存入路由证据区块链;(3)验证路由验证请求信息并将验证结果反馈给路由行为验证代理模块。

路由验证区块链系统与路由行为验证终端相连,基于fabric区块链平台实现,由背书节点、排序节点、提交节点、路由证据区块链、配置文件组成。

背书节点上安装路由证据验证链码,从路由行为验证终端接收路由证据验证提案和路由验证请求信息,路由证据验证链码是验证路由证据的程序,它检查路由证据的路由基本信息、路由证据签名是否正确,检查路由证据对应的路由信息是否是最佳路由,为通过验证的路由证据进行背书。排序节点接收从路由行为验证终端发送来的路由证据交易;排序节点对路由证据交易进行共识操作,共识完成后构造区块、将区块发给提交节点;提交节点从排序节点接收区块并将区块放到路由证据区块链中。路由证据区块链由区块组成,一个区块如图2所示,分为两大部分:区块头和区块体,区块头里面存储着区块的头信息,包含区块大小、上一区块的哈希值,本区块体的哈希值,区块id以及时间戳,区块体存储交易计数和交易,交易中存放路由证据,区块体的长度可变,区块头一般为84字节。配置文件存储在每个节点上。配置文件存放路由验证区块链系统的配置信息,配置文件包含背书节点、排序节点、提交节点的数量,以及这些节点的网络拓扑信息(包括节点的地址、节点之间的连接关系)。

第二步,启动路由行为验证子系统。

2.1启动路由验证区块链系统。

2.1.1根据路由验证区块链系统中的配置文件,启动配置文件指定数量的背书节点、提交节点、排序节点。

2.1.2背书节点、提交节点和排序节点根据配置文件中网络拓扑信息里的地址信息,自动配置地址,并根据配置文件中网络拓扑信息建立通信连接。

2.1.3路由证据区块链中的所有背书节点设置背书策略,背书策略说明一个路由证据验证提案只有得到指定数量的背书节点的背书后,才能提交给排序节点。

2.1.4初始化路由证据区块链为空。

2.1.5排序节点根据配置文件指定的网络拓扑信息构建共识网络,共识网络中的所有排序节点等待从背书节点发来的路由证据交易。

2.1.6提交节点等待接收排序节点发来的区块。

2.2启动可验证域间路由子系统所有自治域中的所有路由行为验证终端,以任意一台路由行为验证终端(命名为tp)为例来说明启动过程,方法是:

2.2.1路由行为验证终端tp初始化,包括设置自治域信息(即自治域编号)、设置路由验证区块链系统中将与tp相连的背书节点地址(只有1个)、设置路由验证区块链系统中将与tp相连的排序节点地址(只有1个)。

2.2.2根据2.2.1初始化时设置的背书节点地址,tp向该背书节点进行身份认证。身份认证采用常用的基于口令的认证方式,如果身份认证通过,向该背书节点发送连接申请,转2.2.3。如果身份认证未通过,则启动失败,转2.2.5。

2.2.3背书节点向tp发送“同意建立连接”消息。

2.2.4tp从背书节点接收“同意建立连接”消息,启动工作完成,转第三步。

2.2.5tp启动失败,转2.2.1。

第三步,令可验证域间路由子系统中任意一个自治域as1内的所有成功启动的路由行为验证终端(假设有n1个,n1≤n,n为as1中的路由行为验证终端的个数,n为正整数)侦听来自可验证域间路由子系统的信息,确认是否与其路由行为验证代理模块建立连接。

3.1由于本发明针对的是域间路由协议,可验证域间路由子系统中所有域间路由器(假设有m台,m为正整数)启动路由软件系统。

3.2可验证域间路由子系统中所有域间路由器启动路由行为验证代理模块,m台域间路由器并行向路由行为验证终端发送自治域信息、路由器信息,任意一个自治域(令为as1)中任意一台域间路由器(命名为r1)向路由行为验证终端发送自治域信息、路由器信息的方法是:

3.2.1r1的路由行为验证代理模块进行初始化,包括设置路由行为验证代理模块所在路由器(即r1)所属自治域(命名为as1)信息(即as1的自治域编号)、设置r1的信息(即路由器r1的id)、设置as1内的n个路由行为验证终端地址(即路由行为验证终端的ip地址)。

3.2.2路由行为验证代理模块将自治域as1信息、路由器r1信息发送给as1内的n1个成功启动的路由行为验证终端,申请与as1内的任意一个成功启动的路由行为验证终端(命名为rt1-1)建立连接,将自治域as1信息及路由器r1信息发送给路由行为验证终端rt1-1。

3.3rt1-1的路由验证请求处理模块侦听来自as1的消息。

3.4rt1-1的路由验证请求处理模块通过从as1收到的自治域信息及路由器r1信息判定路由器r1是否属于as1,若属于as1,则记录路由器r1信息,同意与r1的路由行为验证代理模块建立连接,转第四步;如果不属于,则拒绝与r1的路由行为验证代理模块建立连接,转3.3。

第四步,自治域as1中的任意一台路由器(以r1为例)向自治域as2中的一台路由器(令为t,t属于as2)发送路由信息ri。

第五步,路由器t接收来自r1的路由信息ri,根据情况,发送路由信息确认报文,方法如下:

5.1路由器t检查路由信息ri的正确性。如果检查正确,转5.2;如果检查有错误,则丢弃ri,转第六步。

5.2路由器t构造并发送路由信息确认报文给路由器r1,方法如下:

5.2.1从ri中提取出路由基本信息。

5.2.2路由器t根据ri构造路由信息确认报文riq,方法是:在ri后面,加上路由器t的公钥及签名。获取路由器t签名的方法是:使用路由器t的私钥,对ri的路由基本信息进行签名,得到路由器t对于ri的路由基本信息的签名。

5.2.3路由器t将riq发送给路由器r1,转第六步。

第六步,r1等待从路由器t接收路由信息确认报文riq。如果路由器r1收到从路由器t发来的路由信息确认报文riq,转第七步。如果在设置的时间阈值δ(时间阈值δ设置为10秒钟)内仍未收到路由信息确认报文riq,转第四步。

第七步,r1、as1的路由行为验证终端rt1-1、路由验证区块链系统相互配合按第八步~第十四步的流程构造路由证据、构造路由证据验证提案、对路由证据验证提案进行验证(包括完整性检查、最佳路由检查)、对路由证据验证提案进行背书、判断有背书节点签名的路由证据验证提案是否满足背书策略、生成路由证据交易、对路由证据交易进行共识排序、生成区块并更新路由验证区块链;同时路由器t、as2的路由行为验证终端rt2-1、路由验证区块链系统相互配合按第十五步~第二十步的流程构造验证路由请求报文、检查验证路由请求报文是否正确、在路由验证区块链检索是否存在路由请求对应的路由证据、向路由器t反馈路由信息的验证结果。

第八步,r1的路由行为验证代理模块根据ri构造路由证据,将路由证据发送给路由行为验证子系统,方法是:

8.1r1的路由行为验证代理模块构造路由证据re,方法是从路由信息ri中提取相关内容,得到路由基本信息、前向路由证据prp、路由信息标识idr、路由接收者签名和公钥、路由发送者签名和公钥,将它们组合成re:

8.1.1构建路由基本信息,路由发送者id由路由信息的源as号进行哈希得到;路由接收者id由路由信息的目的as号进行哈希得到;路由发送时间戳由路由信息的时间戳得到,路由前缀地址由路由信息的路由前缀字段得到;路由操作设置由路由信息的路由操作字段得到;路由分类信息根据路由信息的路径长度生成,以16位二进制表示,假设路径长度是nn,则路由分类信息的第nn位二进制设置为1,其他位设置为0,nn为正整数;

8.1.2构建前向路由证据prp,指向已存储在路由证据区块链中的一个路由证据,假设prp所指向的路由证据对应路由信息ri’,路由信息ri’是路由器r1收到的来自其他路由器的路由信息,r1在ri’后加上自身信息,即得到路由信息ri;

8.1.3构建路由信息标识idr,即将路由发送者id、路由接收者id、路由发送时间戳、路由前缀地址、路由操作、路由分类信息的哈希值组合成idr。

8.1.4将路由接收者收到路由信息时的签名作为路由接收者签名,将路由接收者自身的公钥作为路由接收者公钥;

8.1.5将路由发送者发送路由证据时的签名作为路由发送者签名,将路由发送者自身的公钥作为路由发送者公钥。

8.2路由器r1的路由行为验证代理模块将路由证据re发送给路由行为验证终端rt1-1。

第九步,路由行为验证终端rt1-1从路由器r1的路由行为验证代理模块接收re,将re构造成一个路由证据验证提案(命名为rea),将rea发送到与rt1-1有连接关系的一个背书节点(令为bs1)。rea的结构与当前各类区块链平台(如fabric)上提案结构相同,rea构造方法采用当前各类区块链平台(如fabric)上提案构造方法。

第十步,背书节点bs1监测是否从rt1-1接收到rea,若接收到rea,检查rea的完整性,若rea完整,根据背书策略将rea发送到背书策略规定的另外k个与bs1相连的背书节点,k为正整数,转第十一步。若rea不完整,转第十步继续等待。

第十一步,接收到rea的k个背书节点对rea并行进行验证:从rea提取路由证据,调用路由证据验证链码验证路由证据,得到k个路由证据验证提案结果,k个背书节点对rea进行验证的方法相同,以k个背书节点中的任意一个背书节点(令为bsi)来说明,方法是:

11.1bsi从rea中提取出路由证据re,提取路由证据的方法采用当前各类区块链平台(如fabric)从提案里提取数据的方法。

11.2bsi执行路由证据验证链码,对re进行验证,方法如下:

11.2.1检查re的路由基本信息,方法是:

11.2.1.1检查路由验证区块链中是否存在re里面包含的前向路由证据prp,若不存在,丢弃re,转11.5;若存在,判定路由验证区块链中包含的prp中的路由发送时间戳是否比re中的路由发送时间戳要早,若早,转11.2.1.2;若不早,则丢弃re,转11.5。

11.2.1.2检查re中的路由前缀地址是否与路由验证区块链中包含的prp中的路由前缀地址相同,若相同,转11.2.1.3;若不相同,丢弃re,转11.5。

11.2.1.3检查re中的路由分类信息是否与路由验证区块链中包含的prp中的路由分类信息一致,若一致,转11.2.2;若不一致,丢弃re,转11.5。

11.2.2检查re的签名,方法是:

11.2.2.1使用re的路由发送者公钥检查路由发送者的签名是否正确,若正确,转11.2.2.2;若不正确,丢弃re,转11.5。使用re的路由发送者公钥检查路由发送者的签名是否正确的方法是:使用路由发送者公钥,对re内容进行哈希操作,比对哈希操作的结果与re的路由发送者签名是否一致。

11.2.2.2使用re的路由接收者公钥检查路由接收者的签名是否正确。若正确,转11.2.3;若不正确,丢弃re,转11.5。

11.2.3检查re对应的路由信息是否是最佳路由,方法是:

搜索路由验证区块链,推断r1(此时是路由发送者)是否已经接收到比当前要验证的路由(即re对应的路由信息中的路由)更好的路由,方法是

使用r1的id、路由前缀地址作为索引,在路由验证区块链进行检索,查找是否存在满足索引条件的路由证据:

11.2.3.1如果在路由验证区块链找到一个路由证据re’,满足re’的路由分类信息优于re的路由分类信息(即re’对应路由信息的路径长度小于re对应路由信息的路径长度),证明有路由器曾经给r1发送过更好的路由,但r1没有把这个路由信息发送给路由接收者t,即re对应的路由信息不是最优路由,将re丢弃,转11.5;

11.2.3.2如果在路由验证区块链没有找到满足索引条件的路由证据,则说明路由发送者r1发送给路由接收者t的路由信息是最优路由,则re通过最优路由验证,转11.3。

11.3bsi为路由证据验证提案rea进行背书,生成路由证据验证提案结果,背书方法采用当前各类区块链平台(如fabric)背书的方法,路由证据验证提案结果的内容为路由证据验证提案rea和背书节点bsi签名。

11.4bsi将带有bsi签名的路由证据验证提案结果(此时说明路由证据验证提案通过了验证)发送给路由行为验证终端rt1-1,转第十二步。

11.5bsi生成背书节点签名字段为空的路由证据验证提案结果(说明路由证据验证提案未通过验证),并将该路由证据验证提案结果发送给路由行为验证终端rt1-1,转第十二步。

第十二步,路由行为验证终端rt1-1陆续接收来自于k个背书节点的路由证据验证提案结果,判断从k个背书节点陆续收到的路由证据验证提案结果中通过验证的路由证据验证提案是否满足背书策略,方法是:

12.1检查陆续收到的k个路由证据验证提案结果中带有背书节点签名字段的路由证据验证提案结果数是否大于等于k1(k1是在背书策略中规定的,即至少有k1个背书节点签名的路由证据,才可以向排序节点提交路由证据交易,1≤k1≤k)。如满足,转12.2;如果不满足,则表示没有k1个背书节点为路由证据验证提案进行背书签名,不满足背书策略,表示此轮域间路由证据无法存入区块链,转第二十一步。

12.2路由行为验证终端rt1-1将k1个路由证据验证提案结果打包成一个路由证据交易(路由证据交易结构与fabric平台一样,只是路由证据交易结构中交易内容存放的是路由证据及各背书节点签名),采用当前各类区块链平台(如fabric)打包交易的方法。将路由证据交易发送给与rt1-1通信的任意一个排序节点(命名为px1),转第十三步。

第十三步,排序节点px1判断是否从rt1-1接收到路由证据交易,若接收到路由证据交易,转13.1;若未接收到,转第十三步等待。

13.1检查交易内容是否符合背书策略(检查签名背书节点数量),如果不符合,转13.5。如果符合,转13.2。

13.2排序节点px1将路由证据交易发送到路由验证区块链系统中其它所有的排序节点。

13.3路由验证区块链系统中所有排序节点(包括px1)对接收到的路由证据交易进行共识排序(采用区块链fabric所公布的共识算法pbft)。如果达成共识,转13.4;如果没有达成共识,则转13.5。

13.4路由验证区块链系统中所有排序节点采用区块生成方法,将路由证据交易生成新的区块,n个排序节点生成的区块相同。生成区块采用当前各类区块链平台(如fabric)生成区块方法,将该区块广播到路由验证区块链系统中所有提交节点,转第十四步。

13.5路由验证区块链系统中所有排序节点丢弃路由证据交易,转第二十一步。

第十四步,路由验证区块链系统中所有提交节点从与之相连的排序节点接收新的区块,将区块加入到路由证据验证区块链中,检查区块里的交易是否有效(验证交易的签名是否有效、交易是否满足背书策略)。如果检查有效,说明该交易是经背书节点签名背书过的,路由验证区块链系统中所有提交节点将区块加入本地路由验证区块链中,转第二十一步。如果检查无效,则丢弃该区块,转第二十一步。

第十五步,路由器t验证路由信息ri,方法如下:

15.1路由器t的路由行为验证代理模块构造验证路由请求,并将验证路由请求发送给t所属自治域(令为as2)的路由行为验证终端,方法如下:

15.1.1路由行为验证代理模块从ri中提取路由基本信息。

15.1.2路由行为验证代理模块构造ri的验证路由请求报文riqb。riqb的内容包括ri的路由基本信息、路由器t公钥、路由器t对ri的路由基本信息的签名。

15.1.3路由行为验证代理模块将riqb发送给as2的路由行为验证终端(令为rt2-1)。

第十六步,as2的路由行为验证终端rt2-1收到来自路由器t的riqb,检查riqb的签名是否正确,判断签名的方法是:使用路由器t的公钥,对riqb内容进行哈希操作,比对哈希操作的结果与riqb的路由器t签名是否一致。如果签名一致,说明正确,将riqb发送给路由验证区块链系统的与rt2-1相连的背书节点,转第十八步;如果签名不一致,说明不正确,转第十七步。

第十七步,丢弃验证路由请求报文riqb,转第二十一步。

第十八步,路由验证区块链系统的与rt2-1相连的任意一个背书节点接收riqb,对riqb进行验证:

18.1检查riqb的签名是否正确,如果签名正确,转18.2;如果签名不正确,转第十七步。

18.2从riqb中提取路由信息标识idr。

18.3在路由证据区块链中检索idr,如果在路由证据区块链中找到一个与idr相同的匹配项,则验证通过,转18.4;否则,验证失败,转18.6。

18.4构造一个路由信息验证成功报文riyc,即在riqb尾部加上验证成功标记、背书节点签名,将riyc反馈给路由行为验证终端rt2-1。

18.5rt2-1将riyc转发给路由器t,转第十九步。

18.6构造一个路由信息验证失败报文riys,即在riqb尾部加上验证失败标记、背书节点签名,将路由信息验证失败报文反馈给路由行为验证终端rt2-1。

18.7rt2-1将riys转发给路由器t,转第二十步。

第十九步,路由器t接收riyc,认为路由信息ri符合路由策略,则从ri学习到新的路由,将新的路由添加到路由表中。学习路由和添加路由表的方法,与公知的路由学习和添加路由方法相同,转第二十一步。

第二十步,路由器t接收riys,认为路由信息ri违反路由策略,丢弃ri,转第二十一步。

第二十一步,转第四步。

技术特征:

1.一种基于区块链的可验证域间路由验证方法,其特征在于包括以下步骤:

第一步,构建基于区块链的可验证域间路由系统,基于区块链的可验证域间路由系统由可验证域间路由子系统和路由行为验证子系统组成,它们之间通过网络相连;

可验证域间路由子系统由多个自治域组成,每个自治域中有多个路由器,在域间路由器路由软件系统中增加路由行为验证代理模块,路由行为验证代理模块与路由软件系统的其他模块通过进程间调用通信;路由行为验证代理模块与路由行为验证子系统的路由行为验证终端通过网络相连,路由行为验证代理模块根据路由软件系统发送的路由信息构造路由基本信息和路由证据,生成路由验证请求信息,将路由证据、路由验证请求信息发送到路由行为验证终端;路由证据由路由基本信息、前向路由证据prp、路由信息标识idr、路由接收者签名和公钥、路由发送者签名和公钥这五部分组成,前向路由证据prp指向已存储在路由证据区块链中的一个路由证据;路由信息标识idr是路由信息的唯一标识,在路由验证过程中代替路由信息;路由接收者签名指路由接收者收到路由信息时的签名,路由接收者公钥指用来进行非对称加密的公钥;路由发送者签名指路由发送者发送路由证据时的签名,路由发送者公钥指用来进行非对称加密的公钥;路由证据签名指路由发送者对路由信息进行的签名;路由验证请求信息包括待验证的路由基本信息;

路由行为验证子系统由路由行为验证终端和路由验证区块链系统组成;路由行为验证终端部署在自治域内,路由行为验证终端与路由行为验证代理模块、路由验证区块链系统相连,路由行为验证终端从路由行为验证代理模块接收路由证据和路由验证请求信息,根据路由证据构造路由证据验证提案,将路由证据验证提案、路由证据交易和路由验证请求信息发送给路由验证区块链系统,所述路由证据交易内容包括路由证据及各背书节点签名;路由行为验证终端由路由证据处理模块、路由验证请求处理模块组成;

路由验证区块链系统接收并处理路由证据验证提案,验证路由证据是否正确;接收并处理路由证据交易,将交易打包成区块,将区块存入路由证据区块链;验证路由验证请求信息并将验证结果反馈给路由行为验证代理模块;

路由验证区块链系统与路由行为验证终端相连,由背书节点、排序节点、提交节点、路由证据区块链、配置文件组成;

背书节点上安装路由证据验证链码,从路由行为验证终端接收路由证据验证提案和路由验证请求信息,路由证据验证链码是验证路由证据的程序,它检查路由证据的路由基本信息、路由证据签名是否正确,检查路由证据对应的路由信息是否是最佳路由,为通过验证的路由证据进行背书;排序节点接收从路由行为验证终端发送来的路由证据交易;排序节点对路由证据交易进行共识操作,共识完成后构造区块、将区块发给提交节点;提交节点从排序节点接收区块并将区块放到路由证据区块链中;路由证据区块链由区块组成,一个区块分为两大部分:区块头和区块体,区块头里面存储着区块的头信息,包含区块大小、上一区块的哈希值,本区块体的哈希值,区块id以及时间戳,区块体存储交易计数和交易,交易中存放路由证据;配置文件存储在每个节点上,配置文件存放路由验证区块链系统的配置信息,配置文件包含背书节点、排序节点、提交节点的数量,以及这些节点的网络拓扑信息,网络拓扑信息包括节点的地址、节点之间的连接关系;

第二步,启动路由行为验证子系统,方法是:

2.1启动路由验证区块链系统:

2.1.1根据路由验证区块链系统中的配置文件,启动配置文件指定数量的背书节点、提交节点、排序节点;

2.1.2背书节点、提交节点和排序节点根据配置文件中网络拓扑信息里的地址信息,自动配置地址,并根据配置文件中网络拓扑信息建立通信连接;

2.1.3路由证据区块链中的所有背书节点设置背书策略;

2.1.4初始化路由证据区块链为空;

2.1.5排序节点根据配置文件指定的网络拓扑信息构建共识网络,共识网络中的所有排序节点等待从背书节点发来的路由证据交易;

2.1.6提交节点等待接收排序节点发来的区块;

2.2启动可验证域间路由子系统所有自治域中的所有路由行为验证终端,任意一台路由行为验证终端tp的启动过程是:

2.2.1路由行为验证终端tp初始化,包括设置自治域编号、设置路由验证区块链系统中将与tp相连的背书节点地址、设置路由验证区块链系统中将与tp相连的排序节点地址;

2.2.2根据2.2.1设置的与tp相连的背书节点地址,tp向该背书节点进行身份认证,如果身份认证通过,向该背书节点发送连接申请,转2.2.3;如果身份认证未通过,则启动失败,转2.2.5;

2.2.3背书节点向tp发送“同意建立连接”消息;

2.2.4tp从背书节点接收“同意建立连接”消息,启动工作完成,转第三步;

2.2.5tp启动失败,转2.2.1;

第三步,令可验证域间路由子系统中任意一个自治域as1内的所有成功启动的路由行为验证终端为n1个,n1个成功启动的路由行为验证终端侦听来自可验证域间路由子系统的信息,确认是否与其路由行为验证代理模块建立连接,n1≤n,n为as1中的路由行为验证终端的个数,n为正整数;

3.1令可验证域间路由子系统中有m台域间路由器,m台域间路由器启动路由软件系统启动路由软件系统,m为正整数;

3.2可验证域间路由子系统中所有域间路由器启动路由行为验证代理模块,m台域间路由器并行向路由行为验证终端发送自治域信息、路由器信息,任意一个自治域as1中任意一台域间路由器r1向路由行为验证终端发送自治域信息、路由器信息的方法是:

3.2.1r1的路由行为验证代理模块进行初始化,包括设置路由行为验证代理模块所在路由器即r1、所属自治域as1信息即as1的自治域编号、设置路由器r1的id、设置as1内的n个路由行为验证终端的ip地址;

3.2.2路由行为验证代理模块将自治域as1信息、路由器r1信息发送给as1内的n1个成功启动的路由行为验证终端,申请与as1内的任意一个成功启动的路由行为验证终端rt1-1建立连接,将自治域as1信息及路由器r1信息发送给路由行为验证终端rt1-1;

3.3rt1-1的路由验证请求处理模块侦听来自as1的消息;

3.4rt1-1的路由验证请求处理模块通过从as1收到的自治域信息及路由器r1信息判定路由器r1是否属于as1,若属于as1,则记录路由器r1信息,同意与r1的路由行为验证代理模块建立连接,转第四步;如果不属于,则拒绝与r1的路由行为验证代理模块建立连接,转3.3;

第四步,自治域as1中的任意一台路由器r1向自治域as2中的一台路由器t发送路由信息ri;

第五步,路由器t接收来自r1的路由信息ri,根据情况,发送路由信息确认报文,方法如下:

5.1路由器t检查ri的正确性,如果检查正确,转5.2;如果检查有错误,则丢弃ri,转第六步;

5.2路由器t构造路由信息确认报文riq并将riq发送给路由器r1,转第六步;

第六步,r1等待从路由器t接收riq,如果r1收到从路由器t发来的riq,转第七步;如果在设置的时间阈值δ内仍未收到路由信息确认报文riq,转第四步;

第七步,r1、as1的路由行为验证终端rt1-1、路由验证区块链系统相互配合按第八步~第十四步的流程构造路由证据、构造路由证据验证提案、对路由证据验证提案进行验证、对路由证据验证提案进行背书、判断有背书节点签名的路由证据验证提案是否满足背书策略、生成路由证据交易、对路由证据交易进行共识排序、生成区块并更新路由验证区块链;同时路由器t、as2的路由行为验证终端rt2-1、路由验证区块链系统相互配合按第十五步~第二十步的流程构造验证路由请求报文、检查验证路由请求报文是否正确、在路由验证区块链检索是否存在路由请求对应的路由证据、向路由器t反馈路由信息的验证结果;

第八步,r1的路由行为验证代理模块根据ri构造路由证据,将路由证据发送给路由行为验证子系统,方法是:

8.1r1的路由行为验证代理模块从路由信息ri中提取相关内容,构造路由证据re,方法是将路由基本信息、前向路由证据prp、路由信息标识idr、路由接收者签名和公钥、路由发送者签名和公钥组合成re;

8.2路由器r1的路由行为验证代理模块将路由证据re发送给路由行为验证终端rt1-1;

第九步,路由行为验证终端rt1-1从路由器r1的路由行为验证代理模块接收re,将re构造成一个路由证据验证提案rea,将rea发送到与rt1-1有连接关系的一个背书节点bs1;

第十步,背书节点bs1监测是否从rt1-1接收到rea,若接收到rea,检查rea的完整性,若rea完整,根据背书策略将rea发送到背书策略规定的另外k个与bs1相连的背书节点,k为正整数,转第十一步;若rea不完整,转第十步继续等待;

第十一步,接收到rea的k个背书节点对rea并行进行验证:从rea提取路由证据,调用路由证据验证链码验证路由证据,得到k个路由证据验证提案结果,k个背书节点对rea进行验证的方法相同,k个背书节点中的任意一个背书节点bsi对rea进行验证的方法是:

11.1bsi从rea中提取出路由证据re;

11.2bsi执行路由证据验证链码,对re进行验证,方法如下:

11.2.1检查re的路由基本信息,方法是:

11.2.1.1检查路由验证区块链中是否存在re里面包含的前向路由证据prp,若不存在,丢弃re,转11.5;若存在,判定路由验证区块链中包含的prp中的路由发送时间戳是否比re中的路由发送时间戳要早,若早,转11.2.1.2;若不早,则丢弃re,转11.5;

11.2.1.2检查re中的路由前缀地址是否与路由验证区块链中包含的prp中的路由前缀地址相同,若相同,转11.2.1.3;若不相同,丢弃re,转11.5;

11.2.1.3检查re中的路由分类信息是否与路由验证区块链中包含的prp中的路由分类信息一致,若一致,转11.2.2;若不一致,丢弃re,转11.5;

11.2.2检查re的签名,方法是:

11.2.2.1使用re的路由发送者公钥检查路由发送者的签名是否正确,若正确,转11.2.2.2;若不正确,丢弃re,转11.5;

11.2.2.2使用re的路由接收者公钥检查路由接收者的签名是否正确,若正确,转11.2.3;若不正确,丢弃re,转11.5;

11.2.3检查re对应的路由信息是否是最佳路由,方法是使用r1的id、路由前缀地址作为索引,在路由验证区块链进行检索,查找是否存在满足索引条件的路由证据:若re对应的路由信息不是最优路由,将re丢弃,转11.5;若re通过最优路由验证,转11.3;

11.3bsi为路由证据验证提案rea进行背书,生成路由证据验证提案结果,背书方法采用当前各类区块链平台背书的方法,路由证据验证提案结果的内容为路由证据验证提案rea和背书节点bsi签名;

11.4bsi将带有bsi签名的路由证据验证提案结果发送给路由行为验证终端rt1-1,转第十二步;

11.5bsi生成背书节点签名字段为空的路由证据验证提案结果,并将该路由证据验证提案结果发送给路由行为验证终端rt1-1,转第十二步;

第十二步,路由行为验证终端rt1-1陆续接收来自于k个背书节点的路由证据验证提案结果,判断从k个背书节点陆续收到的路由证据验证提案结果中通过验证的路由证据验证提案是否满足背书策略,方法是:

12.1检查陆续收到的k个路由证据验证提案结果中带有背书节点签名字段的路由证据验证提案结果数是否大于等于k1,如满足,转12.2;如果不满足,则表示没有k1个背书节点为路由证据验证提案进行背书签名,不满足背书策略,表示此轮域间路由证据无法存入区块链,转第二十一步;k1由背书策略中规定,即至少有k1个背书节点签名的路由证据,才可以向排序节点提交路由证据交易,1≤k1≤k;

12.2路由行为验证终端rt1-1将k1个路由证据验证提案结果打包成一个路由证据交易路由证据交易结构中交易内容存放路由证据及各背书节点签名,将路由证据交易发送给与rt1-1通信的任意一个排序节点px1,转第十三步;

第十三步,排序节点px1判断是否从rt1-1接收到路由证据交易,若接收到路由证据交易,转13.1;若未接收到,转第十三步等待;

13.1检查交易内容是否符合背书策略,如果不符合,转13.5;如果符合,转13.2;

13.2排序节点px1将路由证据交易发送到路由验证区块链系统中其它所有的排序节点;

13.3路由验证区块链系统中所有排序节点对接收到的路由证据交易进行共识排序;如果达成共识,转13.4;如果没有达成共识,则转13.5;

13.4路由验证区块链系统中所有排序节点采用区块生成方法,将路由证据交易生成新的区块,n个排序节点生成的区块相同,将该区块广播到路由验证区块链系统中所有提交节点,转第十四步;

13.5路由验证区块链系统中所有排序节点丢弃路由证据交易,转第二十一步;

第十四步,路由验证区块链系统中所有提交节点从与之相连的排序节点接收新的区块,将区块加入到路由证据验证区块链中,检查区块里的交易是否有效即验证交易的签名是否有效、交易是否满足背书策略;如果检查有效,说明该交易是经背书节点签名背书过的,路由验证区块链系统中所有提交节点将区块加入本地路由验证区块链中,转第二十一步;如果检查无效,则丢弃该区块,转第二十一步;

第十五步,路由器t验证路由信息ri,方法如下:

15.1路由器t的路由行为验证代理模块构造验证路由请求,并将验证路由请求发送给t所属自治域as2的路由行为验证终端,方法如下:

15.1.1路由行为验证代理模块从ri中提取路由基本信息;

15.1.2路由行为验证代理模块构造ri的验证路由请求报文riqb,riqb的内容包括ri的路由基本信息、路由器t公钥、路由器t对ri的路由基本信息的签名;

15.1.3路由行为验证代理模块将riqb发送给as2的路由行为验证终端rt2-1;

第十六步,as2的路由行为验证终端rt2-1收到来自路由器t的riqb,检查riqb的签名是否正确,如果正确,则将riqb发送给路由验证区块链系统的与rt2-1相连的背书节点,转第十八步;如果签名不正确,转第十七步;

第十七步,丢弃验证路由请求报文riqb,转第二十一步;

第十八步,路由验证区块链系统的与rt2-1相连的任意一个背书节点接收riqb,对riqb进行验证:

18.1检查riqb的签名是否正确,如果签名正确,转18.2;如果签名不正确,转第十七步;

18.2从riqb中提取路由信息标识idr;

18.3在路由证据区块链中检索idr,如果在路由证据区块链中找到一个与idr相同的匹配项,则验证通过,转18.4;否则,验证失败,转18.6;

18.4构造一个路由信息验证成功报文riyc,即在riqb尾部加上验证成功标记、背书节点签名,将riyc反馈给路由行为验证终端rt2-1;

18.5rt2-1将riyc转发给路由器t,转第十九步;

18.6构造一个路由信息验证失败报文riys,即在riqb尾部加上验证失败标记、背书节点签名,将路由信息验证失败报文反馈给路由行为验证终端rt2-1;

18.7rt2-1将riys转发给路由器t,转第二十步;

第十九步,路由器t接收riyc,认为路由信息ri符合路由策略,从ri学习到新的路由,将新的路由添加到路由表中,转第二十一步;

第二十步,路由器t接收riys,认为路由信息ri违反路由策略,丢弃ri,转第二十一步;

第二十一步,转第四步。

2.如权利要求1所述的一种基于区块链的可验证域间路由验证方法,其特征在于所述路由信息指路由器之间传输的路由报文,由源as号、目的as号、时间戳、路由前缀、路由操作组成;所述路由基本信息包含路由发送者id,路由接收者id,路由发送时间戳,路由前缀地址,路由操作,路由分类信息。

3.如权利要求1所述的一种基于区块链的可验证域间路由验证方法,其特征在于所路由验证区块链系统基于fabric区块链平台实现;所述rea的结构与fabric区块链平台提案结构相同,rea构造方法采用fabric区块链平台提案构造方法;所述提取路由证据的方法采用fabric区块链平台从提案里提取数据的方法;所述路由证据交易与fabric区块链平台的路由证据交易结构相同;所述共识排序采用fabric区块链平台所公布的共识算法pbft。

4.如权利要求1所述的一种基于区块链的可验证域间路由验证方法,其特征在于2.2.2步所述tp向背书节点进行身份认证采用基于口令的认证方式。

5.如权利要求1所述的一种基于区块链的可验证域间路由验证方法,其特征在于5.1步所述路由器t对ri进行检查的方法为bgp路由协议检查路由信息的方法。

6.如权利要求1所述的一种基于区块链的可验证域间路由验证方法,其特征在于5.2步所述路由器t构造路由信息确认报文riq并将riq发送给路由器r1的方法是:

5.2.1从ri中提取出路由基本信息;

5.2.2路由器t根据ri构造路由信息确认报文riq,方法是:在ri后面,加上路由器t的公钥及签名;获取路由器t签名的方法是:使用路由器t的私钥,对ri的路由基本信息进行签名,得到路由器t对于ri的路由基本信息的签名;

5.2.3路由器t将riq发送给路由器r1。

7.如权利要求1所述的一种基于区块链的可验证域间路由验证方法,其特征在于第六步所述时间阈值δ设置为10秒钟。

8.如权利要求1所述的一种基于区块链的可验证域间路由验证方法,其特征在于第8.1步所述构造路由证据re的方法是:

8.1.1构建路由基本信息,路由发送者id由路由信息的源as号进行哈希得到;路由接收者id由路由信息的目的as号进行哈希得到;路由发送时间戳由路由信息的时间戳得到,路由前缀地址由路由信息的路由前缀字段得到;路由操作设置由路由信息的路由操作字段得到;路由分类信息根据路由信息的路径长度生成,以16位二进制表示,假设路径长度是nn,则路由分类信息的第nn位二进制设置为1,其他位设置为0,nn为正整数;

8.1.2构建前向路由证据prp,指向已存储在路由证据区块链中的一个路由证据,假设prp所指向的路由证据对应路由信息ri’,路由信息ri’是路由器r1收到的来自其他路由器的路由信息,r1在ri’后加上自身信息,即得到路由信息ri;

8.1.3构建路由信息标识idr,即将路由发送者id、路由接收者id、路由发送时间戳、路由前缀地址、路由操作、路由分类信息的哈希值组合成idr。

8.1.4将路由接收者收到路由信息时的签名作为路由接收者签名,将路由接收者自身的公钥作为路由接收者公钥;

8.1.5将路由发送者发送路由证据时的签名作为路由发送者签名,将路由发送者自身的公钥作为路由发送者公钥。

9.如权利要求1所述的一种基于区块链的可验证域间路由验证方法,其特征在于第11.2.2.1步所述使用re的路由发送者公钥检查路由发送者的签名是否正确的方法是:使用路由发送者公钥,对re内容进行哈希操作,比对哈希操作的结果与re的路由发送者签名是否一致。

10.如权利要求1所述的一种基于区块链的可验证域间路由验证方法,其特征在于第11.2.3步所述检查re对应的路由信息是否是最佳路由的具体方法是:

11.2.3.1如果在路由验证区块链找到一个路由证据re’,满足re’的路由分类信息优于re的路由分类信息,即re’对应路由信息的路径长度小于re对应路由信息的路径长度,证明有路由器曾经给r1发送过更好的路由,但r1没有把这个路由信息发送给路由接收者t,即re对应的路由信息不是最优路由;

11.2.3.2如果在路由验证区块链没有找到满足索引条件的路由证据,则说明路由发送者r1发送给路由接收者t的路由信息是最优路由,则re通过最优路由验证。

11.如权利要求1所述的一种基于区块链的可验证域间路由验证方法,其特征在于第十六步所述as2的路由行为验证终端rt2-检查riqb的签名是否正确的方法是:使用路由器t的公钥,对riqb内容进行哈希操作,比对哈希操作的结果与riqb的路由器t签名是否一致;如果签名一致,说明正确;如果签名不一致,说明不正确。

技术总结

本发明公开了一种基于区块链的可验证域间路由验证方法。技术方案是构建由可验证域间路由、路由行为验证子系统组成的基于区块链的可验证域间路由系统;路由行为验证子系统由路由行为验证终端和路由验证区块链系统组成。发送方路由器R1、R1所属自治域的路由行为验证终端、路由验证区块链系统构造路由证据、路由证据验证提案,对提案进行验证、背书、判断是否满足背书策略、生成路由证据交易、对交易进行共识排序、更新路由验证区块链;接收方路由器T、T所属自治域的路由行为验证终端、路由验证区块链系统构造验证路由请求报文、检索是否存在路由请求对应的路由证据。本发明能验证路由单点攻击和路由多点合谋攻击引起的违反路由策略的问题。

技术研发人员:刘亚萍;方滨兴;张硕;李哲;李清源

受保护的技术使用者:广州大学

技术研发日:.11.22

技术公布日:.02.28

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。