一种适用于区块链的验证方法、装置及存储介质转让专利

申请号 : CN201911399367.4

文献号 : CN111162912B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王朝阳严强李昊轩李辉忠张开翔范瑞彬刘雪峰裴庆祺

申请人 : 深圳前海微众银行股份有限公司西安电子科技大学

摘要 :

本发明公开了一种适用于区块链的验证方法、装置及存储介质,其中方法为:第一解密节点从区块链获取加密密文;所述第一解密节点根据所述第一解密节点的私钥以及所述N+1个子密文中的子密文,确定所述加密密文在所述第一解密节点上的解密中间结果;所述第一解密节点根据所述各解密节点的解密中间结果,得到所述加密密文的明文;所述第一解密节点将所述明文和解密密钥证明上传至所述区块链,所述解密密钥证明用于验证所述明文是根据所述第一解密节点的私钥解密获得的。上述方法应用于金融科技(Fintech)时,不会暴露第一解密节点的私钥,且能够验证所述明文是根据所述第一解密节点的私钥解密获得的。

权利要求 :

1.一种适用于区块链的验证方法,其特征在于,包括:第一解密节点从区块链获取加密密文;所述加密密文包括N+1个子密文;所述第一解密节点为各解密节点中任一解密节点;所述各解密节点中每个解密节点都与一个私钥对应;N为正整数;所述加密密文是加密节点按照预设的加密算法,通过主公钥、N个加密干扰值和q阶循环群中不同的生成元对待加密信息进行加密得到的;q为素数;

所述第一解密节点根据所述第一解密节点的私钥以及所述N+1个子密文中的子密文,确定所述加密密文在所述第一解密节点上的解密中间结果,并将所述第一解密节点上的解密中间结果存放于所述区块链上;所述加密密文同时在所述各解密节点上得到所述各解密节点的解密中间结果,且得到的解密中间结果存放于所述区块链上;

所述第一解密节点根据所述各解密节点的解密中间结果,得到所述加密密文的明文;

所述第一解密节点确定所述明文的替代明文及所述N个加密干扰值对应的N个替代加密干扰值;所述第一解密节点通过所述替代明文、所述N个替代加密干扰值和所述生成元生成替代密文,所述替代密文包括N+1个替代子密文;

所述第一解密节点按照预设的哈希算法对所述N+1个替代子密文进行哈希运算,得到初始验证值;所述第一解密节点针对每个替代子密文,根据所述初始验证值、所述替代明文、所述第一解密节点的私钥生成所述替代子密文的子验证值;

所述第一解密节点将所述明文和解密密钥证明上传至所述区块链,所述解密密钥证明包括所述初始验证值和每个替代子密文的子验证值;所述解密密钥证明用于验证所述明文是根据所述第一解密节点的私钥解密获得的。

2.如权利要求1所述的方法,其特征在于,所述N个加密干扰值为从1至q‑1的q‑1个整数中随机选择的N个不同的整数;所述生成元包括q阶椭圆曲线上的两个生成元G1和G2;所述主公钥H=Σx_i*G2,x_i为第i个解密节点的私钥;i为正整数;所述N+1个子密文具体为:C1=(m*G1+(r1+r2+……+rn)*H)mod q;

C2=(r1*G2)mod q;

……

Cn+1=(rn*G2)mod q;

E=(C1,C2,……Cn+1);

其中,mod表示取模运算,E为所述加密密文;C1、C2……Cn+1为N+1个子密文;m为所述明文;r1、r2……rn为所述N个加密干扰值;n等于N。

3.如权利要求2所述的方法,其特征在于,所述N+1个子密文中的子密文为C2;所述第一解密节点根据所述第一解密节点的私钥以及所述N+1个子密文中的子密文,确定所述加密密文在所述第一解密节点上的解密中间结果,包括:x_1*C2+x_2*C2+…+x_n*C2=x_1*(r1*G2)+x_2*(r1*G2)+…+x_n*(r1*G2)=r 1*(x_1*G2)+r1*(x_2*G2)+…+r1*(x_n*G2)=r1*H;

