一种区块链门限签名方法及其系统与流程

文档序号:32303933发布日期:2022-11-23 09:20阅读:419来源:国知局
一种区块链门限签名方法及其系统与流程

1.本发明涉及区块链技术领域,更具体的说是涉及一种区块链门限签名方法及其系统。


背景技术:

2.schnorr签名算法是由密码学家claus schnorr发明,其线性等特性为构建效率更高和隐私性更强的区块链系统提供了可能,一直备受区块链开发者们的关注。bip340协议规定了区块链中schnorr签名的具体实现。
3.门限签名是一种分布式签名协议,由多方共同完成。在区块链业务中,门限签名一方面可以解决由一方保管密钥而带来的单点故障问题,另一方面可以防止因权利集中而引发的信任问题,提升了区块链的安全性和隐私性。
4.目前,尽管基于椭圆曲线的schnorr门限签名方案已经被提出,但是其不能与bip340协议相兼容,因此不能用于区块链交易中。
5.因此,如何提供一种能与bip340协议相兼容的区块链门限签名方法及其系统是本领域技术人员亟需解决的问题。


技术实现要素:

6.有鉴于此,本发明提供了一种区块链门限签名方法及其系统,目的在于实现与bip340协议相兼容。
7.为了实现上述目的,本发明采用如下技术方案:一种区块链门限签名方法,包括以下步骤:s1.每一个签名参与者pi计算签名第二部分份额参数与签名验证参数份额wi,当不为0时,将签名验证参数份额wi在所有签名参与者中进行共享;其中,i=1,2,

,t,t表示签名过程中实际参与签名的参与者个数;s2.每一个签名参与者pi根据签名验证参数份额wi计算签名验证参数r;s3.每一个签名参与者pi计算签名第一部分r和哈希值e,并根据签名验证参数r的y坐标r.y、群公钥q的y坐标q.y和哈希值e来计算签名第二部分份额si,并将si在所有签名参与者中进行共享;s4.每一个签名参与者pi根据签名第二部分份额si计算签名第二部分s,并在所有签名参与者中共享签名(r,s),其中:;若共享的(r,s)都相同,则输出(r,s)作为t个签名参与者对消息的签名;否则,通知每一个签名参与者签名失败,并退出签名过程。
8.优选的,在s1中,当签名第二部分份额参数为0时,通知每一个签名参与者签名失败,并退出签名过程。
9.优选的,当选用secp256k1椭圆曲线时:
签名第二部分份额参数的计算方法为:=sha
256
(di|q.x|m) mod l;签名第一部分的计算方法为:r=r.x;签名验证参数的计算方法为:;签名验证参数份额的计算方法为:wi=g;其中,m表示签名消息,g表示secp256k1椭圆曲线的基点,l表示相应椭圆曲线基点的阶,表示每一个签名参与者pi的自身密钥份额,q.x表示群公钥q的x坐标,mod表示取模运算,r.x表示签名验证参数r的x坐标,sha
256
表示一种计算结果长度为256位的哈希算法,∑表示求和操作。
10.优选的,签名第二部分份额si的具体计算方法为:si=ki+skie (mod l)e=sha
256
(r|q.x|m)当r.y为奇数时,ki=;否则,ki=;当q.y为奇数时,;否则,;其中,ki表示根据r.y的奇偶性计算生成的签名第二部分份额有效参数,mod表示取模运算,l表示相应椭圆曲线基点的阶,{x1,x2,

xn}表示每一个签名参与者pi的密钥份额整数集合,n表示拥有密钥份额的参与者个数,表示每一个签名参与者pi的自身密钥份额,ski表示签名参与者pi利用密钥份额整数集合{x1,x2,

xn}与密钥份额根据q.y的奇偶性计算生成的有效私钥,q.x表示群公钥q的x坐标,m表示签名消息,sha
256
表示一种计算结果长度为256位的哈希算法,xi表示签名参与者pi本身的密钥份额整数,xj表示t个签名参与者中除签名参与者pi本身外其他签名参与者的密钥份额整数,∏表示连乘操作。
11.一种区块链门限签名系统,包括:验证参数份额共享模块、验证参数计算模块、签名第二部分份额计算模块和签名合成模块;验证参数份额共享模块,用于获取每一个签名参与者pi计算的签名第二部分份额参数与签名验证参数份额wi,当不为0时,将签名验证参数份额wi在所有签名参与者中进行共享;其中,i=1,2,

