SCI论文(www.lunwensci.com)
摘要:基于用户标识的无证书公钥密码算法(CL-PKC)可以在不使用数字证书和密钥中心的前提下,实现用户公钥的管理和发布,提供便捷密钥管理的同时,能够防止密钥中心的用户机密泄露问题,同时获得高效的数字签名验证性能。在区块链应用环境下,节点之间频繁地使用共识协议进行数据交换,该过程具有显著的高频并发性,所以共识算法的性能将会严重影响区块链的处理速度。为了能够提升共识算法的性能,在本文中,我们将设计一个无证书密码算法,该算法具有计算速度快、存储需求小等优点,并且可提供数据完整性保护和抗抵赖性保护。
关键词:区块链;共识协议;无证书公钥密码算法;非对称公钥密码算法
An Improved Method of Blockchain Consensus Protocol Based on Certificateless Public Key Cryptography Algorithm
MA Guangwei1,LI Chenyang2,SONG Yedong1,ZHANG Liang1
(1.Weichai Power Co.,Ltd.,Weifang Shandong 261061;
2.School of Software,Shandong University,Ji'nan Shandong 250101)
【Abstract】:Certificateless public key cryptography(CL-PKC)is designed to manage secret key for user without using certificates and key-escrow,it's an ID-based cryptography technology which can provide convenient key management and prevent the disclosure of users'secrets in the key management system,and obtain efficient digital verification performance.In the blockchain system,consensus protocols are frequently used for data exchange between nodes.This process has significant high-frequency attribute,so the performance of consensus algorithms will seriously affect the processing speed ofthe blockchain.In order to improve the performance of consensus algorithm,we will design a certificateless cryptographic algorithm in this paper.This algorithm has the advantages of fast computing speed,small storage requirements,and can provide data integrity protection and non-repudiation protection.
【Key words】:blockchain;consensus protocol;certificateless public key cryptography;public-key cryptographic algorithm
0引言
随着区块链技术的不断发展,给信息共享[1]、版权保护[2]、供应链、物联网[3]等领域提供了更多的技术可能性。在区块链分布式的环境应用中,考虑到不可信网络中恶意节点的攻击行为,区块链系统要求可以支持拜占庭容错,即当网络中存在少量恶意节点的时候,依然可以确保区块链中数据的一致性,诸多企业例如IBM、Oracle、SAP等均开发了自身的区块链系统,区块链节点需要对更新操作达成共识,共识协议基本采用两种思路,分别为基于计算的共识协议和基于通讯的共识协议[4],现有共识机制基本上采用两者之一或者采用两者之间做一定的平衡。在共识协议的执行过程中,采用了数字证书和电子签名技术,来确保节点发送消息的真实性和有效性,在高频并发的场景下,数字签名和验证是一个十分耗时的过程,尤其在区块链节点数量日益增加的情况下,提高密码运算的效率对于提升区块链的执行效率至关重要。
1区块链中的共识协议
区块链的共识协议分为两个主要步骤:出块节点选举和主链共识。下面分别对节点中交易合法性验证、节点之间的共识问题的高频并发特征进行描述。
1.1交易合法性验证
区块链交易的合法性验证通常可以通过验证签名有效性的方式来实现。当区块链采用账户模型时,该区块链所适用的账户通常对应有一组或多组公钥-私钥对,上述公钥可以被记录在相应的账户状态中,或以其他形式存储在区块链的分布式数据库中,且可被区块链网络中的任一节点设备获得。与上述公钥对应的私钥则保存在账户所有方的本地数据库或其他硬件终端中,以供账户所有方进行数字签名或加解密操作等。发起方所发起的区块链交易不仅包括交易内容,还包括该发起方采用其账户对应的私钥针对交易内容而作的数字签名。区块链节点在接收到区块链交易后,可以基于该区块链交易所含的数字签名对该区块链交易进行合法性验证,即,利用数字证书技术,对数字签名和数据完整性进行验证。
1.2拜占庭容错协议
拜占庭庭容错协议用于解决分布式系统中的拜占庭将军问题,在存在恶意节点的情况下达成一致性。拜占庭将军问题是分布式系统中正常组件在故障组件干扰下达成一致的抽象描述。经典的拜占庭容错协议通常面向中心化的分布式集群达成确定一致性,如PBFT、Byzantine Paoxs等,但无法直接应用在区块链系统中,在这些协议中,共识节点数量固定或者变化缓慢,节点之间需要多轮广播通信,通信复杂度较高。然而区块链系统中的节点数量不断动态变化,区块链系统(特别是非许可链)的网络规模也不支持节点间的多轮广播通信。因此,区块链拜占庭容许协议需要适应系统特点进行改进。
为了在网络规模较大的非许可链中达成确定性共识,一些工作将拜占庭容错协议和区块链的出块节点选举机制相结合,被称为“混合协议”,如:Algorand和Byzcoin。
2基于无证书的共识协议改进方法
2.1背景
因为在区块链网络中节点的数量庞大,节点之间高频并发的执行共识协议,签名和验证的速度成为区块链的瓶颈问题。本文提出利用无证书技术来加快节点间签名验签,从而加快共识协议的执行效率。
2.2方法介绍
本文基于国产公钥密码算法SM2的椭圆曲线参数Eab,设计无证书密码算法,部分参数如下:
E:定义在有限域Fp上的椭圆曲线。
G:椭圆曲线E上的基点。
q:基点G的阶。
2.2.1密码系统(KMC)初始化
初始化KMC的公开密钥、私有密钥,并公开密码系统的计算参数。接收区块链节点的密钥申请,产生重构密钥。
(1)随机生成秘密值kgc∈[1,q-1],kgc作为密码系统的私钥。
(2)计算系统公开密钥,Pkgc=kgc×G,Pkgc作为密码系统的公钥。
(3)选择国产算法SM3,作为指定的散列算法。
(4)公开系统参数Mpt=(E,G,q,Pkgc,SM3),系统私密参数Mst=kgc可以借助硬件芯片或者硬件设备安全存放。
2.2.2节点部分密钥生成
(1)区块链节点A,随机生成秘密值da∈[1,q-1],da作为节点A的部分私钥,安全存放。
(2)计算节点A的部分公钥,UA=da×G,UA作为节点的部分公钥。
(3)公开A的部分公钥和节点标识IDA,Apt=(UA,IDA)。
(4)使用节点A的部分私钥da对Apt=(UA,IDA)进行签名Signda=SM2(UA,IDA)。
(5)节点A发送(Apt,Signda)到KMC系统,请求KMC产生的部分密钥。
2.2.3密码系统(KMC)产生部分密钥
(1)KMC系统接收到节点A发送的重构密钥请求,(Apt,Signda),首先用Apt=(UA,IDA)中的UA去验证Signda是否为合法的签名,从而确定节点的部分公开密钥和部分私钥是匹配的。
(2)KMC为节点A产生随机生成秘密值xa∈[1,q-1],并计算XA=xa×G。
(3)KMC计算WA=UA+XA,根据节点A的标识IDA等相关参数,为节点A计算hA=SM3(WA||Eab||Pkgc||IDA||)。
(4)KMC为节点A生成的重构公钥为WA,部分私钥为ta=xa+kgc×hAmodq。
(5)KMC使用A节点侧的公钥PA加密ta,Ea=EncryptPA(ta),使用KMC的私钥kgc对(Ea,WA)进行签名,Signkgc=SM2(UA,IDA),最后把Ea,WA,Signkgc作为响应报文返回给节点A。
2.2.4节点产生完整私钥
(1)节点A收到KMC的响应报文,首先使用系统公钥参数Pkgc对Ea,WA,Signkgc进行验证。
(2)如果验证通过,使用da对Ea进行解密,ta=Decryptda(Ea),得到ta=xa+kgc×hAmodq。
(3)节点A计算完整私钥xa=da+ta=da+xa+kgc×hAmodq。
(4)节点A计算完整公钥PA=sa×G=UA+XA+ha×Pkgc。
2.2.5节点签名生成
(1)节点A生成随机数k∈[1,q-1],计算(x1,y1)=k×G。
(2)计算明文哈希值e=SM3(m)。
(3)计算r=(e+x1)modq,若r=0或r+k=q,跳转(1)步执行。
(4)计算s=(1+sa)-1(k-rd)modq,若s=0,跳转(1)步执行。
(5)将(r,s)作为签名结果,WA作为重构公钥一起发送给验签节点B。
2.2.6节点签名验证
(1)验证r,s,若r,s∉[1,q−1],验证失败。
(2)若(r+s)modq=0,验证失败。
(3)计算明文哈希值SM3(m)。
(4)根据节点A的标识IDA等相关参数,为节点A计算hA=SM3(WA||Eab||Pkgc||IDA||)。
(5)计算节点A的完整公钥PA=WA+ha×Pkgc。
(6)计算(x1,y1)=s×G+(r+s)×PA。
(7)计算r=(e+x1)modq,若r=r验证通过,否则验证不通过。
3安全性和性能分析
正确性分析:我们引入无证书技术来实现公钥和身份绑定的验证,通信双方A,B通信时,假如A给B发消息,A会在消息后面将自己的WA附带发送给B。这里的WA是一个公钥重构因子WA=UA+XA。B收到A发送的消息之后,会利用密钥分发中心的公开密钥Pkgc和节点A的标识计算hA=SM3(WA||Eab||Pkgc||IDA||),从而计算节点A的完整公钥PA=WA+ha×Pkgc,这里我们可以验证根据重构密钥WA计算出来的完整公钥PA,与节点A在2.2.4节点产生完整私钥的第(4)步计算出来的公钥相同,因此签名与验证的正确性得到证明。
安全性分析:首先节点侧产生了部分私钥da,在整个协议流程da没有进行网络传输,因此无论KMC还是任意敌手都无法计算出节点的完整私钥。其次冒充KMC,在公布系统参数的前提下,敌手冒充KMC产生部分私钥和重构公钥,前提条件是获得KMC的系统私钥kgc,因为节点侧和KMC的私钥采用安全存储的方法,无法明文导出,所以黑客针对KMC的假冒攻击也是无法实现的。
性能分析:这里公钥重构运算和签名验证,在2.2.6节点签名验证的第(6)步,可以使用Shamir优化算法,提升验证的性能,其达成共识协议的速度要比基于证书的环境下快20%~30%左右。
4结语
在本文中,我们对设计了可以适用于区块链共识协议的无证书公钥密码算法,为区块链节点建立基于ID的密钥管理体系,采用国产密码算法完成节点和密钥中心端的部分密钥产生、密钥合成、重构密钥管理等。该算法能够有效的提高区块链共识协议的执行效率,并分析了算法的正确性、安全性,对于加快区块链的应用有十分积极的推动作用。
参考文献
[1]WANG L,LIU W Y,HAN X W.Blockchain-based Government Information Resource Sharing[C]//In:Proc.of the 23 IEEE Intl Conf.on Parallel and Distributed Systems(ICPADS),2017:804-809.
[2]ZHANG X W,YIN Y J.Research on Digital Copyright Management System Based on Blockchain Technology[C]//In:Proc.of the 3rd IEEE Information Technology,Networking,Electronic and Automation Control Conf.(ITNEC),2019:2093-2097.
[3]CASADO-VARA R,PRIETA F,PRIETO J,e tal.Blockchain Framework for IoT Data Quality Via Edge Computing[C]//In:Proc.of the 1st Workshop on Blockchain-enabled Networked Sensor Systems,2018:19-24.
[4]夏清,窦文生,郭凯文,等.区块链共识协议综述[J].软件学报,2021,32(2):277-299.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网! 文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/63365.html