一种适用于区块链的验证方法及装置与流程

文档序号:20770267发布日期:2020-05-15 19:36阅读:153来源:国知局
一种适用于区块链的验证方法及装置与流程

本发明涉及金融科技(fintech)领域和区块链(blockchain)领域,尤其涉及一种适用于区块链的验证方法及装置。



背景技术:

随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。目前,金融科技领域中,金融数据的安全至关重要,所以在传输过程中需要对金融数据进行加密。

现有技术中,elgamal加密算法(基于迪菲-赫尔曼密钥交换的非对称加密算法)是一种常用的加密方法。但是,目前的elgamal加密算法加密后,仅能得到一条密文,但却不能对密文的加密正确性验证;这是一个亟待解决的问题。



技术实现要素:

本申请实施例提供一种适用于区块链的验证方法及装置,解决了现有技术中不能对密文的加密正确性验证的问题。

第一方面,本申请实施例提供一种适用于区块链的验证方法:加密节点按照预设的加密算法,通过主公钥、n个加密干扰值和q阶循环群中不同的生成元对待加密信息进行加密,得到加密密文;所述加密密文包括n+1个子密文;所述主公钥是根据各解密节点的私钥确定的;所述主公钥和所述生成元记录于所述区块链中;q为素数;n为正整数;所述加密节点确定所述待加密信息的替代加密信息及所述n个加密干扰值对应的n个替代加密干扰值;所述加密节点按照所述加密算法,通过所述n个替代加密干扰值和所述生成元对所述替代加密信息进行加密,得到替代加密密文,所述替代加密密文包括n+1个替代子密文;所述加密节点按照预设的哈希算法对所述n+1个替代子密文进行哈希运算,得到初始验证值;所述加密节点针对每个替代子密文,根据所述初始验证值、所述替代子密文、所述替代子密文对应的加密干扰值和所述替代子密文对应的子密文生成所述替代子密文的子验证值;所述加密节点将所述加密密文和密文格式证明上传至区块链,所述密文格式证明包括所述初始验证值和每个替代子密文的子验证值;所述密文格式证明用于验证所述加密密文的加密正确性。

一种可选实施方式中,所述n个加密干扰值为从1至q-1的q-1个整数中随机选择的n个不同的整数;所述生成元包括q阶椭圆曲线上的两个生成元g1和g2;所述主公钥h=σx_i*g2,x_i为第i个解密节点的私钥;i为正整数。

一种可选实施方式中,所述加密节点按照所述加密算法,根据所述n个加密干扰值、主公钥和所述生成元,对所述待加密消息进行加密获得所述加密密文,包括:

通过如下公式获得每个子密文和所述加密密文:

c1=(m*g1+(r1+r2+……+rn)*h)modq;

c2=(r1*g2)modq;

……

cn+1=(rn*g2)modq;

e=(c1,c2,……cn+1);

其中,mod表示取模运算,e为所述加密密文;c1、c2……cn+1为n+1个子密文;m为所述待加密信息;r1、r2……rn为所述n个加密干扰值。

一种可选实施方式中,所述加密节点按照预设的哈希算法对所述n+1个替代子密文进行哈希运算,得到初始验证值,包括:

c=hash(t1_p,t2_p,……tn+1_p);其中,t1_p=(a*g1+(b1+b2+……+bn)*h)modq;

t2_p=(b1*g2)modq;

t3_p=(b2*g2)modq;

……

tn+1_p=(bn*g2)modq;

其中,c为所述初始验证值;t1_p、t2_p……tn+1_p为所述n+1个替代子密文;a为所述替代加密消息;b1、b2……bn为所述n个替代加密干扰值;hash为所述哈希算法。

一种可选实施方式中,所述加密节点针对每个替代子密文,根据所述初始验证值、所述替代子密文、所述替代子密文对应的加密干扰值和所述替代子密文对应的子密文生成所述替代子密文的子验证值,包括:

z1=(a-c*m)modq;

z2=(b1-c*r1)modq;

z3=(b2-c*r2)modq;

……

zn+1=(bn-c*rn)modq;

