加密数据验证方法、装置、设备以及存储介质与流程

文档序号:23590722发布日期:2021-01-08 14:27阅读:84来源:国知局
加密数据验证方法、装置、设备以及存储介质与流程

本申请涉及区块链技术领域,尤其涉及一种加密数据验证方法、装置、设备以及存储介质。



背景技术:

随着区块链技术的发展,为了实现安全的数据共享,所有数据都是以密文的形式加密存储,在保证数据安全性的同时也带来了很多不便。例如,在数字医疗领域中,需要对医疗设备的供应信息建立电子信息档案。而在传统的区块链项目中,如果想要确定供货商订购多批货品的数据与生产商要生产多批货品的数据是否一致,需要通过对供货商和生产商存储在区块链中的加密数据进行验证,只有在双方数据的数值相等且存储顺序一致时才可以通过验证,实现订货商与生产商的数据共享。但下游的经销商只知道货品的数值和以及货品到达的顺序,并不知道供货商的订购顺序,也不知道生产商的生产顺序,则无法通过验证,无法实现数据共享,这给经营带来了不便。



技术实现要素:

本申请实施例提供一种加密数据验证方法、装置、设备以及存储介质,可以在双方掌握等值且同序的数据和等值但不同序的数据时分别通过验证,丰富验证场景,提高验证效率。

第一方面,本申请实施例提供一种加密数据验证方法,该方法包括:

从区块链中获取第一加密数据、第二加密数据、保序签名以及等值签名,上述第一加密数据由多个第一加密子数据组成,上述第二加密数据由多个第二加密子数据组成,上述保序签名用于校验各第一加密子数据对应明文数据与各第二加密子数据对应的明文数据的排序和数值,上述等值签名用于校验上述各第一加密子数据对应明文数据与各第二加密子数据对应的明文数据的数值;

基于上述各第一加密子数据和上述各第一加密子数据的排序,以及上述第二加密子数据和上述第二加密子数据的排序确定第一公钥,基于上述第一公钥对上述保序签名进行验签;

若对上述保序签名验签不通过,则基于上述各第一加子密数据和上述各第二加密子数据确定第二公钥,基于上述第二公钥对上述等值签名进行验签。

结合第一方面,在一种可能的实施方式中,上述各第一加密子数据和上述各第二加密子数据由椭圆曲线加密法ecc加密生成,且符合密码学中的佩德森复数pedersencommitment格式。

结合第一方面,在一种可能的实施方式中,上述保序签名由保序私钥加密得到。其中,上述保序私钥由第一加密保序盲因子和ka与第二加密保序盲因子和kb确定。其中,上述ka由上述第一加密子数据的保序盲因子确定,上述kb由上述第二加密子数据的保序盲因子确定。其中,上述第一加密子数据的保序盲因子由上述第一加密子数据和上述各第一加密子数据的排序确定,上述第二加密子数据的保序盲因子由上述第二加密子数据和上述各第二加密子数据的排序确定。

结合第一方面,在一种可能的实施方式中,上述基于上述第一加密数据和上述第二加密数据确定第一公钥,包括:

基于上述各第一加密子数据和上述各第一加密子数据的排序确定各第一加密保序子数据,并确定上述各第一加密保序子数据的第一加密保序和ca。

基于上述各第二加密子数据和上述各第二加密子数据的排序确定各第二加密保序子数据,并确定上述各第二加密保序子数据的第二加密保序和cb。

将上述ca与上述cb相减,得到上述第一公钥。

结合第一方面,在一种可能的实施方式中,上述等值签名由等值私钥加密得到;其中,上述保序私钥由第一加密等值盲因子和kda与第二加密等值盲因子和kdb确定;其中,上述kda由上述第一加密子数据的盲因子确定,上述kdb由上述第二加密子数据的盲因子确定。

结合第一方面,在一种可能的实施方式中,上述基于上述第一加密数据和上述第二加密数据确定第二公钥,包括:将上述第一加密子数据组中的第一加密子数据进行累加得到第一加密等值和da;将上述第二加密子数据组中的第二加密子数据进行累加得到第二加密等值和db;将上述da与上述db相减,得到上述第二公钥。

第二方面,本申请实施例提供了一种加密数据验证装置,该装置包括:

数据获取模块,用于从区块链中获取第一加密数据、第二加密数据、保序签名以及等值签名,上述第一加密数据由多个第一加密子数据组成,上述第二加密数据由多个第二加密子数据组成,上述保序签名用于校验各第一加密子数据对应明文数据与各第二加密子数据对应的明文数据的排序和数值,上述等值签名用于校验上述各第一加密子数据对应明文数据与各第二加密子数据对应的明文数据的数值。

保序验证模块,用于基于上述各第一加密子数据和上述各第一加密子数据的排序,以及上述第二加密子数据和上述第二加密子数据的排序确定第一公钥,基于上述第一公钥对上述保序签名进行验签。

等值验证模块,用于基于上述各第一加子密数据和上述各第二加密子数据确定第二公钥,基于上述第二公钥对上述等值签名进行验签。

结合第二方面,在一种可能的实施方式中,上述保序签名由保序私钥加密得到。

其中,上述保序私钥由第一加密保序盲因子和ka与第二加密保序盲因子和kb确定。

其中,上述ka由上述第一加密子数据的保序盲因子确定,上述kb由上述第二加密子数据的保序盲因子确定。

其中,上述第一加密子数据的保序盲因子由上述第一加密子数据和上述各第一加密子数据的排序确定,上述第二加密子数据的保序盲因子由上述第二加密子数据和上述各第二加密子数据的排序确定。

第三方面,本申请实施例提供了一种加密数据验证设备,该设备包括处理器和存储器,该处理器和存储器相互连接。该存储器用于存储支持该终端执行上述第一方面和/或第一方面任一种可能的实现方式提供的方法的计算机程序,该计算机程序包括程序指令,该处理器被配置用于调用上述程序指令,执行上述第一方面和/或第一方面任一种可能的实施方式所提供的方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行以实现上述第一方面和/或第一方面任一种可能的实施方式所提供的方法。

在本申请实施例中,通过对加密数据进行保序验证和等值验证,可以对数值相等且顺序相同和数值相等但顺序不同的数据进行验证。极大地丰富了加密数据验证的应用场景,提高了验证效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种加密数据验证的场景示意图;

图2是本发明实施例提供的加密数据验证方法的一流程示意图;

图3是本发明实施例提供的加密数据验证装置的一结构示意图;

图4是本发明实施例提供的设备的结构示意图。

具体实施方式

本发明实施例提供的加密数据验证方法可适用于任何区块链的节点、任何计算机及其相关设备上,适用于对各种加密算法得到的密文进行验证,具体可根据实际应用场景确定,在此不做限制。本发明实施例提供的加密数据验证方法可由任何具有加密数据验证功能的终端或者区块链节点执行。为便于表述,本发明实施例将采用区块链对加密数据进行验证的应用场景予以说明。

请参见图1,图1是本发明实施例提供的一种加密数据验证方法的应用场景示意图。如图1所示,应用场景涉及的终端包括终端3000a、终端3000b以及终端3000n,节点2000a、节点2000b、节点2000c以及节点2000n。其中,每个终端对应一个节点,节点接收终端发送的数据,并上传至区块链中;同时,节点也可以接收区块链的数据并进行验证,若验证通过,则可以与区块链进行数据共享。多个终端将数据加密生成加密数据上传至对应的区块链节点中保存,区块链节点在存储加密数据的同时可以将数据发送给其他节点,并对获取到的加密数据进行验证,从而保证数据存储的安全。这里,在区块链中传递的数据可以是数字医疗领域中针对医疗设备的供应信息建立的电子信息档案,加密数据可以是对上述电子信息档案进行加密得到的数据。

