具体实施方式
以下结合附图和具体实施方式对本发明的各个方面进行详细阐述。其中,众所周知的模块、单元及其相互之间的连接、链接、通信或操作没有示出或未作详细说明。并且,所描述的特征、架构或功能可在一个或一个以上实施方式中以任何方式组合。本领域技术人员应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。还可以容易理解,本文所述和附图所示的各实施方式中的模块或单元或处理方式可以按各种不同配置进行组合和设计。
本发明要解决的技术问题在于克服现有区块链***无法抵御量子攻击的不足,提供一种能够抵御量子攻击的区块链***。为解决上述技术问题,本发明的主要方案如下:在一个区块链***中,每个节点用户调用特定的密钥生成算法,获得相应的公钥-私钥对,通过使用基于编码的公钥密码算法和环签名算法,实现在区块链中通信及交易的抗量子攻击特性。
参见图1,图1示出了根据本发明实施方式的区块链的节点数据处理方法的流程示意图。图1所示的节点处理方法主要涉及交易转账处理,该方法可包括:步骤S101、步骤S102、步骤S103和步骤S104,其中,步骤S101,对应密钥生成,步骤S102,对应哈希生成,步骤S103,对应签名步骤,步骤S104,对应验证处理。下面结合具体的实施例对上述的步骤进行说明。
S101,第一节点根据预设的密钥生成算法生成用于对交易信息进行签名公钥-私钥对和哈希函数,其中,第一节点为区块链中发起交易的任意一个节点。
区块链***中包括多个节点,这些节点之间可以相互通信,第一节点可以是区块链节点中的任意一个发起交易的节点,例如,可以称为转账节点。
在本发明的一些实施方式中,区块链***中每个节点调用特定的密钥生成算法,获得相应的公钥-私钥对,通过使用基于编码的公钥密码算法和环签名算法,实现在区块链中通信及交易的抗量子攻击特性。
在本发明的实施方式中,第一节点根据预设的密钥生成算法生成用于对交易信息进行签名的公钥-私钥对和哈希函数包括:使用概率多项式时间算法生成公钥-私钥对和哈希函数,公钥和私钥对除了可以对交易信息进行签名之外,还可以用于对两个节点之间的保密通信提供安全保证。其中,概率多项式时间算法是密钥生成算法的一个分类,该密钥生成算法是一种概率多项式时间算法。在一些具体的实施例中,密钥生成算法可包括下述7个步骤:
(1)第一节点确定纠正t位错误的k维二元Goppa码Ci,码长n=2m,其中,t,k,i,n和m为正整数且n大于k,i为第一节点在区块链节点中的编号;
(2)确定二元Goppa码C
i对应的校验矩阵
及校验子译码算法
(3)确定(n-k)×(n-k)的二元随机可逆矩阵Vi和n×n的二元随机置换矩阵Pi;
(4)确定单向哈希函数h();
(5)计算
Hi为所述二元随机可逆矩阵V
i、校验矩阵
和二元随机置换矩阵P
i的乘积;
(6)生成公钥-私钥对
其中PK为公钥,SK为私钥;
(7)生成***公开参数(t,Ci,Hi,h()),其中,t为纠正的位数,Ci为编号为i的第一节点的二元Goppa码,Hi为编号为i的第一节点的公钥,h为单向哈希函数。
步骤(1)中的Goppa码是一种特殊的线性分组码,一些Goppa码满足下述公式:n=2m;k=n-mt;Goppa码可以进行有效译码,Goppa码可以作为秘密的陷门信息,可以实现单向陷门算法,从而构造公钥加密和签名算法。
上述步骤中单向哈希函数是安全的单向哈希函数。本领域技术人员可以选择已知满足需求的任意一种单向哈希函数,本发明实施方式对此不做限定。
上述步骤(7)中生成的***公开参数,是第一节点向区块链***的其他节点公开的参数,区块链中的其他节点均可以获取到这些公开的参数。
在本发明的一些实施方式中,对于通过上述密钥生成算法生成的公钥,可以为其生成钱包地址,并将该钱包地址对应区块链的其他节点公开。
S102,第一节点将本节点的交易信息使用所述哈希函数生成哈希摘要。
在本发明的实施方式中,本节点的交易信息可以是转账相关的交易信息。这些交易信息M可以通过步骤S101中生成的单向哈希函数生成哈希摘要。例如,可以采用下述的公式(1)完成:
T=h(M) (1)
其中,T为哈希摘要,M为交易信息。
S103,第一节点根据本节点的私钥对所述哈希摘要进行签名,得到哈希摘要签名。
环签名技术作为一种特殊的群签名,它没有可信中心,没有群的建立过程,对于验证者来说签名者是完全匿名的。环签名提供了一种匿名泄露秘密的巧妙方法,应用在区块链***中能够有效保证用户的隐私信息。利用环签名技术彻底实现了交易的匿名化,保护了***中用户的隐私信息。
在本发明的一些实施方式中,步骤S103可以包括第一节点选择某一个公钥环序列,该公钥环序列是全体环成员的一个子集,具体而言,可以包括下述步骤:
(1031)随机选择字
计算初始环序列
如图4所示,其中q=0,1,2,...,L是公钥环中字的编号,L为公钥环中字的总数,
代表二元域上的(n-k)维向量,n为Goppa的码长,k为Goppa码的维数;
(1032)生成转发环序列,对i=r+1,...,l-1,0,1,...,r-1,随机选择字
(汉明重量为t),计算
如图4所示,其中,
表示异或运算;
(1033)使用陷门函数计算
使得
查找使得
能够译码的q的最小值
(1034)计算在重量为预定数值的字的空间中
的指数
其中i
1<i
2<…<i
q定义为
的非零位的位置;
(1035)选择预设值(例如,0)作为胶水值,令
则哈希摘要的签名为
如图4所示。
上述步骤中汉明重量为只有0和1的一串数字(即向量)中,1的个数。
步骤(1033)中的陷门函数可以是本领域技术人员已知的多种陷门函数中的一种,本发明实施方式对此不做限定。
步骤(1034)和(1035)中,预定数值可以是9,也就是说,可以选择重量为9的字的空间的指数。
代表组合公式
举例说明:假设
其汉明重量为3,其非零位的位置为第一位,第三位,第五位(由左至右分别是第零位第一位…),即i
1=1,i
2=3,i
q=i3=5,所以
是
的简化表示。
胶水值可以指已知的值,因为在验证签名时需要用到公式
只有已知s
i的值才能计算s
i+1的值,可以选择s
0的值作为已知来推导,在一些实施例中,也可以选择其他值。
步骤S104,第一节点将所述交易信息、所述哈希摘要签名和所述公钥环广播到区块链的记账节点,以便所述记账节点根据所述第一节点广播的公钥环对第一节点的哈希摘要签名进行验证,完成记账。
在本发明的实施方式中,第一节点,即发送节点,将交易信息M、步骤1035中生成的该交易信息M的哈希摘要签名
和步骤1032生成的转发环进行封装打包后,广播到区块链的记账节点,例如,矿工。
记账节点接收到交易信息M、哈希摘要签名σ和公钥环打包的数据,进行验证。记账节点可以是区块链***的任意一个节点。在一些实施方式中,记账节点的验证过程可包括:从哈希摘要签名σ的指数
中恢复z
i;然后计算
判断s
l=s
0是否成立;如果s
l=s
0成立,则矿工验证通过,收款方收到转账金额,否则验证失败,交易失效。
本发明实施方式提供的区块链的节点安全交易处理方法,每个节点用户的私钥对交易信息进行签名,而公钥用来验证交易签名,并且为公钥生成钱包地址。交易发起者,即转账节点在签名时计算初始环序列sr+1,q和转发环序列si+1,q时使用节点用户自己随机选择的公钥环序列L,通过自己的私钥和公钥环序列L完成签名,从而隐藏了交易发起方的身份信息,达到匿名交易的目的。与此同时,矿工收到广播来的包含交易信息、哈希摘要签名和转发环序列的数据包时,使用公钥环进行签名认证。若验证通过,只能说明是公钥环中的某一个公钥的所有者签署的交易,而无法确定交易是由哪个节点发起的,从而解决了交易节点的数据隐私问题。矿工验证通过后将交易信息记录在新的区块中,收款方收到转账金额,交易完成。
在本发明实施方式的区块链***中,节点处理方法除了可包括上述的交易信息的处理之外,还可包括两两节点之间的保密通信。本发明实施方式提供的区块链节点数据处理包括节点之间的交易处理和安全通信两方面。两个节点之间的通信可以包括初始化过程、消息发送节点对消息的加密和发送、消息接收节点对消息的接收和解密。具体而言,如图2所示,可包括步骤S201,对应第一节点加密步骤,步骤S202,对应第二节点解密步骤。下面结合具体实施例对上述步骤进行说明。
步骤S201,第一节点接收第二节点发送的公钥,根据所接收的公钥对消息进行加密,得到加密消息,将所述加密消息发送到所述第二节点。所述第二节点使用该第二节点的私钥对所述加密消息进行解密。其中,第一节点可以是消息发送节点,第二节点可以是消息接收节点,例如,可以是区块链***中除了消息发送节点之外的其他任何一个节点。
在一些实施方式中,第一节点根据所接收的公钥对消息进行加密,得到加密消息可包括:将第一节点待发送的消息m划分为汉明重量为t的n维向量
其中,φ
n,t()表明一种变换,
代表二元域上的n维向量;根据下述的公式(2)确定加密消息(即密文)s:
s=HBeT (2)
其中,HB为第二节点的公钥,eT为所述n维向量的转置。
步骤S202,第二节点利用该节点自身的私钥对第一节点发送的加密消息,即密文,进行解密。具体而言,可包括:消息接收节点B(对应第二节点)自己的私钥为
计算
用译码算法对其译码
则明文消息为
代表对(V
B -1s)进行译码,译码结果为
即说明通过这种解密算法可以由密文恢复出明文。需要说明的是,本领域技术人员可以选择已知的任何一种译码算法,本发明实施方式对此不做限定。
本发明实施方式提供的区块链节点数据处理方法,能够抵抗量子攻击,每个节点用户的私钥用来解密信息或者对交易信息进行签名,而公钥用来加密信息和验证交易签名,并且由公钥生成钱包地址。交易发起者,即转账节点在签名时计算初始环序列和转发环序列时使用节点用户自己随机选择的公钥环L,通过自己的私钥和公钥环L完成签名,从而隐藏了交易发起方的身份信息,达到匿名交易的目的。与此同时,矿工收到广播来的数据包时,使用公钥环进行签名认证。若验证通过,只能说明是公钥环中的某一个公钥的所有者签署的交易,而无法确定交易是由哪个节点发起的,从而解决了交易节点的数据隐私问题。矿工验证通过后将交易信息记录在新的区块中,收款方收到转账金额,交易完成。
需要说明的是,在抗量子攻击的区块链***中,所有节点用户均处于同一个环中,而环签名又满足自发性和匿名性,这恰好也是抗量子攻击的区块链***的特点。其自发性是说,在抗量子攻击的区块链***中,可以随时增加或改变***中的节点用户,并且每个节点用户都是环中的成员。节点用户的公钥在***中公开,每个节点在发起交易时只要随机选择一组公钥环,再根据自己的私钥进行签名,便可以实现签名的匿名性,从而实现匿名转账。
在抗量子攻击的区块链***中,上述的保密通信和交易转账过程均使用基于编码的公钥密码算法,能够在保证数据机密性,交易匿名性的同时抵御量子攻击。
本发明实施方式提供的区块链节点通信处理方法,使用了基于编码的公钥加密算法来抵御量子攻击,节点间通信时通信信息由消息发送方使用接收方节点用户的公钥进行基于编码的加密,消息接收方的节点用户使用自己的私钥解密查看,保证了在后量子环境下区块链***中信息的机密性。
为抵御量子攻击,在区块链***中还使用了基于编码的环签名算法,转账节点在对交易信息进行签名时使用基于编码的环签名算法,矿工通过转账节点提供的公钥环进行验证,保证了在后量子环境下区块链***中交易双方的隐私。
图3和图4分别示出了区块链节点数据处理的流程,其中图3所示的流程关注两个节点之间的消息通信,图4关注两个节点之间的交易处理。
如图3所示,首先节点A和节点B在加入抗量子攻击的区块链***时就调用密钥生成算法,获得自己的公钥-私钥对;节点A使用节点B的公钥依照基于编码的加密算法对消息加密并发送给节点B;节点B使用自己的私钥依照基于编码的解密算法对密文消息解密,读取信息。由于在通信过程中使用基于编码的密码算法,使得消息在量子计算机的算力下依然具有机密性。
节点A发起交易的过程,如图4所示,具体描述如下:首先包括节点A在内的所有抗量子攻击的区块链节点调用密钥生成算法,获得自己的公钥-私钥对,由公钥生成相应的地址;节点A对交易信息采用哈希函数进行处理,生成哈希摘要;节点A随机选择公钥环对交易信息的哈希摘要进行匿名签名;节点A将交易信息,该交易信息的哈希摘要和哈希摘要的签名打包,广播发送给区块链***中的所有矿工;***中的矿工根据算力进行记账,最终只能有一个矿工获得记账权,如矿工B在获得记账权后利用节点A发送的公钥环对其签名进行验证;若验证通过则交易成功,收款方收到转账金额,完成匿名交易的过程。由于在交易过程中使用基于编码的环签名算法,环签名的过程如图5所示,使得区块链***在量子计算的环境下依然满足匿名性。
综上所述,本发明实施方式提供的区块链的节点数据处理方法,通过在节点间通信和交易时使用基于编码的公钥密码算法,从而实现了能够抵御量子攻击的区块链节点数据处理。本发明中涉及到的算法能够满足安全性需求,且该***具有节点信息完全匿名的特点。
本发明实施方式还提供一种计算机设备。如图6所示,计算机设备600包括存储器601和处理器602,其中,所述存储器,存储有计算机指令;所述处理器,配置为执行所述计算机指令以使所述计算机设备执行上面所述的节点数据处理方法。
本发明实施方式还提供一种计算机可读的非易失性存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现上面所述的节点数据处理方法。其中,所述机器可读的存储介质可以包含在第一类节点上的存储介质,又可以包括在第二类节点上的存储介质。在区块链***中,这些存储介质是非易失性的存储介质。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,智能手机或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本发明说明书中使用的术语和措辞仅仅为了举例说明,并不意味构成限定。本领域技术人员应当理解,在不脱离所公开的实施方式的基本原理的前提下,对上述实施方式中的各细节可进行各种变化。因此,本发明的范围只由权利要求确定,在权利要求中,除非另有说明,所有的术语应按最宽泛合理的意思进行理解。