所述加密密文在所述第一解密节点上的解密中间结果为r1*H。

4.如权利要求3所述的方法,其特征在于,N为1,所述第一解密节点按照预设的哈希算法对所述N+1个替代子密文进行哈希运算,得到初始验证值,包括:c=Hash(t1_p,t2_p);其中,t1_p=(a*G1)mod q;

t2_p=(a*G2)mod q;

其中,c为所述初始验证值;t1_p、t2_p为所述N+1个替代子密文;a为所述替代明文;

Hash为所述哈希算法。

5.如权利要求4所述的方法,其特征在于,所述第一解密节点针对每个替代子密文,根据所述初始验证值、所述替代明文、所述第一解密节点的私钥生成所述替代子密文的子验证值,包括:

Z1=(a‑c*x_1)mod q;

Z2=(a‑c*x_1’)mod q;

其中,Z1、Z2为所述替代子密文的子验证值;x_1为所述第一解密节点的私钥,x_1’为所述第一解密节点的私钥。

6.一种适用于区块链的验证装置,其特征在于,包括:获取模块,用于从区块链获取加密密文;所述加密密文包括N+1个子密文;所述装置为第一解密节点的验证装置;所述第一解密节点为各解密节点中任一解密节点;所述各解密节点中每个解密节点都与一个私钥对应;N为正整数;所述加密密文是加密节点按照预设的加密算法,通过主公钥、N个加密干扰值和q阶循环群中不同的生成元对待加密信息进行加密得到的;q为素数;

处理模块,用于根据所述第一解密节点的私钥以及所述N+1个子密文中的子密文,确定所述加密密文在所述第一解密节点上的解密中间结果,并将所述第一解密节点上的解密中间结果存放于所述区块链上;所述加密密文同时在所述各解密节点上得到所述各解密节点的解密中间结果,且得到的解密中间结果存放于所述区块链上;根据所述各解密节点的解密中间结果,得到所述加密密文的明文;

所述处理模块,还用于确定所述明文的替代明文及所述N个加密干扰值对应的N个替代加密干扰值;通过所述替代明文、所述N个替代加密干扰值和所述生成元生成替代密文,所述替代密文包括N+1个替代子密文;

验证模块,用于按照预设的哈希算法对所述N+1个替代子密文进行哈希运算,得到初始验证值;针对每个替代子密文,根据所述初始验证值、所述替代明文、所述第一解密节点的私钥生成所述替代子密文的子验证值;

所述验证模块,还用于将所述明文和解密密钥证明上传至所述区块链,所述解密密钥证明包括所述初始验证值和每个替代子密文的子验证值;所述解密密钥证明用于验证所述明文是根据所述第一解密节点的私钥解密获得的。

7.如权利要求6所述的装置,其特征在于,所述N个加密干扰值为从1至q‑1的q‑1个整数中随机选择的N个不同的整数;所述生成元包括q阶椭圆曲线上的两个生成元G1和G2;所述主公钥H=Σx_i*G2,x_i为第i个解密节点的私钥;i为正整数;所述N+1个子密文具体为:C1=(m*G1+(r1+r2+……+rn)*H)mod q;

C2=(r1*G2)mod q;

……

Cn+1=(rn*G2)mod q;

E=(C1,C2,……Cn+1);

其中,mod表示取模运算,E为所述加密密文;C1、C2……Cn+1为N+1个子密文;m为所述明文;r1、r2……rn为所述N个加密干扰值;n等于N。

8.如权利要求7所述的装置,其特征在于,所述处理模块具体用于:x_1*C2+x_2*C2+…+x_n*C2=x_1*(r1*G2)+x_2*(r1*G2)+…+x_n*(r1*G2)=r1*(x_1*G2)+r1*(x_2*G2)+…+r1*(x_n*G2)=r1*H;

所述加密密文在所述第一解密节点上的解密中间结果为r1*H。

9.一种存储介质,其特征在于,包括程序或指令,当所述程序或指令被处理器执行时,如权利要求1至5中任意一项所述的方法被执行。

说明书 :

一种适用于区块链的验证方法、装置及存储介质