其中,z1、z2、z3……zn+1为所述替代子密文的子验证值;r1、r2、r3……rn为所述n个替代加密干扰值。

一种可选实施方式中,n为1。

第二方面,本申请提供一种适用于区块链的验证装置,包括:加密模块,用于按照预设的加密算法,通过主公钥、n个加密干扰值和q阶循环群中不同的生成元对待加密信息进行加密,得到加密密文;所述加密密文包括n+1个子密文;所述主公钥是根据各解密节点的私钥确定的;所述主公钥和所述生成元记录于所述区块链中;q为素数;n为正整数;确定模块,用于确定所述待加密信息的替代加密信息及所述n个加密干扰值对应的n个替代加密干扰值;所述加密模块,还用于按照所述加密算法,通过所述n个替代加密干扰值和所述生成元对所述替代加密信息进行加密,得到替代加密密文,所述替代加密密文包括n+1个替代子密文;处理模块,用于按照预设的哈希算法对所述n+1个替代子密文进行哈希运算,得到初始验证值;所述处理模块,还用于针对每个替代子密文,根据所述初始验证值、所述替代子密文、所述替代子密文对应的加密干扰值和所述替代子密文对应的子密文生成所述替代子密文的子验证值;将所述加密密文和密文格式证明上传至区块链,所述密文格式证明包括所述初始验证值和每个替代子密文的子验证值;所述密文格式证明用于验证所述加密密文的加密正确性。

一种可选实施方式中,所述n个加密干扰值为从1至q-1的q-1个整数中随机选择的n个不同的整数;所述生成元包括q阶椭圆曲线上的两个生成元g1和g2;所述主公钥h=σx_i*g2,x_i为第i个解密节点的私钥;i为正整数。

一种可选实施方式中,所述加密模块具体用于:通过如下公式获得每个子密文和所述加密密文:

c1=(m*g1+(r1+r2+……+rn)*h)modq;

c2=(r1*g2)modq;

……

cn+1=(rn*g2)modq;

e=(c1,c2,……cn+1);

其中,mod表示取模运算,e为所述加密密文;c1、c2……cn+1为n+1个子密文;m为所述待加密信息;r1、r2……rn为所述n个加密干扰值。

一种可选实施方式中,所述处理模块具体用于:c=hash(t1_p,t2_p,……tn+1_p);其中,

t1_p=(a*g1+(b1+b2+……+bn)*h)modq;

t2_p=(b1*g2)modq;

t3_p=(b2*g2)modq;

……

tn+1_p=(bn*g2)modq;

其中,c为所述初始验证值;t1_p、t2_p……tn+1_p为所述n+1个替代子密文;a为所述替代加密消息;b1、b2……bn为所述n个替代加密干扰值;hash为所述哈希算法。

一种可选实施方式中,所述处理模块具体用于:

z1=(a-c*m)modq;

z2=(b1-c*r1)modq;

z3=(b2-c*r2)modq;

……

zn+1=(bn-c*rn)modq;

其中,z1、z2、z3……zn+1为所述替代子密文的子验证值;r1、r2、r3……rn为所述n个替代加密干扰值。

一种可选实施方式中,n为1。

第三方面,本申请实施例提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个实施例的方法。

第四方面,本申请实施例提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个实施例的方法。

本申请实施例提供一种是用于区块链的验证方法及装置中,加密节点按照预设的加密算法,通过主公钥、n个加密干扰值和q阶循环群中不同的生成元对待加密信息进行加密,得到加密密文后,又确定所述待加密信息的替代加密信息及所述n个加密干扰值对应的n个替代加密干扰值,同样再按照所述加密算法,通过所述n个替代加密干扰值和所述生成元对所述替代加密信息进行加密,得到另一份做了同样运算的替代加密密文,并根据替代加密密文的n+1个替代子密文生成初始验证值,进而生成每个替代子密文的子验证值,从而通过密文格式证明,可以在不暴露待加密信息和n个替代加密干扰值的基础上,即可验证加密密文的加密正确性。

附图说明

图1为区块链的结构示意图;

