一种基于改进SM2算法的Fabric区块链构建方法技术

技术编号:37402555 阅读:28 留言:0更新日期:2023-04-30 09:30
本发明专利技术提供了一种基于改进SM2算法的Fabric区块链构建方法,属于区块链加密技术领域,包括:将SM2算法中的签名过程第五步改进为:计算s=(k

【技术实现步骤摘要】
一种基于改进SM2算法的Fabric区块链构建方法


[0001]本专利技术属于区块链加密
,具体涉及一种基于改进SM2算法的Fabric区块链构建方法。

技术介绍

[0002]当前,区块链技术已经渗入到各行各业的发展当中,并不断取得创新与突破。与此同时,我们更应该充分考虑技术发展所带来的网络和信息安全问题。特别是在当下国际环境更趋复杂严峻和不确定,无论是对于个人、企业还是国家而言,网络和信息安全问题都不容忽视。
[0003]区块链技术中使用了许多密码学算法,如Hash算法、数字签名技术、对称加密算法和非对称加密算法等,不同类型的加密算法在不同模块发挥着举足轻重的作用,共同保证着区块链上数据的安全。但许多国际通用的密码算法屡屡被破解和攻击,存在后门安全隐患和大量的不可控因素,因此,研究如何解决密码算法在区块链应用中存在的安全风险,已然成为区块链技术能否在各行各业中广泛应用所面临的一大研究重点。
[0004]我国国家密码管理局为了实现加解密算法的自主可控,于2010年至今,出台了一系列更加高效和安全的商用密码算法,如SM2、SM3、SM4、SM9等。又在2020年后,颁布了一系列密码领域相关的国家标准,如《中华人民共和国密码法》等,切实规范和推动了国密商用算法在各个领域中的应用。
[0005]联盟链不同于BTC、ETH这些公有链的形态与架构,在去中心化与中心化之间达成一种平衡的状态,这使得联盟链成为区块链技术的主要形态,受到国民的广泛关注。Hyperledger Fabric作为当前最为流行的联盟链之一,其安全机制便显得尤为重要,其中所涉及的加解密算法都是国际算法,如ECDSA、AES、SHA

256等。

技术实现思路

[0006]为了克服上述现有技术存在的不足,本专利技术提供了一种基于改进SM2算法的Fabric区块链构建方法。
[0007]为了实现上述目的,本专利技术提供如下技术方案:
[0008]一种基于改进SM2算法的Fabric区块链构建方法:
[0009]所述SM2算法的步骤包括:
[0010]签名过程包括:
[0011]第一步,计算e=H
v
(Z
A
||M);
[0012]第二步,产生随机数k∈[1,n

1],并计算(x1,y1)=[k]·
G;
[0013]第三步,计算r=(e+x1)mod n;
[0014]第四步,判断条件r=0或r+k=n是否为真;如果条件为真,则回到第二步,如果条件为假,则进行第五步;
[0015]第五步,计算s=((1+d
A
)
‑1·
(k

r
·
d
A
))mod n;
[0016]第六步,输出数字签名(r,s);
[0017]验证过程包括:
[0018]第一步,判断条件r'∈[1,n

1]并且s'∈[1,n