技术领域

[0001] 本发明涉及金融科技(Fintech)领域和计算机软件领域,尤其涉及一种适用于区块链的验证方法、装置及存储介质。

背景技术

[0002] 随着计算机技术的发展,越来越多的技术(大数据、分布式、区块链(Blockchain)、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变。目前,金融
科技领域中,金融数据的安全至关重要,所以在传输过程中需要对金融数据进行加密并解
密。
[0003] 现有技术中,各解密者拥有一个共享的私钥,通过共享的私钥对密文解密后,最终得到的仅是一条解密后的明文,若要验证对密文解密的正确性,则需要获取解密者共享的
私钥,这无疑会泄露共享的私钥。因此,现有技术中,不能在不泄露共享的私钥的前提下,验
证密文解密过程的正确性。

发明内容

[0004] 本申请实施例提供一种适用于区块链的验证方法、装置及存储介质,解决了现有技术中不能在不泄露共享的私钥的前提下,验证密文解密过程的正确性的问题。
[0005] 第一方面,本申请实施例提供一种适用于区块链的验证方法,包括:第一解密节点从区块链获取加密密文;所述加密密文包括N+1个子密文;所述第一解密节点为各解密节点
中任一解密节点;所述各解密节点中每个解密节点都与一个解密私钥对应;N为正整数;所
述加密密文是所述加密节点按照预设的加密算法,通过主公钥、N个加密干扰值和q阶循环
群中不同的生成元对待加密信息进行加密得到的;q为素数;所述第一解密节点根据所述第
一解密节点的私钥以及所述N+1个子密文中的子密文,确定所述加密密文在所述第一解密
节点上的解密中间结果,并将所述第一解密节点上的解密中间结果存放于所述区块链上;
所述加密密文同时在所述各解密节点上得到所述各解密节点的解密中间结果,且得到的解
密中间结果存放于所述区块链上;所述第一解密节点根据所述各解密节点的解密中间结
果,得到所述加密密文的明文;所述第一解密节点确定所述明文的替代明文及所述N个加密
干扰值对应的N个替代加密干扰值;所述第一解密节点通过所述替代明文、所述N个替代加
密干扰值和所述生成元生成替代密文,所述替代密文包括N+1个替代子密文;所述第一解密
节点按照预设的哈希算法对所述N+1个替代子密文进行哈希运算,得到初始验证值;所述第
一解密节点针对每个替代子密文,根据所述初始验证值、所述替代明文、所述第一解密节点
的私钥生成所述替代子密文的子验证值;所述第一解密节点将所述明文和解密密钥证明上
传至所述区块链,所述解密密钥证明包括所述初始验证值和每个替代子密文的子验证值;
所述解密密钥证明用于验证所述明文是根据所述第一解密节点的私钥解密获得的。
[0006] 一种可选实施方式中,所述N个加密干扰值为从1至q‑1的q‑1个整数中随机选择的N个不同的整数;所述生成元包括q阶椭圆曲线上的两个生成元G1和G2;所述主公钥H=Σx_
i*G2,x_i为第i个解密节点的私钥;i为正整数;所述N+1个子密文具体为:
[0007] C1=(m*G1+(r1+r2+……+rn)*H)mod q;
[0008] C2=(r1*G2)mod q;
[0009] ……
[0010] Cn+1=(rn*G2)mod q;
[0011] E=(C1,C2,……Cn+1);
[0012] 其中,mod表示取模运算,E为所述加密密文;C1、C2……Cn+1为N+1个子密文;m为所述明文;r1、r2……rn为所述N个加密干扰值;n等于N。
[0013] 一种可选实施方式中,所述N+1个子密文中的子密文为C2;所述第一解密节点根据所述第一解密节点的私钥以及所述N+1个子密文中的子密文,确定所述加密密文在所述第
一解密节点上的解密中间结果,包括:
[0014] x_1*C2+x_2*C2+…+x_n*C2
[0015] =x_1*(r1*G2)+x_2*(r1*G2)+…+x_n*(r1*G2)
[0016] =r1*(x_1*G2)+r1*(x_2*G2)+…+r1*(x_n*G2)
[0017] =r1*H;
[0018] 所述加密密文在所述第一解密节点上的解密中间结果为r1*H。
[0019] 一种可选实施方式中,N为1,所述第一解密节点按照预设的哈希算法对所述N+1个替代子密文进行哈希运算,得到初始验证值,包括:
[0020] c=Hash(t1_p,t2_p,……tn+1_p);其中,
[0021] t1_p=(a*G1)mod q;
[0022] t2_p=(a*G2)mod q;
[0023] 其中,c为所述初始验证值;t1_p、t2_p为所述N+1个替代子密文;a为所述替代明文;Hash为所述哈希算法。
[0024] 一种可选实施方式中,所述第一解密节点针对每个替代子密文,根据所述初始验证值、所述替代明文、所述第一解密节点的私钥生成所述替代子密文的子验证值,包括:
[0025] Z1=(a‑c*x_1)mod q;
[0026] Z2=(a‑c*x_1’)mod q;
[0027] 其中,Z1、Z2为所述替代子密文的子验证值;x_1为所述第一解密节点的私钥,x_1’为所述第一解密节点在对所述加密密文解密时所使用的私钥。
[0028] 第二方面,本申请提供一种适用于区块链的验证装置,包括:获取模块,用于从区块链获取加密密文;所述加密密文包括N+1个子密文;所述装置为所述第一解密节点的验证
装置;所述第一解密节点为各解密节点中任一解密节点;所述各解密节点中每个解密节点
都与一个解密私钥对应;N为正整数;所述加密密文是所述加密节点按照预设的加密算法,
通过主公钥、N个加密干扰值和q阶循环群中不同的生成元对待加密信息进行加密得到的;q
为素数;处理模块,用于根据所述第一解密节点的私钥以及所述N+1个子密文中的子密文,
确定所述加密密文在所述第一解密节点上的解密中间结果,并将所述第一解密节点上的解
密中间结果存放于所述区块链上;所述加密密文同时在所述各解密节点上得到所述各解密
节点的解密中间结果,且得到的解密中间结果存放于所述区块链上;根据所述各解密节点
的解密中间结果,得到所述加密密文的明文;所述处理模块,还用于确定所述明文的替代明
文及所述N个加密干扰值对应的N个替代加密干扰值;通过所述替代明文、所述N个替代加密
干扰值和所述生成元生成替代密文,所述替代密文包括N+1个替代子密文;验证模块,用于
按照预设的哈希算法对所述N+1个替代子密文进行哈希运算,得到初始验证值;针对每个替
代子密文,根据所述初始验证值、所述替代明文、所述第一解密节点的私钥生成所述替代子
密文的子验证值;所述验证模块,还用于将所述明文和解密密钥证明上传至所述区块链,所
述解密密钥证明包括所述初始验证值和每个替代子密文的子验证值;所述解密密钥证明用
于验证所述明文是根据所述第一解密节点的私钥解密获得的。
[0029] 一种可选实施方式中,所述N个加密干扰值为从1至q‑1的q‑1个整数中随机选择的N个不同的整数;所述生成元包括q阶椭圆曲线上的两个生成元G1和G2;所述主公钥H=Σx_
i*G2,x_i为第i个解密节点的私钥;i为正整数;所述N+1个子密文具体为:
[0030] C1=(m*G1+(r1+r2+……+rn)*H)mod q;
[0031] C2=(r1*G2)mod q;
[0032] ……
[0033] Cn+1=(rn*G2)mod q;
[0034] E=(C1,C2,……Cn+1);
[0035] 其中,mod表示取模运算,E为所述加密密文;C1、C2……Cn+1为N+1个子密文;m为所述明文;r1、r2……rn为所述N个加密干扰值;n等于N。
[0036] 一种可选实施方式中,所述N+1个子密文中的子密文为C2;所述处理模块具体用于:x_1*C2+x_2*C2+…+x_n*C2
[0037] =x_1*(r1*G2)+x_2*(r1*G2)+…+x_n*(r1*G2)
[0038] =r1*(x_1*G2)+r1*(x_2*G2)+…+r1*(x_n*G2)
[0039] =r1*H;
[0040] 所述加密密文在所述第一解密节点上的解密中间结果为r1*H。
[0041] 一种可选实施方式中,N为1,所述验证模块具体用于:c=Hash(t1_p,t2_p,……tn+1_p);其中,
[0042] t1_p=(a*G1)mod q;
[0043] t2_p=(a*G2)mod q;
[0044] 其中,c为所述初始验证值;t1_p、t2_p为所述N+1个替代子密文;a为所述替代明文;Hash为所述哈希算法。
[0045] 一种可选实施方式中,所述验证模块具体用于:
[0046] Z1=(a‑c*x_1)mod q;
[0047] Z2=(a‑c*x_1’)mod q;
[0048] 其中,Z1、Z2为所述替代子密文的子验证值;x_1为所述第一解密节点的私钥,x_1’为所述第一解密节点在对所述加密密文解密时所使用的私钥。
[0049] 上述第二方面及第二方面各个实施例的有益效果,可以参考上述第一方面及第一方面各个实施例的有益效果,这里不再赘述。
[0050] 第三方面,本申请实施例提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个实施例的方法。
[0051] 第四方面,本申请实施例提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个实施例的方法。
[0052] 本申请实施例提供一种是用于区块链的验证方法及装置中,第一解密节点从区块链获取加密密文后,所述第一解密节点根据所述第一解密节点的私钥以及所述N+1个子密
文中的子密文得到所述加密密文在所述第一解密节点上的解密中间结果,同时加密密文在
所述各解密节点上得到所述各解密节点的解密中间结果,且得到的解密中间结果存放于所
述区块链上,因此所述第一解密节点结合所述各解密节点的解密中间结果,即可得到所述
加密密文的明文;而所述第一解密节点重新根据所述明文的另一份替代明文,生成替代密
文,得到初始验证值,进而生成所述替代子密文的子验证值,最终生成可以验证所述明文是
根据所述第一解密节点的私钥解密获得的的解密密钥证明,可以在不暴露待第一解密节点
的私钥的基础上,验证加密密文的解密正确性。

附图说明

[0053] 图1为区块链的结构示意图;
[0054] 图2为本申请实施例提供的一种适用于区块链的验证方法的步骤流程示意图;
[0055] 图3为本申请实施例提供的一种适用于区块链的验证装置的结构示意图。

具体实施方式

[0056] 为了更好的理解上述技术方案,下面将结合说明书附图及具体的实施方式对上述技术方案进行详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技
术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例
以及实施例中的技术特征可以相互结合。
[0057] 下面首先解释本申请实施例中出现的名词。
[0058] 区块链:如图1所示,区块链是由一系列区块组成的一条链,每个块上除了记录本块的数据还会记录上一块的哈希值,通过这种方式组成一条链。区块链的核心理念有两个,
一个是密码学技术,另一个是去中心化思想,基于这两个理念做到区块链上的历史信息无
法被篡改。
[0059] 节点:网络中的每一个参与者就是一个节点,节点参与网络组建和数据交换。在区块链网络中,一个节点是指一个具有唯一身份的参与者,该节点具有一份完整的账本拷贝,
具有参与区块链网络共识和账本维护的能力。
[0060] 零知识证明:零知识证明指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的
协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其
相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信
息。
[0061] 在金融机构(银行机构、保险机构或证券机构)在进行业务(如银行的贷款业务、存款业务等)运转过程中,金融数据的安全至关重要,所以在传输过程中需要对金融数据进行
加密。目前各解密者拥有一个共享的私钥,若要验证对密文解密的正确性,则需要获取解密
者共享的私钥,这无疑会泄露共享的私钥。这种情况不符合银行等金融机构的需求,无法保
证金融机构各项业务的高效运转。
[0062] 为此,如图2所示,根据零知识证明的性质,本申请提供一种适用于区块链的验证方法。
[0063] 步骤201:第一解密节点从区块链获取加密密文。
[0064] 步骤202:所述第一解密节点根据所述第一解密节点的私钥以及所述N+1个子密文中的子密文,确定所述加密密文在所述第一解密节点上的解密中间结果,并将所述第一解
密节点上的解密中间结果存放于所述区块链上。
[0065] 所述加密密文同时在所述各解密节点上得到所述各解密节点的解密中间结果,且得到的解密中间结果存放于所述区块链上。
[0066] 步骤203:所述第一解密节点根据所述各解密节点的解密中间结果,得到所述加密密文的明文。
[0067] 步骤204:所述第一解密节点确定所述明文的替代明文及所述N个加密干扰值对应的N个替代加密干扰值。
[0068] 步骤205:所述第一解密节点通过所述替代明文、所述N个替代加密干扰值和所述生成元生成替代密文,所述替代密文包括N+1个替代子密文。
[0069] 步骤206:所述第一解密节点按照预设的哈希算法对所述N+1个替代子密文进行哈希运算,得到初始验证值。
[0070] 步骤207:所述第一解密节点针对每个替代子密文,根据所述初始验证值、所述替代明文、所述第一解密节点的私钥生成所述替代子密文的子验证值。
[0071] 步骤208:所述第一解密节点将所述明文和解密密钥证明上传至所述区块链,所述解密密钥证明包括所述初始验证值和每个替代子密文的子验证值。
[0072] 所述解密密钥证明用于验证所述明文是根据所述第一解密节点的私钥解密获得的。
[0073] 步骤201中,所述加密密文包括N+1个子密文;所述第一解密节点为各解密节点中任一解密节点;所述各解密节点中每个解密节点都与一个解密私钥对应;N为正整数;所述
加密密文是所述加密节点按照预设的加密算法,通过主公钥、N个加密干扰值和q阶循环群
中不同的生成元对待加密信息进行加密得到的;q为素数。其中,如果为了保证q中的整数足
够多,不至于随机取数时容易出现重复,q可以为大素数,大素数指2^256位的数量级的素
数。q阶循环群可以为q阶椭圆曲线循环群。
[0074] 具体来说,可以在步骤201之前,进行如下初始化流程:
[0075] (1)所有解密节点拥有一个q阶椭圆曲线循环群G,其中q为大素数,循环群G可看作q个椭圆曲线点的集合。
[0076] (2)所有解密节点需要在循环群G中随机选择两个独立的椭圆曲线点作为生成元G1、G2。
[0077] (3)所以每个解密节点都需要从{1,2,…q‑1}中随机选择一个数,作为自己的一个子密文x_i;每个解密节点计算(x_i*G2)mod q,作为主公钥H的一部分,发送到区块链。其
中,q为取模运算。其中,x_i*G:表示标量x_i与q阶椭圆曲线的任一点G2的点乘运算。
[0078] (4)所以主公钥H需组合构造,即每个解密节点计算(Σx_i*G2)mod q=(x*G2)mod q=H,其中主秘密x为所有子密文x_i之和。
[0079] (5)所有解密节点公布公钥:G1、G2、H,保留子密文x_i作为每个解密节点的私钥。
[0080] 需要说明的是,步骤201中的所述N个加密干扰值为从1至q‑1的q‑1个整数中随机选择的N个不同的整数;所述生成元包括q阶椭圆曲线上的两个生成元G1和G2;所述主公钥H
=Σx_i*G2,x_i为第i个解密节点的私钥;i为正整数。
[0081] 所述N+1个子密文具体为:
[0082] C1=(m*G1+(r1+r2+……+rn)*H)mod q;
[0083] C2=(r1*G2)mod q;
[0084] ……
[0085] Cn+1=(rn*G2)mod q;
[0086] E=(C1,C2,……Cn+1);
[0087] 其中,mod表示取模运算,E为所述加密密文;C1、C2……Cn+1为N+1个子密文;m为所述明文;r1、r2……rn为所述N个加密干扰值;n等于N。
[0088] 特别地,N为1时,即n也为1时,N个加密干扰值为一个随机数r,上述可选实施方式可以为:
[0089] (1)加密节点P确定待加密消息m。
[0090] (2)加密节点P从{1,2,…q‑1}中选择随机数r。
[0091] (3)加密节点P利用Elgamal加密算法加密待加密消息m得到加密密文E=(C1,C2)=(m*G1+r*H,r*G2),其中G1、G2为初始化流程中q阶循环群G的两个生成元,H为初始化流程
中的主公钥。
[0092] 所述N+1个子密文中的子密文为C2;步骤202的一种可选实施方式中,步骤202具体可以为:
[0093] x_1*C2+x_2*C2+…+x_n*C2
[0094] =x_1*(r1*G2)+x_2*(r1*G2)+…+x_n*(r1*G2)
[0095] =r1*(x_1*G2)+r1*(x_2*G2)+…+r1*(x_n*G2)
[0096] =r1*H;
[0097] 所述加密密文在所述第一解密节点上的解密中间结果为r1*H。
[0098] 进一步地,当N为1时,步骤203具体可以为:
[0099] 通过(C1‑r*H)mod q=(m*G1+r*H‑r*H)mod q,得到(m*G1)mod q,第一解密节点对(m*G1)mod q,求解离散对数问题,即遍历得m,即明文。
[0100] 上述实施方式适用于第一解密节点对加密密文解密后的场景,还需附上一个零知识的离散对数元素相等证明equality_proof,用于证明各解密节点解密操作的正确性。其
中equality_proof的具体证明内容为“各解密节点联合解密时使用的密钥x_i确实是其在
初始化中真实拥有的密钥x_i”,用于证明每个各解密节点计票过程的正确性。
[0101] 具体来说,N为1,步骤206具体可以为:
[0102] c=Hash(t1_p,t2_p,……tn+1_p);其中,
[0103] t1_p=(a*G1)mod q;
[0104] t2_p=(a*G2)mod q;
[0105] 其中,c为所述初始验证值;t1_p、t2_p为所述N+1个替代子密文;a为所述替代明文;Hash为所述哈希算法。
[0106] 步骤207的一种可选实施方式中,步骤207具体可以为:
[0107] 所述第一解密节点针对每个替代子密文,根据所述初始验证值、所述替代明文、所述第一解密节点的私钥生成所述替代子密文的子验证值,包括:
[0108] Z1=(a‑c*x_1)mod q;
[0109] Z2=(a‑c*x_1’)mod q;
[0110] 其中,Z1、Z2为所述替代子密文的子验证值;x_1为所述第一解密节点的私钥,x_1’为所述第一解密节点在对所述加密密文解密时所使用的私钥。
[0111] 解密密钥证明具体可以为equality_proof=(c,Z1,Z2)。
[0112] 第一解密节点将明文m及离散对数元素相等证明equality_proof公布于区块链上,在保证消息第一解密节点的私钥x_1隐私的前提下供所有验证者验证解密过程的正确
性,即保证x_1与x_1’相等。
[0113] 验证者在区块链上查询得到解密结果m及离散对数元素相等证明equality_proof,通过离散对数元素相等证明验证算法验证解密者公布的解密结果m是否正确。具体
来说,解密节点验证的方式如下,构造以下验证值:t1_v,t2_v。
[0114] t1_v=c*C1+z1*G1;
[0115] t2_v=c*C2+z2*G2。
[0116] 检验c=?Hash(t1_v,t2_v);其中,=?表示判断是否相等,c为所述初始验证值,若相等,则确定明文的解密过程确实是根据各解密节点的私钥联合解密得到的。若通过验证,
则验证者就认为第一解密节点的解密操作是正确的,即公布的明文消息m是正确的,且在此
过程中没有获得关于第一解密节点的私钥的任何信息,实现隐私下的可验证。
[0117] 如图3所示,本申请提供一种适用于区块链的验证装置,包括:获取模块301,用于从区块链获取加密密文;所述加密密文包括N+1个子密文;所述装置为所述第一解密节点的
验证装置;所述第一解密节点为各解密节点中任一解密节点;所述各解密节点中每个解密
节点都与一个解密私钥对应;N为正整数;所述加密密文是所述加密节点按照预设的加密算
法,通过主公钥、N个加密干扰值和q阶循环群中不同的生成元对待加密信息进行加密得到
的;q为素数;处理模块302,用于根据所述第一解密节点的私钥以及所述N+1个子密文中的
子密文,确定所述加密密文在所述第一解密节点上的解密中间结果,并将所述第一解密节
点上的解密中间结果存放于所述区块链上;所述加密密文同时在所述各解密节点上得到所
述各解密节点的解密中间结果,且得到的解密中间结果存放于所述区块链上;根据所述各
解密节点的解密中间结果,得到所述加密密文的明文;所述处理模块302,还用于确定所述
明文的替代明文及所述N个加密干扰值对应的N个替代加密干扰值;通过所述替代明文、所
述N个替代加密干扰值和所述生成元生成替代密文,所述替代密文包括N+1个替代子密文;
验证模块303,用于按照预设的哈希算法对所述N+1个替代子密文进行哈希运算,得到初始
验证值;针对每个替代子密文,根据所述初始验证值、所述替代明文、所述第一解密节点的
私钥生成所述替代子密文的子验证值;所述验证模块303,还用于将所述明文和解密密钥证
明上传至所述区块链,所述解密密钥证明包括所述初始验证值和每个替代子密文的子验证
值;所述解密密钥证明用于验证所述明文是根据所述第一解密节点的私钥解密获得的。
[0118] 一种可选实施方式中,所述N个加密干扰值为从1至q‑1的q‑1个整数中随机选择的N个不同的整数;所述生成元包括q阶椭圆曲线上的两个生成元G1和G2;所述主公钥H=Σx_
i*G2,x_i为第i个解密节点的私钥;i为正整数;所述N+1个子密文具体为:
[0119] C1=(m*G1+(r1+r2+……+rn)*H)mod q;
[0120] C2=(r1*G2)mod q;
[0121] ……
[0122] Cn+1=(rn*G2)mod q;
[0123] E=(C1,C2,……Cn+1);
[0124] 其中,mod表示取模运算,E为所述加密密文;C1、C2……Cn+1为N+1个子密文;m为所述明文;r1、r2……rn为所述N个加密干扰值;n等于N。
[0125] 一种可选实施方式中,所述N+1个子密文中的子密文为C2;所述处理模块302具体用于:x_1*C2+x_2*C2+…+x_n*C2
[0126] =x_1*(r1*G2)+x_2*(r1*G2)+…+x_n*(r1*G2)
[0127] =r1*(x_1*G2)+r1*(x_2*G2)+…+r1*(x_n*G2)
[0128] =r1*H;
[0129] 所述加密密文在所述第一解密节点上的解密中间结果为r1*H。
[0130] 一种可选实施方式中,N为1,所述验证模块303具体用于:c=Hash(t1_p,t2_p,……tn+1_p);其中,
[0131] t1_p=(a*G1)mod q;
[0132] t2_p=(a*G2)mod q;
[0133] 其中,c为所述初始验证值;t1_p、t2_p为所述N+1个替代子密文;a为所述替代明文;Hash为所述哈希算法。
[0134] 一种可选实施方式中,所述验证模块303具体用于:
[0135] Z1=(a‑c*x_1)mod q;
[0136] Z2=(a‑c*x_1’)mod q;
[0137] 其中,Z1、Z2为所述替代子密文的子验证值;x_1为所述第一解密节点的私钥,x_1’为所述第一解密节点在对所述加密密文解密时所使用的私钥。
[0138] 本申请实施例提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行本申请实施例提供的一种适用于区块链的验证方法及任一可选方法。
[0139] 本申请实施例提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行本申请实施例提供的一种适用于区块链的验证方法及任一可选方法。
[0140] 最后应说明的是:本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件
和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程
序代码的计算机可用存储介质(包括但不限于磁盘存储器、光学存储器等)上实施的计算机
程序产品的形式。
[0141] 本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或
方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到
通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个
机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流
程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0142] 显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则
本申请也意图包含这些改动和变型在内。