图2为本申请实施例提供的一种适用于区块链的验证方法的步骤流程示意图;

图3为本申请实施例提供的一种适用于区块链的验证装置的结构示意图。

具体实施方式

为了更好的理解上述技术方案,下面将结合说明书附图及具体的实施方式对上述技术方案进行详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互结合。

下面首先解释本申请实施例中出现的名词。

区块链:如图1所示,区块链是由一系列区块组成的一条链,每个块上除了记录本块的数据还会记录上一块的哈希值,通过这种方式组成一条链。区块链的核心理念有两个,一个是密码学技术,另一个是去中心化思想,基于这两个理念做到区块链上的历史信息无法被篡改。

节点:网络中的每一个参与者就是一个节点,节点参与网络组建和数据交换。在区块链网络中,一个节点是指一个具有唯一身份的参与者,该节点具有一份完整的账本拷贝,具有参与区块链网络共识和账本维护的能力。

零知识证明:零知识证明指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。

在金融机构(银行机构、保险机构或证券机构)在进行业务(如银行的贷款业务、存款业务等)运转过程中,金融数据的安全至关重要,所以在传输过程中需要对金融数据进行加密。目前的elgamal加密算法加密后,仅能得到一条密文,但却不能对密文的加密正确性验证。这种情况不符合银行等金融机构的需求,无法保证金融机构各项业务的高效运转。

为此,如图2所示,根据零知识证明的性质,本申请提供一种适用于区块链的验证方法。

步骤201:加密节点按照预设的加密算法,通过主公钥、n个加密干扰值和q阶循环群中不同的生成元对待加密信息进行加密,得到加密密文。

步骤202:所述加密节点确定所述待加密信息的替代加密信息及所述n个加密干扰值对应的n个替代加密干扰值。

步骤203:所述加密节点按照所述加密算法,通过所述n个替代加密干扰值和所述生成元对所述替代加密信息进行加密,得到替代加密密文。

所述替代加密密文包括n+1个替代子密文。

步骤204:所述加密节点按照预设的哈希算法对所述n+1个替代子密文进行哈希运算,得到初始验证值。

步骤205:所述加密节点针对每个替代子密文,根据所述初始验证值、所述替代子密文、所述替代子密文对应的加密干扰值和所述替代子密文对应的子密文生成所述替代子密文的子验证值。

步骤206:所述加密节点将所述加密密文和密文格式证明上传至区块链,所述密文格式证明包括所述初始验证值和每个替代子密文的子验证值。

所述密文格式证明用于验证所述加密密文的加密正确性。

步骤201中,所述加密密文包括n+1个子密文;所述主公钥是根据各解密节点的私钥确定的;所述主公钥和所述生成元记录于所述区块链中;q为素数;n为正整数。其中,如果为了保证q中的整数足够多,不至于随机取数时容易出现重复,q可以为大素数,大素数指2^256位的数量级的素数。q阶循环群可以为q阶椭圆曲线循环群。

所述n个加密干扰值可以为随机取值,在一种可选实施方式中,所述n个加密干扰值为从1至q-1的q-1个整数中随机选择的n个不同的整数;所述生成元包括q阶椭圆曲线上的两个生成元g1和g2;所述主公钥h=σx_i*g2,x_i为第i个解密节点的私钥;i为正整数。

具体来说,可以在步骤201之前,进行如下初始化流程:

(1)所有解密节点拥有一个q阶椭圆曲线循环群g,其中q为大素数,循环群g可看作q个椭圆曲线点的集合。

(2)所有解密节点需要在循环群g中随机选择两个独立的椭圆曲线点作为生成元g1、g2。

(3)所以每个解密节点都需要从{1,2,…q-1}中随机选择一个数,作为自己的一个子密文x_i;每个解密节点计算(x_i*g2)modq,作为主公钥h的一部分,发送到区块链。其中,q为取模运算。其中,x_i*g:表示标量x_i与q阶椭圆曲线的任一点g2的点乘运算。

(4)所以主公钥h需组合构造,即每个解密节点计算(σx_i*g2)modq=(x*g2)modq=h,其中主秘密x为所有子密文x_i之和。