在数字医疗领域中,通常需要对医疗设备的供应信息建立电子信息档案,以医疗设备的订货商、生产商和经销商的应用场景例,订货商、生产商和经销商分别是三个参与方,各自对应一个终端与节点用来传输数据,订货商通过终端3000a向节点2000a发送加密过后的n个订货信息,生产商通过终端3000b向节点2000b发送加密过后的n个生产信息,经销商通过终端3000c向节点3000c发送加密过后的n个到货信息。其中,n为大于1的正整数订货信息与生产信息等值且同序,生产信息与到货信息等值但不同序。这里,等值且同序可以理解为或者表示订货信息中第一订购货品的数量与生产信息中第一生产货品的数量相等,订货信息中第二订购货品的数量与生产信息中第二生产货品的数量相等,订货信息中第三订购货品的数量与生产信息中第三生产货品的数量相等……依次类推,订货信息中第i项的数据与生产信息中第i项的数据相等,其中,i为小于等于n的任一正整数。等值但不同序可以理解为或者表示生产信息中第一生产货品的数量与到货信息中第三到货信息相等,生产信息中第二生产货品的数量与到货信息中第一到货信息相等,生产信息中第三生产货品的数量与到货信息中第二到货信息相等……以此类推,生产信息中第i项的数据与到货信息中第k项的数据相等,其中,i、k分别为小于等于n的任一正整数,且i≠k。以生产商为例,具体应用场景可以是生产商终端对应的验证节点采集区块链中的数据(订货商的数据、经销商的数据、或者其他人的数据),和生产商终端通过节点上传至区块链的数据,然后进行验证。

验证过程为:验证节点从区块链中分别获取到两组加密数据、保序签名以及等值签名,上述第一加密数据由多个第一加密子数据组成,上述第二加密数据由多个第二加密子数据组成,上述保序签名用于校验各第一加密子数据对应明文数据与各第二加密子数据对应的明文数据的排序和数值,上述等值签名用于校验上述各第一加密子数据对应明文数据与各第二加密子数据对应的明文数据的数值。首先计算第一公钥对保序签名进行验签,若通过验签,判断两组加密数据等值且同序,则验证节点可以判定两组加密数据是加密后的订货信息与生产信息,从而判断数据提供者为订货商和生产商,则可以开放全部权限,在订货商和生产商之间共享全部数据。若未通过保序验证,则计算第二公钥对等值签名进行验签,若通过验签,判断两组加密数据等值但不同序,则验证节点可以判定两组加密数据是加密后的生产信息与到货信息,从而判断数据提供者为生产商和经销商,则可以开放部分权限,在生产商和经销商之间共享部分数据。

需要说明的是,图1中提供的加密数据验证方法的应用场景仅仅用于说明本申请的技术方案,并不用于限定本申请技术方案,上述连接关系与应用场景还可以有其他形式。

请参阅图2,图2为本发明实施例提供的加密数据验证方法的一流程示意图。如图2所示,该方法包括以下步骤:

s101:从区块链中获取第一加密数据、第二加密数据、保序签名以及等值签名,上述第一加密数据由多个第一加密子数据组成,上述第二加密数据由多个第二加密子数据组成。

在一些可行的实施方式中,上述第一加密数据由多个第一加密子数据组成,上述第二加密数据由多个第二加密子数据组成,上述保序签名用于校验各第一加密子数据对应明文数据与各第二加密子数据对应的明文数据的排序和数值,上述等值签名用于校验上述各第一加密子数据对应明文数据与各第二加密子数据对应的明文数据的数值。

在一些可行的实施方式中,上述各第一加密子数据和上述各第二加密子数据由椭圆曲线加密法ecc加密生成,且符合密码学中的佩德森复数pedersencommitment格式pedersen,即comm=m*u+k*v,其中comm为加密子数据,m为加密子数据对应的明文,k为盲因子,u和v为特定椭圆曲线上生成的点且公开。以这种形式生成的comm很难进行因式分解,即即使知道u和v以及m*u和k*v,也无法得到m和k的值。

具体地,为描述方便,本实施例以每个加密数据包括三个加密子数据为例,以a来表示第一加密数据,以a1、a2、a3分别表示对明文a1、a2、a3进行椭圆曲线加密法加密得到的三个第一加密子数据,则a可表示为a1||a2||a3,表示a1,a2,a3按照该顺序组合为a。以b来表示第二加密数据,以b1、b2、b3分别表示对明文b1、b2、b3进行椭圆曲线加密法加密得到的三个第二加密子数据,则b可表示为b1||b2||b3,表示b1、b2、b3按照该顺序组合为b。其中,生成第一加密子数据与第二加密子数据所用的加密曲线相同,可以为p256曲线、p224曲线、p384曲线以及p512曲线等曲线中的一种。