1]是否为真;如果为假,则验证不通过;如果为真,则进行第二步;
[0019]第二步,计算e'=H
v
(Z
A
||m');
[0020]第三步,计算t=(r'+s')mod n,若t=0,则验证不通过,若t!=0,则进行第四步;
[0021]第四步,计算(x',y')=[s']·
G+[t]·
P
A

[0022]第五步,计算R=(e'+x1')mod n;
[0023]第六步,判断条件R=r'是否为真;如果为假,则验证不通过,如果为真,则验证通过;
[0024]其特征在于,
[0025]将SM2算法中的签名过程第五步改进为:
[0026]计算s=(k

erd
A
)mod n,若s=0,则返回第二步;若s!=0,则进行第六步;
[0027]将SM2算法中的验证过程第三步改进为:
[0028]计算t=e'r'mod n,若t=0,则验证不通过;若t!=0,则进行第四步;
[0029]在Fabric区块链的加密模块BCCSP上增加改进后的SM2算法,实现基于改进SM2算法的Fabric区块链构建。
[0030]进一步,所述在Fabric区块链的加密模块BCCSP上增加改进后的SM2算法,其包括:
[0031]创建sm2sign.go文件,在sm2sign.go文件中定义SM2算法所需要使用的数据结构,实现对外接口;
[0032]定义一个包含公钥和私钥的密钥结构体,将结构体存放在sm2sign.go文件中;所述公钥实现crypto/crypto.go中的PublicKey接口,所述私钥实现crypto/crypto.go中的PrivateKey接口和Signer接口。
[0033]创建sm2curve.go文件,在sm2curve.go文件中实现SM2算法所需要的数学运算函数;
[0034]将sm2sign.go文件、sm2curve.go文件、改进后的SM2算法放在BCCSP的gm目录下,将BCCSP中的密码包内的算法替换成改进后的SM2算法。
[0035]进一步,还包括,利用golang中的math/big包和crypto/eliptic包实现SM2算法所需要的素数域大数运算和椭圆曲线运算。
[0036]本专利技术提供的一种基于改进SM2算法的Fabric区块链构建方法具有以下有益效果:
[0037]本专利技术方案针对原有的SM2算法流程当中具有求逆运算的部分进行了优化,减少整个过程中的求逆运算,从而有效降低时间复杂度;并根据改进后的SM2算法对Fabric区块链的加密模块进行设计与改造,进而为区块链的计算效率带来一定的提高。
附图说明
[0038]为了更清楚地说明本专利技术实施例及其设计方案,下面将对本实施例所需的附图作简单地介绍。下面描述中的附图仅仅是本专利技术的部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0039]图1为本专利技术的签名过程算法流程图;
[0040]图2为本专利技术的签名验证过程算法流程图;
[0041]图3为本专利技术的SM2公钥和私钥数据结构图;
[0042]图4为本专利技术的SM2公私钥对结构图;
[0043]图5为本专利技术实施例的原始SM2算法与改进SM2算法运行耗时对比分析图;
[0044]图6为本专利技术实施例的运用ECDSA算法和本专利技术算法的联盟链网络启动耗时对比;
[0045]图7为本专利技术实施例的运用ECDSA算法和本专利技术算法的联盟链网络链码初始化速率对比。
具体实施方式
[0046]为了使本领域技术人员更好的理解本专利技术的技术方案并能予以实施,下面结合附图和具体实施本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于改进SM2算法的Fabric区块链构建方法,包括:所述SM2算法的步骤包括:签名过程包括:第一步,计算e=H
v
(Z
A
||M);第二步,产生随机数k∈[1,n

1],并计算(x1,y1)=[k]
·
G;第三步,计算r=(e+x1)mod n;第四步,判断条件r=0或r+k=n是否为真;如果条件为真,则回到第二步,如果条件为假,则进行第五步;第五步,计算s=((1+d
A
)
‑1·
(k

r
·
d
A
))mod n;第六步,输出数字签名(r,s);验证过程包括:第一步,判断条件r'∈[1,n

1]并且s'∈[1,n

1]是否为真;如果为假,则验证不通过;如果为真,则进行第二步;第二步,计算e'=H
v
(Z
A
||m');第三步,计算t=(r'+s')mod n,若t=0,则验证不通过,若t!=0,则进行第四步;第四步,计算(x',y')=[s']
·
G+[t]
·
P
A
;第五步,计算R=(e'+x1')mod n;第六步,判断条件R=r'是否为真;如果为假,则验证不通过,如果为真,则验证通过;其特征在于,将SM2算法中的签名过程第五步...

【专利技术属性】
技术研发人员:付金华徐洁景志勇陶红伟周文辉
申请(专利权)人:郑州轻工业大学
类型:发明
国别省市:

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

1