基于拜占庭容错的抗自适应攻击联盟链共识方法与流程

文档序号:18791561发布日期:2019-09-29 18:54阅读:670来源:国知局

本发明涉及一种联盟链网络的拜占庭容错共识方法。



背景技术:

区块链是一种去信任化的分布式账本系统,其概念源于2008年中本聪在密码学邮件组发表的《比特币:一种点对点电子现金系统》一文,阐述了一种基于非对称加密、共识算法、p2p协议等多种技术融合构建的去中心化基础架构。共识算法作为区块链的核心技术,能够在缺乏中央控制的网络中,实现数据的分布式一致性,对维护系统的稳定运行和节点相互信任起着重要作用。

拜占庭容错共识算法是分布式系统应用复制技术解决拜占庭错误的通用方案,其提案节点拥有发起提案、分配序号等核心功能,然而现有大部分方案在提案之前便揭晓提案节点身份,极容易遭受敌手自适应选择提案节点发起分布式拒绝服务攻击ddos(distributeddenialofservice),以中断提案进程,严重影响系统活性,这种攻击被称为自适应攻击。

此外,现有拜占庭容错方案大多采用三阶段协议在副本之间进行状态复制,并以两两交互的方式保证各副本状态达成一致,每次交互均需2f+1个共识节点收到2f+1个相同的投票才能满足系统一致性要求,称之为“双2f+1”条件。由于联盟链参与节点众多、位置分散,网络传输的时效性难以保证,因此一旦发生消息丢失或网络拥塞、延迟等问题,将导致“双2f+1”条件不满足,使得系统在当前视图无法达成一致,必须更换视图,造成系统资源极大浪费。

中国专利文献公开了“一种应用于联盟链的拜占庭容错共识方法及终端”(cn109167661a):在每一轮共识过程中,根据每一个待选共识节点上的私钥、序号、当前的视图及上一轮共识过程产生的区块对应的哈希值,计算得到每一个待选共识节点对应的哈希值,从而筛选出唯一的第一共识节点;并通过第一共识节点,生成提案信息,并分别将提案信息发送至每一个待选共识节点;根据接收到由待选共识节点发送的与提案信息对应的验证通过信息,生成标识信息,并分别发送至每一个待选共识节点,若第一共识节点接收到的标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识。该方案在提高联盟链共识性能的同时,能够确保联盟链的安全性。该文选主方式更加随机化。该文根据每一个待选共识节点上的私钥、序号、当前的视图的编号及上一轮共识过程产生的区块对应的哈希值,计算得到每一个待选共识节点对应的哈希值,从而筛选出唯一的提案者,但该提案者在提案之前身份暴露,敌手容易针对性地发起自适应攻击,破坏系统活性。



技术实现要素:

本发明的目的就是提供一种基于拜占庭容错的抗自适应攻击联盟链共识方法,旨在能够抵抗自适应攻击,且具备强鲁棒性和高扩展性,为高可用拜占庭容错系统提供支持。

实现本发明目的所采用的技术方案是,一种基于拜占庭容错的抗自适应攻击联盟链共识方法,包括以下步骤:

匿名选主步骤:从联盟链网络中所有共识节点中选择一名潜在提案者pp;所述潜在提案者pp在提案之前身份隐藏;

提案步骤:所述潜在提案者pp构建提案区块,签名后向联盟链网络进行广播;所述潜在提案者pp在提案之后身份暴露,退变为普通共识节点;

投票步骤:共识节点对收到的提案区块进行验证,包括潜在提案者pp的签名验证、提案区块内的交易内容验证以及潜在提案者pp的身份验证;然后对提案区块进行基于门限签名的投票,投票结果在联盟链网络中广播;

确认步骤:如有共识节点在预定时间内收到一条对提案区块的合法门限签名,则所述提案区块完成共识;所述联盟链网络中的所有节点保存所述完成共识的提案区块;

所述匿名选主步骤中,潜在提案者pp的具体选择方法是:联盟链网络中的所有共识节点首先计算承诺凭证cp,承诺凭证cp是对最近达成共识的特殊区块哈希值的签名;然后对承诺凭证cp进行哈希运算,将哈希运算得到的承诺com再进行环签名运算,得到匿名承诺acom;再将匿名承诺acom和承诺com向联盟链网络进行广播,形成全局一致的有序承诺序列ordercom;所述有序承诺序列ordercom指定了一组身份隐藏的潜在提案者pp;

所述匿名选主步骤中,有序承诺序列ordercom={com1,com2,…,comm},其中com1>com2>,…,>comm,m是联盟链网络中承诺com的总数量,每一个承诺com背后对应一位潜在提案者pp;每个共识节点根据有序承诺序列ordercom指定的排序位置被依次选为潜在提案者pp进行提案。

所述提案步骤中,如果潜在提案者pp是有序承诺序列ordercom中的最后一位潜在提案者,则收集联盟链网络中的匿名承诺acom和承诺com,并和承诺凭证cp一起打包进特殊区块,进行提案;否则潜在提案者pp收集联盟链网络中的交易,并和承诺凭证cp一起打包进一般区块,进行提案;