其中,各第一加密子数据和各第二加密子数据可以如下述公式(1)-公式(6)所示:

a1=a1*g+ka1*h,(1)

a2=a2*g+ka2*h,(2)

a3=a3*g+ka3*h,(3)

b1=b1*g+kb1*h,(4)

b2=b2*g+kb2*h,(5)

b3=b3*g+kb3*h,(6)

其中,g为基点,ka1、ka2、ka3、kb1、kb2以及kb3为盲因子,h是以h为加密私钥对g进行加密得到的点,大小等于h*g,且g和h都在加密曲线上。其中,h称为加密私钥,h为加密公钥。由于计算两个大素数的乘积十分容易,但对乘积进行质因数分解却很难,所以当h并不为人所知,仅得知h的情形下,无法通过加密公钥h获得加密私钥h对密文进行解密,从而提高了数据的保密性。

在一些可行的实施方式中,上述保序签名由保序私钥加密得到。其中,上述保序私钥由第一加密保序盲因子和ka与第二加密保序盲因子和kb确定。其中,上述ka由上述第一加密子数据的保序盲因子确定,上述kb由上述第二加密子数据的保序盲因子确定。其中,上述第一加密子数据的保序盲因子由上述第一加密子数据和上述各第一加密子数据的排序确定,上述第二加密子数据的保序盲因子由上述第二加密子数据和上述各第二加密子数据的排序确定。

具体地,如下述公式(7)-公式(8)所示:

ka=1*ka1+2*ka2+3*ka3,(7)

kb=1*kb1+2*kb2+3*kb3,(8)

其中,1*ka1、2*ka2、3*ka3、1*kb1、2*kb2以及3*kb3为保序盲因子,保序盲因子可以通过盲因子及其对应的加密子数据在加密数据中的顺序得到,即加密子数据在第几项就乘以几。计算ka与kb的差值,得到保序私钥,以保序私钥对数据(例如a的哈希值、b的哈希值等数据)进行加密生成签名,作为保序签名,并将该保序签名提供给区块链的验证节点进行验签。

在一些可行的实施方式中,上述等值签名由等值私钥加密得到。其中,上述等值私钥由第一加密等值盲因子和k’a与第二加密等值盲因子和k’b确定。其中,上述k’a由上述第一加密子数据的等值盲因子确定,上述k’b由上述第二加密子数据的等值盲因子确定。

具体地,k’a和k’b如下述公式(9)-公式(10)所示:

k’a=ka1+ka2+ka3,(9)

k’b=kb1+kb2+kb3,(10)

其中,ka1、ka2、ka3、kb1、kb2以及kb3为等值盲因子,等值盲因子也可以通过加密子数据的盲因子乘以与项数无关的整数得到,例如2*ka1、2*ka2、2*ka3、2*kb1、2*kb2以及2*kb3也可以作为等值盲因子。计算k’a与k’b的差值,得到等值私钥,以等值私钥对数据(例如a的哈希值、b的哈希值等数据)进行加密生成签名,作为等值签名,并将该等值签名提供给区块链的验证节点进行验签。

订货商、生产商和经销商首先通过加密将自己的数据上传至区块链,并根据相关盲因子的信息生成签名,验证节点从区块链中获取到两组加密数据和相关验证签名进行验证。

s102:基于上述各第一加密子数据和上述各第一加密子数据的排序,以及上述第二加密子数据和上述第二加密子数据的排序确定第一公钥,基于上述第一公钥对上述保序签名进行验签。

在一些可行的实施方式中,可以将第一加密数据中的第一加密子数据乘以在加密数据中的顺序,即加密子数据在第几项就乘以几,得到第一加密保序组,并将上述第一加密保序组中的各项进行累加得到第一加密保序和ca;将第二加密数据中的第二加密子数据乘以在加密数据中的顺序,即加密子数据在第几项就乘以几,得到第二加密保序组,并将上述第二加密保序组中的各项进行累加得到第二加密保序和cb。如下述公式(11)-公式(12)所示:

ca=1*a1+2*a2+3*a3,(11)

cb=1*b1+2*b2+3*b3,(12)

将上述第二加密保序组中的各项进行累加得到第二加密保序和cb。将上述ca与上述cb相减,得到上述第一公钥p1,如公式(13)所示:

p1=ca-cb=1*(a1-b1)+2*(a2-b2)+3*(a3-b3),(13)

当且仅当a1=b1,a2=b2且a3=b3,即第一加密数据和第二加密数据对应的明文相等且同序时,p1可以通过公式(14)表示:

p1=1*(ka1-kb1)*h+2*(ka2-kb2)*h+3*(ka3-kb3)*h,(14)

此时利用p1对保序签名进行验签,可以通过验签,说明第一加密数据和第二加密数据对应的明文相等且同序,否则验签不通过。

若签名通过验证,则验证节点判定加密数据提供者为订货商和生产商,则可以开放全部权限,在订货商和生产商之间共享全部的生产商数据。若签名没有通过验证,则验证节点判断数据提供者不是订货商和生产商(可能是经销商或其他人和生产商),要进行进一步验证。

s103:若对上述保序签名验签不通过,则基于上述第一加密数据和上述第二加密数据确定第二公钥,利用上述第二公钥对上述等值签名进行验签。

在一些可行的实施方式中,上述等值签名由等值私钥加密得到。其中,上述等值私钥由第一加密等值盲因子和kda与第二加密等值盲因子和kdb确定。其中,上述kda由上述第一加密子数据的盲因子确定,上述kdb由上述第二加密子数据的盲因子确定。如下述公式(15)-公式(16)所示:

kda=ka1+ka2+ka3,(15)

kdb=kb1+kb2+kb3,(16)

其中,ka1、ka2、ka3、kb1、kb2以及kb3为盲因子,计算kda与kdb的差值,得到等值私钥,以等值私钥对数据(例如a的哈希值、b的哈希值等数据)进行加密生成签名,作为等值签名,提供给区块链节点进行验签。

在一些可行的实施方式中,上述基于上述第一加密数据和上述第二加密数据确定第二公钥,包括:将上述第一加密子数据组中的第一加密子数据进行累加得到第一加密等值和da;将上述第二加密子数据组中的第二加密子数据进行累加得到第二加密等值和db;将上述da与上述db相减,得到上述第二公钥p2。

具体地,可以将第一加密数据中的第一加密子数据乘以在加密数据中的顺序,即加密子数据在第几项就乘以几,得到第一加密等值组,并将上述第一加密等值组中的各项进行累加得到第一加密等值和da;将重排后的第二加密数据中的第二加密子数据乘以在加密数据中的顺序,即加密子数据在第几项就乘以几,得到第二加密等值组,并将上述第二加密等值组中的各项进行累加得到第二加密等值和db。如下述公式(17)-公式(18)所示:

da=a1+a2+a3,(17)

db=b1+b2+b3,(18)

将上述第二加密等值组中的各项进行累加得到第二加密等值和db。将上述da与上述db相减,得到上述第二公钥p2,如公式(19)所示:

p2=da-db=a1-b1+a2-b2+a3-b3,(19)

当且仅当第一加密数据和第二加密数据对应的明文相等时,p2可以通过公式(20)表示:

p2=(ka1+ka2+ka3)*h-(kb1+kb2+kb3)*h,(20)

此时利用p2对等值签名进行验签,可以通过验签,说明第一加密数据和第二加密数据对应的明文相等但不同序,否则验签不通过。

若签名通过验证,则验证节点判定加密数据提供者为经销商和生产商,则可以开放部分权限,在订货商和生产商之间共享部分的生产商数据。若签名没有通过验证,则验证节点判断数据提供者不是经销商和生产商(可能是其他人),不会开放权限与之共享数据。

本发明实施例中,通过将盲因子与项数相关联,得到保序盲因子和保序私钥,从而生成保序签名的过程,可以在不解密的情况下,实现对两个加密数据对应的明文数据是否等值且同序进行严格检测;通过计算等值盲因子的和,得到等值私钥,剔除了项数的影响,可以在不解密的情况下,实现对两个加密数据对应的明文是否等值但不同序进行检测,从而丰富验证场景,提高验证效率。

请参见图3,图3是本发明实施例提供的加密数据验证装置的一结构示意图。如图所示的加密数据验证装置包括:

数据获取模块401,用于从区块链中获取第一加密数据、第二加密数据、保序签名以及等值签名,上述第一加密数据由多个第一加密子数据组成,上述第二加密数据由多个第二加密子数据组成,上述保序签名用于校验各第一加密子数据对应明文数据与各第二加密子数据对应的明文数据的排序和数值,上述等值签名用于校验上述各第一加密子数据对应明文数据与各第二加密子数据对应的明文数据的数值。

在一些可行的实施方式中,上述各第一加密子数据和上述各第二加密子数据由椭圆曲线加密法ecc加密生成,且符合密码学中的佩德森复数pedersencommitment格式pedersen,即comm=m*u+k*v,其中comm为加密子数据,m为加密子数据对应的明文,k为盲因子,u和v为特定椭圆曲线上生成的点且公开。以这种形式生成的comm很难进行因式分解,即即使知道u和v以及m*u和k*v,也无法得到m和k的值。

具体地,为描述方便,本实施例以每个加密数据包括三个加密子数据为例,以a来表示第一加密数据,以a1、a2、a3分别表示对明文a1、a2、a3进行椭圆曲线加密法加密得到的三个第一加密子数据,则a可表示为a1||a2||a3,表示a1,a2,a3按照该顺序组合为a。以b来表示第二加密数据,以b1、b2、b3分别表示对明文b1、b2、b3进行椭圆曲线加密法加密得到的三个第二加密子数据,则b可表示为b1||b2||b3,表示b1、b2、b3按照该顺序组合为b。其中,生成第一加密子数据与第二加密子数据所用的加密曲线相同,可以为p256曲线、p224曲线、p384曲线以及p512曲线等曲线中的一种。

其中,各第一加密子数据和各第二加密子数据可以如下述公式(21)-公式(26)所示:

a1=a1*g+ka1*h,(21)

a2=a2*g+ka2*h,(22)

a3=a3*g+ka3*h,(23)

b1=b1*g+kb1*h,(24)

b2=b2*g+kb2*h,(25)

b3=b3*g+kb3*h,(26)

其中,g为基点,ka1、ka2、ka3、kb1、kb2以及kb3为盲因子,h是以h为加密私钥对g进行加密得到的点,大小等于h*g,且g和h都在加密曲线上。其中,h称为加密私钥,h为加密公钥。由于计算两个大素数的乘积十分容易,但对乘积进行质因数分解却很难,所以当h并不为人所知,仅得知h的情形下,无法通过加密公钥h获得加密私钥h对密文进行解密,从而提高了数据的保密性。

在一些可行的实施方式中,上述保序签名由保序私钥加密得到。其中,上述保序私钥由第一加密保序盲因子和ka与第二加密保序盲因子和kb确定。其中,上述ka由上述第一加密子数据的保序盲因子确定,上述kb由上述第二加密子数据的保序盲因子确定。其中,上述第一加密子数据的保序盲因子由上述第一加密子数据和上述各第一加密子数据的排序确定,上述第二加密子数据的保序盲因子由上述第二加密子数据和上述各第二加密子数据的排序确定。

具体地,可以如下述公式(27)-公式(28)所示:

ka=1*ka1+2*ka2+3*ka3,(27)

kb=1*kb1+2*kb2+3*kb3,(28)

其中,1*ka1、2*ka2、3*ka3、1*kb1、2*kb2以及3*kb3为保序盲因子,保序盲因子可以通过盲因子及其对应的加密子数据在加密数据中的顺序得到,即加密子数据在第几项就乘以几。计算ka与kb的差值,得到保序私钥,以保序私钥对数据(例如a的哈希值、b的哈希值等数据)进行加密生成签名,作为保序签名,并将该保序签名提供给区块链的验证节点进行验签。

在一些可行的实施方式中,上述等值签名由等值私钥加密得到。其中,上述等值私钥由第一加密等值盲因子和k’a与第二加密等值盲因子和k’b确定。其中,上述k’a由上述第一加密子数据的等值盲因子确定,上述k’b由上述第二加密子数据的等值盲因子确定。

具体地,k’a和k’b如下述公式(29)-公式(30)所示:

k’a=ka1+ka2+ka3,(29)

k’b=kb1+kb2+kb3,(30)