(5)所有解密节点公布公钥:g1、g2、h,保留子密文x_i作为每个解密节点的私钥。

步骤201的一种可选实施方式中,步骤201具体可以为:

通过如下公式获得每个子密文和所述加密密文:

c1=(m*g1+(r1+r2+……+rn)*h)modq;

c2=(r1*g2)modq;

……

cn+1=(rn*g2)modq;

e=(c1,c2,……cn+1);

其中,mod表示取模运算,e为所述加密密文;c1、c2……cn+1为n+1个子密文;m为所述待加密信息;r1、r2……rn为所述n个加密干扰值。

特别地,当n取1时,n个加密干扰值为一个随机数r,上述可选实施方式可以为:

(1)加密节点p确定待加密消息m。

(2)加密节点p从{1,2,…q-1}中选择随机数r。

(3)加密节点p利用elgamal加密算法加密待加密消息m得到加密密文e=(c1,c2)=(m*g1+r*h,r*g2),其中g1、g2为初始化流程中q阶循环群g的两个生成元,h为初始化流程中的主公钥。

步骤203的一种可选实施方式中,可以通过如下公式得到替代加密密文的n+1个替代子密文:

t1_p=(a*g1+(b1+b2+……+bn)*h)modq;

t2_p=(b1*g2)modq;

t3_p=(b2*g2)modq;

……

tn+1_p=(bn*g2)modq;

t1_p、t2_p……tn+1_p为所述n+1个替代子密文;a为所述替代加密消息;b1、b2……bn为所述n个替代加密干扰值;hash为所述哈希算法。

特别地,n为1时,n个替代加密干扰值为随机数b,上述可选实施方式为:

t1_p=(a*g1+b*h)modq,t2_p=(b*g2)modq。

上述实施方式适用于加密节点p利用密文格式证明生成算法对加密密文生成密文格式证明format_proof的情景。其中format_proof的内容为“密文e中y1=m*g1+r*h和y2=r*g2中的r是相等的”。即加密节点需证明y=m*g1+r1*h+r2*g2中的m、r1、r2满足关系0*m+r1-r2=0。其中g1,g2,h,y1,y2为公开参数。可表示为:(y1,y2,g1,g2,h)→(format_proof);其中(input)→(output):表示函数或算法输入为input,输出为output。

因此,步骤204的一种可选实施方式中,步骤204具体可以为:

c=hash(t1_p,t2_p,……tn+1_p);其中,

t1_p=(a*g1+(b1+b2+……+bn)*h)modq;

t2_p=(b1*g2)modq;

t3_p=(b2*g2)modq;

……

tn+1_p=(bn*g2)modq;

其中,c为所述初始验证值;t1_p、t2_p……tn+1_p为所述n+1个替代子密文;a为所述替代加密消息;b1、b2……bn为所述n个替代加密干扰值;hash为所述哈希算法。

步骤205的一种可选实施方式中,步骤205具体可以为:

z1=(a-c*m)modq;

z2=(b1-c*r1)modq;

z3=(b2-c*r2)modq;

……

zn+1=(bn-c*rn)modq;

其中,z1、z2、z3……zn+1为所述替代子密文的子验证值;r1、r2、r3……rn为所述n个替代加密干扰值。

特别地,n为1时,上述实施方式具体可以为:

z1=a-c*m,z2=b-c*r。

密文格式证明具体可以为format_proof=(c,z1,z2)。

步骤206中,加密节点将所述加密密文和密文格式证明上传至区块链,从而实现对用户数据安全可信的公开多方保存,因此,可以支持在保证数据隐私的前提下,解密节点对区块链上的密文进行验证。

具体来说,一种情形可以为加密节点将加密结果e及离散对数密文格式零知识证明format_proof公布于区块链上,在保证消息m隐私的前提下供所有解密节点验证密文格式的正确性。

具体来说,验证者在区块链上查询得到密文e及零知识密文格式证明format_proof,通过密文格式证明验证算法验证加密者公布的密文格式证明format_proof。可以表示为(y1,y2,g1,g2,h,format_proof)→(bool),具体来说,解密节点验证的方式如下,构造以下验证值:t1_v,t2_v,t3_v……tn+1_v。