,t,t表示签名过程中实际参与签名的参与者个数;验证参数计算模块,用于根据签名验证参数份额wi计算每一个签名参与者pi的签名验证参数r;签名第二部分份额计算模块,用于计算每一个签名参与者pi的签名第一部分r和哈希值e,并根据签名验证参数r的y坐标r.y、群公钥q的y坐标q.y和哈希值e来计算签名第二部分份额si,并将si在所有签名参与者中进行共享;签名合成模块,用于计算签名第二部分s,并共享签名(r,s),其中:;还用于在共享的(r,s)都相同时,则输出(r,s)作为t个签名参与者对消息的签名;否则,通知每一个签名参与者签名失败,并退出签名过程。
12.优选的,验证参数份额共享模块,还用于当签名第二部分份额参数为0时,通知每一个签名参与者签名失败,并退出签名过程。
13.经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种区块链门限签名方法及其系统,能产生以下有益效果:1.本发明在签名期间不存在私钥恢复过程,可以有效防止区块链中因私钥泄露而带来的一系列问题;2.本发明签名由多方完成,任何单独一方完成的签名都不会被验证通过,进一步提升了区块链的安全性;3.本发明与区块链中的bip340协议签名能够兼容,可被区块链签名验证通过。
附图说明
14.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
15.图1附图为本发明提供的一种区块链门限签名方法的流程示意图。
具体实施方式
16.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
17.本发明实施例公开了一种区块链门限签名方法,如图1所示,包括以下步骤:s1.每一个签名参与者pi计算签名第二部分份额参数与签名验证参数份额wi,当不为0时,将签名验证参数份额wi在所有签名参与者中进行共享;其中,i=1,2,

,t,t表示签名过程中实际参与签名的参与者个数;s2.每一个签名参与者pi根据签名验证参数份额wi计算签名验证参数r;s3.每一个签名参与者pi计算签名第一部分r和哈希值e,并根据签名验证参数r的y坐标r.y、群公钥q的y坐标q.y和哈希值e来计算签名第二部分份额si,并将si在所有签名参与者中进行共享;s4.每一个签名参与者pi根据签名第二部分份额si计算签名第二部分s,并在所有签名参与者中共享签名(r,s),其中:;若共享的(r,s)都相同,则输出(r,s)作为t个签名参与者对消息的签名;否则,通知每一个签名参与者签名失败,并退出签名过程。
18.需要说明的是:在参与shamir门限秘密生成与分发算法的n个参与者中,选取t个实际参与签名的参与者(t的取值小于等于n);群公钥q可由每一个签名参与者pi提前通过shamir门限秘密生成与分发算法获
取。
19.为了进一步实施上述技术方案,在s1中,当签名第二部分份额参数为0时,通知每一个签名参与者签名失败,并退出签名过程。
20.为了进一步实施上述技术方案,当选用secp256k1椭圆曲线时:签名第二部分份额参数的计算方法为:=sha
256
(di|q.x|m) mod l;签名第一部分的计算方法为:r=r.x;签名验证参数的计算方法为:;签名验证参数份额的计算方法为:wi=g;其中,m表示签名消息,g表示secp256k1椭圆曲线的基点,l表示相应椭圆曲线基点的阶,表示每一个签名参与者pi提前通过shamir门限秘密生成与分发算法获取的自身密钥份额,q.x表示群公钥q的x坐标,mod表示取模运算,r.x表示签名验证参数r的x坐标,sha
256
表示一种计算结果长度为256位的哈希算法,∑表示求和操作。
21.为了进一步实施上述技术方案,签名第二部分份额si的具体计算方法为:si=ki+skie (mod l)e=sha
256
(r|q.x|m)当r.y为奇数时,ki=;否则,ki=;当q.y为奇数时,;否则,;其中,ki表示整数根据r.y的奇偶性计算生成的有效整数,mod表示取模运算,l表示相应椭圆曲线基点的阶,{x1,x2,

xn}表示每一个签名参与者pi提前通过shamir门限秘密生成与分发算法获取的密钥份额整数集合,n表示参与shamir门限秘密生成与分发算法的拥有密钥份额的参与者个数,表示每一个签名参与者pi的自身密钥份额,ski表示签名参与者pi利用密钥份额整数集合{x1,x2,

xn}与密钥份额根据q.y的奇偶性计算生成的有效私钥,q.x表示群公钥q的x坐标,m表示签名消息,sha
256
表示一种计算结果长度为256位的哈希算法,xi表示签名参与者pi本身的密钥份额整数,xj表示t个签名参与者中除签名参与者pi本身外其他签名参与者的密钥份额整数,∏表示连乘操作。
22.一种区块链门限签名系统,包括:验证参数份额共享模块、验证参数计算模块、签名第二部分份额计算模块和签名合成模块;验证参数份额共享模块,用于获取每一个签名参与者pi计算的签名第二部分份额参数与签名验证参数份额wi,当不为0时,将签名验证参数份额wi在所有签名参与者中进行共享;其中,i=1,2,

,t,t表示签名过程中实际参与签名的参与者个数;验证参数计算模块,用于根据签名验证参数份额wi计算每一个签名参与者pi的签名验证参数r;签名第二部分份额计算模块,用于计算每一个签名参与者pi的签名第一部分r和
哈希值e,并根据签名验证参数r的y坐标r.y、群公钥q的y坐标q.y和哈希值e来计算签名第二部分份额si,并将si在所有签名参与者中进行共享;签名合成模块,用于计算签名第二部分s,并共享签名(r,s),其中:;还用于在共享的(r,s)都相同时,输出(r,s)作为t个签名参与者对消息的签名;否则,通知每一个签名参与者签名失败,并退出签名过程。
23.为了进一步实施上述技术方案,验证参数份额共享模块,还用于当签名第二部分份额参数为0时,通知每一个签名参与者签名失败,并退出签名过程。
24.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
25.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1