System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于椭圆曲线公钥密码算法的区块链签名方法技术_技高网
当前位置: 首页 > 专利查询>贵州大学专利>正文

基于椭圆曲线公钥密码算法的区块链签名方法技术

技术编号:40314813 阅读:11 留言:0更新日期:2024-02-07 20:56
本发明专利技术公开了一种基于椭圆曲线公钥密码算法的区块链签名方法,包括由多个节点组成的树形结构,基于国密SM2生成参数及密钥,当树形结构中的某一个节点提出签名请求的通告时,首先将通告发送给其子节点,子节点进行承诺并向上逐级求和计算得到最终承诺,将最终承诺发给指定的签名节点,每个签名节点收到最终承诺后计算响应值并向上逐级求和计算最终响应值,输出最后的签名。在实现区块链多重签名时,需要考虑到安全性、可扩展性和高效性等问题,因此本发明专利技术构建一个更加安全、高效和可靠的多重签名算法,本发明专利技术在传统的Fabric事务处理上进行时,采用了基于国密SM2的多重签名方案来代替ECDSA,并增加了一个同步步骤,使Fabric事务处理在改进后运行平稳。

【技术实现步骤摘要】

本专利技术属于计算机,涉及一种区块链的数字签名方法。


技术介绍

1、随着全球经济和信息化程度的提高,各行各业的数据安全问题都在急剧增长。在电子商务和电子政务领域,同一份文件或合同需要多个相关人员的签名能生效。数字签名技术以一种电子签名的方式,将签名对象与签名者互相绑定,以确保签名的真实性。数字签名技术可以保证数据的完整性和不可否认性。但是随着数据量的快速增长,传统的数字签名方案已经无法满足需求,因为它们具有信息传输量大、签名长度过长以及签名和验证效率低的缺点。

2、多重签名方案可以让一组签名者在同一份消息上共同生成一个联合签名,这个签名可以被任何人验证,从而使得签名更加紧凑。多重签名的验证速度更快,有助于减少带宽、验证和存储成本,而且生成的签名大小和公钥长度都与签名者的数量无关。最近,多重签名得到了广泛关注,因为它的这些优点正是区块链和加密货币所需要的。然而,在传统的多重签名方案中,签名人之间需要进行大量的通信。

3、区块链技术作为建设信任机制的工具,对人类社会的提供了一种新的模式。我们提出了一种改进的基于国密sm2的多重签名方案,该方案适用于电子商务和电子政务等场景。

4、目前区块链多重签名技术主要是简单的聚合基于椭圆曲线secp256k1的数字签名。首先,目前广泛使用的多重签名方案中存在恶意密钥攻击和k-sum问题攻击等安全性问题。其次,传统的多重签名技术效率和扩展性低下,用户无法根据具体需求进行自由选择签名者和实时交易。最后,传统的多重签名技术大多使用的是区块链标准的椭圆曲线secp256k1,无法对其保证自主可控。

5、现有技术的缺点主要表现在以下方面:

6、(1)传统的区块链多重签名技术存在恶意密钥攻击的威胁。

7、(2)传统的区块链多重签名技术效率和扩展性低下,用户无法根据具体需求进行自由选择签名者和实时交易。

8、(3)目前很少有基于国密sm2算法的区块链多重签名方案,很难做到较高的兼容性。


技术实现思路

1、本专利技术的目的:在实现区块链多重签名时,需要考虑到安全性、可扩展性和高效性等问题,因此,基于以上分析及现有技术存在的问题,本专利技术提出了一种基于椭圆曲线公钥密码算法的区块链签名方法,构建了一个更加安全、高效和可靠的多重签名方法。

2、本专利技术的技术方案:

3、一种基于椭圆曲线公钥密码算法的区块链签名方法,包括由多个节点组成的树形结构,基于国密sm2生成参数及密钥,当树形结构中的某一个节点提出签名请求的通告时,首先将通告发送给其子节点,子节点进行承诺并向上逐级求和计算得到最终承诺,将最终承诺发给指定的签名节点,每个签名节点收到最终承诺后计算响应值并向上逐级求和计算最终响应值,输出最后的签名。

4、基于国密sm2生成参数及密钥包括:

5、参数生成pg(k):设e为有限域上的椭圆曲线,g=(xg,yg)为e上的q阶基点,()为椭圆曲线上基点的坐标。其中|q|=k为输入,采用两个哈希函数,其中h0为单向目标哈希函数,h1为sm3哈希函数,输出par=(g,q,h0,h1);pg是param generation 的英文缩写。

6、密钥生成kg(par):各签名者选择一个随机sk∈[1,q-1]为私钥,并计算对应公钥,从q阶正整数群zq中选取随机数,计算各自权益证明承诺值,权益证明挑战值和权益证明响应值,构造私钥的权益证明,最后输出最终公钥。符号$是随机的意思,kg是keygeneration的英文缩写。

7、计算承诺的过程为:节点si收到通告m后选择随机数<mstyle displaystyle="true" mathcolor="#000000"><mi>w</mi><mover><mo>←</mo><mi>$</mi></mover><mi>[</mi><mn>0</mn><mi>,</mi><mi>q</mi><mi>−</mi><mn>1</mn><mi>]</mi></mstyle>,计算wg=(xi,yi)和ri=(e+xi)modq,其中e=h1(m),()为计算得到的椭圆曲线上的坐标,等待其子节点cij的,计算并将发送给其父节点,逐级发送至根节点s0计算最终承诺。cij中下标的i和j指树形结构中节点si的第j个子节点,i从0开始计数,根节点的i=0,ci指节点si的子节点集合。

8、计算响应的过程为:当收到后,计算响应值,并等待它子节点的cij的,收到后 计算并将发送给其父节点直至根节点计算最终响应值,其中,为根节点的响应值,为根节点的子节点集合,为根节点的子节点的部分响应值。

9、对于fabric事务处理,赋予树形结构中的节点不同的角色,假设部分节点作为客户cl,部分节点作为背书者为eni,订购者为or,pi为背书者eni的父代,n为背书策略要求的背书者数量,fabric-ca使用pg(k)输出par=(g,q,h0,h1),然后每个节点使用kg(par)生成自己的公私钥对(pk,sk);在每个节点加入fabric网络之前,fabric-ca还使用kvf(par,pk)来验证其公钥的有效性; 如果结果为真,fabric-ca将向该节点颁发证书,以便其成功加入网络;否则,ca将拒绝该节点,这意味着该节点无权加入fabric网络。

10、具体步骤包括:

11、步骤一,交易申请:当客户cl需要请求交易m时,首先执行签名sign算法的通告阶段,将m的交易建议发送给指定背书者eni。

12、步骤二,同步:背书策略指定的所有背书者eni作为树形结构中的一个子群工作,同步块信息,客户cl执行签名算法的挑战阶段,产生共同挑战作为联合签名的一部分并发送个每个背书者eni。

13、步骤三,背书:当eni收到来自cl的签名建议时,使用密钥验证算法kvf检查cl身份的有效性,并用自己的私钥和前一个集体挑战签署,最后进行签名算法的响应阶段,计算部分响应值si。

14、步骤四,申请响应:所有指定的eni执行签名算法的响应阶段,cl从其子背书人j处收集所有的申请响应,包括模拟交易结果和部分响应值,当接收到所有申请响应时, cl检查并计算最终响应值,最后cl生成一个代表cl和所有指定eni的签名。

15、步骤五,上传交易:cl将最终挑战和响应值发送给订购者or。

16、步骤六,批量交付:or将来自不同客户的交易信息打包成块并在网络上广播。

17、步骤七,账本更新:网络上的所有节点都需要使用验证算法来验证交易信息并同步更新。

18、步骤四中使用密钥验证算法k本文档来自技高网...

【技术保护点】

1.一种基于椭圆曲线公钥密码算法的区块链签名方法,包括由多个节点组成的树形结构,基于国密SM2生成参数及密钥,其特征在于:当树形结构中的某一个节点提出签名请求的通告时,首先将通告发送给其子节点,子节点进行承诺并向上逐级求和计算得到最终承诺,将最终承诺发给指定的签名节点,每个签名节点收到最终承诺后计算响应值并向上逐级求和计算最终响应值,输出最后的签名。