t1_v=c*c1+z1*g1+(z2+z3+……+zn+1)*h;

t2_v=c*c2+z2*g2;

t3_v=c*c3+z3*g2;

……

tn+1_v=c*cn+1+zn+1*g2。

检验c=?hash(t1_v,t2_v,t3_v……tn+1_v);其中,=?表示判断是否相等,c为所述初始验证值,若相等,则确定加密密文是按照预设的加密算法,通过主公钥、n个加密干扰值和q阶循环群中不同的生成元对待加密信息进行加密得到的。

特殊地,当n为1时,上述实施方式具体为:

t1_v=c*c1+z1*g1+z2*h;

t2_v=c*c2+z1*g2。

检验c=?hash(t1_v,t2_v)。

如图3所示,本申请提供一种适用于区块链的验证装置,包括:加密模块301,用于按照预设的加密算法,通过主公钥、n个加密干扰值和q阶循环群中不同的生成元对待加密信息进行加密,得到加密密文;所述加密密文包括n+1个子密文;所述主公钥是根据各解密节点的私钥确定的;所述主公钥和所述生成元记录于所述区块链中;q为素数;n为正整数;确定模块302,用于确定所述待加密信息的替代加密信息及所述n个加密干扰值对应的n个替代加密干扰值;所述加密模块301,还用于按照所述加密算法,通过所述n个替代加密干扰值和所述生成元对所述替代加密信息进行加密,得到替代加密密文,所述替代加密密文包括n+1个替代子密文;处理模块303,用于按照预设的哈希算法对所述n+1个替代子密文进行哈希运算,得到初始验证值;所述处理模块303,还用于针对每个替代子密文,根据所述初始验证值、所述替代子密文、所述替代子密文对应的加密干扰值和所述替代子密文对应的子密文生成所述替代子密文的子验证值;将所述加密密文和密文格式证明上传至区块链,所述密文格式证明包括所述初始验证值和每个替代子密文的子验证值;所述密文格式证明用于验证所述加密密文的加密正确性。

一种可选实施方式中,所述n个加密干扰值为从1至q-1的q-1个整数中随机选择的n个不同的整数;所述生成元包括q阶椭圆曲线上的两个生成元g1和g2;所述主公钥h=σx_i*g2,x_i为第i个解密节点的私钥;i为正整数。

一种可选实施方式中,所述加密模块301具体用于:通过如下公式获得每个子密文和所述加密密文:

c1=(m*g1+(r1+r2+……+rn)*h)modq;

c2=(r1*g2)modq;

……

cn+1=(rn*g2)modq;

e=(c1,c2,……cn+1);

其中,mod表示取模运算,e为所述加密密文;c1、c2……cn+1为n+1个子密文;m为所述待加密信息;r1、r2……rn为所述n个加密干扰值。

一种可选实施方式中,所述处理模块303具体用于:c=hash(t1_p,t2_p,……tn+1_p);其中,

t1_p=(a*g1+(b1+b2+……+bn)*h)modq;

t2_p=(b1*g2)modq;

t3_p=(b2*g2)modq;

……

tn+1_p=(bn*g2)modq;

其中,c为所述初始验证值;t1_p、t2_p……tn+1_p为所述n+1个替代子密文;a为所述替代加密消息;b1、b2……bn为所述n个替代加密干扰值;hash为所述哈希算法。

一种可选实施方式中,所述处理模块303具体用于:

z1=(a-c*m)modq;

z2=(b1-c*r1)modq;

z3=(b2-c*r2)modq;

……

zn+1=(bn-c*rn)modq;

其中,z1、z2、z3……zn+1为所述替代子密文的子验证值;r1、r2、r3……rn为所述n个替代加密干扰值。

一种可选实施方式中,n为1。

本申请实施例提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行本申请实施例提供的一种适用于区块链的验证方法及任一可选方法。

本申请实施例提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行本申请实施例提供的一种适用于区块链的验证方法及任一可选方法。

最后应说明的是:本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1