发明内容
本发明通过提供一种对联盟区块链上多方隐私保护数据审计的方法及装置,能够在联盟区块链成员身份公开的情况下,对来自多方的盲数据进行联合以及任意范围进行审计。
本发明提供了一种对联盟区块链上多方隐私保护数据审计的方法,包括:
联盟区块链上的证明节点获取各自的私有数据,根据所述私有数据生成各自的承诺和盲向量多项式;
所述联盟区块链上的交易节点获取所述生成的承诺,对所述承诺进行同态相加得到聚合后的承诺,同时还生成挑战因子;
所述联盟区块链上的交易节点获取所述生成的盲向量多项式,对所述盲向量多项式进行同态相加得到相加后的盲向量多项式;将所述相加后的盲向量多项式通过内积证明转化为验证参量;
将所述聚合后的承诺、所述挑战因子、所述相加后的盲向量多项式和所述验证参量生成待验证的证明;
所述联盟区块链上的验证节点获取所述待验证的证明,基于指定范围利用承诺的性质和内积证明,验证所述私有数据中的范围是否成立。
进一步地,所述根据所述私有数据生成各自的承诺和盲向量多项式,包括:
判断所述私有数据中的数据范围是标准范围还是任意范围;
若所述私有数据中的数据范围是标准范围vi∈[0,2n)(i=1,2,...,m),每个证明节点基于各自的私有数据vi生成五个承诺,分别是Vi=Com(vi),Ai=Com(aLi,aRi),Si=Com(sLi,sRi),T1i=Com(aLi,aRi,sLi,sRi),T2i=Com(Ai,Si,sLi,sRi);其中,sLi,sRi是盲化因子,aLi是vi的n位二进制向量,aRi=aLi-1;还生成五个盲向量多项式,将所述五个盲向量多项式统一表示为otherSharei;
若所述私有数据中的数据范围是任意范围vi∈[a,b)(i=1,2,...,m),将vi∈[a,b)转换为vai=vi-a∈[0,2n)和vbi=vi-b+2n∈[0,2n);按照所述标准范围的方法将vai,vbi生成五个承诺和五个盲向量多项式。
进一步地,所述生成挑战因子,包括:
对所述承诺调用哈希函数生成所述挑战因子。
进一步地,在所述联盟区块链上的验证节点获取所述待验证的证明之前,还包括:
所述联盟区块链上的验证节点检查所有的链码、主键ID、范围是否被修改过;
若所述链码、主键ID、范围均没有被修改,所述联盟区块链上的验证节点获取所述待验证的证明。
进一步地,所述基于指定范围利用承诺的性质和内积证明,验证所述私有数据中的范围是否成立,包括:
若z2(V1+V2+…+Vm)+y+xT1+x2T2等于otherSharei且IPP+otherShare等于A+xS,说明多个证明节点的标准范围vi∈[0,2n)或者任意范围vi∈[a,b)成立,验证通过。
本发明还提供了一种对联盟区块链上多方隐私保护数据审计的装置,包括:
数据生成模块,用于联盟区块链上的证明节点获取各自的私有数据,根据所述私有数据生成各自的承诺和盲向量多项式;
聚合模块,用于所述联盟区块链上的交易节点获取所述生成的承诺,对所述承诺进行同态相加得到聚合后的承诺,同时还生成挑战因子;
运算模块,用于所述联盟区块链上的交易节点获取所述生成的盲向量多项式,对所述盲向量多项式进行同态相加得到相加后的盲向量多项式;将所述相加后的盲向量多项式通过内积证明转化为验证参量;
证明生成模块,用于将所述聚合后的承诺、所述挑战因子、所述相加后的盲向量多项式和所述验证参量生成待验证的证明;
审计模块,用于所述联盟区块链上的验证节点获取所述待验证的证明,基于指定范围利用承诺的性质和内积证明,验证所述私有数据中的范围是否成立。
进一步地,所述数据生成模块,包括:
私有数据获取单元,用于联盟区块链上的证明节点获取各自的私有数据;
范围判断单元,用于判断所述私有数据中的数据范围是标准范围还是任意范围;
第一数据生成单元,用于若所述私有数据中的数据范围是标准范围vi∈[0,2n)(i=1,2,...,m),每个证明节点基于各自的私有数据vi生成五个承诺,分别是Vi=Com(vi),Ai=Com(aLi,aRi),Si=Com(sLi,sRi),T1i=Com(aLi,aRi,sLi,sRi),T2i=Com(Ai,Si,sLi,sRi);其中,sLi,sRi是盲化因子,aLi是vi的n位二进制向量,aRi=aLi-1;还生成五个盲向量多项式,将所述五个盲向量多项式统一表示为otherSharei;
第二数据生成单元,用于若所述私有数据中的数据范围是任意范围vi∈[a,b)(i=1,2,...,m),将vi∈[a,b)转换为vai=vi-a∈[0,2n)和vbi=vi-b+2n∈[0,2n);按照所述标准范围的方法将vai,vbi生成五个承诺和五个盲向量多项式。
进一步地,所述聚合模块,包括:
聚合执行单元,用于所述联盟区块链上的交易节点获取所述生成的承诺,对所述承诺进行同态相加得到聚合后的承诺;
挑战因子生成单元,用于对所述承诺调用哈希函数生成所述挑战因子。
进一步地,还包括:
检查模块,用于所述联盟区块链上的验证节点检查所有的链码、主键ID、范围是否被修改过;
所述审计模块,具体用于若所述链码、主键ID、范围均没有被修改,所述联盟区块链上的验证节点获取所述待验证的证明,基于指定范围利用承诺的性质和内积证明,验证所述私有数据中的范围是否成立。
进一步地,所述审计模块,包括:
证明获取单元,用于若所述链码、主键ID、范围均没有被修改,所述联盟区块链上的验证节点获取所述待验证的证明;
审计执行单元,用于若z2(V1+V2+…+Vm)+y+xT1+x2T2等于otherSharei且IPP+otherShare等于A+xS,说明多个证明节点的标准范围vi∈[0,2n)或者任意范围vi∈[a,b)成立,验证通过。
本发明中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本发明提出了一种基于零知识范围证明的联盟区块链上多方隐私保护数据审计实现方法及装置,将非交互式零知识范围证明技术与联盟区块链相结合,可用于跨组织监督和管理下的隐私保护数据审核场景。主要基于智能合约(又链码),几乎不依赖于联盟区块链的底层。实现了多个证明方生成一个联合标准范围和任意范围的零知识范围证明,然后发送给一个验证方去验证,还提供了链码、相关接口和客户端代码。在联盟区块链成员身份公开的情况下,保护其上传数据的完整性和隐私性,本方法及装置提供了线性证明和验证时间,以及对数证明大小,有效提高了吞吐量,节省了区块链上的存储空间。
具体实施方式
本发明实施例通过提供一种对联盟区块链上多方隐私保护数据审计的方法及装置,能够在联盟区块链成员身份公开的情况下,对来自多方的盲数据进行联合以及任意范围进行审计。
本发明实施例中的技术方案为实现上述技术效果,总体思路如下:
以弱耦合的方式将非交互式零知识范围证明技术与联盟区块链相结合,本发明主要基于链码,几乎不依赖于联盟区块链的底层实现。首先将多个证明方的标准范围或者任意范围的数据生成一个联合范围证明,然后发送给一个验证方去验证,并提供客户端代码、链码和相关的接口。验证节点可以进行隐私保护数据审计和验证多个证明节点为其私有数据生成的一个联合零知识范围证明,其中在证明期间需要一个交易节点(可以由证明节点充当)聚合证明节点发送过来的内容生成挑战因子,最终聚合成一个证明。除了保护证明节点的私人数据的隐私,还确保证明节点和交易节点不会通过修改或伪造链码或范围值来作弊。
为了实现上述技术方案,首先需要建立区块链网络,网络由多个证明节点、一个交易节点和一个验证节点组成,在所有节点上实例化证明者链码、交易者链码和验证者链码。验证节点调用验证者链码来指定范围、Key IDs(主键ID)等初始化信息并上传至区块链。其次证明节点对其私有数据进行预处理,调用证明者链码生成证明所需的承诺和盲向量多项式并上传至区块链。接着交易节点生成证明所需的挑战因子、聚合证明并上传至区块链。最后验证节点检查所有的链码、Key IDs、范围等内容是否从未被修改过。若从未修改,则从区块链上下载证明并进行验证。
为了更好地理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
参见图1,本发明实施例提供的对联盟区块链上多方隐私保护数据审计的方法,包括:
步骤S110:联盟区块链上的证明节点获取各自的私有数据,根据私有数据生成各自的承诺和盲向量多项式;
对本步骤进行具体说明,根据私有数据生成各自的承诺和盲向量多项式,包括:
判断私有数据中的数据范围是标准范围还是任意范围;
若私有数据的取值范围是vi∈[0,2n)(i=1,2,...,m),则表示私有数据的范围是标准范围。每个证明节点基于各自的私有数据vi生成五个承诺,分别是Vi=Com(vi),Ai=Com(aLi,aRi),Si=Com(sLi,sRi),T1i=Com(aLi,aRi,sLi,sRi),T2i=Com(Ai,Si,sLi,sRi);其中,sLi,sRi是盲化因子,aLi是vi的n位二进制向量,aRi=aLi-1;还生成五个盲向量多项式,将五个盲向量多项式统一表示为otherSharei;
若私有数据的取值范围是vi∈[a,b)(i=1,2,...,m),则表示私有数据的范围是任意范围。将vi∈[a,b)转换为vai=vi-a∈[0,2n)和vbi=vi-b+2n∈[0,2n);按照标准范围的方法将vai,vbi生成五个承诺和五个盲向量多项式。
步骤S120:联盟区块链上的交易节点获取生成的承诺,对承诺进行同态相加得到聚合后的承诺,同时还生成挑战因子;
其中,生成挑战因子,包括:
对承诺调用哈希函数生成挑战因子。
步骤S130:联盟区块链上的交易节点获取生成的盲向量多项式,对盲向量多项式进行同态相加得到相加后的盲向量多项式;将相加后的盲向量多项式通过内积证明转化为验证参量;
步骤S140:将聚合后的承诺、挑战因子、相加后的盲向量多项式和验证参量生成待验证的证明;
步骤S150:联盟区块链上的验证节点获取待验证的证明,基于指定范围利用承诺的性质和内积证明,验证私有数据中的范围是否成立。
为了保证没有恶意节点篡改联盟区块链上的内容,从而保证数据审计结果的准确性,在联盟区块链上的验证节点获取待验证的证明之前,还包括:
联盟区块链上的验证节点检查所有的链码、主键ID、范围是否被修改过;
具体地,将链码、主键ID、范围与预设的链码、主键ID、范围进行比较;
若链码的版本、主键ID、范围的上下限均与预设的链码、主键ID、范围匹配,则说明联盟区块链上的链码、主键ID、范围均没有被修改,则联盟区块链上的验证节点获取待验证的证明。
若链码的版本、主键ID、范围的上下限中至少有一个与预设的链码、主键ID、范围不匹配,则说明联盟区块链上的内容被修改,则停止查询返回验证失败。
进一步地,基于指定范围利用承诺的性质和内积证明,验证私有数据中的范围是否成立,包括:
若z2(V1+V2+…+Vm)+y+xT1+x2T2等于otherSharei且IPP+otherShare等于A+xS,说明多个证明节点的标准范围vi∈[0,2n)或者任意范围vi∈[a,b)成立,验证通过。
若z2(V1+V2+…+Vm)+y+xT1+x2T2不等于otherSharei和/或IPP+otherShare不等于A+xS,说明多个证明节点的标准范围vi∈[0,2n)或者任意范围vi∈[a,b)不成立,验证不通过。
对本发明实施例提供的对联盟区块链上多方隐私保护数据审计的方法的具体实现过程进行具体说明:
步骤1:初始化。
在该步骤中,具体实施过程如下:
1)建立区块链网络,在所有节点上实例化3种主要的链码:证明者链码、交易者链码和验证者链码。
2)区块链上的数据是通过Key IDs(主键ID)访问的,在多个证明节点和一个验证节点会话下,需要多个证明者主键ID(Prover Key IDs),一个交易者主键ID(Dealer KeyID)和一个设置主键ID(Setup Key ID),它们像成员变量分别绑定到证明者链码、交易者链码和验证者链码中。
3)验证节点通过链下的方法确定和告知证明节点、交易节点指定的范围以及生成的证明存储在公共账本的位置。验证节点调用验证者链码将范围的上限和下限、ProverKey IDs和Dealer Key ID等初始化信息通过Setup Key ID上传至区块链。
步骤2:证明节点准备私有数据。
在该步骤中,具体实施过程如下:
在证明过程中,总共有m个证明节点,每个证明节点从其链下私有数据库中读取各自的私有数据vi(i=1,2,...,m)。其中,vi有两种范围:一种是标准范围vi∈[0,2n);另一种是任意范围vi∈[a,b)(a是范围的下限,b是范围的上限),然后对其读到的数据进行类型转换,将数据转换为大整数类型,然后将类型转换后任意范围的数据转换为标准范围的数据,以便于按照标准范围的方法生成承诺和盲向量多项式。
步骤3:证明节点生成证明所需的Pedersen承诺和盲向量多项式并上传至区块链。
在该步骤中,具体实施过程如下:
1)由于私有数据的范围不一样,因此证明者生成证明的具体方式可分为以下两种:
(1)证明标准范围vi∈[0,2n)(i=1,2,...,m):每个证明节点基于各自的私有数据vi生成五个Pedersen承诺,分别是Vi=Com(vi),Ai=Com(aLi,aRi),Si=Com(sLi,sRi),T1i=Com(aLi,aRi,sLi,sRi),T2i=Com(Ai,Si,sLi,sRi)。其中,Com是Pedersen承诺,sLi,sRi是盲化因子,aLi是vi的n位二进制向量,aRi=aLi-1。除此之外,还生成五个盲向量多项式(统一表示为otherSharei)。
(2)证明任意范围vi∈[a,b)(i=1,2,...,m):将vi∈[a,b)转换为vai=vi-a∈[0,2n)和vbi=vi-b+2n∈[0,2n),然后按照标准范围的方法将vai,vbi生成五个承诺和五个盲向量多项式。
2)每个证明节点通过各自的Prover Key ID(在被绑定的验证者链码Setup KeyID中指定)将以上内容上传至区块链。除了Pedersen承诺和盲向量多项式外,在通信期间,每个证明节点还会生成私有中间变量(例如向量多项式和随机数),这些私有中间变量被存储在链下,只允许各自访问。
步骤4:交易节点生成证明所需的挑战因子,聚合证明并上传至区块链。在该步骤中,具体实施过程如下:
1)交易节点调用交易者链码来响应每个证明节点/链码。交易节点对来自每个证明节点的Pedersen承诺(Vi,Ai,Si,T1i,T2i)进行同态相加得到聚合的V,A,S,T1,T2,再对A调用哈希函数生成挑战因子y,对S调用哈希函数生成挑战因子z,对T1,T2调用哈希函数生成挑战因子x,并通过Dealer Key ID(在被绑定的验证者链码Setup Key ID中指定)上传至区块链。
2)交易节点对来自每个证明节点的otherSharei进行同态相加,得到相加后的otherShare,然后将otherShare通过内积证明转化为2log2(nm)点和2个标量(验证参量),并再次通过Dealer Key ID上传至区块链。
3)最终的证明由V1,V2,...,Vi,A,S,T1,T2,otherShare,验证参量以及x,y,z组成,交易节点通过Dealer Key ID将最终的证明上传至区块链。
步骤5:验证节点从区块链下载证明并进行验证。
在该步骤中,具体实施过程如下:
1)验证节点通过查询历史记录,检查所有的链码、Key IDs、范围等内容是否被修改过。如果从未被修改过,继续执行第2)步,否则验证失败。
2)检查通过,验证节点调用验证者链码通过Dealer Key ID下载最终的证明,然后基于指定范围利用Pedersen承诺的性质和内积证明,分别验证z2(V1+V2+…+Vm)+y+xT1+x2T2是否等于otherShare,IPP+otherShare是否等于A+xS。如果两个等式均成立,则说明多个证明节点的标准范围数据vi∈[0,2n)成立或者任意范围数据vi∈[a,b)成立,即验证通过,则表示零知识范围证明过程是成功的,否则失败退出。
参见图2,本发明实施例提供的对联盟区块链上多方隐私保护数据审计的装置,包括:
数据生成模块100,用于联盟区块链上的证明节点获取各自的私有数据,根据私有数据生成各自的承诺和盲向量多项式;
具体地,数据生成模块100,包括:
私有数据获取单元,用于联盟区块链上的证明节点获取各自的私有数据;
范围判断单元,用于判断私有数据中的数据范围是标准范围还是任意范围;
第一数据生成单元,用于若私有数据的取值范围是vi∈[0,2n)(i=1,2,...,m),则表示私有数据的范围是标准范围。每个证明节点基于各自的私有数据vi生成五个承诺,分别是Vi=Com(vi),Ai=Com(aLi,aRi),Si=Com(sLi,sRi),T1i=Com(aLi,aRi,sLi,sRi),T2i=Com(Ai,Si,sLi,sRi);其中,sLi,sRi是盲化因子,aLi是vi的n位二进制向量,aRi=aLi-1;还生成五个盲向量多项式,将五个盲向量多项式统一表示为otherSharei;
第二数据生成单元,用于若私有数据的取值范围是vi∈[a,b)(i=1,2,...,m),则表示私有数据的范围是任意范围。将vi∈[a,b)转换为vai=vi-a∈[0,2n)和vbi=vi-b+2n∈[0,2n);按照标准范围的方法将vai,vbi生成五个承诺和五个盲向量多项式。
聚合模块200,用于联盟区块链上的交易节点获取生成的承诺,对承诺进行同态相加得到聚合后的承诺,同时还生成挑战因子;
具体地,聚合模块200,包括:
聚合执行单元,用于联盟区块链上的交易节点获取生成的承诺,对承诺进行同态相加得到聚合后的承诺;
挑战因子生成单元,用于对承诺调用哈希函数生成挑战因子。
运算模块300,用于联盟区块链上的交易节点获取生成的盲向量多项式,对盲向量多项式进行同态相加得到相加后的盲向量多项式;将相加后的盲向量多项式通过内积证明转化为验证参量;
证明生成模块400,用于将聚合后的承诺、挑战因子、相加后的盲向量多项式和验证参量生成待验证的证明;
审计模块500,用于联盟区块链上的验证节点获取待验证的证明,基于指定范围利用承诺的性质和内积证明,验证私有数据中的范围是否成立。
为了保证没有恶意节点篡改联盟区块链上的内容,从而保证数据审计结果的准确性,还包括:
检查模块,用于联盟区块链上的验证节点检查所有的链码、主键ID、范围是否被修改过;
在这种情况下,审计模块500,具体用于若链码的版本、主键ID、范围的上下限均与预设的链码、主键ID、范围匹配,则说明联盟区块链上的链码、主键ID、范围均没有被修改,则联盟区块链上的验证节点获取待验证的证明,基于指定范围利用承诺的性质和内积证明,验证私有数据中的范围是否成立。
具体地,审计模块500,包括:
证明获取单元,用于若链码、主键ID、范围均没有被修改,联盟区块链上的验证节点获取待验证的证明;
审计执行单元,用于若z2(V1+V2+…+Vm)+y+xT1+x2T2等于otherSharei且IPP+otherShare等于A+xS,说明多个证明节点的标准范围vi∈[0,2n)或者任意范围vi∈[a,b)成立,验证通过;若z2(V1+V2+…+Vm)+y+xT1+x2T2不等于otherSharei和/或IPP+otherShare不等于A+xS,说明多个证明节点的标准范围vi∈[0,2n)或者任意范围vi∈[a,b)不成立,验证不通过。
技术效果
本发明实施例提出了一种基于零知识范围证明的联盟区块链上多方隐私保护数据审计实现方法及装置,将非交互式零知识范围证明技术与联盟区块链相结合,可用于跨组织监督和管理下的隐私保护数据审核场景。主要基于智能合约(又链码),几乎不依赖于联盟区块链的底层。实现了多个证明方生成一个联合标准范围和任意范围的零知识范围证明,然后发送给一个验证方去验证,还提供了链码、相关接口和客户端代码。在联盟区块链成员身份公开的情况下,保护其上传数据的完整性和隐私性,本方法及装置提供了线性证明和验证时间,以及对数证明大小,有效提高了吞吐量,节省了区块链上的存储空间。链码、相关接口和客户端代码的提供使应用程序开发人员可以创建自己的隐私保护数据审核应用程序。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。