所述投票步骤中,验证潜在提案者pp身份的具体方法是:对提案区块中的承诺凭证cp进行一次哈希运算,并与有序承诺序列ordercom中对应的承诺com进行对比,即可证明潜在提案者pp身份的合法性。

所述投票步骤中,对提案区块进行基于门限签名的投票的具体方法是:共识节点对验证通过的提案区块进行部分签名,并向其他共识节点发送基于部分签名的投票消息,如果共识节点收到2f+1个基于部分签名的投票消息(f为拜占庭节点数量),则将这2f+1个基于部分签名的投票消息合成一条门限签名,并向其他共识节点发送基于门限签名的投票消息;

与现有技术相比,本发明的有益效果是:

1.本发明基于环签名构造匿名排序选主算法,参与共识的节点能够在不泄露身份的前提下得到各自承诺com在有序承诺序列ordercom中的排序位置,并依据排序位置依次选为潜在提案者进行提案。在潜在提案者公开承诺凭证cp之前,承诺com使用哈希函数完美地隐藏了提案者身份,哈希函数的良好特性使得承诺值随机均匀分布,敌手不能获得任何承诺内容,进而无法推断承诺com背后对应的节点身份,因此本发明能够有效防止自适应攻击,保证了系统在提案之前的活性。

2.本发明通过在多轮投票中合成代表大多数投票者意愿的门限签名,弱化了“双2f+1”拜占庭条件,保证任何时候只要存在一个状态良好的节点能够合成并传达代表法定人数投票意愿的门限签名,即可在最小连通性的网络环境中实现了低延迟、高鲁棒性的拜占庭容错共识算法。最小连通性网络构成最小共识单元,最小共识单元即可实现全网共识,从而使得系统可动态规划签名合成人数,优化最小共识单元数量,从而具有节省网络资源、扩展网络规模等特点。

3.本发明在减少系统开销,提升可扩展性的同时,具有较高的安全性,能够在提案之前、提案之后均能有效地保证系统活性,为高可用拜占庭系统提供支持。

具体实施方式

下面结合具体实施方式对本发明作进一步的详细说明。

匿名选主步骤:从联盟链网络中所有共识节点中选择一名潜在提案者pp;所述潜在提案者pp在提案之前身份隐藏;

提案步骤:所述潜在提案者pp构建提案区块,签名后向联盟链网络进行广播;所述潜在提案者pp在提案之后身份暴露,退变为普通共识节点;

投票步骤:共识节点对收到的提案区块进行验证,包括潜在提案者pp的签名验证、提案区块内的交易内容验证以及潜在提案者pp的身份验证;然后对提案区块进行基于门限签名的投票,投票结果在联盟链网络中广播;

确认步骤:如有共识节点在预定时间内收到一条对提案区块的合法门限签名,则所述提案区块完成共识;所述联盟链网络中的所有节点保存所述完成共识的提案区块;

所述匿名选主步骤中,潜在提案者pp的具体选择方法是:联盟链网络中的所有共识节点首先计算承诺凭证cp,承诺凭证cp是对最近达成共识的特殊区块哈希值的签名;然后对承诺凭证cp进行哈希运算,将哈希运算得到的承诺com再进行环签名运算,得到匿名承诺acom;再将匿名承诺acom和承诺com向联盟链网络进行广播,形成全局一致的有序承诺序列ordercom;所述有序承诺序列ordercom指定了一组身份隐藏的潜在提案者pp;

所述匿名选主步骤中,有序承诺序列ordercom={com1,com2,…,comm},其中com1>com2>,…,>comm,m是联盟链网络中承诺com的总数量,每一个承诺com背后对应一位潜在提案者pp;每个共识节点根据有序承诺序列ordercom指定的排序位置被依次选为潜在提案者pp进行提案。

所述提案步骤中,如果潜在提案者pp是有序承诺序列ordercom中的最后一位潜在提案者,则收集联盟链网络中的匿名承诺acom和承诺com,并和承诺凭证cp一起打包进特殊区块,进行提案;否则潜在提案者pp收集联盟链网络中的交易,并和承诺凭证cp一起打包进一般区块,进行提案;

所述投票步骤中,验证潜在提案者pp身份的具体方法是:对提案区块中的承诺凭证cp进行一次哈希运算,并与有序承诺序列ordercom中对应的承诺com进行对比,即可证明潜在提案者pp身份的合法性。

所述投票步骤中,对提案区块进行基于门限签名的投票的具体方法是:共识节点对验证通过的提案区块进行部分签名,并向其他共识节点发送基于部分签名的投票消息,如果共识节点收到2f+1个基于部分签名的投票消息(f为拜占庭节点数量),则将这2f+1个基于部分签名的投票消息合成一条门限签名,并向其他共识节点发送基于门限签名的投票消息。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1