2.根据权利要求1所述基于椭圆曲线公钥密码算法的区块链签名方法,其特征在于基于国密SM2生成参数及密钥包括:

3.根据权利要求2所述基于椭圆曲线公钥密码算法的区块链签名方法,其特征在于承诺的过程为:节点收到通告后选择随机数,计算和承诺,其中,()为计算得到的椭圆曲线上的坐标,等待其子节点的承诺,计算部分承诺并将部分承诺发送给其父节点,其中,为子节点集合,j为节点的子节点序号,逐级发送至根节点S0计算最终承诺。

4.根据权利要求3所述基于椭圆曲线公钥密码算法的区块链签名方法,其特征在于计算响应的过程为:当收到后,计算响应值,其中为的私钥,并等待它子节点的的响应值,收到后计算部分响应值并将发送给其父节点,直至根节点计算最终响应值,其中,为根节点的响应值,为根节点的子节点集合,为根节点的子节点的部分响应值。

5.根据权利要求4所述基于椭圆曲线公钥密码算法的区块链签名方法,其特征在于:将本签名方法用于Fabric事务处理时,赋予树形结构中的节点不同的角色,假设部分节点作为客户,部分节点作为背书者为,订购者为,为背书者的父代,为背书策略要求的背书者数量,Fabric的证书颁发机构Fabric-CA使用输出,然后每个节点使用生成自己的公私钥对;在每个节点加入Fabric网络之前,Fabric-CA使用来验证其公钥的有效性;如果结果为真,Fabric-CA将向该节点颁发证书,以便其成功加入网络;否则CA将拒绝该节点,该节点无权加入Fabric网络。

6.根据权利要求5所述基于椭圆曲线公钥密码算法的区块链签名方法,其特征在于Fabric事务处理的具体步骤包括:

7. 根据权利要求6所述基于椭圆曲线公钥密码算法的区块链签名方法,其特征在于步骤四中使用密钥验证算法检查身份的有效性包括:给定公钥以及相应的权益证明,,,检查是否满足,其中是权益证明验证值;若不满足则公钥无效须丢弃。

8.根据权利要求7所述基于椭圆曲线公钥密码算法的区块链签名方法,其特征在于步骤七中的验证算法包括:输入聚合公钥、消息和签名,先验证是否成立,若不成立,则验证不通过;检验是否成立,若不成立,则验证不通过;计算和,其中,为进行验证的椭圆曲线点坐标,为进行验证计算出来的承诺值,最后检验是否成立,若不成立,则验证不通过,若成立,则验证通过。

...

【技术特征摘要】

1.一种基于椭圆曲线公钥密码算法的区块链签名方法,包括由多个节点组成的树形结构,基于国密sm2生成参数及密钥,其特征在于:当树形结构中的某一个节点提出签名请求的通告时,首先将通告发送给其子节点,子节点进行承诺并向上逐级求和计算得到最终承诺,将最终承诺发给指定的签名节点,每个签名节点收到最终承诺后计算响应值并向上逐级求和计算最终响应值,输出最后的签名。

2.根据权利要求1所述基于椭圆曲线公钥密码算法的区块链签名方法,其特征在于基于国密sm2生成参数及密钥包括:

3.根据权利要求2所述基于椭圆曲线公钥密码算法的区块链签名方法,其特征在于承诺的过程为:节点收到通告后选择随机数,计算和承诺,其中,()为计算得到的椭圆曲线上的坐标,等待其子节点的承诺,计算部分承诺并将部分承诺发送给其父节点,其中,为子节点集合,j为节点的子节点序号,逐级发送至根节点s0计算最终承诺。

4.根据权利要求3所述基于椭圆曲线公钥密码算法的区块链签名方法,其特征在于计算响应的过程为:当收到后,计算响应值,其中为的私钥,并等待它子节点的的响应值,收到后计算部分响应值并将发送给其父节点,直至根节点计算最终响应值,其中,为根节点的响应值,为根节点的子节点集合,为根节点的子节点的部分响应值。

5.根据权利要求4所述基于椭圆曲线公钥密码算法的区块链签名方法,其...

【专利技术属性】
技术研发人员:周凤朱炳丞向阿新田有亮熊伟
申请(专利权)人:贵州大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1