其中,ka1、ka2、ka3、kb1、kb2以及kb3为等值盲因子,等值盲因子也可以通过加密子数据的盲因子乘以与项数无关的整数得到,例如2*ka1、2*ka2、2*ka3、2*kb1、2*kb2以及2*kb3也可以作为等值盲因子。计算k’a与k’b的差值,得到等值私钥,以等值私钥对数据(例如a的哈希值、b的哈希值、或a和b哈希值的和等数据)进行加密生成签名,作为等值签名,并将该等值签名提供给区块链的验证节点进行验签。

订货商、生产商和经销商首先通过加密将自己的数据上传至区块链,并根据相关盲因子的信息生成签名,验证节点从区块链中获取到两组加密数据和相关验证签名进行验证。

保序验证模块402,用于基于上述各第一加密子数据和上述各第一加密子数据的排序,以及上述第二加密子数据和上述第二加密子数据的排序确定第一公钥,基于上述第一公钥对上述保序签名进行验签。

在一些可行的实施方式中,可以将第一加密数据中的第一加密子数据乘以在加密数据中的顺序,即加密子数据在第几项就乘以几,得到第一加密保序组,并将上述第一加密保序组中的各项进行累加得到第一加密保序和ca;将第二加密数据中的第二加密子数据乘以在加密数据中的顺序,即加密子数据在第几项就乘以几,得到第二加密保序组,并将上述第二加密保序组中的各项进行累加得到第二加密保序和cb。如下述公式(31)-公式(32)所示:

ca=1*a1+2*a2+3*a3,(31)

cb=1*b1+2*b2+3*b3,(32)

将上述第二加密保序组中的各项进行累加得到第二加密保序和cb。将上述ca与上述cb相减,得到上述第一公钥p1,如公式(33)所示:

p1=ca-cb=1*(a1-b1)+2*(a2-b2)+3*(a3-b3),(33)

当且仅当a1=b1,a2=b2且a3=b3,即第一加密数据和第二加密数据对应的明文相等且同序时,p1可以通过公式(34)表示:

p1=1*(ka1-kb1)*h+2*(ka2-kb2)*h+3*(ka3-kb3)*h,(34)

此时利用p1对保序签名进行验签,可以通过验签,说明第一加密数据和第二加密数据对应的明文相等且同序,否则验签不通过。

若签名通过验证,则验证节点判定加密数据提供者为订货商和生产商,则可以开放全部权限,在订货商和生产商之间共享全部的生产商数据。若签名没有通过验证,则验证节点判断数据提供者不是订货商和生产商(可能是经销商或其他人和生产商),要进行进一步验证。

等值验证模块404,用于基于上述各第一加子密数据和上述各第二加密子数据确定第二公钥,基于上述第二公钥对上述等值签名进行验签。

在一些可行的实施方式中,上述等值签名由等值私钥加密得到。其中,其中,上述等值私钥由第一加密等值盲因子和kda与第二加密等值盲因子和kdb确定。其中,上述kda由上述第一加密子数据的盲因子确定,上述kdb由上述第二加密子数据的盲因子确定。如下述公式(35)-公式(36)所示:

kda=ka1+ka2+ka3,(35)

kdb=kb1+kb2+kb3,(36)

其中,ka1、ka2、ka3、kb1、kb2以及kb3为盲因子,计算kda与kdb的差值,得到等值私钥,以等值私钥对数据(例如a的哈希值、b的哈希值、或a和b哈希值的和等数据)进行加密生成签名,作为等值签名,提供给区块链节点进行验签。

在一些可行的实施方式中,上述基于上述第一加密数据和上述第二加密数据确定第二公钥,包括:将上述第一加密子数据组中的第一加密子数据进行累加得到第一加密等值和da;将上述第二加密子数据组中的第二加密子数据进行累加得到第二加密等值和db;将上述da与上述db相减,得到上述第二公钥p2。

具体地,可以将第一加密数据中的第一加密子数据乘以在加密数据中的顺序,即加密子数据在第几项就乘以几,得到第一加密等值组,并将上述第一加密等值组中的各项进行累加得到第一加密等值和da;将重排后的第二加密数据中的第二加密子数据乘以在加密数据中的顺序,即加密子数据在第几项就乘以几,得到第二加密等值组,并将上述第二加密等值组中的各项进行累加得到第二加密等值和db。如下述公式(37)-公式(38)所示:

da=a1+a2+a3,(37)

db=b1+b2+b3,(38)

将上述第二加密等值组中的各项进行累加得到第二加密等值和db。将上述da与上述db相减,得到上述第二公钥p2,如公式(39)所示:

p2=da-db=a1-b1+a2-b2+a3-b3,(39)

当且仅当第一加密数据和第二加密数据对应的明文相等时,p2可以通过公式(40)表示:

p2=(ka1+ka2+ka3)*h-(kb1+kb2+kb3)*h,(40)

此时利用p2对等值签名进行验签,可以通过验签,说明第一加密数据和第二加密数据对应的明文相等但不同序,否则验签不通过。

若签名通过验证,则验证节点判定加密数据提供者为经销商和生产商,则可以开放部分权限,在订货商和生产商之间共享部分的生产商数据。若签名没有通过验证,则验证节点判断数据提供者不是经销商和生产商(可能是其他人),不会开放权限与之共享数据。

本发明实施例中,通过将盲因子与项数相关联,得到保序盲因子和保序私钥,从而生成保序签名的过程,可以在不解密的情况下,实现对两个加密数据对应的明文数据是否等值且同序进行严格检测;通过计算等值盲因子的和,得到等值私钥,剔除了项数的影响,可以在不解密的情况下,实现对两个加密数据对应的明文是否等值但不同序进行检测,从而丰富验证场景,提高验证效率。

请参见图4,是本发明实施例提供的设备的结构示意图。如图4所示,本实施例中的设备可以包括:一个或多个输入设备100;存储器200,一个或多个处理器300和一个或多个输出设备400。上述处理器300、输入设备100、输出设备400和存储器200通过总线500连接。存储器200用于存储计算机程序,上述计算机程序包括程序指令,处理器300用于执行存储器200存储的程序指令。

应当理解,在本发明实施例中,所称处理器300可以是中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

输入设备100可以包括触控板、指纹采传感器(用于采集用户的指纹信息和指纹的方向信息)、麦克风等,输出设备400可以包括显示器(lcd等)、扬声器等。

该存储器200可以包括只读存储器和随机存取存储器,并向处理器300提供指令和数据。存储器200的一部分还可以包括非易失性随机存取存储器。例如,存储器200还可以存储设备类型的信息。

其中,处理器300用于执行存储器200的程序指令,可以执行本发明实施例所描述的加密数据验证装置中的数据获取模块401、保序验证模块402、密文重排模块403以及等值验证模块404所执行的操作,并将文件识别结果反馈给输出设备400。

具体实现中,本发明实施例中所描述的处理器300、输入设备100、输出设备200可执行本发明实施例提供的加密数据验证方法的各个实施例中所描述的实现方式,也可执行本发明实施例所描述的加密数据验证装置的实现方式,在此不再赘述。

在本发明的另一实施例中提供一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序包括程序指令,上述程序指令被处理器执行时实现:从区块链中获取第一加密数据、第二加密数据、保序签名以及等值签名,上述第一加密数据由多个第一加密子数据组成,上述第二加密数据由多个第二加密子数据组成,上述保序签名用于校验各第一加密子数据对应明文数据与各第二加密子数据对应的明文数据的排序和数值,上述等值签名用于校验上述各第一加密子数据对应明文数据与各第二加密子数据对应的明文数据的数值;基于上述各第一加密子数据和上述各第一加密子数据的排序,以及上述第二加密子数据和上述第二加密子数据的排序确定第一公钥,基于上述第一公钥对上述保序签名进行验签;若对上述保序签名验签不通过,则基于上述各第一加子密数据和上述各第二加密子数据确定第二公钥,基于上述第二公钥对上述等值签名进行验签。

上述计算机可读存储介质可以是前述任一实施例上述的设备的内部存储单元,例如设备的硬盘或内存。上述计算机可读存储介质也可以是上述设备的外部存储设备,例如上述设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,上述计算机可读存储介质还可以既包括上述设备的内部存储单元也包括外部存储设备。上述计算机可读存储介质用于存储上述计算机程序以及上述设备所需的其他程序和数据。上述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。

应当理解,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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