[发明专利]一种基于区块链的资源公钥基础设施的资源冲突检测方法有效
申请号: | 202110090441.5 | 申请日: | 2021-01-22 |
公开(公告)号: | CN112865979B | 公开(公告)日: | 2022-04-01 |
发明(设计)人: | 刘亚萍;张硕;方滨兴;郑黄 | 申请(专利权)人: | 广州大学 |
主分类号: | H04L9/32 | 分类号: | H04L9/32;G06Q40/04 |
代理公司: | 湖南企企卫知识产权代理有限公司 43257 | 代理人: | 任合明 |
地址: | 510006 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 区块 资源 基础设施 冲突 检测 方法 | ||
1.一种基于区块链的资源公钥基础设施的资源冲突检测方法,其特征在于包括以下步骤:
第一步,构建基于区块链的资源公钥基础设施系统RPKIB,RPKIB由资源颁发者、资源交易应用客户端、资源接收者、区块链网络组成;
区块链网络与资源颁发者、资源接收者、资源交易应用客户端相连;资源颁发者、资源接收者与区块链网络相连,作为区块链网络的客户端,资源交易应用客户端安装在资源颁发者或资源接收者上;资源交易应用客户端将资源证书以及路由起源授权ROA的各种操作作为交易通过区块链网络进行,并将交易记录保存在分布式账本中;分布式账本存在于所有区块链节点中;
资源交易应用客户端由资源交易模块、资源证书生成模块、显示模块组成;
资源证书生成模块与资源交易模块相连;资源证书生成模块从资源交易模块接收预颁发的RC证书即资源证书、ROA即路由起源授权的信息,根据预颁发的RC证书生成与RPKI定义相同的资源证书RC;资源证书生成模块根据预颁发的ROA信息对资源接收者所持有的资源创建ROA;资源证书生成模块将生成的RC或ROA发送给资源交易模块;
资源交易模块与资源证书生成模块、显示模块、区块链节点相连,从资源证书生成模块接收RC或ROA,从资源颁发者接收关于RC或ROA的操作指令,通过区块链网络进行交易,为资源颁发者提供RC或ROA资源交易的各种操作,包括:将RC或ROA颁发给资源接收者;将RC或ROA从资源接收者撤销;对RC或ROA进行修改;对RC进行更新操作;RC更新操作只需要对旧证书的有效期和序列号进行更改,不涉及证书携带的IP地址前缀和AS号;RC修改操作涉及证书携带的IP地址前缀和AS号;一个操作即为RPKIB中的一笔交易;交易成功时资源交易模块将成功消息发送到显示模块,交易不成功时资源交易模块将冲突检测到的冲突原因、操作失败原因、交易结果发送到显示模块,在撤销操作时将RC、ROA发送给显示模块;
显示模块与资源交易模块相连,它从资源交易模块接收交易成功消息或交易不成功时的冲突原因、操作失败原因、交易结果,并显示出来;在撤销操作时从资源交易模块接收RC、ROA,并将RC、ROA的具体内容显示出来;
第二步,构建资源交易结构,资源交易结构包括交易发起者,交易接收者,交易类型,交易内容,交易属性,交易证据、交易发起者给出的交易签名;
第三步,资源交易模块根据有效的资源证书RC构建资源树;资源树的一个节点包括10个域,分别是:资源颁发者,资源接收者,资源证书,父证书标识,子证书标识,证书中包含的IP地址前缀,证书中包含的AS即自治系统号,子RC资源IP前缀二叉树,子RC资源AS二叉树,已分配的ROA中IP地址前缀bloomfilter结构;节点通过子证书标识域链接到子节点,通过父证书标识域链接到节点的父节点;证书中包含的IP地址前缀,证书中包含的AS号,均由资源交易模块通过解析证书得到;资源树保存在分布式账本中,由资源颁发者和资源接收者共同维护;
第四步,在基于区块链的资源公钥基础设施系统RPKIB中,资源颁发者的资源证书生成模块颁发RC,并对待颁发的RC资源进行资源的重复、重叠以及包含关系的冲突检查,方法是:
4.1资源颁发者的资源证书生成模块对IP地址前缀资源进行冲突检测:将待分配的IP地址前缀r的最小值转换为r.min,将r的最大值转换为r.max,检索待颁发的CA的子RC资源IP前缀二叉树,方法是:
4.1.1如果待颁发的CA的子RC资源IP前缀二叉树为空,则拟分配的IP地址前缀不存在资源冲突,令IP地址前缀资源冲突检测通过值为1,记录拟在二叉树插入待颁发的CA节点的位置,转4.1.2.4;
4.1.2如果待颁发的CA的子RC资源IP前缀二叉树非空,则从该子RC资源IP前缀二叉树的根节点开始比较,该二叉树的每个节点记录分配的资源代表的两个整数,用start_ip,end_ip来表示;查找子RC资源IP前缀二叉树:
4.1.2.1若r.min≤end_ip且r.max≥start_ip,说明查找命中,有资源冲突,令IP地址前缀资源冲突检测通过值为0,表示IP地址前缀资源冲突检测不通过,转4.2;否则,转4.1.2.2;
4.1.2.2若r.min≤end_ip且r.maxstart_ip,且如果该节点有左子树即子RC资源IP前缀二叉树的左分支,继续查找该节点的左子树,将start_ip,end_ip更新为左子树根节点记录的两个值,转4.1.2.1;若r.min≤end_ip且r.maxstart_ip,且如果该节点没有左子树,转4.1.2.4;
4.1.2.3若r.minend_ip,且如果该节点有右子树即子RC资源IP前缀二叉树的右分支,继续查找该节点的右子树,将start_ip,end_ip更新为该右子树根节点记录的两个值,转4.1.2.1;若r.minend_ip,且如果该节点没有右子树,转4.1.2.4;
4.1.2.4令IP地址前缀资源冲突检测通过值为1,记录拟在二叉树插入待颁发的CA节点的位置,转4.2;
4.2如果IP地址前缀资源冲突检测通过值为0,则向资源颁发者发送“资源冲突检测失败,不能执行该RC”的颁发操作,转4.1;如果IP地址前缀资源冲突检测通过值为1,则转4.3;
4.3资源颁发者的资源证书生成模块对AS资源冲突进行检测:将待分配的AS范围s的最小值转换为s.min,将s的最大值转换为s.max,如果拟分配的AS是一个值,则s.min等于s.max;检索待颁发的CA的子RC资源AS二叉树,方法是:
4.3.1如果待颁发的子RC资源AS二叉树为空,则拟分配的AS不存在资源冲突,令AS资源冲突检测通过值为1,并记录拟在二叉树插入待颁发的CA节点的位置,转4.3.3;如果待颁发的子RC资源AS二叉树非空,则从二叉树的根节点开始比较,该二叉树的每个节点记录分配的资源转换成的两个整数,用start_as,end_as来表示,转4.3.2;
4.3.2按下述方式查找子RC资源AS二叉树,方法是:
4.3.2.1若s.min≤end_as且s.max≥start_as,说明查找命中,有资源冲突,令AS资源冲突检测通过值为0,表示AS资源冲突检测不通过,转4.3.3;
4.3.2.2若s.min≤end_as且s.maxstart_as,且如果该节点有左子树,继续查找该节点的左子树,将start_as,end_as更新为该左子树根节点记录的两个值,转4.3.2.1;若s.min≤end_as且s.maxstart_as,且如果该节点没有左子树,转4.3.2.4;
4.3.2.3若s.minend_as,且如果该节点有右子树,继续查找该节点的右子树,将start_as,end_as更新为该右子树根节点记录的两个值,转4.3.2.1;若s.minend_as,且如果该节点没有右子树,转4.3.2.4;
4.3.2.4向资源颁发者发送AS资源冲突检测通过值“1”,并记录拟在二叉树插入待颁发的CA节点的位置,转4.3.3;
4.3.3如果AS资源冲突检测通过值为0,则向资源颁发者发送“资源冲突检测失败,不能执行该RC的颁发操作”的消息,转4.3,对下一个RC进行资源冲突检测;如果AS资源冲突检测通过值为1,转4.4;
4.4资源颁发者的资源交易模块向区块链提交RC颁发交易,如果向区块链提交成功,转4.5;若向区块链提交不成功,则转4.4;
4.5资源颁发者的资源交易模块根据4.1得到的二叉树位置在子RC资源IP前缀二叉树中生成新节点,在新节点记录拟分配的r.min和r.max;根据4.3得到的二叉树位置在子RC资源AS二叉树中生成新节点,在新节点记录拟分配的s.min和s.max;
第五步,区块链平台部署的智能合约或链码对收到的RC颁发交易进行资源冲突检查,包括资源冲突的重复、重叠以及包含关系的冲突检查,方法是:
5.1智能合约或链码查找父证书:智能合约或链码解析从4.4收到的RC颁发交易内容,解析拟颁发证书中的父证书标识id,依据父证书标识id,在其存储的证书key-vlaue结构中定位父证书;如果定位父证书结果为空,说明收到的RC证书内容错误,向资源颁发者返回“交易不成功”的消息,转第八步;否则,从4.4收到的RC颁发交易的证书反序列化出证书结构,并根据证书结构定位父证书的子RC资源IP前缀二叉树和子RC资源AS二叉树的根节点,转5.2;
5.2智能合约或链码对IP地址前缀资源进行冲突检测:将从4.4收到的RC中待分配的IP地址前缀r转换为r.min和r.max两个整数;检索父证书节点对应的子RC资源IP前缀二叉树,方法是:
5.2.1如果父证书节点对应的子RC资源IP前缀二叉树为空,则拟分配的IP地址前缀不存在资源冲突,令IP地址前缀资源冲突检测通过值为1,记录拟在二叉树插入待颁发的CA节点的位置,转5.3;如果父证书节点对应的子RC资源IP前缀二叉树非空,则从二叉树的根节点开始比较,该二叉树的每个节点记录分配的资源转换成的两个整数,用start_ip,end_ip来表示,转5.2.2;
5.2.2按下述方式查找子RC资源IP前缀二叉树,方法是:
5.2.2.1若r.min≤end_ip且r.max≥start_ip,说明查找命中,有资源冲突,令IP地址前缀资源冲突检测通过值为0,表示IP地址前缀资源冲突检测不通过,转5.3;否则,转5.2.2.2;
5.2.2.2若r.min≤end_ip且r.maxstart_ip,且如果该节点有左子树,继续查找该节点的左子树,将start_ip,end_ip更新为该左子树根节点记录的两个值,转5.2.2.1;若r.min≤end_ip且r.maxstart_ip,且如果该节点没有左子树,转5.2.2.4;
5.2.2.3若r.minend_ip,且如果该节点有右子树,继续查找该节点的右子树,将start_ip,end_ip更新为该右子树根节点记录的两个值,转5.2.2.1;若r.minend_ip,且如果该节点没有右子树,转5.2.2.4;
5.2.2.4拟分配的IP地址前缀不存在资源冲突,令IP地址前缀资源冲突检测通过值为1,记录拟在子RC资源IP前缀二叉树插入待颁发的CA节点的位置,转5.3;
5.3如果IP地址前缀资源冲突检测通过值为0,则直接向资源颁发者发送“资源冲突检测失败,返回交易不成功”的消息,转第五步对接收到的RC颁发交易进行资源冲突检查;如果IP地址前缀资源冲突检测通过值为1,则转5.4;
5.4智能合约或链码对AS资源进行冲突检测:将从4.4收到的RC证书中AS范围s转换为s.min和s.max两个整数,如果AS是一个值,则s.min等于s.max;检索收到的RC证书中CA的子RC资源AS二叉树,方法是:
5.4.1如果收到的RC证书中子RC资源AS二叉树为空,则拟分配的AS不存在资源冲突,令AS资源冲突检测通过值为1,并记录拟在二叉树插入待颁发的CA节点的位置,转5.4.3;如果收到的RC证书中子RC资源AS二叉树非空,则从RC证书中子RC资源AS二叉树的根节点开始比较,该RC证书中子RC资源AS二叉树的每个节点记录分配的资源转换成的两个整数,用start_as,end_as来表示,转5.4.2;
5.4.2按下述方式查找RC证书中子RC资源AS二叉树,方法是:
5.4.2.1若s.min≤end_as且s.max≥start_as,说明查找命中,有资源冲突,令AS资源冲突检测通过值为0,表示AS资源冲突检测不通过,转5.4.3;
5.4.2.2若s.min≤end_as且s.maxstart_as,且如果该节点有左子树,继续查找该节点的左子树,用start_as,end_as表示该左子树根节点记录的两个值,转5.4.2.1;若s.min≤end_as且s.maxstart_as,且如果该节点没有左子树,转5.4.2.4;
5.4.2.3若s.minend_as,且如果该节点有右子树,继续查找该节点的右子树,将start_as,end_as更新为该右子树根节点记录的两个值,转5.4.2.1;若s.minend_as,且如果该节点没有右子树,转5.4.2.4;
5.4.2.4向资源颁发者发送AS资源冲突检测通过值“1”,并记录拟在RC证书中子RC资源AS二叉树插入待颁发的CA节点的位置,转5.4.3;
5.4.3如果AS资源冲突检测通过值为0,则向资源颁发者发送“资源冲突检测失败,不能执行该RC的颁发操作”的消息,转5.4;如果AS资源冲突检测通过值为1,转5.5;
5.5如果区块链达成共识,记录收到的RC证书,并根据5.2得到的拟在子RC资源IP前缀二叉树插入待颁发的CA节点的位置在子RC资源IP前缀二叉树中生成新节点,在新节点记录r.min和r.max;根据5.4得到的拟在RC证书中子RC资源AS二叉树插入待颁发的CA节点的位置在子RC资源AS二叉树中生成新节点,在新节点记录s.min和s.max的值;
第六步,资源颁发者的资源证书生成模块颁发ROA,并对待颁发的ROA资源进行资源冲突的检查,方法是:
6.1对ROA资源进行冲突检测,方法是:
6.1.1将拟颁发的ROA中的IP地址前缀转换成的字符串str,依据bloomfilter结构所选择的k个哈希函数分别计算哈希函数h(1,str),h(2,str)……h(k,str);然后检查BitSet的第h(1,str)、h(2,str)……h(k,str)位是否为1,若其中任何一位不为1,则判定str没有被记录过,说明未发生ROA资源冲突,令ROA资源冲突检测通过值为1,转6.2;如果所有位均为1,执行6.1.2;
6.1.2根据资源颁发者对CA颁发记录的所有ROA列表遍历所拥有的ROA记录,将拟颁发的ROA中的IP地址前缀逐一与已颁发的ROA所包含的IP地址前缀进行比较,查看是否有相同的IP地址前缀,如果命中,则向资源颁发者发送“发生ROA资源冲突,资源颁发者不能颁发该ROA”的消息,令ROA资源冲突检测值为0,转第六步;如果未命中,令ROA资源冲突检测的返回值为1,执行6.2;
6.2资源颁发者通过ROA资源冲突检查,向区块链提交ROA颁发交易;如果向区块链提交成功,执行6.3;如果向区块链提交不成功,转第六步;
6.3存储颁发成功的ROA信息,并在资源颁发者节点的ROA列表中记录新颁发的ROA标识信息,将资源颁发者节点的对应BitSet的第h(1,str)、h(2,str)……h(k,str)位设为1,转第七步;
第七步,区块链平台部署的智能合约或链码对收到的ROA颁发交易进行资源冲突检查,检查是否有IP地址前缀重复的ROA资源颁发,方法是:
7.1智能合约或链码查找父证书:智能合约或链码解析收到的ROA颁发交易内容,解析拟颁发证书中的父证书标识id,依据父证书标识id,在其存储的证书key-vlaue结构中定位父证书;如果定位父证书结果为空,说明收到的ROA证书内容错误,向显示模块发送“交易不成功”的消息,转第八步;否则,从请求的证书反序列化出证书结构,并定位父证书节点对应的已分配ROA的IP地址前缀bloomfilter结构的BitSet,转7.2;
7.2对ROA资源进行冲突检测,方法是:
7.2.1将6.2步接收的ROA中的IP地址前缀转换成的字符串str,依据bloomfilter所选择的k个哈希函数分别计算哈希函数h(1,str),h(2,str)……h(k,str);然后检查BitSet的第h(1,str)、h(2,str)……h(k,str)位是否为1,若其中任何一位不为1,则判定str没有被记录过,说明未发生ROA资源冲突,则ROA资源冲突检测的返回值为1,执行7.3;如果所有位均为1,执行7.2.2;
7.2.2根据父证书节点记录的所有ROA列表遍历所拥有的ROA节点,将待查的ROA中的IP地址前缀逐一与已颁发的ROA所包含的IP地址前缀进行比较,查看是否有相同的IP地址前缀,如果命中,则向显示模块发送“发生ROA资源冲突,资源冲突检测失败,交易不成功”的消息,ROA资源冲突检测的返回值为0,转第八步;如果未命中,ROA资源冲突检测的返回值为1,执行7.3;
7.3如果区块链达成共识,则记录颁发成功的ROA信息,并在父证书节点的ROA列表中记录新颁发的ROA标识信息,将父证书节点对应BitSet的第h(1,str)、h(2,str)……h(k,str)位设为1,转第八步;
第八步,结束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州大学,未经广州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110090441.5/1.html,转载请声明来源钻瓜专利网。