CN116032490B - 一种基于改进SM2算法的Fabric区块链构建方法 - Google Patents
一种基于改进SM2算法的Fabric区块链构建方法 Download PDFInfo
- Publication number
- CN116032490B CN116032490B CN202310026725.7A CN202310026725A CN116032490B CN 116032490 B CN116032490 B CN 116032490B CN 202310026725 A CN202310026725 A CN 202310026725A CN 116032490 B CN116032490 B CN 116032490B
- Authority
- CN
- China
- Prior art keywords
- algorithm
- improved
- mod
- block chain
- file
- 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
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供了一种基于改进SM2算法的Fabric区块链构建方法,属于区块链加密技术领域,包括:将SM2算法中的签名过程第五步改进为:计算s=(k‑erdA)mod n,若s=0,则返回第二步;若s!=0,则进行第六步;将SM2算法中的验证过程第三步改进为:计算t=e′r′mod n,若t=0,则验证不通过;若t!=0,则进行第四步;在Fabric区块链的加密模块BCCSP上增加改进后的SM2算法,实现基于改进SM2算法的Fabric区块链构建。该方法能够构建算法效率更高的Fabric区块链系统。
Description
技术领域
本发明属于区块链加密技术领域,具体涉及一种基于改进SM2算法的Fabric区块链构建方法。
背景技术
当前,区块链技术已经渗入到各行各业的发展当中,并不断取得创新与突破。与此同时,我们更应该充分考虑技术发展所带来的网络和信息安全问题。特别是在当下国际环境更趋复杂严峻和不确定,无论是对于个人、企业还是国家而言,网络和信息安全问题都不容忽视。
区块链技术中使用了许多密码学算法,如Hash算法、数字签名技术、对称加密算法和非对称加密算法等,不同类型的加密算法在不同模块发挥着举足轻重的作用,共同保证着区块链上数据的安全。但许多国际通用的密码算法屡屡被破解和攻击,存在后门安全隐患和大量的不可控因素,因此,研究如何解决密码算法在区块链应用中存在的安全风险,已然成为区块链技术能否在各行各业中广泛应用所面临的一大研究重点。
我国国家密码管理局为了实现加解密算法的自主可控,于2010年至今,出台了一系列更加高效和安全的商用密码算法,如SM2、SM3、SM4、SM9等。又在2020年后,颁布了一系列密码领域相关的国家标准,如《中华人民共和国密码法》等,切实规范和推动了国密商用算法在各个领域中的应用。
联盟链不同于BTC、ETH这些公有链的形态与架构,在去中心化与中心化之间达成一种平衡的状态,这使得联盟链成为区块链技术的主要形态,受到国民的广泛关注。Hyperledger Fabric作为当前最为流行的联盟链之一,其安全机制便显得尤为重要,其中所涉及的加解密算法都是国际算法,如ECDSA、AES、SHA-256等。
发明内容
为了克服上述现有技术存在的不足,本发明提供了一种基于改进SM2算法的Fabric区块链构建方法。
为了实现上述目的,本发明提供如下技术方案:
一种基于改进SM2算法的Fabric区块链构建方法:
所述SM2算法的步骤包括:
签名过程包括:
第一步,计算e=Hv(ZA||M);
第二步,产生随机数k∈[1,n-1],并计算(x1,y1)=[k]·G;
第三步,计算r=(e+x1)mod n;
第四步,判断条件r=0或r+k=n是否为真;如果条件为真,则回到第二步,如果条件为假,则进行第五步;
第五步,计算s=((1+dA)-1·(k-r·dA))mod n;
第六步,输出数字签名(r,s);
验证过程包括:
第一步,判断条件r'∈[1,n-1]并且s'∈[1,n-1]是否为真;如果为假,则验证不通过;如果为真,则进行第二步;
第二步,计算e'=Hv(ZA||m');
第三步,计算t=(r'+s')mod n,若t=0,则验证不通过,若t!=0,则进行第四步;
第四步,计算(x',y')=[s']·G+[t]·PA;
第五步,计算R=(e'+x1')mod n;
第六步,判断条件R=r'是否为真;如果为假,则验证不通过,如果为真,则验证通过;
其特征在于,
将SM2算法中的签名过程第五步改进为:
计算s=(k-erdA)mod n,若s=0,则返回第二步;若s!=0,则进行第六步;
将SM2算法中的验证过程第三步改进为:
计算t=e'r'mod n,若t=0,则验证不通过;若t!=0,则进行第四步;
在Fabric区块链的加密模块BCCSP上增加改进后的SM2算法,实现基于改进SM2算法的Fabric区块链构建。
进一步,所述在Fabric区块链的加密模块BCCSP上增加改进后的SM2算法,其包括:
创建sm2sign.go文件,在sm2sign.go文件中定义SM2算法所需要使用的数据结构,实现对外接口;
定义一个包含公钥和私钥的密钥结构体,将结构体存放在sm2sign.go文件中;所述公钥实现crypto/crypto.go中的PublicKey接口,所述私钥实现crypto/crypto.go中的PrivateKey接口和Signer接口。
创建sm2curve.go文件,在sm2curve.go文件中实现SM2算法所需要的数学运算函数;
将sm2sign.go文件、sm2curve.go文件、改进后的SM2算法放在BCCSP的gm目录下,将BCCSP中的密码包内的算法替换成改进后的SM2算法。
进一步,还包括,利用golang中的math/big包和crypto/eliptic包实现SM2算法所需要的素数域大数运算和椭圆曲线运算。
本发明提供的一种基于改进SM2算法的Fabric区块链构建方法具有以下有益效果:
本发明方案针对原有的SM2算法流程当中具有求逆运算的部分进行了优化,减少整个过程中的求逆运算,从而有效降低时间复杂度;并根据改进后的SM2算法对Fabric区块链的加密模块进行设计与改造,进而为区块链的计算效率带来一定的提高。
附图说明
为了更清楚地说明本发明实施例及其设计方案,下面将对本实施例所需的附图作简单地介绍。下面描述中的附图仅仅是本发明的部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的签名过程算法流程图;
图2为本发明的签名验证过程算法流程图;
图3为本发明的SM2公钥和私钥数据结构图;
图4为本发明的SM2公私钥对结构图;
图5为本发明实施例的原始SM2算法与改进SM2算法运行耗时对比分析图;
图6为本发明实施例的运用ECDSA算法和本发明算法的联盟链网络启动耗时对比;
图7为本发明实施例的运用ECDSA算法和本发明算法的联盟链网络链码初始化速率对比。
具体实施方式
为了使本领域技术人员更好的理解本发明的技术方案并能予以实施,下面结合附图和具体实施例对本发明进行详细说明。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
实施例:
本发明提供了一种基于改进SM2算法的Fabric区块链构建方法,具体如图1-7所示,包括:将SM2算法中的签名过程算法的第五步改进为:计算s=(k-erdA)mod n,若s=0,则返回第二步,若s!=0,则进行第六步;将SM2算法中的签名验证过程算法的第三步改进为:计算t=e'r'mod n,若t=0,则验证不通过,若t!=0,则进行第四步;在Fabric区块链的加密模块BCCSP上,增加对改进后的SM2算法的支持,实现基于改进国产密码算法的Fabric区块链构建。
以下为SM2算法优化细节:
针对SM2算法的优化方案主要有两部分,其一是在数字签名生成阶段,对原SM2算法的第五步步骤改进为:计算s=(k-erdA)mod n,若s=0,则返回第三步,若s!=0,则进行第六步;其余步骤与原始SM2签名算法一致,不做改变。具体算法如图1。
原SM2签名算法的第五步步骤为:
计算s=((1+dA)-1·(k-r·dA))mod n。
其二是在数字签名验证阶段,将原SM2算法中的签名验证过程算法的第三步改进为:计算t=e′r′mod n,若t=0,则验证不通过,若t!=0,则进行第四步。具体算法如图2。
原SM2验证算法的第三步步骤为:
计算t=(r′+s′)mod n,若t=0,则验证不通过,若t!=0,则进行第五步。
以下为本验证方案的原理性证明:
(x′1,y′1)
=[s′]G+[t]PA
=[s′]G+[e′r′]PA
=[k-e′r′dA]G+[e′r′]PA
=[k-e′r′dA]G+[e′r′][dA]G
=[k]G
=(x1,y1)
R=(e′+x1′)mod n,r=(e+x1)mod n,e′和e相等,x1′等同于x1,故一般情况下,签名验证成功。
以下为将改进后的国产密码算法融合到Fabric区块链当中的具体操作步骤:
第一步,参考golang语言的crypto/ecdsa算法源码当中的文件结构,确定SM2算法的源代码的文件有sm2sign.go和sm2curve.go。其中,sm2sign.go文件主要是定义了上下文需要使用到的数据结构,实现了对外的接口,在sm2curve.go文件当中,实现了SM2算法原理中需要使用的一些数学运算函数,如块操作,变换函数。
第二步,根据SM2算法的原理,可以了解到公钥就是椭圆曲线上的一个点,而私钥是一个大数,据此,可以定义一对密钥结构体,存放在sm2sign.go文件之中,其中公钥为PublicKey,其实现了crypto/crypto.go中的PublicKey接口,私钥为PrivateKey,其实现了crypto/crypto.go中的PrivateKey接口和Signer接口。SM2公钥和私钥的数据结构如图3所示,SM2公私钥结构图如图4所示。
第三步,遵循SM2算法的标准,实现两个最关键的功能,即签名和验签。主要的操作就是借助golang中的math/big包和crypto/eliptic包来实现素数域上的大数运算(加法运算、减法运算、模运算)和一些椭圆曲线的运算(数乘运算、点乘运算),相关的基本运算表1,表2所示。在完成底层crypto包的SM2算法的替换之后,将BCCSP相关文件当中所引入的密码包更换成重新设计的密码包,等待第二次编译成功,区块链的国密改造即可完成。
表1素数域大数计算
表2椭圆曲线计算
以下为对本发明改进后的SM2算法效果检测实施例:
本实施例中对优化后的SM2国密算法进行性能分析,我们使用Go语言实现了SM2算法,在保持签名信息、签名方唯一标识以及签名方密钥对均不变的情况下,将签名和验签流程的次数设置为100次,对原SM2算法和改进后的算法各进行5次测试,记录总耗时进行对比分析,测试结果如表3和图5所示。
实验结果表明,改进后的签名算法具有更低的时间复杂度。SM2算法主要使用了椭圆点运算,模逆运算,哈希运算和点乘运算,本文提出的改进算法主要从消除或减少时间复杂度较高的模逆运算和点乘运算的角度出发,进行了一些改进,从而进一步缩短签名时间,提高算法的运算效率。
以下为对本发明的基于优化国密算法的区块链系统检测实施例:
在虚拟环境下,分别对原始区块链系统和基于优化国密算法的区块链系统进行开发环境的部署,在确保联盟链网络的搭建以及链码都保持一致的情况下,分别在两种环境下计算联盟链测试网络启动5次的耗时平均值,测试结果如表4所示,实验结果表明Hyperledge Fabric国密版区块链系统的启动速率较原系统有所提升。
表4联盟链网络启动耗时对比
接下来,我们分别在两个环境下的Fabric网络当中创建通道,同时将节点加入到通道中,然后安装相同的链码并进行初始化,针对“链码安装与初始化”,这个Fabric区块链系统的核心功能进行测试,对两个系统各进行5次测试,可以看到国密版的Fabric区块链系统性能明显要优于原系统,实验结果如表5所示。
通过图6和图7,可以更加直观的观察实验结果,可以发现,优化后的区块链系统较原始系统的性能有所提升,从两个系统底层所使用有的签名算法,可以一探究竟。原始系统所用的签名算法为ECDSA算法,其性能与SM2算法相似,究其原因,两者具有相同的理论依据,均依托于椭圆曲线离散对数问题的计算,并且代码都基于Golang语言中的的大数运算和一些椭圆曲线的运算函数基础之上进行实现,但相对来说,优化后的SM2算法性能要稍微优于ECDSA算法。当然,也验证了基于优化SM2算法区块链系统的优越性。
以上所述实施例仅为本发明较佳的具体实施方式,本发明的保护范围不限于此,任何熟悉本领域的技术人员在本发明披露的技术范围内,可显而易见地得到的技术方案的简单变化或等效替换,均属于本发明的保护范围。
Claims (3)
1.一种基于改进SM2算法的Fabric区块链构建方法,包括:
所述SM2算法的步骤包括:
签名过程包括:
第一步,计算e=Hv(ZA||M);
第二步,产生随机数k∈[1,n-1],并计算(x1,y1)=[k]·G;
第三步,计算r=(e+x1)mod n;
第四步,判断条件r=0或r+k=n是否为真;如果条件为真,则回到第二步,如果条件为假,则进行第五步;
第五步,计算s=((1+dA)-1·(k-r·dA))mod n;
第六步,输出数字签名(r,s);
验证过程包括:
第一步,判断条件r'∈[1,n-1]并且s'∈[1,n-1]是否为真;如果为假,则验证不通过;如果为真,则进行第二步;
第二步,计算e'=Hv(ZA||m');
第三步,计算t=(r'+s')mod n,若t=0,则验证不通过,若t!=0,则进行第四步;
第四步,计算(x',y')=[s']·G+[t]·PA;
第五步,计算R=(e'+x1')mod n;
第六步,判断条件R=r'是否为真;如果为假,则验证不通过,如果为真,则验证通过;
其特征在于,
将SM2算法中的签名过程第五步改进为:
计算s=(k-erdA)mod n,若s=0,则返回第二步;若s!=0,则进行第六步;
将SM2算法中的验证过程第三步改进为:
计算t=e'r'mod n,若t=0,则验证不通过;若t!=0,则进行第四步;
在Fabric区块链的加密模块BCCSP上增加改进后的SM2算法,实现基于改进SM2算法的Fabric区块链构建。
2.根据权利要求1所述的一种基于改进SM2算法的Fabric区块链构建方法,其特征在于,所述在Fabric区块链的加密模块BCCSP上增加改进后的SM2算法,其包括:
创建sm2sign.go文件,在sm2sign.go文件中定义SM2算法所需要使用的数据结构,实现对外接口;
定义一个包含公钥和私钥的密钥结构体,将结构体存放在sm2sign.go文件中;所述公钥实现crypto/crypto.go中的PublicKey接口,所述私钥实现crypto/crypto.go中的PrivateKey接口和Signer接口;
创建sm2curve.go文件,在sm2curve.go文件中实现SM2算法所需要的数学运算函数;
将sm2sign.go文件、sm2curve.go文件、改进后的SM2算法放在BCCSP的gm目录下,将BCCSP中的密码包内的算法替换成改进后的SM2算法。
3.根据权利要求1所述的一种基于改进SM2算法的Fabric区块链构建方法,其特征在于,还包括,利用golang中的math/big包和crypto/eliptic包实现SM2算法所需要的素数域大数运算和椭圆曲线运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310026725.7A CN116032490B (zh) | 2023-01-09 | 2023-01-09 | 一种基于改进SM2算法的Fabric区块链构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310026725.7A CN116032490B (zh) | 2023-01-09 | 2023-01-09 | 一种基于改进SM2算法的Fabric区块链构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116032490A CN116032490A (zh) | 2023-04-28 |
CN116032490B true CN116032490B (zh) | 2023-10-03 |
Family
ID=86080895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310026725.7A Active CN116032490B (zh) | 2023-01-09 | 2023-01-09 | 一种基于改进SM2算法的Fabric区块链构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116032490B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6490352B1 (en) * | 1999-03-05 | 2002-12-03 | Richard Schroeppel | Cryptographic elliptic curve apparatus and method |
CN105025474A (zh) * | 2015-06-26 | 2015-11-04 | 安徽大学 | 一种面向无线传感网的轻量级数字签名方法 |
CN107040385A (zh) * | 2017-05-23 | 2017-08-11 | 广东工业大学 | 一种基于sm2椭圆曲线的签名验证算法的实现方法及系统 |
CN107147488A (zh) * | 2017-03-24 | 2017-09-08 | 广东工业大学 | 一种基于sm2加解密算法的签名验签系统和方法 |
CN109241784A (zh) * | 2018-08-16 | 2019-01-18 | 深圳忆联信息系统有限公司 | 一种ssd的国密sm2签名验证方法及系统 |
CN109660351A (zh) * | 2018-11-08 | 2019-04-19 | 北京大学 | 一种sm2公钥密码的数字签名快速生成方法 |
CN112187461A (zh) * | 2020-09-28 | 2021-01-05 | 中国人民解放军海军航空大学 | 一种基于加密算法的武器装备数据混合加密方法 |
CN112632475A (zh) * | 2020-12-30 | 2021-04-09 | 郑州轻工业大学 | 一种基于国密和图片隐写的图片版权保护系统及保护方法 |
CN115412239A (zh) * | 2022-08-29 | 2022-11-29 | 中国人民解放军国防科技大学 | 一种基于sm2的具有可重随机性的公钥加解密方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102412971B (zh) * | 2011-11-30 | 2015-04-29 | 西安西电捷通无线网络通信股份有限公司 | 基于sm2密钥交换协议的密钥协商方法及装置 |
CN103427997B (zh) * | 2013-08-16 | 2016-06-22 | 西安西电捷通无线网络通信股份有限公司 | 一种生成数字签名的方法及装置 |
-
2023
- 2023-01-09 CN CN202310026725.7A patent/CN116032490B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6490352B1 (en) * | 1999-03-05 | 2002-12-03 | Richard Schroeppel | Cryptographic elliptic curve apparatus and method |
CN105025474A (zh) * | 2015-06-26 | 2015-11-04 | 安徽大学 | 一种面向无线传感网的轻量级数字签名方法 |
CN107147488A (zh) * | 2017-03-24 | 2017-09-08 | 广东工业大学 | 一种基于sm2加解密算法的签名验签系统和方法 |
CN107040385A (zh) * | 2017-05-23 | 2017-08-11 | 广东工业大学 | 一种基于sm2椭圆曲线的签名验证算法的实现方法及系统 |
CN109241784A (zh) * | 2018-08-16 | 2019-01-18 | 深圳忆联信息系统有限公司 | 一种ssd的国密sm2签名验证方法及系统 |
CN109660351A (zh) * | 2018-11-08 | 2019-04-19 | 北京大学 | 一种sm2公钥密码的数字签名快速生成方法 |
CN112187461A (zh) * | 2020-09-28 | 2021-01-05 | 中国人民解放军海军航空大学 | 一种基于加密算法的武器装备数据混合加密方法 |
CN112632475A (zh) * | 2020-12-30 | 2021-04-09 | 郑州轻工业大学 | 一种基于国密和图片隐写的图片版权保护系统及保护方法 |
CN115412239A (zh) * | 2022-08-29 | 2022-11-29 | 中国人民解放军国防科技大学 | 一种基于sm2的具有可重随机性的公钥加解密方法 |
Non-Patent Citations (2)
Title |
---|
拟态区块链——区块链安全解决方案;徐蜜雪 等;软件学报;全文 * |
邓建球 ; 方轶 ; 丛林虎 ; 李海君.基于改进国密算法与区块链的数据登记系统.兵器装备工程学报.P122-P125. * |
Also Published As
Publication number | Publication date |
---|---|
CN116032490A (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Liu et al. | An efficient privacy-preserving outsourced calculation toolkit with multiple keys | |
CN109088726B (zh) | 基于sm2算法的通信双方协同签名及解密方法和系统 | |
JP6959994B2 (ja) | データ重複排除のためのアプリケーションによる暗号化鍵の生成 | |
US9800411B1 (en) | Using a secret generator in an elliptic curve cryptography (ECC) digital signature scheme | |
Jangirala et al. | A multi-server environment with secure and efficient remote user authentication scheme based on dynamic ID using smart cards | |
Das et al. | An efficient multi-use multi-secret sharing scheme based on hash function | |
US9755839B2 (en) | Production of cryptographic signatures | |
Cozzo et al. | Sharing the LUOV: threshold post-quantum signatures | |
Odelu et al. | An efficient ECC-based privacy-preserving client authentication protocol with key agreement using smart card | |
Cheon et al. | Ghostshell: Secure biometric authentication using integrity-based homomorphic evaluations | |
Hazay et al. | Computationally secure pattern matching in the presence of malicious adversaries | |
Banupriya et al. | Privacy-preserving hierarchical deterministic key generation based on a lattice of rings in public blockchain | |
Yao et al. | A privacy-preserving RLWE-based remote biometric authentication scheme for single and multi-server environments | |
CN112187461A (zh) | 一种基于加密算法的武器装备数据混合加密方法 | |
Yu et al. | Identity-based proxy signcryption protocol with universal composability | |
Hwang et al. | Round-reduced modular construction of asymmetric password-authenticated key exchange | |
Azarderakhsh et al. | How not to create an isogeny-based PAKE | |
Yin et al. | Two‐Round Password‐Based Authenticated Key Exchange from Lattices | |
Pilaram et al. | A lattice-based changeable threshold multi-secret sharing scheme and its application to threshold cryptography | |
Lu et al. | Robust and efficient authentication scheme for session initiation protocol | |
Tiwari | Cryptography in blockchain | |
Zhu | A provable one-way authentication key agreement scheme with user anonymity for multi-server environment | |
Yang et al. | Secure and efficient parallel hash function construction and its application on cloud audit | |
Mi et al. | Oblivious transfer based on NTRUEncrypt | |
Moon et al. | Improving an anonymous and provably secure authentication protocol for a mobile user |
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 | ||
GR01 | Patent grant |