CN115051985B - 一种基于动态节点的拜占庭容错共识协议的数据共识方法 - Google Patents

一种基于动态节点的拜占庭容错共识协议的数据共识方法 Download PDF

Info

Publication number
CN115051985B
CN115051985B CN202210338172.4A CN202210338172A CN115051985B CN 115051985 B CN115051985 B CN 115051985B CN 202210338172 A CN202210338172 A CN 202210338172A CN 115051985 B CN115051985 B CN 115051985B
Authority
CN
China
Prior art keywords
node
consensus
nodes
collector
signature
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210338172.4A
Other languages
English (en)
Other versions
CN115051985A (zh
Inventor
唐飞
彭金兰
徐婷鲜
黄永洪
黄东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Ruitaixin Information Co ltd
Original Assignee
Shenzhen Ruitaixin Information Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Ruitaixin Information Co ltd filed Critical Shenzhen Ruitaixin Information Co ltd
Priority to CN202210338172.4A priority Critical patent/CN115051985B/zh
Publication of CN115051985A publication Critical patent/CN115051985A/zh
Application granted granted Critical
Publication of CN115051985B publication Critical patent/CN115051985B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明属于区块链技术领域,具体涉及一种基于动态节点的拜占庭容错共识协议的数据共识方法,该方法包括:初始化系统,随机选取节点作为共识组;更新共识组中的各个节点;在新的共识组节点中随机选取主节点、提交收集器节点以及执行收集器节点;主节点接收来自客户端的请求信息,并将请求信息打包成区块后广播到共识组的所有节点;每个节点采用私钥对区块信息进行签名,并将签名发送给提交收集器节点;提交收集器节点执行快速数据共识过程或者执行线性数据共识过程;本发明设计了一种新的基于动态节点的拜占庭容错共识协议,该协议可以在无需停机进行节点信息重配置的条件下,实现节点的分布式加入、退出,同时也能够抵御对主节点的自适应攻击。

Description

一种基于动态节点的拜占庭容错共识协议的数据共识方法
技术领域
本发明属于区块链技术领域,具体涉及一种基于动态节点的拜占庭容错共识协议的数据共识方法。
背景技术
区块链技术是一种去中心化、去信任化的分布式数据库技术方案。该数据库由参与系统的所有节点共同维护,具有去中心化、不可篡改性、透明性、安全性等特性。区块链技术运用密码学算法、Merkle树结构、时间戳以及共识协议,在节点相互不信任的分布式网络中实现节点存储的一致性,解决了传统中心化模式中安全性不足、可靠性差、高成本等问题。
近年来,在对区块链共识的研究过程中,越来越多的技术被用于实现高效的轮内投票算法、更强的容错性能力和高效的视图转换方式,但对于节点动态加入或退出的研究却寥寥无几。目前,联盟链被广泛应用于各个领域,节点加入和退出联盟链的方式可以通过认证中心的授权来实现的。但是区块链技术设计之初就是为了解决传统中心化模式中存在的问题,通过认证中心的方式一定程度上毁坏了其分布式的特性,同时也存在单点故障的问题。
在共识过程中,主节点一般是通过轮询的方式选取得到的,这种选取方式较为随意,故节点在当前轮次共识之前便知晓主节点的身份,当主节点发起新的提案时,易被恶意节点进行分布式拒绝服务DDoS,使得主节点提案过程被中断,破坏共识的达成。同时,如果恶意节点频繁攻击主节点,会导致视图切换的次数大大增加,浪费系统资源,导致共识效率大大降低。
发明内容
为解决以上现有技术存在的技术问题,本发明提出了一种基于动态节点的拜占庭容错共识协议的数据共识方法,该方法包括:构建区块链系统,该系统包括副本节点、主节点、C-collector节点以及E-collector节点,采用基于动态节点的拜占庭容错共识协议对数据进行共识的过程包括:
S1:初始化系统的共识参数和各个节点的密钥;
S2:根据初始化的共识参数随机选取节点作为共识组;
S3:更新共识组中的各个节点,得到新的共识组;更新共识组包括新的节点加入共识组或者共识组中的节点被撤销;其中,共识组中的节点被撤销包括:节点分布式主动退出共识组、节点分布式被动撤销共识组以及退出节点密钥管理;
S4:在新的共识组节点中选取主节点,并随机选取C-collector节点和 E-collector节点;
S5:主节点接收来自客户端的请求信息,并将请求信息打包成区块后广播到共识组的所有节点;
S6:每个节点采用自己的私钥ski对区块信息进行签名,并将签名发送给 C-collector节点;
S7:C-collector节点确定接收的数据,根据接收的数据判断执行fast-path 数据共识过程或者执行linear-PBFT数据共识过程。
优选的,初始化系统的共识参数和各个节点的密钥包括:
S11:确定共识小组的初始节点数n;
S12:确定签名初始阈值参数t1、t2以及t3,该参数用于判断共识是否进入下一阶段以及是否进行双视图的转换;
S13:每个节点运行分布式密钥生成算法生成各自的私钥ski,并根据私钥计算公钥pki,并将公钥广播给给个节点;
S14:每个节点运行共识算法,对初始化过程中生成的公共参数params达成分布式一致,所述公共参数包括共识小组初始节点数、签名阈值参数以及公私钥集。
优选的,新的节点加入共识组的过程包括:
步骤1:新加入节点向共识组节点发送加入申请;
步骤2:共识组节点验证新加入节点身份,对其包含身份信息的数据进行签名,并将签名后的数据发送给C-collector;
步骤3:C-collector若收到所有节点的签名消息,则将其聚合并广播给共识组的所有节点;
步骤4:共识组节点根据新加入节点的身份,生成对应的私钥份额发送给新加入节点;
步骤5:新加入节点将签名份额进行累加,得到自己的私钥,根据私钥计算自己的公钥,并将公钥广播给共识组的所有节点;
步骤6:共识组节点将新加入节点的公钥添加至公共参数中,并进行一次公共参数的共识。
优选的,节点分布式主动退出共识组的过程包括:
步骤1:主动退出节点向共识组节点发送退出申请;
步骤2:共识组节点验证退出消息的有效性,并发送签名给E-collector;
步骤3:E-collector若收到超过(2n)/3的节点发来的签名消息,则将其聚合并广播给共识组的所有节点;
步骤4:共识组节点验证聚合签名的有效性,然后向主动退出节点发送退出成功消息;
步骤5:共识组节点将其退出消息记录在撤销列表CRL中,删除公共参数中退出节点的公钥,并发送退出成功消息给主动退出节点;
步骤6:共识组节点广播撤销列表,对撤销列表以及公共参数达成分布式一致。
优选的,节点分布式被动撤销共识组的过程包括:
步骤1:共识组节点广播投诉消息给共识组的所有节点;
步骤2:共识组中的节点若收到超过(2n)/3的节点发来的投诉消息,则发送签名给E-collector;
步骤3:E-collector若收到(2n)/3的签名消息,则将签名进行聚合并广播退出成功消息给共识组的所有节点;
步骤4:共识组节点将其退出消息记录在撤销列表CRL中,删除公共参数中退出节点的公钥;
步骤5:共识组节点广播撤销列表,对撤销列表以及公共参数达成分布式一致。
优选的,退出节点密钥管理的过程包括:
步骤1:若退出节点为初始共识组节点,则退出节点在分布式密钥生成中所使用多项式将由其余节点赋予新加入的某个节点,此时这个节点拥有与初始签名组同等的权利;
步骤2:若退出节点不为初始共识组节点,则无需进行多项式的权利变更操作,直接退出共识组。
优选的,选取主节点的过程包括:
S41:获取全网公知的数seed,根据数seed和该节点的私钥ski采用确定性算法F生成随机数value;设置阈值条件,该阈值条件为分布在1~n之内的随机数;将生成的随机数与设置的阈值条件进行对比,若该随机数满足设置的阈值条件,则生成该随机数的节点为当前主节点,否则,该节点不为主节点;
S42:将全网公知的数seed和私钥输入到确定性算法F中,生成随机数的证明proof;
S43:验证proof是否可以正确计算出value,且value是否由ski的拥有者所生成;其中验证过程在主节点发布打包区块之后,由共识组其余节点进行验证,判断其是否为当前主节点。
优选的,根据接收的数据判断执行fast-path数据共识过程或者执行 linear-PBFT数据共识过程:设置数据接收时间阈值,在设置的数据接收时间阈值范围内确定C-collector节点接收的数据量,若在接收的数据量未超过3f+c+1,则执行fast-path数据共识过程;若在数据接收时间阈值内超过3f+c+1,则执行执行linear-PBFT数据共识过程;其中,f表示可容忍的拜占庭节点个数,c表示冗余服务器的个数。
进一步的,执行fast-path数据共识过程包括:
步骤1:C-collector节点对签名进行聚合,并将聚合签名发送至共识组所有节点;
步骤2:每个节点收到聚合签名后,将签名提交到区块,并执行客户端请求,对当前区块状态摘要d=digest(Dx)进行签名,并将该签名发送给E-collector节点;其中digest表示哈希函数,Dx表示区块状态;
步骤3:E-collector节点将签名进行聚合,并将聚合签名发送至共识组所有节点以及客户端;
步骤4:客户端验证共识操作是否被执行,若被执行,则共识完成,否则共识无效。
进一步的,执行linear-PBFT数据共识过程包括:
步骤1:C-collector节点对签名进行聚合,并将聚合签名发送至共识组所有节点;
步骤2:每个节点收到聚合签名后,对聚合签名再进行一次签名并发送给 C-collector节点;
步骤3:C-collector节点将签名进行聚合,并将聚合签名发送至共识组所有节点;
步骤4:每个节点收到聚合签名后,提交区块,并执行客户端请求,对当前区块状态摘要d=digest(Dx)进行签名,并将该签名发送给E-collector节点;其中 digest表示哈希函数,Dx表示区块状态;
步骤5:E-collector节点将签名进行聚合,并将聚合签名发送至共识组所有节点以及客户端;
步骤6:客户端验证共识操作是否被执行,若被执行,则共识完成,否则共识无效。
本发明的有益效果:
本发明在SBFT共识的基础上,主要利用VRF、聚合签名、DKG等密码学技术,设计了准入协议、撤销协议以及相关消息类型的数据结构,实现了主节点的匿名选取、节点的动态加入、退出以及节点密钥的分布式授权。该协议可以在无需停机进行节点信息重配置的条件下,实现节点的分布式加入、退出,同时也能够抵御对主节点的自适应攻击。
附图说明
图1为本发明的基于动态节点的拜占庭容错共识协议对数据进行共识的流程图;
图2为本发明实施例提供的一种VRF执行模型图;
图3为本发明实施例提供的一种fast-path共识执行流程图;
图4为本发明实施例提供的一种Linear-PBFT共识执行流程图;
图5为本发明实施例提供的一种节点分布式加入流程图;
图6为本发明实施例提供的一种节点分布式主动退出流程图。
图7为本发明实施例提供的一种节点分布式被动撤销流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种基于动态节点的拜占庭容错共识协议的数据共识方法,包括:获取待共识的节点,采用拜占庭容错共识协议对待共识的节点进行共识。
本发明实施例提供了一种面向节点动态变化的拜占庭容错共识协议,该协议由VRF、聚合签名、DKG等密码学技术实现。在区块链共识过程中的节点用于实现数据的分布式一致性。所述节点除了进行投票外,还可以拥有额外的角色(功能):主节点、C-collector、E-collector。主节点:接收客户端的请求消息,并将请求消息打包成区块广播给所有的节点。C-collector:收集提交消息并将(组合的)签名发送回所有节点,以便节点拥有块可以被提交的证书。 E-collector:收集执行消息并将(组合的)签名发送回所有节点和客户端,表明当前状态是持久并且操作已经被执行。
一种基于动态节点的拜占庭容错共识协议的数据共识方法的具体实施方式,如图1所示,该方法包括构建区块链系统,该系统包括副本节点、主节点、 C-collector节点以及E-collector节点,采用基于动态节点的拜占庭容错共识协议对数据进行共识的过程包括:
S1:初始化系统的共识参数和各个节点的密钥;
S2:根据初始化的共识参数随机选取节点作为共识组;
S3:更新共识组中的各个节点,得到新的共识组;更新共识组包括新的节点加入共识组或者共识组中的节点被撤销;其中,共识组中的节点被撤销包括:节点分布式主动退出共识组、节点分布式被动撤销共识组以及退出节点密钥管理;
S4:在新的共识组节点中选取主节点,并随机选取C-collector节点和E-collector节点;
S5:主节点接收来自客户端的请求信息,并将请求信息打包成区块后广播到共识组的所有节点;
S6:每个节点采用自己的私钥ski对区块信息进行签名,并将签名广播到 C-collector节点;
S7:C-collector节点确定接收的数据,根据接收的数据判断执行fast-path 数据共识过程或者执行linear-PBFT数据共识过程。
具体的,拜占庭容错共识协议包括:
S1、初始化:共识参数以及节点密钥初始化。
S11、确定共识小组初始人数n。其中,n=3f+2c+1,f为可容忍的拜占庭节点个数,c为冗余服务器的个数。所述共识小组中的每个节点P={P1,P2,...,Pn}拥有唯一的身份标识ID={id1,id2,...,idn}。其中Pn表示第n个共识小组中的节点,idn表示第n个共识小组中的节点身份标识。
S12、确定签名初始阈值参数t1=3f+c+1,t2=2f+c+1,t3=f+1,所述参数用于判断共识是否进入下一阶段以及是否进行双视图的转换。
S13、每个节点pi运行分布式密钥生成算法生成各自的私钥ski,计算自己的公钥pki并广播给每个节点。
S131、每个节点pi选择两个t2-1多项式并广播/>其中i=1,2,...,n,k=0,1,...,t2-1;其中,t2-1表示多项式的阶数,fi(z)表示生成私钥分片所需的多项式,fi'(z)表示生成承诺分片所需的多项式,z表示未知数,/>表示第t2个系数,Ai,k表示用于验证私钥分片的公共参数;/>表示对两个多项式的隐藏式处理,使得其在不泄露系数的情况下,也可用于验证;mod表示模,p表示大素数,g和h 均为有限域GF(p)上的生成元,其中多项式的系数都必须是1~p-1范围内的整数。
S132、每个节点pi计算si,j=fi(idj)和s'i,j=fi'(idj),并发送si,j、s'i,j给对应的节点pj,同时公开其中,si,j表示私钥分片,s'i,j表示承诺分片,/>表示用于对公钥进行验证的公共参数。
S133、每个节点pi通过验证是否等于/>来判断证其他节点发来的sj,i的有效性,若通过验证,则计算自己的私钥ski=∑sj,i;其中,/> 表示用于验证私钥分片的公共参数。
S134、每个节点pi计算自己的公钥并公开。
S135、每个节点pi计算验证其他节点pj公钥的正确性,并将其加入自己的公共参数集中。所述验证方式为:等式成立,则公钥正确。
S14、每个节点运行共识算法,对初始化过程中生成的公共参数 params={n,c,f,ID,t1,t2,t3,PK}达成分布式一致。其中,n表示共识组节点个数,c表示冗余服务器的个数,f表示可容忍的拜占庭节点个数,t1=3f+c+1,t2=2f+c+1,r3=f+1,PK表示公钥。
S2、主节点选取:主节点的匿名选取。如图2所示,对主节点的匿名选取的过程包括:
S21、随机数生成,向确定性算法F输入全网公知的某个数seed以及私钥ski,生成随机数value。所述随机数满足一定的阈值条件,则生成该随机数的节点被选中为当前主节点。
S22、证明生成,向确定性算法F输入全网公知的某个数seed以及私钥ski,生成随机数的证明proof。所述证明为零知识证明,可以用于验证随机数生成的真实性。
S23、验证,验证proof是否可以正确计算出value,验证value是否由ski的拥有者所生成。所述验证过程在主节点发布打包区块之后,由共识组其余节点进行验证,判断其是否为当前主节点。
S3、共识执行:对来自客户端的请求达成最终一致性。
所述共识执行过程如图3~4所示,图3表示n=4,f=1,c=0的情况,具体的步骤包括:
S31、主节点接收来自客户端的请求消息<″request″,o,t,k>,并将其打包成区块。所述区块将被广播至共识组的所有节点,广播的消息用<″pre-prepare″,s,v,r> 表示;其中,o表示操作,t表示时间戳,k表示客户端,s表示序列号,v表示视图编号,r表示请求的集合,request表示请求,pre-prepare表示预准备阶段。
S32、每个节点计算hi=H(s||v||r||idi),并利用私钥ski对h进行签名,并广播 <″Sign-accept″,s,v,idi,σi(hi)>消息至C-collector处。其中,σi(hi)中表示为第i个节点对hi的签名,hi表示对序列号,视图,共识轮次的哈希值,H表示哈希函数, Sign-accept表示签名接收阶段。
S33、C-collector将签名进行聚合,并将聚合签名发送至共识组所有节点,以便于节点拥有块可以被提交的证明。所述聚合签名附在全提交证明消息 <″full-commit-proof″,s,v,σ:PK′>上进行发送。其中,PK′表示聚合签名中使用的签名对应的拥有者公钥集,该公钥集用于进行聚合签名的验证, full-commit-proof表示得到全提交证明的阶段。
S34、每个节点收到聚合签名后,提交区块,执行请求,更新当前区块状态摘要d=digest(Dx),并对状态摘要d以及自身id进行签名,然后发送<"sign-state",s,idii(d||idi)>消息给E-collector。其中,σi(d||idi)中表示为第i个节点对d以及自身id的签名,sign-state表示对区块状态进行签名的阶段。所述区块状态包含三种:Committed、Executed、Stable,此时区块的状态为Committed; Committed:至少一个正常的节点提交了该区块,Executed:至少一个正常的提交了1到s的所有区块,Stable:至少f+1个正常的节点提交了1到s的所有区块。
S35、E-collector将签名进行聚合,并将聚合签名发送至共识组所有节点以及客户端。所述发送给共识组节点的签名附在<"full-execute-proof",s,σ,PK'>消息上,表明当前状态是持久。
发送给客户端的签名附在<"execute-ack",s,l,val,o,σ,p,PK'>消息上,表明操作已经被执行。其中,val=execute(D,o)表示为根据操作o修改状态d,并返回val; p=proof(o,l,s,D,val)表示为区块s中第l个操作o执行后(状态变为D)的结果val的证明,其中,execute-ack表示执行确认阶段。
S36、客户端验证操作是否被执行,检查σ是否有效以及验证 verify(d,o,val,s,l,p)是否为真,其中verify表示验证函数。确认有效后客户端标记o 已执行,将val设置为返回值。
S4、双视图转换:快速模式与慢速模式的转换。上述共识执行过程为SBFT 的快速模式Fast-path。
S41、当在超时时间到达时,C-collector收集签名数量达到2f+c+1但未达到 3f+c+1,则直接进入Linear-PBFT模式。
S42、所述Linear-PBFT模式,包含两次C-collector的收集操作和一次E-collector的收集操作。
如图4所示,执行linear-PBFT数据共识过程包括:
步骤1:C-collector节点对签名进行聚合,并将聚合签名发送至共识组所有节点;
步骤2:每个节点收到聚合签名后,对聚合签名进行第二次签名并发送给 C-collector节点;
步骤3:C-collector节点将第二次签名进行聚合,并将聚合签名发送至共识组所有节点;
步骤4:每个节点收到聚合签名后提交区块,并执行客户端请求,对当前区块状态摘要d=digest(Dx)进行签名,并将该签名发送给E-collector节点;其中digest 表示哈希函数,Dx表示区块状态;
步骤5:E-collector节点将签名进行聚合,并将聚合签名发送至共识组所有节点以及客户端;
步骤6:客户端验证共识操作是否被执行,若被执行,则共识完成,否则共识无效。
S5、节点准入:节点分布式加入共识组。
所述节点分布式准入过程如图5所示,具体的步骤包括:
S51、新加入节点发送加入申请<"Join-Request",idr,w>给共识组的所有节点,其中w=H(idr||ts),IDr为新加入节点身份标识,ts为时间戳,w表示对节点身份和时间戳的哈希值。
S52、共识组节点验证新加入节点身份,对其包含身份信息的数据w进行签名后发送给C-collector,表明接受新节点的加入。所述签名附在<"Sign-accept-join"σ,i w(idi||>消息上进行发送。
S53、C-collector若收到所有节点的签名消息,则将签名进行聚合,并生成一个全接受证明<"full-accept-proof",σ,PK>广播给共识组的所有节点。
S54、共识组节点验证聚合签名的有效性后,根据新加入节点的身份IDr,生成对应的私钥份额以及证明发送给新加入节点。所述私钥份额和证明分别为 si,r=fi(IDr)、s'i,r=fi'(IDr)。所述私钥份额和证明附在<"SK-GEN",si,r,s'i,r,idii(si,r||s'i,r)>消息上进行发送,SK-GEN表示私钥生成阶段。
S55、新加入节点通过验证是否等于/>来判断证其他节点发来的si,r的有效性,若通过验证,则计算自己的私钥skr=∑si,r,/>同时,广播自己的公钥给共识组的所有节点。所述公钥将附在消息<"PK-DIST",pkrr(idr||pkr)>进行发送。
S56、共识组节点将新加入节点的公钥添加至公共参数中,并进行一次公共参数的共识。
S6、节点撤销:节点分布式退出共识组。所述节点分布式退出共识组,包含两种方式:一是主动退出,二是被动撤销。所述节点分布式主动退出过程如图6 所示,具体的步骤包括:
S61、主动退出节点计算w′=H(pkn||idn),并发送退出申请<"Quit-Request",idnn(w')>给共识组的所有节点。所述主动退出节点假设为pn
S62、共识组节点验证退出消息的有效性,计算vi'=(w'||idi),并发送签名给 E-collector。所述签名附在消息<"Sign-accept-quit",idii(vi')>进行发送。
S63、E-collector若收到超过(2n)/3的节点发来的签名消息,则将签名进行聚合并广播给共识组的所有节点。所述聚合签名附在消息<"accept-proof",σ,ts>进行发送。
S64、共识组节点验证聚合签名的有效性,然后向主动退出节点发送退出成功消息<"Quit-success",ts,idii(ts||idi)>。
S65、共识组节点将其退出消息<"Quit-MSG",idn,ts,pkn>记录在撤销列表CRL中,删除公共参数中退出节点的公钥,并发送退出成功消息给主动退出节点。
S66、共识组节点广播撤销列表,对撤销列表以及公共参数达成分布式一致。
S7、节点撤销:节点分布式退出共识组。所述节点分布式退出共识组,包含两种方式:一是主动退出,二是被动撤销。所述节点分布式被动撤销过程如图7所示,具体的步骤包括:
S71、共识组节点广播投诉消息<"Complanit",IDn,idii(w')>给共识组的所有节点。所述共识组投诉的对象假设为idn,所述w'=H(pkn||idn)。
S72、共识组中的节点若收到超过(2n)/3的节点发来的投诉消息,则发送签名给E-collector。所述签名附在<"sign-accept-quit",idii(vi')>消息上进行发送。
S73、E-collector若收到(2n)/3的签名消息,计算vi'=(w'||idi)则将签名进行聚合并广播退出成功消息<"Quit-success",σ,ts>给共识组的所有节点。
S74、共识组节点将其退出消息记录<"Quit-MSG",idn,ts,pkn>在撤销列表CRL中,删除公共参数中退出节点的公钥。
S75、共识组节点广播撤销列表,对撤销列表以及公共参数达成分布式一致。
S8、节点撤销:节点分布式退出共识组。所述节点分布式退出共识组,包含退出节点密钥的处理,包括:
S81、若退出节点为初始共识组节点,则退出节点在分布式密钥生成中所使用多项式将由其余节点赋予新加入的某个节点,此时这个节点拥有与初始签名组同等的权利。所述新加入的某个节点假设为pr,向pr赋予的多项式的原始拥有者为pn
S811、初始共识组的节点(不包括已经退出的)向pr发送(idn,fi(idn))。
S812、pr若收到超过t2-1条消息,则通过拉格朗日差值公式恢复出原本pn拥有的多项式。所述多项式用于给后续新加入节点赋私钥份额。
S82、若退出节点不为初始共识组节点,则无需进行多项式的权利变更操作,直接退出共识组即可。
本发明实施例中,主要在SBFT共识的基础上,利用VRF、聚合签名、DKG 等密码学技术,设计了节点准入协议、撤销协议以及相关消息类型的数据结构,实现了主节点的匿名选取、节点的动态加入、退出以及节点密钥的分布式授权。该协议可以在无需停机进行节点信息重配置的条件下,实现节点的分布式加入、退出,同时也能够抵御对主节点的自适应攻击。
以上所举实施例,对本发明的目的、技术方案和优点进行了进一步的详细说明,所应理解的是,以上所举实施例仅为本发明的优选实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内对本发明所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种基于动态节点的拜占庭容错共识协议的数据共识方法,其特征在于,包括:构建区块链系统,该系统包括副本节点、主节点、C-collector节点以及E-collector节点,其中,C-collector为提交收集器,E-collector为执行收集器;采用基于动态节点的拜占庭容错共识协议对数据进行共识的过程包括:
S1:初始化系统的共识参数和各个节点的密钥;
S2:根据初始化的共识参数随机选取节点作为共识组;
S3:更新共识组中的各个节点,得到新的共识组;更新共识组包括新的节点加入共识组或者共识组中的节点被撤销;其中,共识组中的节点被撤销包括:节点分布式主动退出共识组、节点分布式被动撤销共识组以及退出节点密钥管理;新的节点加入共识组的过程包括:步骤1:新加入节点向共识组节点发送加入申请;
步骤2:共识组节点验证新加入节点身份,对其包含身份信息的数据进行签名,并将签名后的数据发送给C-collector;
步骤3:C-collector若收到所有节点的签名消息,则将其聚合并广播给共识组的所有节点;
步骤4:共识组节点根据新加入节点的身份,生成对应的私钥份额发送给新加入节点;
步骤5:新加入节点将签名份额进行累加,得到自己的私钥,根据私钥计算自己的公钥,并将公钥广播给共识组的所有节点;
步骤6:共识组节点将新加入节点的公钥添加至公共参数中,并进行一次公共参数的共识;
节点分布式主动退出共识组的过程包括:
步骤1:主动退出节点向共识组节点发送退出申请;
步骤2:共识组节点验证退出消息的有效性,并发送签名给E-collector;
步骤3:E-collector若收到超过(2n)/3的节点发来的签名消息,则将其聚合并广播给共识组的所有节点;
步骤4:共识组节点验证聚合签名的有效性,然后向主动退出节点发送退出成功消息;
步骤5:共识组节点将其退出消息记录在撤销列表CRL中,删除公共参数中退出节点的公钥,并发送退出成功消息给主动退出节点;
步骤6:共识组节点广播撤销列表,对撤销列表以及公共参数达成分布式一致;
节点分布式被动撤销共识组的过程包括:
步骤1:共识组节点广播投诉消息给共识组的所有节点;
步骤2:共识组中的节点若收到超过(2n)/3的节点发来的投诉消息,则发送签名给E-collector;
步骤3:E-collector若收到(2n)/3的签名消息,则将签名进行聚合并广播退出成功消息给共识组的所有节点;
步骤4:共识组节点将其退出消息记录在撤销列表CRL中,删除公共参数中退出节点的公钥;
步骤5:共识组节点广播撤销列表,对撤销列表以及公共参数达成分布式一致;
退出节点密钥管理的过程包括:
步骤1:若退出节点为初始共识组节点,则退出节点在分布式密钥生成中所使用多项式将由其余节点赋予新加入的某个节点,此时这个节点拥有与初始签名组同等的权利;
步骤2:若退出节点不为初始共识组节点,则无需进行多项式的权利变更操作,直接退出共识组;
S4:在新的共识组节点中选取主节点,并随机选取C-collector节点和E-collector节点;具体包括:
S41:获取全网公知的数seed,根据数seed和该节点的私钥ski采用确定性算法F生成随机数value;设置阈值条件,该阈值条件为分布在1~n之内的随机数;将生成的随机数与设置的阈值条件进行对比,若该随机数满足设置的阈值条件,则生成该随机数的节点为当前主节点,否则,该节点不为主节点;
S42:将全网公知的数seed和私钥输入到确定性算法F中,生成随机数的证明proof;
S43:验证proof是否可以正确计算出value,且value是否由ski的拥有者所生成;其中验证过程在主节点发布打包区块之后,由共识组其余节点进行验证,判断其是否为当前主节点
S5:主节点接收来自客户端的请求信息,并将请求信息打包成区块后广播到共识组的所有节点;
S6:每个节点采用自己的私钥ski对区块信息进行签名,并将签名发送给C-collector节点;
S7:C-collector节点确定接收的数据,根据接收的数据判断执行fast-path数据共识过程或者执行linear-PBFT数据共识过程,具体包括:设置数据接收时间阈值,在设置的数据接收时间阈值范围内确定C-collector节点接收的数据量,若在接收的数据量未超过3f+c+1,则执行fast-path数据共识过程;若在数据接收时间阈值内超过3f+c+1,则执行执行linear-PBFT数据共识过程;其中,f表示可容忍的拜占庭节点个数,c表示冗余服务器的个数。
2.根据权利要求1所述的一种基于动态节点的拜占庭容错共识协议的数据共识方法,其特征在于,初始化系统的共识参数和各个节点的密钥包括:
S11:确定共识组的初始节点数n;
S12:确定签名初始阈值参数t1、t2以及t3
S13:每个节点运行分布式密钥生成算法生成各自的私钥ski,并根据私钥计算公钥pki,并将公钥广播给给个节点;
S14:每个节点运行共识算法,对初始化过程中生成的公共参数params达成分布式一致,所述公共参数包括共识小组初始节点数、签名阈值参数以及公私钥集。
3.根据权利要求1所述的一种基于动态节点的拜占庭容错共识协议的数据共识方法,其特征在于,执行fast-path数据共识过程包括:
步骤1:C-collector节点对签名进行聚合,并将聚合签名发送至共识组所有节点;
步骤2:每个节点收到聚合签名后提交区块,并执行客户端请求,对当前区块状态摘要d=digest(Dx)进行签名,并将该签名发送给E-collector节点;其中digest表示哈希函数,Dx表示区块状态;
步骤3:E-collector节点将签名进行聚合,并将聚合签名发送至共识组所有节点以及客户端;
步骤4:客户端验证共识操作是否被执行,若被执行,则共识完成,否则共识无效。
4.根据权利要求1所述的一种基于动态节点的拜占庭容错共识协议的数据共识方法,其特征在于,执行linear-PBFT数据共识过程包括:
步骤1:C-collector节点对签名进行聚合,并将聚合签名发送至共识组所有节点;
步骤2:每个节点收到聚合签名后,对聚合签名进行第二次签名并发送给C-collector节点;
步骤3:C-collector节点将第二次签名进行聚合,并将聚合签名发送至共识组所有节点;
步骤4:每个节点收到聚合签名后提交区块,并执行客户端请求,对当前区块状态摘要d=digest(Dx)进行签名,并将该签名发送给E-collector节点;其中digest表示哈希函数,Dx表示区块状态;
步骤5:E-collector节点将签名进行聚合,并将聚合签名发送至共识组所有节点以及客户端;
步骤6:客户端验证共识操作是否被执行,若被执行,则共识完成,否则共识无效。
CN202210338172.4A 2022-04-01 2022-04-01 一种基于动态节点的拜占庭容错共识协议的数据共识方法 Active CN115051985B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210338172.4A CN115051985B (zh) 2022-04-01 2022-04-01 一种基于动态节点的拜占庭容错共识协议的数据共识方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210338172.4A CN115051985B (zh) 2022-04-01 2022-04-01 一种基于动态节点的拜占庭容错共识协议的数据共识方法

Publications (2)

Publication Number Publication Date
CN115051985A CN115051985A (zh) 2022-09-13
CN115051985B true CN115051985B (zh) 2024-01-12

Family

ID=83156888

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210338172.4A Active CN115051985B (zh) 2022-04-01 2022-04-01 一种基于动态节点的拜占庭容错共识协议的数据共识方法

Country Status (1)

Country Link
CN (1) CN115051985B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737810A (zh) * 2023-05-06 2023-09-12 清华大学 一种用于分布式时序数据库的共识服务接口
CN116633699B (zh) * 2023-07-25 2023-10-13 北京银联金卡科技有限公司 基于区块链的产品防伪溯源信息可信处理方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110569309A (zh) * 2019-09-17 2019-12-13 上海保险交易所股份有限公司 用于实现区块链的设备、方法、系统以及介质
CN110677485A (zh) * 2019-09-30 2020-01-10 大连理工大学 一种基于信用的动态分层拜占庭容错共识方法
CN111371744A (zh) * 2020-02-21 2020-07-03 重庆邮电大学 一种基于分布式密钥的拜占庭容错共识方法
CN113271204A (zh) * 2021-05-06 2021-08-17 西安电子科技大学 一种基于量子密钥分发的拜占庭容错共识方法
CN113630455A (zh) * 2021-08-02 2021-11-09 上海华能电子商务有限公司 一种适用于物联网的Raft共识方法
CN114157672A (zh) * 2021-11-29 2022-03-08 北京航空航天大学 一种基于pbft的s-pbft简化共识协议运行及并行优化方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180308091A1 (en) * 2017-04-21 2018-10-25 Vmware, Inc. Fairness preserving byzantine agreements
US11343073B2 (en) * 2019-06-18 2022-05-24 Electronics And Telecommunications Research Institute Apparatus and method for achieving distributed consensus based on decentralized byzantine fault tolerance

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110569309A (zh) * 2019-09-17 2019-12-13 上海保险交易所股份有限公司 用于实现区块链的设备、方法、系统以及介质
CN110677485A (zh) * 2019-09-30 2020-01-10 大连理工大学 一种基于信用的动态分层拜占庭容错共识方法
CN111371744A (zh) * 2020-02-21 2020-07-03 重庆邮电大学 一种基于分布式密钥的拜占庭容错共识方法
CN113271204A (zh) * 2021-05-06 2021-08-17 西安电子科技大学 一种基于量子密钥分发的拜占庭容错共识方法
CN113630455A (zh) * 2021-08-02 2021-11-09 上海华能电子商务有限公司 一种适用于物联网的Raft共识方法
CN114157672A (zh) * 2021-11-29 2022-03-08 北京航空航天大学 一种基于pbft的s-pbft简化共识协议运行及并行优化方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Proteus a scalable BFT consensus protocol for blockchains;Mohammad M. Jalalzai;《IEEEXplore》;全文 *
一种区块链实用拜占庭容错算法的改进;韩镇阳;宫宁生;任珈民;;计算机应用与软件(第02期);全文 *
区块链技术:架构及进展;邵奇峰;金澈清;张召;钱卫宁;周傲英;;计算机学报(第05期);全文 *

Also Published As

Publication number Publication date
CN115051985A (zh) 2022-09-13

Similar Documents

Publication Publication Date Title
US7743252B2 (en) Use of modular roots to perform authentication including, but not limited to, authentication of validity of digital certificates
CN113194469B (zh) 基于区块链的5g无人机跨域身份认证方法、系统及终端
Saxena et al. Admission control in peer-to-peer: design and performance evaluation
CN115051985B (zh) 一种基于动态节点的拜占庭容错共识协议的数据共识方法
CN111372243A (zh) 基于雾联盟链的安全分布式聚合与访问系统及方法
KR101479973B1 (ko) 부정 통신을 검출하면서 통신 무결성 및 익명성을 제공하는 공개-키 인프라스트럭처에 대한 방법
CN109685505B (zh) 基于关联环签名的拜占庭容错共识优化方法
CN110445795B (zh) 一种区块链认证唯一性确认方法
CN114463009B (zh) 一种用于提高大规模能源节点交易安全性的方法
Qi et al. A pseudonym-based certificateless privacy-preserving authentication scheme for VANETs
Jarecki et al. Group secret handshakes or affiliation-hiding authenticated group key agreement
CN114301604B (zh) 一种基于区块链和属性签名的分布式公钥基础设施的构建方法
Wang et al. Simulatable and secure certificate‐based threshold signature without pairings
Ding et al. Equipping smart devices with public key signatures
Wang et al. Secure single sign-on schemes constructed from nominative signatures
Hamouid et al. Secure and reliable certification management scheme for large-scale MANETs based on a distributed anonymous authority
CN114050930B (zh) 一种基于工业互联网云计算的数据通信认证方法及系统
Kiyomoto et al. Anonymous attribute authentication scheme using self-blindable certificates
Manulis et al. Provably secure framework for information aggregation in sensor networks
CN114640500B (zh) 一种基于服务的联盟链高效共识方法
Gopisetti et al. A New Lightweight and Secure Certificateless Aggregate Signcryption Scheme for Industrial Internet of Things
CN117202183B (zh) 一种基于同步拜占庭容错的轻量级5g设备群组认证方法
CN114615278B (zh) 基于区块链的完全匿名认证方法
Di Crescenzo et al. Threshold cryptography in mobile ad hoc networks under minimal topology and setup assumptions
CN117579299A (zh) 基于改进动态密码累加器的车联网无证书消息认证方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20230904

Address after: Room 801, 85 Kefeng Road, Huangpu District, Guangzhou City, Guangdong Province

Applicant after: Yami Technology (Guangzhou) Co.,Ltd.

Address before: 400065 Chongwen Road, Nanshan Street, Nanan District, Chongqing

Applicant before: CHONGQING University OF POSTS AND TELECOMMUNICATIONS

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20231220

Address after: 1010, Floor 10, Creative Building, No. 3025, Nanhai Avenue, Nantou Street, Nanshan District, Shenzhen, Guangdong 518000

Applicant after: Shenzhen Ruitaixin Information Co.,Ltd.

Address before: Room 801, 85 Kefeng Road, Huangpu District, Guangzhou City, Guangdong Province

Applicant before: Yami Technology (Guangzhou) Co.,Ltd.

GR01 Patent grant
GR01 Patent grant