CN117955635B - 基于联盟链验证节点分组的交易验证方法 - Google Patents
基于联盟链验证节点分组的交易验证方法 Download PDFInfo
- Publication number
- CN117955635B CN117955635B CN202410330671.8A CN202410330671A CN117955635B CN 117955635 B CN117955635 B CN 117955635B CN 202410330671 A CN202410330671 A CN 202410330671A CN 117955635 B CN117955635 B CN 117955635B
- Authority
- CN
- China
- Prior art keywords
- verification
- group
- signature
- private key
- threshold 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
Links
- 238000012795 verification Methods 0.000 title claims abstract description 308
- 238000000034 method Methods 0.000 title claims abstract description 38
- 239000012634 fragment Substances 0.000 claims description 185
- 125000004122 cyclic group Chemical group 0.000 claims description 4
- 229910052698 phosphorus Inorganic materials 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000013507 mapping Methods 0.000 claims description 3
- 238000010200 validation analysis Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 4
- 230000002194 synthesizing effect Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请涉及一种基于联盟链验证节点分组的交易验证方法。该方法包括:联盟区块链系统确定出系统领导节点、各门限签名验证组以及组内领导节点,系统领导节点在初始化阶段生成系统公钥和系统私钥,并根据门限签名验证组的个数对系统私钥进行划分,生成各私钥片段以及各私钥片段对应的组内公钥,将各私钥片段以及各私钥片段对应的组内公钥分配给对应的门限签名验证组,在各门限签名验证组获得系统领导节点分发的交易时,每个组内领导节点在组内分发交易以及获得的私钥片段,生成门限签名片段提交给系统领导节点,系统领导节点根据接收到的各门限签名片段合成为最终的签名,将交易打包上链。由此,在保证安全性的前提下减少成本开销。
Description
技术领域
本申请涉及区块链技术领域,特别是涉及一种基于联盟链验证节点分组的交易验证方法。
背景技术
区块链系统中,每个加入区块链的用户可以通过区块链分享数据或者其他操作,而这些操作在区块链中是通过交易的形式在区块链内完成并存储,由于区块链的不可篡改性,存储在区块链中的交易必须是正确的,因此,每一笔交易需要进行验证。为了保证交易验证的正确性,通常每个验证节点在验证完交易之后会对交易进行签名,签名是对该笔交易的一个有效证明。
在传统的区块链交易验证签名中,采用的是多重签名的方式对交易进行签名,而多重签名的签名大小以及签名验证时间随着签名者个数线性增长,且签名方的身份并不是匿名的,因此签名方的隐私无法保证。此外,多重签名是在链上进行签名,这对区块链的性能造成一定的影响。相比于多重签名,门限签名在效率和隐私保护方面要更胜一筹,门限签名的签名大小以及验证时间不随着签名者个数的增加而增加,且可以保护签名者的隐私安全。然而,在区块链系统中,每一笔交易需要由区块链中的验证节点进行验证,验证节点验证完交易后需要对交易进行签名,每个验证节点在验证交易之后都会产生一个签名片段,当验证节点数量较多时,一笔交易验证完成之后将会产生较多的交易签名片段,这些签名片段将提交到领导节点进行合成与验证,众多的签名片段的合成将导致较大的成本开销。并且验证节点可能存在作恶的行为,生成错误的签名片段,合成签名节点若接受到错误的签名片段,则最终会不能完成最终签名的生成或生成错误的签名,在签名验证阶段将会验证不通过,将会重新验证,这将带来额外的成本开销。
因此,目前的交易验证方式成本开销较大。
发明内容
基于此,有必要针对上述技术问题,提供一种能够降低交易验证的成本开销的基于联盟链验证节点分组的交易验证方法。
一种基于联盟链验证节点分组的交易验证方法,所述基于联盟链验证节点分组的交易验证方法包括:
联盟区块链系统中的各验证节点通过投票从各验证节点中确定出联盟区块链系统的系统领导节点后,根据预设的分组方式将所述联盟区块链系统中剩余的验证节点进行分组,确定出各门限签名验证组;
各门限签名验证组内的验证节点通过投票,确定出各门限签名验证组的组内领导节点;
所述系统领导节点在初始化阶段生成系统公钥和系统私钥,并根据门限签名验证组的个数对系统私钥进行划分,生成各私钥片段以及各私钥片段对应的组内公钥,将各私钥片段以及各私钥片段对应的组内公钥分配给对应的门限签名验证组;
在各门限签名验证组获得所述系统领导节点分发的交易时,每个组内领导节点在组内分发所述交易以及获得的私钥片段,每个门限签名验证组中的各验证节点根据获得的私钥片段对交易进行验证,验证通过之后进行签名,生成门限签名片段,由每个组内领导节点将所述门限签名片段提交给所述系统领导节点;
所述系统领导节点根据接收到的各门限签名片段合成为最终的签名,并使用系统公钥对所述最终的签名进行验证,在验证通过的情况下,将所述交易打包上链。
在其中一个实施例中,所述预设的分组方式包括:
调用函数Divide(m,n)将联盟区块链系统中剩余的m个验证节点划分为个门限签名验证组,所述门限签名验证组的个数/>为:
;
其中, 为m/(n-1)的余数,n为预设的分组的个数,n≤m/4,每个门限签名验证组中包括一个组内领导节点和Z i 个验证节点,Z i +1≥4。
在其中一个实施例中,所述系统领导节点在初始化阶段生成系统公钥和系统私钥,并根据门限签名验证组的个数对系统私钥进行划分,生成各私钥片段以及各私钥片段对应的组内公钥,将各私钥片段以及各私钥片段对应的组内公钥分配给对应的门限签名验证组,包括:
所述系统领导节点在初始化阶段生成两个大素数v、q,并选择双线性对e:G 1×G 1→G 2,其中,e为双线性映射,G 1和G 2是具有相同阶数v的乘法循环群,g为G 1的生成元,满足g v =1(modq);联盟区块链系统选择一个哈希函数H:{0,1}*→G 1,系统公共参数Φ为Φ=(e,G 1,G 2,g,v,H),选择一个随机值S∈Z p 为系统私钥,并生成系统公钥P为P=g S ;
所述系统领导节点调用函数KeyGen(SP,)任取随机数a 1、a 2、…、a k-1,首先,令a 0=S,构造多项式f(x)=a 0+a 1 x+a 2 x 2+…+a k-1 x k-1,x为未知数,其次,任取/>个数x 1、x 2、…、/>分别带入f(x)中,计算出密钥片段s i ,获得私钥片段集={s i |i∈{1, 2, …,/> }},最后调用函数Broadcast(s i ,p i ),将每个私钥片段分给/>个门限签名验证组,s i 为第i个门限签名验证组所获得的私钥片段,p i 为第i个门限签名验证组的公钥,公钥集;
其中,第i个门限签名验证组所获得的私钥片段s i 和公钥p i 计算方式为:
s i =f(i),
,
f(i)=(a 0+a 1 i+a 2 i 2+…+a k-1 i k-1) modq;
其中,f(i)为每个门限签名验证组的秘密值,g为G 1的生成元,s i 为第i个门限签名验证组所获得的密钥片段,a 1、a 2、… 、a k-1为域F q 上k-1个非零元素,q为素数,k为门限签名阈值,k≤。
在其中一个实施例中,所述在各门限签名验证组获得所述系统领导节点分发的交易时,每个组内领导节点在组内分发所述交易以及获得的私钥片段,每个门限签名验证组中的各验证节点根据获得的私钥片段对交易进行验证,验证通过之后进行签名,生成门限签名片段,由每个组内领导节点将所述门限签名片段提交给所述系统领导节点,包括:
在各门限签名验证组获得所述系统领导节点分发的交易时,每个组内领导节点调用函数Broadcast(M,s i )将交易M和私钥片段s i 广播到门限签名验证组i中的每个验证节点j,j∈{1, ...,Z i },Z i 为当前门限签名验证组i中的验证节点的个数,;
门限签名验证组i内每个验证节点接收到交易M后,每个验证节点调用函数Sign(s i ,M)对交易M进行验证,并在交易M验证通过后根据私钥片段s i 生成关于交易M的签名片段c j ,并将签名片段c j 保存到签名片段集合中,/>={c j |j∈{1, ...,Z i }},签名片段c j 的生成过程为:
;
其中,H()为哈希运算;
每个组内领导节点收集组内各验证节点的签名片段,组内领导节点使用数据结构为map<h,u>的方式统计收集到的签名片段,h为收集到的签名片段,u为h所对应的个数,当收集到相同的h时,则u+1,在u>Z i /2+1时,利用公钥p i 验证当前的签名片段,如果验证通过则返回当前h,因此,最终生成该门限签名验证组i的门限签名片段C i ,该门限签名验证组i的组内领导节点将所述门限签名片段C i 提交给所述系统领导节点,门限签名片段C i 的表达式为:
。
在其中一个实施例中,所述系统领导节点根据接收到的各门限签名片段合成为最终的签名,并使用系统公钥对所述最终的签名进行验证,在验证通过的情况下,将所述交易打包上链,包括:
所述系统领导节点接收个门限签名验证组生成的门限签名片段C i ,i∈{1, 2,…,/> },并将各门限签名片段存入签名片段集X中,X={C i |i∈{1, 2, …,/> }},/>≥k,所述系统领导节点根据签名片段集X调用函数Aggregate(X)生成最终的签名C,其中,最终的签名C的生成过程为:
,
;
其中,为门限签名验证组i所对应的拉格朗日系数,k为门限签名阈值,/>为一个素数;
所述系统领导节点使用系统初始化阶段生成的系统公钥P并调用函数Verify(C,P)对最终的签名C进行验证,验证成功返回“true”,否则返回“false”;
系统领导节点验证通过则进行区块链内共识,将所述交易打包上链,否则,则在签名片段集X中重新选择k个门限签名片段进行合成并使用系统公钥P进行验证,如果仍然没有验证通过,则继续在签名片段集X中选择k个门限签名片段,若重新选择3次之后仍然验证不通过,则放弃对该交易M进行验证,验证下一个交易。
在其中一个实施例中,所述系统领导节点对最终的签名C进行验证的过程表达式为:
,
,
;
其中,e为双线性映射,g为乘法循环群G 1的生成元,表示判断左式和右式是否相等。
上述基于联盟链验证节点分组的交易验证方法,通过联盟区块链系统中的各验证节点通过投票从各验证节点中确定出联盟区块链系统的系统领导节点后,根据预设的分组方式将联盟区块链系统中剩余的验证节点进行分组,确定出各门限签名验证组,各门限签名验证组内的验证节点通过投票,确定出各门限签名验证组的组内领导节点,系统领导节点在初始化阶段生成系统公钥和系统私钥,并根据门限签名验证组的个数对系统私钥进行划分,生成各私钥片段以及各私钥片段对应的组内公钥,将各私钥片段以及各私钥片段对应的组内公钥分配给对应的门限签名验证组,在各门限签名验证组获得系统领导节点分发的交易时,每个组内领导节点在组内分发交易以及获得的私钥片段,每个门限签名验证组中的各验证节点根据获得的私钥片段对交易进行验证,验证通过之后进行签名,生成门限签名片段,由每个组内领导节点将门限签名片段提交给系统领导节点,系统领导节点根据接收到的各门限签名片段合成为最终的签名,并使用系统公钥对最终的签名进行验证,在验证通过的情况下,将交易打包上链。由此,将联盟区块链系统中的验证节点进行分组,每组共用一个私钥片段,验证交易时,每个门限签名验证组使用该私钥片段对交易进行签名,生成签名片段,再由系统领导节点负责收集每个门限签名验证组的门限签名片段,并合成和验证生成最终的签名,签名片段的生成需要组内其他节点共同完成,签名片段的正确性更高,在保证安全性的前提下减少成本开销。
附图说明
图1为一个实施例中基于联盟链验证节点分组的交易验证方法的流程示意图;
图2为一个实施例中基于联盟链验证节点分组的交易验证方法的门限签名片段生成的流程示意图;
图3为一个实施例中基于联盟链验证节点分组的交易验证方法的系统领导节点合成最终的签名和验证签名的流程示意图;
图4为一个实施例中基于联盟链验证节点分组的交易验证方法的联盟区块链系统结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种基于联盟链验证节点分组的交易验证方法,以该方法应用于联盟区块链系统为例进行说明,包括以下步骤:
步骤S220,联盟区块链系统中的各验证节点通过投票从各验证节点中确定出联盟区块链系统的系统领导节点后,根据预设的分组方式将联盟区块链系统中剩余的验证节点进行分组,确定出各门限签名验证组。
其中,验证节点可以是具体执行验证操作,生成签名片段的节点。
其中,系统领导节点可以是在联盟区块链系统的所有节点中存在的一个节点,该节点由投票产生,负责收集各个门限签名验证组中组内领导节点提交的门限签名片段,并将收集到的门限签名片段进行合成为最终的签名,并验证最终的签名。
其中,门限签名验证组可以是由多个验证节点组成,每个门限签名验证组中包含的节点数量可以不低于4个。
在一个实施例中,预设的分组方式包括:
调用函数Divide(m,n)将联盟区块链系统中剩余的m个验证节点划分为个门限签名验证组,门限签名验证组的个数/>为:
;
其中, 为m/(n-1)的余数,n为预设的分组的个数,n≤m/4,每个门限签名验证组中包括一个组内领导节点和Z i 个验证节点,Z i +1≥4。
其中,函数Divide(m,n) 将m个验证节点进行分组,输出为,/>的取值为n或n-1。
其中,调用函数Divide(m,n)确定出的取值后,若m/(n-1)存在余数,且余数小于4时,以每组分配m/(n-1)个验证节点的方式将m个验证节点中的m-m%(n-1)个验证节点随机分配到n-1个门限签名验证组内,剩余的m%(n-1) 个验证节点加入第n-1个门限签名验证组中,则第n-1个门限签名验证组中的节点个数(包括组内领导节点和验证节点)为m/(n-1)+m%(n-1);若m/(n-1)存在余数,且余数等于或大于4时,以每组分配m/(n-1)个验证节点的方式将m个验证节点中的m-m%(n-1)个验证节点随机分配到n-1个门限签名验证组内,剩余的m%(n-1) 个验证节点划分到第n个门限签名验证组内。
步骤S240,各门限签名验证组内的验证节点通过投票,确定出各门限签名验证组的组内领导节点。
门限签名验证组内的组内领导节点,可以是在同一个门限签名验证组内,存在一个领导节点,该节点由投票产生,负责对该门限签名验证组内各验证节点提交的签名片段进行统计,将收集到相同的签名片段的个数大于该门限签名验证组内总节点数的一半时,该节点进行验证签名并将其提交给系统领导节点。
步骤S260,系统领导节点在初始化阶段生成系统公钥和系统私钥,并根据门限签名验证组的个数对系统私钥进行划分,生成各私钥片段以及各私钥片段对应的组内公钥,将各私钥片段以及各私钥片段对应的组内公钥分配给对应的门限签名验证组。
其中,私钥片段可以是系统私钥被分成若干份,每一份成为一个私钥片段。该私钥片段是由系统领导节点在初始化阶段生成。
其中,联盟区块链系统中采用Shamir秘密共享的方案进行加解密。
应理解,在Shamir秘密共享中,用户将秘密值(即系统私钥S)划分为个不同的私钥片段,并将每个私钥片段分给/>个不同的参与者,而参与者无法通过自身获得的私钥片段获取到秘密值。只有当收集到的私钥片段的数量达到阈值k时,秘密值才能被恢复。
其中,Shamir秘密共享算法实现过程如下所示:
1)加密过程:根据秘密值S,任取随机数a 1,a 2, … ,a k-1。令a 0=S,构造多项式f(x)=a 0+a 1 x+a 2 x 2+…+a k-1 x k-1,x为未知数,其中所有的运算都在有限域F中进行。任取个数x 1,x 2,… ,/>分别带入f(x)中,得到f(x 1),f(x 2),… , />。将(x 1,f(x 1)), (x 2,f(x 2)),… , />)分别存储到/>个参与者中。
2)解密过程:任取k个参与者的数据,(x 1,f(x 1)), (x 2,f(x 2)),… , (x k ,f(x k )),代入并求解f(x)。
求得a 1,a 2, … ,a k-1之后便可以构造出f(x)=a 0+a 1 x+a 2 x 2+…+a k-1 x k-1。将x=0代入到多项式即可求出S=a 0。恢复秘密值S是基于拉格朗日插值公式完成。
在一个实施例中,系统领导节点在初始化阶段生成系统公钥和系统私钥,并根据门限签名验证组的个数对系统私钥进行划分,生成各私钥片段以及各私钥片段对应的组内公钥,将各私钥片段以及各私钥片段对应的组内公钥分配给对应的门限签名验证组,包括:
系统领导节点在初始化阶段生成两个大素数v、q,并选择双线性对e:G 1×G 1→G 2,其中,e为双线性映射,G 1和G 2是具有相同阶数v的乘法循环群,g为G 1的生成元,满足g v =1(modq);联盟区块链系统选择一个哈希函数H:{0,1}*→G 1,系统公共参数Φ为Φ=(e,G 1,G 2,g,v,H),选择一个随机值S∈Z p 为系统私钥,并生成系统公钥P为P=g S ;
系统领导节点调用函数KeyGen(SP,)任取随机数a 1、a 2、…、a k-1,首先,令a 0=S,构造多项式f(x)=a 0+a 1 x+a 2 x 2+…+a k-1 x k-1,x为未知数,其次,任取/>个数x 1、x 2、…、/>分别带入f(x)中,计算出密钥片段s i ,获得私钥片段集={s i |i∈{1, 2, …,/> }},最后调用函数Broadcast(s i ,p i ),将每个私钥片段分给/>个门限签名验证组,s i 为第i个门限签名验证组所获得的私钥片段,p i 为第i个门限签名验证组的公钥,公钥集;
其中,第i个门限签名验证组所获得的私钥片段s i 和公钥p i 计算方式为:
s i =f(i),
,
f(i)=(a 0+a 1 i+a 2 i 2+…+a k-1 i k-1) modq;
其中,f(i)为每个门限签名验证组的秘密值,g为G 1的生成元,s i 为第i个门限签名验证组所获得的密钥片段,a 1、a 2、… 、a k-1为域F q 上k-1个非零元素,q为素数,k为门限签名阈值,k≤。
其中,设G 0,G 1是两个v阶的循环乘法群,v为素数,g为G 1的生成元。如果映射e:G 0 × G 0 →G 1满足双线性、非退化性和可计算性等性质,则称e为双线性映射。
1) 双线性:对于任意的随机数a,b∈Z p 和生成元R,S∈G 0,使得:
e(R a ,S b )=e(R,S) ab
2) 非退化性:存在生成元R,S∈G 0,使得e(R,S)≠1 G1,其中1 G1是G 1的单位元。
3) 可计算性:存在有效的算法对任意的R,S∈G 0,计算e(R,S)。
其中,函数KeyGen(SP,)的输入为系统私钥S、系统公钥P和签名验证组的个数,生成/>个私钥片段s i 和s i 对应的公钥p i ,/>,。
其中,函数Broadcast(s i ,p i ) 无返回值,输入s i ,p i ,将每个私钥片段s i 和s i 对应的p i 分给门限签名验证组i,i∈{1, 2, …, }。
其中,对于同一笔交易M需要广播到每个门限签名验证组,交易M=<T p ,A s ,A d ,f,data>,其中:T p 、A s 、A d 、f和data分别表示为交易发起时的时间戳、交易发起者的源地址、目标地址、此次交易所需要的交易费和需要验证的数据。
步骤S280,在各门限签名验证组获得系统领导节点分发的交易时,每个组内领导节点在组内分发交易以及获得的私钥片段,每个门限签名验证组中的各验证节点根据获得的私钥片段对交易进行验证,验证通过之后进行签名,生成门限签名片段,由每个组内领导节点将门限签名片段提交给系统领导节点。
其中,门限签名片段可以是使用私钥片段生成的签名。该门限签名片段由验证节点生成,由门限签名验证组内的组内领导节点收集统计,提交到系统领导节点。
应理解,为了保证每个门限签名验证组生成正确的门限签名片段,需要组内的每个验证节点对交易进行验证,各自生成签名片段,由组内领导节点进行收集,并由组内领导节点进行签名片段的选择以及验证,验证无误则提交到系统领导节点。
其中,系统领导节点将交易向所有门限签名验证组内广播,门限签名验证组内的组内领导节点接收到交易之后在组内广播交易,每个门限签名验证组内的验证节点接受到交易之后对交易进行验证,验证通过则使用私钥片段对交易进行签名,并提交到组内领导节点。门限签名验证组的组内领导节点负责接收组内成员的签名片段,选择相同的签名片段个数最多的签名片段作为当前门限签名验证组的门限签名片段。若存在相同的签名片段的个数超过门限签名验证组内成员个数的一半,组内领导节点验证该签名片段是否正确,正确则将该签名片段提交到系统领导节点。
其中,当一笔交易被广播到所有的门限签名验证组时,由门限签名验证组内每个验证节点计算签名片段,组内领导节点负责确定门限签名片段,门限签名片段生成过程如图2所示。
在一个实施例中,在各门限签名验证组获得系统领导节点分发的交易时,每个组内领导节点在组内分发交易以及获得的私钥片段,每个门限签名验证组中的各验证节点根据获得的私钥片段对交易进行验证,验证通过之后进行签名,生成门限签名片段,由每个组内领导节点将门限签名片段提交给系统领导节点,包括:
在各门限签名验证组获得系统领导节点分发的交易时,每个组内领导节点调用函数Broadcast(M,s i )将交易M和私钥片段s i 广播到门限签名验证组i中的每个验证节点j,j∈{1, ...,Z i },Z i 为当前门限签名验证组i中的验证节点的个数,;
门限签名验证组i内每个验证节点接收到交易M后,每个验证节点调用函数Sign(s i ,M)对交易M进行验证,并在交易M验证通过后根据私钥片段s i 生成关于交易M的签名片段c j ,并将签名片段c j 保存到签名片段集合中,/>={c j |j∈{1, ...,Z i }},签名片段c j 的生成过程为:
;
其中,H()为哈希运算;
每个组内领导节点收集组内各验证节点的签名片段,组内领导节点使用数据结构为map<h,u>的方式统计收集到的签名片段,h为收集到的签名片段,u为h所对应的个数,当收集到相同的h时,则u+1,在u>Z i /2+1时,利用公钥p i 验证当前的签名片段,如果验证通过则返回当前h,因此,最终生成该门限签名验证组i的门限签名片段C i ,该门限签名验证组i的组内领导节点将所述门限签名片段C i 提交给所述系统领导节点,门限签名片段C i 的表达式为:
。
其中,函数Sign(s i ,M) 的输入为待验证的交易M和私钥片段s i ,生成门限签名验证组i所对应的签名片段c j 。
步骤S300,系统领导节点根据接收到的各门限签名片段合成为最终的签名,并使用系统公钥对最终的签名进行验证,在验证通过的情况下,将交易打包上链。
其中,最终的签名可以是由系统领导节点生成,可以根据该最终的签名判断验证交易是否验证通过。
其中,当系统领导节点接收到门限签名片段的数量达到阈值时,系统领导节点将利用接收到的门限签名片段合成最终的签名并使用系统公钥验证签名的正确性,验证通过则等待其他交易,当交易数量达到一定的值时对交易进行打包成区块上链。
其中,系统领导节点合成最终的签名和验证签名过程如图3所示。图3中实线代表必须接收的门限签名片段,虚线代表可选择接收的门限签名片段,即:在(k, )门限签名片段中,必须接收到门限签名片段的数量大于等于k才可以合成最终的签名,没有接收到的个签名并不影响最终的签名的生成。
在一个实施例中,系统领导节点根据接收到的各门限签名片段合成为最终的签名,并使用系统公钥对最终的签名进行验证,在验证通过的情况下,将交易打包上链,包括:
系统领导节点接收个门限签名验证组生成的门限签名片段C i ,i∈{1, 2, …, },并将各门限签名片段存入签名片段集X中,X={C i |i∈{1, 2, …,/> }},/>≥k,系统领导节点根据签名片段集X调用函数Aggregate(X)生成最终的签名C,其中,最终的签名C的生成过程为:
,
;
其中,为门限签名验证组i所对应的拉格朗日系数,k为门限签名阈值,/>为一个素数;
系统领导节点使用系统初始化阶段生成的系统公钥P并调用函数Verify(C,P)对最终的签名C进行验证,验证成功返回“true”,否则返回“false”;
系统领导节点验证通过则进行区块链内共识,将交易打包上链,否则,则在签名片段集X中重新选择k个门限签名片段进行合成并使用系统公钥P进行验证,如果仍然没有验证通过,则继续在签名片段集X中选择k个门限签名片段,若重新选择3次之后仍然验证不通过,则放弃对该交易M进行验证,验证下一个交易。
其中,函数Aggregate(X) 的输入为包含k个门限签名片段的签名片段集X,生成最终的签名C。
其中,函数Verify(C,P) 的输入为最终的签名C和系统公钥P,输出R,R的取值为“true”或者“false”。
在一个实施例中,系统领导节点对最终的签名C进行验证的过程表达式为:
,
,
;
其中,e为双线性映射,g为乘法循环群G 1的生成元,表示判断左式和右式是否相等。
上述基于联盟链验证节点分组的交易验证方法,通过联盟区块链系统中的各验证节点通过投票从各验证节点中确定出联盟区块链系统的系统领导节点后,根据预设的分组方式将联盟区块链系统中剩余的验证节点进行分组,确定出各门限签名验证组,各门限签名验证组内的验证节点通过投票,确定出各门限签名验证组的组内领导节点,系统领导节点在初始化阶段生成系统公钥和系统私钥,并根据门限签名验证组的个数对系统私钥进行划分,生成各私钥片段以及各私钥片段对应的组内公钥,将各私钥片段以及各私钥片段对应的组内公钥分配给对应的门限签名验证组,在各门限签名验证组获得系统领导节点分发的交易时,每个组内领导节点在组内分发交易以及获得的私钥片段,每个门限签名验证组中的各验证节点根据获得的私钥片段对交易进行验证,验证通过之后进行签名,生成门限签名片段,由每个组内领导节点将门限签名片段提交给系统领导节点,系统领导节点根据接收到的各门限签名片段合成为最终的签名,并使用系统公钥对最终的签名进行验证,在验证通过的情况下,将交易打包上链。由此,将联盟区块链系统中的验证节点进行分组,每组共用一个私钥片段,验证交易时,每个门限签名验证组使用该私钥片段对交易进行签名,生成签名片段,再由系统领导节点负责收集每个门限签名验证组的门限签名片段,并合成和验证生成最终的签名,签名片段的生成需要组内其他节点共同完成,签名片段的正确性更高,在保证安全性的前提下减少成本开销。
在一个示例中,如图4所示,对于一笔交易,本申请提供的一种基于联盟链验证节点分组的交易验证方法。系统领导节点在初始化阶段生成系统公钥P和系统私钥S,并将系统私钥S分为个私钥片段,并将每个私钥片段分给/>个门限签名验证组,对于同一笔交易需要广播到每个门限签名验证组,每个门限签名验证组验证完交易之后使用该私钥片段对交易进行签名,生成签名片段C 1,C 2,... ,/>。门限签名片段是由组内领导节点根据组内各验证节点提交的签名片段来最终决定,组内领导节点收到组内超过一半成员相同的签名片段,将对该签名片段进行验证,验证通过则将该门限签名片段发送到系统领导节点。系统领导节点收到不少于k个门限签名片段之后合成最终的签名C,并验证该最终的签名C的正确性,若验证失败,则继续选择k个门限签名片段进行验证,若超过三次验证失败,则放弃对该交易的验证,验证下一个交易。
应理解,利用门限签名方案实现交易验证,对于存在/>个门限签名验证组的网络,至少需要k个验证组合作才能生成完整的数字签名,也即只要发起签名的合法验证组的个数大于等于k个,就不会对交易验证的正确性产生影响。此外,每个门限签名片段生成是收集组内所有验证节点的签名信息,在只有相同的签名片段数量超过Z i /2+1个时,相同的签名片段才被最终确定为该组生成的门限签名片段,因此,即使存在大于0小于Z i /2个恶意节点合谋,也不会对门限签名片段产生什么影响。
在门限签名片段中,恶意敌手可以在签名生成阶段进行欺骗和伪造攻击。在本申请中,每个节点的密钥片段s i 由组内各节点共同拥有,也即是每个门限签名验证组内的私钥片段是一样的,那么当组内的某个节点恶意生成错误的签名片段,并不影响门限签名验证组的门限签名片段的正确性,因为,每个门限签名验证组的门限签名片段是由组内领导节点根据组内成员提交的相同签名个数决定的。此外,组内领导节点根据来验证本组的签名片段是否正确,其中,C i ′为当前需要验证的签名片段,即组内领导节点收集相同的签名片段大于Z i /2+1个的签名片段,若验证通过,则该C i ′为门限签名验证组i的门限签名片段C i ,若验证不通过,重新收集相同的签名片段大于Z i /2+1个的签名片段作为C i ′进行验证。如果验证不通过,则说明签名异常,则当前的门限签名片段不会提交到系统领导节点。因此,本申请可以抵抗某个节点伪造攻击。
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (4)
1.一种基于联盟链验证节点分组的交易验证方法,其特征在于,所述基于联盟链验证节点分组的交易验证方法包括:
联盟区块链系统中的各验证节点通过投票从各验证节点中确定出联盟区块链系统的系统领导节点后,根据预设的分组方式将所述联盟区块链系统中剩余的验证节点进行分组,确定出各门限签名验证组;
各门限签名验证组内的验证节点通过投票,确定出各门限签名验证组的组内领导节点;
所述系统领导节点在初始化阶段生成系统公钥和系统私钥,并根据门限签名验证组的个数对系统私钥进行划分,生成各私钥片段以及各私钥片段对应的组内公钥,将各私钥片段以及各私钥片段对应的组内公钥分配给对应的门限签名验证组;
在各门限签名验证组获得所述系统领导节点分发的交易时,每个组内领导节点在组内分发所述交易以及获得的私钥片段,每个门限签名验证组中的各验证节点根据获得的私钥片段对交易进行验证,验证通过之后进行签名,生成门限签名片段,由每个组内领导节点将所述门限签名片段提交给所述系统领导节点;
所述系统领导节点根据接收到的各门限签名片段合成为最终的签名,并使用系统公钥对所述最终的签名进行验证,在验证通过的情况下,将所述交易打包上链;
所述预设的分组方式包括:
调用函数Divide(m, n)将联盟区块链系统中剩余的m个验证节点划分为个门限签名验证组,所述门限签名验证组的个数/>为:
;
其中, 为m/(n-1)的余数,n为预设的分组的个数,n≤m/4,每个门限签名验证组中包括一个组内领导节点和Z i 个验证节点,Z i +1≥4;
所述系统领导节点在初始化阶段生成系统公钥和系统私钥,并根据门限签名验证组的个数对系统私钥进行划分,生成各私钥片段以及各私钥片段对应的组内公钥,将各私钥片段以及各私钥片段对应的组内公钥分配给对应的门限签名验证组,包括:
所述系统领导节点在初始化阶段生成两个大素数v、q,并选择双线性对e:G 1×G 1→G 2,其中,e为双线性映射,G 1和G 2是具有相同阶数v的乘法循环群,g为G 1的生成元,满足g v =1(mod q);联盟区块链系统选择一个哈希函数H:{0,1}*→G 1,系统公共参数Φ为Φ=(e, G 1,G 2, g, v, H),选择一个随机值S∈Z p 为系统私钥,并生成系统公钥P为P=g S ;
所述系统领导节点调用函数KeyGen(SP,)任取随机数a 1、a 2、…、a k-1,首先,令a 0=S,构造多项式f(x)=a 0+a 1 x+a 2 x 2+…+a k-1 x k-1,x为未知数,其次,任取/>个数x 1、x 2、…、/>分别带入f(x)中,计算出私钥片段s i ,获得私钥片段集={s i |i∈{1, 2, …,/> }},最后调用函数Broadcast(s i ,p i ),将每个私钥片段分给/>个门限签名验证组,s i 为第i个门限签名验证组所获得的私钥片段,p i 为第i个门限签名验证组的公钥,公钥集/>;
其中,第i个门限签名验证组所获得的私钥片段s i 和公钥p i 计算方式为:
s i =f(i),
,
f(i)=(a 0+a 1 i+a 2 i 2+…+a k-1 i k-1) mod q;
其中,f(i)为每个门限签名验证组的秘密值,g为G 1的生成元,s i 为第i个门限签名验证组所获得的私钥片段,a 1、 a 2、… 、a k-1为域F q 上k-1个非零元素,q为素数,k为门限签名阈值,k≤。
2.根据权利要求1所述的基于联盟链验证节点分组的交易验证方法,其特征在于,所述在各门限签名验证组获得所述系统领导节点分发的交易时,每个组内领导节点在组内分发所述交易以及获得的私钥片段,每个门限签名验证组中的各验证节点根据获得的私钥片段对交易进行验证,验证通过之后进行签名,生成门限签名片段,由每个组内领导节点将所述门限签名片段提交给所述系统领导节点,包括:
在各门限签名验证组获得所述系统领导节点分发的交易时,每个组内领导节点调用函数Broadcast(M, s i )将交易M和私钥片段s i 广播到门限签名验证组i中的每个验证节点j,j∈{1, ..., Z i },Z i 为当前门限签名验证组i中的验证节点的个数,;
门限签名验证组i内每个验证节点接收到交易M后,每个验证节点调用函数Sign(s i , M)对交易M进行验证,并在交易M验证通过后根据私钥片段s i 生成关于交易M的签名片段c j ,并将签名片段c j 保存到签名片段集合中,/>={c j |j∈{1, ..., Z i }},签名片段c j 的生成过程为:
;
其中,H()为哈希运算;
每个组内领导节点收集组内各验证节点的签名片段,组内领导节点使用数据结构为map<h, u>的方式统计收集到的签名片段,h为收集到的签名片段,u为h所对应的个数,当收集到相同的h时,则u +1,在u >Z i /2+1时,利用公钥p i 验证当前的签名片段,如果验证通过则返回当前h,因此,最终生成该门限签名验证组i的门限签名片段C i ,该门限签名验证组i的组内领导节点将所述门限签名片段C i 提交给所述系统领导节点,门限签名片段C i 的表达式为:
。
3.根据权利要求2所述的基于联盟链验证节点分组的交易验证方法,其特征在于,所述系统领导节点根据接收到的各门限签名片段合成为最终的签名,并使用系统公钥对所述最终的签名进行验证,在验证通过的情况下,将所述交易打包上链,包括:
所述系统领导节点接收个门限签名验证组生成的门限签名片段C i ,i∈{1, 2, …, },并将各门限签名片段存入签名片段集X中,X={C i | i∈{1, 2, …,/> }},/>≥k,所述系统领导节点根据签名片段集X调用函数Aggregate(X)生成最终的签名C,其中,最终的签名C的生成过程为:
,
;
其中,为门限签名验证组i所对应的拉格朗日系数, k为门限签名阈值,/>为一个素数;
所述系统领导节点使用系统初始化阶段生成的系统公钥P并调用函数Verify(C, P)对最终的签名C进行验证,验证成功返回“true”,否则返回“false”;
系统领导节点验证通过则进行区块链内共识,将所述交易打包上链,否则,则在签名片段集X中重新选择k个门限签名片段进行合成并使用系统公钥P进行验证,如果仍然没有验证通过,则继续在签名片段集X中选择k个门限签名片段,若重新选择3次之后仍然验证不通过,则放弃对该交易M进行验证,验证下一个交易。
4.根据权利要求3所述的基于联盟链验证节点分组的交易验证方法,其特征在于,所述系统领导节点对最终的签名C进行验证的过程表达式为:
,
,
;
其中,e为双线性映射,g为乘法循环群G 1的生成元,表示判断左式和右式是否相等。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410330671.8A CN117955635B (zh) | 2024-03-22 | 2024-03-22 | 基于联盟链验证节点分组的交易验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410330671.8A CN117955635B (zh) | 2024-03-22 | 2024-03-22 | 基于联盟链验证节点分组的交易验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117955635A CN117955635A (zh) | 2024-04-30 |
CN117955635B true CN117955635B (zh) | 2024-06-07 |
Family
ID=90798068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410330671.8A Active CN117955635B (zh) | 2024-03-22 | 2024-03-22 | 基于联盟链验证节点分组的交易验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117955635B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114050904A (zh) * | 2022-01-11 | 2022-02-15 | 天津眧合数字科技有限公司 | 一种基于两层级领导节点分片结构的共识系统及方法 |
CN114338040A (zh) * | 2021-12-29 | 2022-04-12 | 大连理工江苏研究院有限公司 | 一种区块链节点的分组多链三次共识方法 |
CN114928446A (zh) * | 2022-06-10 | 2022-08-19 | 中国电子科技集团公司第五十四研究所 | 一种大规模节点高效共识方法 |
CN115801798A (zh) * | 2022-10-26 | 2023-03-14 | 中国电子科技集团公司第五十四研究所 | 一种支持主节点动态切换的多层共识方法 |
CN115941680A (zh) * | 2022-10-21 | 2023-04-07 | 北京航空航天大学 | 基于跨分片拜占庭容错算法的灵活分片区块链方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11057462B2 (en) * | 2018-03-27 | 2021-07-06 | Bank Of America Corporation | Asset management block chain |
EP4173184A1 (en) * | 2020-06-30 | 2023-05-03 | InterDigital Patent Holdings, Inc. | Methods, architectures, apparatuses and systems directed to enablers for blockchain-enabled wireless systems |
-
2024
- 2024-03-22 CN CN202410330671.8A patent/CN117955635B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114338040A (zh) * | 2021-12-29 | 2022-04-12 | 大连理工江苏研究院有限公司 | 一种区块链节点的分组多链三次共识方法 |
CN114050904A (zh) * | 2022-01-11 | 2022-02-15 | 天津眧合数字科技有限公司 | 一种基于两层级领导节点分片结构的共识系统及方法 |
CN114928446A (zh) * | 2022-06-10 | 2022-08-19 | 中国电子科技集团公司第五十四研究所 | 一种大规模节点高效共识方法 |
CN115941680A (zh) * | 2022-10-21 | 2023-04-07 | 北京航空航天大学 | 基于跨分片拜占庭容错算法的灵活分片区块链方法及装置 |
CN115801798A (zh) * | 2022-10-26 | 2023-03-14 | 中国电子科技集团公司第五十四研究所 | 一种支持主节点动态切换的多层共识方法 |
Non-Patent Citations (2)
Title |
---|
Application-Oriented Block Generation for Consortium Blockchain-Based IoT Systems With Dynamic Device Management;Peiyun Zhang等;《 IEEE Internet of Things Journal 》;20201130;全文 * |
基于门限签名及信誉分组的TRBFT共识算法;刘金涛等;《南京师范大学学报(工程技术版)》;20231220;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117955635A (zh) | 2024-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Preneel | The state of cryptographic hash functions | |
JP3659178B2 (ja) | 分散ディジタル署名作成方法及び装置及び分散ディジタル署名付ディジタル文書作成方法及び装置及び分散ディジタル署名作成プログラム及び分散ディジタル署名作成プログラムを格納した記憶媒体 | |
CN106936593B (zh) | 基于椭圆曲线高效匿名的无证书多接收者签密方法 | |
US8654975B2 (en) | Joint encryption of data | |
CN110545279A (zh) | 兼具隐私和监管功能的区块链交易方法、装置及系统 | |
US20130051551A1 (en) | Signcryption method and device and corresponding signcryption verification method and device | |
Zhang et al. | LPDA-EC: A lightweight privacy-preserving data aggregation scheme for edge computing | |
CN112417489B (zh) | 数字签名的生成方法、装置和服务器 | |
Cayrel et al. | Post-quantum cryptography: Code-based signatures | |
Li et al. | Signcryption from randomness recoverable public key encryption | |
CN114499887B (zh) | 签名密钥生成及相关方法、系统、计算机设备和存储介质 | |
Ki et al. | Constructing Strong Identity‐Based Designated Verifier Signatures with Self‐Unverifiability | |
Huang et al. | Partially blind ECDSA scheme and its application to bitcoin | |
CN117955635B (zh) | 基于联盟链验证节点分组的交易验证方法 | |
Chen et al. | A provably secure blind signature based on coding theory | |
WO2023016729A1 (en) | Generating digital signature shares | |
Mu et al. | Compact sequential aggregate signatures | |
Patel et al. | A novel verifiable multi-secret sharing scheme based on elliptic curve cryptography | |
Bohli et al. | On subliminal channels in deterministic signature schemes | |
Lau et al. | Rank preserving code-based signature | |
Phong et al. | New RSA-based (selectively) convertible undeniable signature schemes | |
Seo et al. | New technique for chosen-ciphertext security based on non-interactive zero-knowledge | |
Lee et al. | Toward a secure single sign-on mechanism for distributed computer networks | |
Tan et al. | On the security of some nonrepudiable threshold proxy signature schemes with known signers | |
Błaśkiewicz et al. | Digital signatures for e-government-a long-term security architecture |
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 | ||
GR01 | Patent grant |