CN105812141B - 一种面向外包加密数据的可验证交集运算方法及系统 - Google Patents
一种面向外包加密数据的可验证交集运算方法及系统 Download PDFInfo
- Publication number
- CN105812141B CN105812141B CN201610130706.9A CN201610130706A CN105812141B CN 105812141 B CN105812141 B CN 105812141B CN 201610130706 A CN201610130706 A CN 201610130706A CN 105812141 B CN105812141 B CN 105812141B
- Authority
- CN
- China
- Prior art keywords
- bob
- alice
- cph
- acquisition system
- rslt
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3249—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/126—Applying verification of the received information the source of the received data
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Storage Device Security (AREA)
Abstract
一种面向外包加密数据的可验证交集运算方法及系统,属于可验证外包计算领域。在可信第三方实体、至少两个客户端实体以及外包服务器端之间进行,客户端实体为数据集合的持有者以及数据集合交集运算的请求者。第三方实体主要负责公共参数的初始化以及公共参数的分发;两个客户端实体主要负责生成密钥、加密数据集合、计算认证信息、验证外包服务器端返回结果和证据以及解密外包服务器端返回的密文数据集合;外包服务端主要负责执行数据集合交集运算。外包服务器在执行交集运算的过程中不需要解密出明文数据集合,外包服务器是对密文进行操作,能够保证用户数据的隐私性。实体间交互次数少,通信代价较小及高效的运算结果正确性验证。
Description
所属技术领域
本发明属于可验证外包计算领域,特别涉及一种面向外包加密数据的可验证交集运算方法及系统。
背景技术
随着计算机技术和云计算的迅速发展,出现了一种新型的数据管理模式:外包数据。外包数据模式主要有3个实体:数据拥有者、数据服务提供者即外包服务器、数据查询请求者。数据拥有者将数据外包给数据服务提供者,由于数据服务提供者可以采用集群应用、网格技术或者分布式文件系统等技术,因此可以为数据查询请求者提供高效的数据查询服务。然而数据拥有者把数据存储在不可信的第三方的外包服务器上,加大了数据资源的不安全性。
继外包数据之后,由于现实社会中计算资源的不均衡,特别是在大数据的环境下,外包计算逐渐在日常生活和科学研究中被广泛使用。外包计算本质上是指算法开发者将所开发的算法部署到一个第三方的计算服务提供商的服务器上,这个第三方服务提供商的服务器在响应其他实体的计算请求时应该如实地按照算法开发者提供的算法进行计算,并将计算的结果如实地返回给计算的请求实体。
近几年,伴随着云计算相关技术的逐渐成熟,同时由于云计算拥有超大规模存储、高可靠性、高可扩展性和廉价等特点,数据拥有者更加希望把数据外包给具有强大资源、强大存储能力和强大数据处理能力的外包服务器,并往往需要对外包数据进行相关查询或针对外包数据进行计算。因此数据拥有者和/或数据查询请求者需要对外包服务器返回的查询结果或者计算结果进行考量,并且希望外包服务器端每次返回的结果都有相应的正确性证据以方便作为数据拥有者和/或数据查询请求者的客户端进行验证。但是由于外包服务器是不可信的,它可能为了节省计算资源而不正确执行算法;或者外包服务器被恶意实体控制,导致计算结果被恶意修改,因此研究如何保证面向外包数据的计算结果的正确性就显得很重要。
然而外包计算当前还存在着很多安全隐患,包括数据隐私泄漏和计算结果错误等问题。因此理想的外包计算应该支持隐私保护并保证计算结果的可验性,也就是外包服务器能够处理密文数据,并且在返回计算结果的同时,返回关于结果正确性的证据。当结果和证据返回给计算能力弱的实体时,其能够依据结果和证据完成对于结果的正确性验证。
另外,目前基于可验证计算的外包计算还没有能够满足面向外包加密数据的可验证交集运算的方法。
发明内容
针对现有技术存在的不足,本发明提供一种面向外包加密数据的可验证交集运算方法及系统。
本发明的技术方案为:
一种面向外包加密数据的可验证交集运算方法,该方法在可信第三方实体即TTP、至少两个客户端实体即Alice与Bob以及外包服务器端实体即Server之间进行,其中所述客户端实体为数据集合的持有者以及数据集合交集运算的请求者;包括如下步骤:
步骤1:TTP生成公共参数pm并把pm分别发送给Server、Alice和Bob;
步骤2:依据收到的公共参数pm,Alice和Bob分别生成其各自的公私密钥对{pka,ska}和{pkb,skb},并分别把其各自的公钥pka和pkb发布出去;
步骤3:Alice和Bob分别依据其各自的公钥pka和pkb,分别对其各自的明文数据集合Da和Db进行加密,对应生成Alice和Bob的密文数据集合Ca、Cb以及Alice和Bob的摘要信息Diga、Digb,且Alice和Bob均将其各自的密文数据集合Ca、Cb发送给Server;
步骤4:Alice和Bob分别依据其各自的私钥ska,skb与摘要信息Diga,Digb、以及对方的公钥pkb,pka,分别生成Alice的认证信息aua和Bob的认证信息aub并均发送给Server;
步骤5:Alice和Bob向Server发送数据集合交集运算的请求;
步骤6:当收到Alice和Bob的数据集合交集运算的请求时,Server依据Alice的密文数据集合Ca和Bob的密文数据集合Cb、以及Alice的认证信息aua和Bob的认证信息aub进行计算得到交集运算结果rslta,rsltb和运算结果正确性证据proofa,proofb,并分别将(rslta,proofa)和(rsltb,proofb)发送给Alice和Bob;
步骤7:Alice和Bob分别利用其各自保存的摘要信息Diga,Digb以及Server返回的交集运算结果rslta,rsltb和运算结果正确性证据proofa,proofb,完成数据集合交集运算结果正确性的验证;
步骤8:客户端体Alice和Bob分别依据其各自的私钥ska和skb,分别对其各自收到的数据集合交集运算结果rslta和rsltb进行解密生成相应的明文。
根据所述的面向外包加密数据的可验证交集运算方法,所述步骤1包括如下步骤:
步骤1.1:生成双线性配对参数;
设定安全参数k,并依据该安全参数k,TTP生成双线性配对参数(e,g,G1,G2,p);其中,G={e,G1,G2,p},G1和G2是两个阶为素数p的乘法循环群,e:G1×G1→G2表示的是一个双线性映射,g为G1群内的随机数生成元;
步骤1.2:根据安全参数k和双线性配对参数,生成公共参数pm;
依据安全参数k,TTP首先从p阶整数群Zp中随机选取一个整数s,再利用步骤1.1中的双线性配对参数完成对PBC双线性配对算法的初始化,然后循环执行幂运算生成参数令则可得到公共参数pm={mamPk,e,p,g,G1,G2};其中mamPk代表用于对客户端实体的明文数据集合计算摘要的公钥;q≤k为正整数;
步骤1.3:TTP将其生成的公共参数pm发布出去。
根据所述的面向外包加密数据的可验证交集运算方法,所述步骤2包括如下步骤:
步骤2.1:依据收到的公共参数pm,Alice和Bob分别调用签名密钥生成算法sigKeyGen生成用于对其各自的密文数据集合进行签名的签名公私钥对(sigPka,sigSka)和(sigPkb,sigSkb),其中sigPka为Alice的签名公钥,sigPkb为Bob的签名公钥,sigSka为Alice的签名私钥,sigSkb为Bob的签名私钥;
步骤2.2:Alice和Bob均从p阶整数群Zp中随机选取两个整数βa,γa和βb,γb,则可得到Alice的明文数据集合加密公钥和对应的密文数据集合解密私钥ska={βa,γa,sigSka}、Bob的明文数据集合加密公钥和对应的密文数据集合解密私钥skb={βb,γb,sigSkb};
步骤2.3:Alice和Bob分别把其各自的公钥pka和pkb发布出去。
根据所述的面向外包加密数据的可验证交集运算方法,所述步骤3包括如下步骤:
步骤3.1:假设Alice的明文数据集合Da={da,1,da,2,...,da,n},Bob的明文数据集合Db={db,1,db,2,...,db,m},为了保护客户端实体的输入隐私,Alice和Bob分别从G1中随机选取元素da,0和db,0,并分别将da,0和db,0加入到Da和Db中;其中Da中的元素da,i∈G1,0≤i≤n;Db中的元素db,t∈G1,0≤t≤m;
步骤3.2:在i的取值范围[0,n]内,Alice按照i从0至n的取值顺序依次从Zp中随机选取整数对ri1、ri2并依次相应得到进而得到Alice的密文数据集合Ca=(cpha,0,cpha,1,...,cpha,n),并将其发送给Server;同时,在t的取值范围[0,m]内,Bob按照t从0至m的取值顺序依次从Zp中随机选取整数对rt3、rt4并依次相应得到进而得到Bob的密文数据集合Cb=(cphb,0,cphb,1,...,cphb,m),并将其发送给Server;
步骤3.3:Alice和Bob分别按照计算并生成Alice的明文数据集合Da的摘要信息Diga和Bob的明文数据集合Db的摘要信息Digb;其中ha,i=H(e(da,i,g))和hb,t=H(e(db,t,g)),其中e(da,i,g)代表da,i和g的配对值;H()代表哈希函数;ha,i代表对da,i和g的配对值计算哈希值;e(db,t,g)代表db,t和g的配对值;hb,t代表对db,t和g的配对值计算哈希值。
根据所述的面向外包加密数据的可验证交集运算方法,所述步骤4包括如下步骤:
步骤4.1:Alice和Bob分别依据其各自的私钥ska,skb计算代理重加密密钥和
步骤4.2:Alice使用Bob的公钥pkb来加密其自己的摘要信息Diga得到Diga的密文Bob使用Alice的公钥pka来加密其自己的摘要信息Digb得到Digb的密文其中r1,r2,r3,r4是从Zp中随机选取的整数;
步骤4.3:Alice和Bob分别依据sigSka,cphB和sigSkb,cphA,通过调用不可抵赖的签名算法sigSign分别生成cphB的签名信息σB和cphA的签名信息σA,完成对cphB和cphA的签名;
步骤4.4:Alice和Bob分别得到其各自的认证信息aua={rka,cphB,σa}与aub={rkb,cphA,σb},且Alice和Bob分别将aua和aub发送给Server。
根据所述的面向外包加密数据的可验证交集运算方法,所述步骤6包括如下步骤:
步骤6.1:先对Ca和Cb进行转化处理,以使Da与Db中所具有的相同明文数据部分能够转化为相同的密文;
分别对cpha,i和cphb,t进行转化,且用Ta,i和Tb,t表示转化后的结果,Ta,i和Tb,t分别表示为mamDa={H(Ta,1),H(Ta,2),...,H(Ta,n)}和mamDb={H(Tb,1),H(Tb,2),...,H(Tb,m)},
步骤6.2:Server依据mamPk、mamDa和mamDb,为Alice和Bob生成对应的交集运算结
果mamRslt和对应的运算结果正确性证据mamWita和mamWitb,其中mamRslt=mamDa∩mamDb;和均为证明交
集运算结果mamRslt正确性的部分证据;其中mamDa-
mamRslt代表mamDa和mamRslt的差集运算,xa是该差集中的元素;mamDb-mamRslt代表mamDb和mamRslt的差集运算,xb是该差
集中的元素;为子集证据,用来证明集合交集运算结果分别为对应的参与交集
运算的两个数据集合的子集;以及为完整性证据,用来证明对应的参
与交集运算的两个数据集合除交集之外没有其他共同元素;令
x′a是mamDa中的元素,x′b是mamDb中的元素;依据欧几里得定
理,寻找qa1(s),qa2(s)使得p2(s)*qa1(s)+Ra(s)*qa2(s)=1成立,从而得到qa1(s),qa2(s)的
值,以及寻找qb1(s),qb2(s)使得p1(s)*qb1(s)+Rb(s)*qb2(s)=1成立,从而得到qb1(s),qb2(s)
的值;
步骤6.3:Server令rslta={cpha,i|H(e(da,i,g))∈mamRslt},proofa=(mamWita,cphA,σb),rsltb={cphb,t|H(e(db,t,g))∈mamRslt},proofb=(mamWitb,cphB,σa);其中H()代表哈希函数;并分别将(rslta,proofa)和(rsltb,proofb)发送给Alice和Bob;
根据所述的面向外包加密数据的可验证交集运算方法,所述步骤7包括如下步骤:
步骤7.1:Alice和Bob分别依据sigPka,cphB,σa和sigPkb,cphA,σb,通过调用签名认证算法sigVerify分别验证cphB和cphA的完整性,以确定Sever返回的交集运算结果rslta,rsltb没有被更改,如果sigVerify算法的结果为0,则转至步骤7.3,否则执行步骤7.2;
步骤7.2:Alice和Bob分别调用成员结果验证算法mamVerify对Sever返回的交集运算结果rslta,rsltb的正确性进行验证,若验证成功则mamVerify算法返回1,同时执行步骤8,若验证失败则mamVerify算法返回0,并转至步骤7.3;
步骤7.2.1:Alice和Bob分别依据其各自的私钥ska,skb分别对cphB,cphA进行解密得到mamDiga,mamDigb;
步骤7.2.2:Alice和Bob分别判断rslta和rsltb是否为空,是,则mamVerify算法返回0,并转至步骤7.3;否,则Alice进行{H(e(da,i,g))|cpha,i∈rslta}-cpha,i的计算,同时Bob进行{H(e(db,t,g))|cphb,t∈rsltb}-cphb,t的计算,还原出Sever返回给它们的mamRslt值,并执行步骤7.2.3;
步骤7.2.3:Alice依据mamPk,mamDigb,mamRslt,mamWita,mamDiga,调用成员结果验证算法mamVerify:a).首先依据mamRslt计算其中x代表mamRslt中的元素;b).通过双线性映射方法判断等式是否成立,是,则认为子集证据和正确,并执行步骤c),否,则mamVerify算法返回0,并转至步骤7.3;c).最后判断等式是否成立,是,则认为完整性证据正确,mamVerify算法返回1,同时执行步骤8,否,则mamVerify算法返回0,转至步骤7.3;
同样,Bob依据mamPk,mamDigb,mamRslt,mamWitb,mamDiga,调用成员结果验证算法mamVerify:(a).首先依据mamRslt计算其中x代表mamRslt中的元素;(b).判断等式是否成立,是,则认为子集证据和正确,并执行步骤(c),否,则mamVerify算法返回0,并转至步骤6.3;(c).最后判断等式是否成立,是,则认为完整性证据正确,mamVerify算法返回1,同时执行步骤8,否,则mamVerify算法返回0,转至步骤7.3;
步骤7.3:Verify算法执行结束,返回0;
根据所述的面向外包加密数据的可验证交集运算方法,所述步骤8包括如下内容:
假设rslta=(cpha,j,...,cpha,k),其中1≤j,k≤n,可以借助私钥ska,利用公式来解密rslta,其中j≤i≤k,得到相应的明文Da'=Da∩Db={da,j,...,da,k};
假设rsltb=(cphb,j,...,cphb,k),其中1≤j,k≤m,可以借助私钥skb,利用公式来解密rsltb,其中j≤t≤k,得到相应的明文Db'=Da∩Db={db,j,...,db,k}。
根据所述的面向外包加密数据的可验证交集运算方法的面向外包加密数据的可验证交集运算系统,由可信第三方实体即TTP、至少两个客户端实体即Alice与Bob以及外包服务器端实体即Server构成;所述客户端实体为数据集合的持有者以及数据集合交集运算的请求者;其中,TTP包括公共参数生成与分发模块;Server包括数据集合交集运算模块;Alice与Bob均包括密钥生成模块、数据加密模块、认证信息生成模块、结果验证模块和数据解密模块;
所述公共参数生成与分发模块,负责整个系统中所有实体的公共参数的初始化,并在初始化公共参数后将公共参数分别发送给Server、Alice与Bob;
所述数据集合交集运算模块,用于当Alice与Bob发起数据集合交集运算请求时,根据从客户端实体接收的认证信息,对Alice和Bob提供的密文数据集合进行交集运算,同时计算运算结果正确性的证据,并将所述运算结果和所述证据分别发送给Alice和Bob;
所述密钥生成模块,负责生成公私密钥对,即用于对客户端实体的明文数据集合进行加密的公钥和用于对客户端实体的对应的密文数据集合进行解密的私钥;
所述数据加密模块,负责对客户端实体的明文数据集合进行加密,完成对客户端实体的明文数据集合向密文数据集合的转换,同时生成客户端实体的明文数据集合摘要;
所述认证信息生成模块,负责生成代理重加密密钥、客户端实体的明文数据集合摘要的密文以及其对应的签名,进而生成客户端实体的认证信息,并将该认证信息发送给Server;
所述结果验证模块,负责完成对客户端实体收到的所述运算结果和所述证据的正确性验证;
所述数据解密模块,若所述结果验证模块验证成功,则对数据集合交集运算结果的密文数据集合进行解密,完成该密文数据集合向明文数据集合的转换。
本发明的有益效果是:本发明具有以下几方面的优点:
1.本发明中,外包服务器在执行交集运算的过程中不需要解密出明文数据集合,外包服务器是对密文进行操作,能够保证用户数据的隐私性。计算过程中使用了代理重加密密钥rka和rkb,分别对密文Ca和Cb进行了转化,得到{cpha,i}和{cphb,t},即将明文Da与Db中由不同密钥加密的相同的部分转化为相同的密文形式。之后再分别对cpha,i和cphb,t进行转化得到mamDa和mamDb,这样就可以使用mamRslt=mamDa∩mamDb,来完成交集计算。其中外包服务器只能够看到两个用户的密文Ca和Cb,不会获得明文Da与Db的任何信息。
2.可信第三方TTP、外包服务器和客户端之间交互的次数比较少,而且他们共享的信息不是大文件,只是一些加密过后的数据,因而通信代价较小。方案中的交互分为4个阶段。第一个阶段为可信TTP生成公共参数pm后,将公共参数pm发送给两方计算请求实体和外包服务器,总共3次交互过程。第二个阶段为两方计算实体生成各自的公钥pk后,将公钥pk发送给对方,总共2次交互过程。第三个阶段为执行计算请求时,两方计算请求实体将各自的密文集合C和认证信息au发送给外包服务器,总共2次交互。第四个阶段为计算完成后,外包服务器将计算结果rslt和运算结果正确性证据proof发送给两方计算请求实体,总共2次交互。因此整个方案过程仅需要9次交互即可完成可验证的密文集合交集运算。另外,从每个用户(计算请求者)的角度来讲,整个过程仅需要5次交互,因此方案具有交互次数少和通信代价较小的特点。
3.本发明方法使用了双线性映射累加器和不可抵赖的数字签名方案,并且在客户
端进行验证交集运算结果的时候,只需要进行双线性映射的简单验证,实现了高效的运算
结果正确性验证。客户端在进行验证的过程时,首先使用签名认证算法sigVerify来验证外
包服务器返回的计算结果rslt的完整性。根据不可抵赖的数字签名的特性,有效地避免了
结果在传输过程中被恶意的篡改或因其他原因而被更改。另外,通常的数字签名算法使用
了哈希函数等高效的算法,因此客户端仅需要很少的计算代价和时间代价来验证签名的正
确性。在验证运算结果正确性时,客户端首先使用各自的私钥ska,skb对cphB,cphA进行解密
得到mamDiga,mamDigb,计算过程为 之后客户端各自使用公式{H(e(da,i,g))
|cpha,i∈rslta}-cpha,i和{H(e(db,t,g))|cphb,t∈rsltb}-cphb,t,还原出外包服务器返回给
它们的mamRslt值。最后依次使用以下三个公式来确定结果的正确性: 从以上算法可知,整个验证过程使用了椭圆曲线群上
的乘方计算,双线性配对计算和哈希函数计算。所有计算均为高效的算法,可以被客户端效
率地执行。因此该方案实现了高效的运算结果正确性验证。
附图说明
图1为本发明一种实施方式的面向外包加密数据的可验证交集运算方法流程图;
图2为本发明一种实施方式的面向外包加密数据的可验证交集运算方法中实体间通信过程示意图;
图3为本发明一种实施方式的面向外包加密数据的可验证交集运算系统的结构示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细说明。
本实施方式的面向外包加密数据的可验证交集运算方法,如图1所示,在可信第三方实体即TTP、至少两个客户端实体即Alice与Bob以及外包服务器端实体即Server之间进行。
可信第三方(Trusted Third Party,TTP):公共参数的生成者,在所有的实体中,第三方实体TTP是可信的,负责整个方法所有实体的公共参数的初始化,在初始化公共参数之后将公共参数发送给外包服务器端以及两个客户端实体。
客户端Alice和Bob:数据集合的持有者以及数据集合交集运算的请求者,Alice和Bob是半可信的,它们都希望知道对方实体的明文数据,负责计算数据集合的累加器值以及最终交集运算结果正确性的验证。当客户端要进行数据集合交集运算请求时,依据可信第三方发送过来的公共参数pm,假设Alice和Bob分别持有明文数据集合Da和Db,首先进行加密得到密文数据集合Ca和Cb,并计算数据集合的摘要值Diga和Digb。除此之外,依据另外客户端实体公布的公钥以及自己的私钥计算认证信息aua和aub,然后向外包服务器端发起数据集合交集运算的请求,等待外包服务器端返回交集运算结果和对应的运算结果正确性证据,最后客户端用户再完成结果正确性的验证。
外包服务器端Server:集合交集运算的执行者,可能由于为了节省计算资源或者程序中包括Bug而导致计算错误,因此它是不可信的,负责针对客户端Alice和Bob数据的交集运算,并计算对应结果正确性的证据。当收到客户端Alice和Bob的数据集合交集运算的请求时,依据可信第三方发送过来的公共参数pm,客户端发送的密文数据集合Ca和Cb,以及客户端计算的认证信息aua和aub,服务器端通过调用算法SetOperation,来完成集合交集运算,生成结果Rslt和对应证据Wit。
表1为本实施方式中在对本发明的技术方案内容进行描述时将会出现的部分符号的含义说明。
表1符号含义
符号 | 含义 | 符号 | 含义 |
Setup | 公共参数初始化算法 | KeyGen | 密钥生成算法 |
Enc | 加密算法 | Dec | 解密算法 |
AuGen | 生成认证信息算法 | SetOperation | 集合交集运算算法 |
Verify | 结果正确性验证算法 |
本实施方式的面向外包加密数据的可验证交集运算方法,如图1所示,包括如下步骤:
步骤1:TTP执行Setup算法,生成公共参数pm并把pm分别发送给Server、Alice和第Bob;其中下述的步骤1.1至步骤1.2描述的技术方案内容即为所述的Setup算法。
步骤1.1:生成双线性配对参数;
设定安全参数k,并依据该安全参数k,TTP调用双线性配对参数生成算法MapGen生成双线性配对参数(e,g,G1,G2,p);其中,G={e,G1,G2,p},G1和G2是两个阶为素数p的乘法循环群,e:G1×G1→G2表示的是一个双线性映射,g为G1群内的随机数生成元;双线性配对参数生成算法MapGen为现有算法;
步骤1.2:根据安全参数k和双线性配对参数,利用公私钥生成算法mamKeyGen生成公共参数pm;
依据安全参数k,TTP调用所述的公私钥生成算法mamKeyGen,首先从p阶整数群Zp中随机选取一个整数s,再利用步骤1.1中的双线性配对参数通过计算完成对PBC双线性配对算法的初始化,然后循环执行幂运算生成参数令则可得到公共参数pm={mamPk,e,p,g,G1,G2};其中mamPk代表用于对客户端实体的明文数据集合计算摘要的公钥;q≤k为正整数;
步骤1.3:TTP将其生成的公共参数pm发布出去;
步骤2:依据收到的公共参数pm,Alice和Bob分别利用KeyGen算法生成其各自的公私密钥对{pka,ska}和{pkb,skb},并分别把其各自的公钥pka和pkb发布出去;其中下述的步骤2.1至步骤2.2描述的技术方案内容即为所述的KeyGen算法。
步骤2.1:依据收到的公共参数pm,Alice和Bob分别调用签名密钥生成算法sigKeyGen生成用于对其各自的密文数据集合进行签名的签名公私钥对(sigPka,sigSka)和(sigPkb,sigSkb),其中sigPka为Alice的签名公钥,sigPkb为Bob的签名公钥,sigSka为Alice的签名私钥,sigSkb为Bob的签名私钥;所述签名密钥生成算法sigKeyGen为现有算法。
步骤2.2:Alice和Bob均从p阶整数群Zp中随机选取两个整数βa,γa和βb,γb,则可得到Alice的明文数据集合加密公钥和对应的密文数据集合解密私钥ska={βa,γa,sigSka}、Bob的明文数据集合加密公钥和对应的密文数据集合解密私钥skb={βb,γb,sigSkb};
步骤2.3:Alice和Bob分别把其各自的公钥pka和pkb发布出去;
步骤3:Alice和Bob分别依据其各自的公钥pka和pkb,通过Enc算法分别对其各自的明文数据集合Da和Db进行加密,对应生成Alice和Bob的密文数据集合Ca、Cb以及Alice和Bob的摘要信息Diga、Digb,且Alice和Bob均将其各自的密文数据集合Ca、Cb发送给Server;其中下述的步骤3.1至步骤3.3描述的技术方案内容即为所述的Enc算法。
步骤3.1:假设Alice的明文数据集合Da={da,1,da,2,...,da,n},Bob的明文数据集合Db={db,1,db,2,...,db,m},为了保护客户端实体的输入隐私,Alice和Bob分别从G1中随机选取元素da,0和db,0,并分别将da,0和db,0加入到Da和Db中;其中Da中的元素da,i∈G1,0≤i≤n;Db中的元素db,t∈G1,0≤t≤m;
步骤3.2:在i的取值范围[0,n]内,Alice按照i从0至n的取值顺序依次从Zp中随机选取整数对ri1、ri2并依次相应得到进而得到Alice的密文数据集合Ca=(cpha,0,cpha,1,...,cpha,n),并将其发送给Server;同时,在t的取值范围[0,m]内,Bob按照t从0至m的取值顺序依次从Zp中随机选取整数对rt3、rt4并依次相应得到进而得到Bob的密文数据集合Cb=(cphb,0,cphb,1,...,cphb,m),并将其发送给Server;
步骤3.3:Alice和Bob分别通过明文摘要生成算法mamGen,即 分别生成Alice的明文数据集合Da的摘要信息Diga和Bob的明文数据集合Db的摘要信息Digb;其中ha,i=H(e(da,i,g))和hb,t=H(e(db,t,g)),其中e(da,i,g)代表da,i和g的配对值;H()代表哈希函数;ha,i代表对da,i和g的配对值计算哈希值;e(db,t,g)代表db,t和g的配对值;hb,t代表对db,t和g的配对值计算哈希值;
步骤4:Alice和Bob分别依据其各自的私钥ska,skb与摘要信息Diga,Digb、以及对方的公钥pkb,pka,通过AuGen算法分别生成Alice的认证信息aua和Bob的认证信息aub并均发送给Server;其中下述的步骤4.1至步骤4.4描述的技术方案内容即为所述的AuGen算法。
步骤4.1:Alice和Bob分别依据其各自的私钥ska,skb计算代理重加密密钥和
步骤4.2:Alice使用Bob的公钥pkb来加密其自己的摘要信息Diga得到Diga的密文Bob使用Alice的公钥pka来加密其自己的摘要信息Digb得到Digb的密文其中r1,r2,r3,r4是从Zp中随机选取的整数;
步骤4.3:Alice和Bob分别依据sigSka,cphB和sigSkb,cphA,通过调用不可抵赖的签名算法sigSign分别生成cphB的签名信息σB和cphA的签名信息σA,完成对cphB和cphA的签名;不可抵赖的签名算法sigSign为现有算法。
步骤4.4:Alice和Bob分别得到其各自的认证信息aua={rka,cphB,σa}与aub={rkb,cphA,σb},且Alice和Bob分别将aua和aub发送给Server;
步骤5:Alice和Bob向Server发送数据集合交集运算的请求;
步骤6:当收到Alice和Bob的数据集合交集运算的请求时,Server依据Alice的密文数据集合Ca和Bob的密文数据集合Cb、以及Alice的认证信息aua和Bob的认证信息aub执行SetOperation算法得到交集运算结果rslta,rsltb和运算结果正确性证据proofa,proofb,并分别将(rslta,proofa)和(rsltb,proofb)发送给Alice和Bob;下述的步骤6.1至步骤6.3描述的技术方案内容即为所述的SetOperation算法。
步骤6.1:先对Ca和Cb进行转化处理,以使Da与Db中所具有的相同明文数据部分能够转化为相同的密文;
分别对cpha,i和cphb,t进行转化,且用Ta,i和Tb,t表示转化后的结果,Ta,i和Tb,t分别表示为mamDa={H(Ta,1),H(Ta,2),...,H(Ta,n)}和mamDb={H(Tb,1),H(Tb,2),...,H(Tb,m)},
步骤6.2:Server依据mamPk、mamDa和mamDb,调用执行运算算法mamProve为Alice和
Bob生成对应的交集运算结果mamRslt和对应的运算结果正确性证据mamWita和mamWitb。所
述mamProve算法为:计算mamRslt=mamDa∩mamDb;计算和计算和令依据欧几里得定理,寻找qa1(s),
qa2(s)使得p2(s)*qa1(s)+Ra(s)*qa2(s)=1成立,从而得到qa1(s),qa2(s)的值,以及寻找qb1
(s),qb2(s)使得p1(s)*qb1(s)+Rb(s)*qb2(s)=1成立,从而得到qb1(s),qb2(s)的值;其中
mamWita和mamWitb均为证明交集运算结果mamRslt正确性的部分证据;mamDa-mamRslt代表
mamDa和mamRslt的差集运算,xa是该差集中的元素;mamDb-mamRslt代表mamDb和mamRslt的
差集运算,xb是该差集中的元素;为子集证据,用来证明集合交集运算结果分别
为对应的参与交集运算的两个数据集合的子集;x′a是mamDa中的元素;x′b是mamDb中的元
素;以及为完整性证据,用来证明对应的参与交集运算的两个数据集
合除交集之外没有其他共同元素;
步骤6.3:Server令rslta={cpha,i|H(e(da,i,g))∈mamRslt},proofa=(mamWita,cphA,σb),rsltb={cphb,t|H(e(db,t,g))∈mamRslt},proofb=(mamWitb,cphB,σa);其中H()代表哈希函数;并分别将(rslta,proofa)和(rsltb,proofb)发送给Alice和Bob;
步骤7:Alice和Bob分别利用其各自保存的摘要信息Diga,Digb以及Server返回的交集运算结果rslta,rsltb和运算结果正确性证据proofa,proofb,通过Verify算法来完成数据集合交集运算结果正确性的验证;其中下述的步骤7.1至步骤7.3描述的技术方案内容即为所述的Verify算法。
步骤7.1:Alice和Bob分别依据sigPka,cphB,σa和sigPkb,cphA,σb,通过调用签名认证算法sigVerify分别验证cphB和cphA的完整性,以确定Sever返回的交集运算结果rslta,rsltb没有被更改,如果sigVerify算法的结果为0,则转至步骤7.3,否则执行步骤7.2;所述签名认证算法sigVerify为现有算法。
步骤7.2:Alice和Bob分别调用成员结果验证算法mamVerify对Sever返回的交集运算结果rslta,rsltb的正确性进行验证,若验证成功则mamVerify算法返回1,同时执行步骤8,若验证失败则mamVerify算法返回0,并转至步骤7.3;下述的步骤7.2.1至步骤7.2.3描述的技术方案内容即为所述的mamVerify算法。
步骤7.2.1:Alice和Bob分别依据其各自的私钥ska,skb分别对cphB,cphA进行解密得到mamDiga,mamDigb;
步骤7.2.2:Alice和Bob分别判断rslta和rsltb是否为空,是,则mamVerify算法返回0,并转至步骤7.3;否,则Alice进行{H(e(da,i,g))|cpha,i∈rslta}-cpha,i的计算,同时Bob进行{H(e(db,t,g))|cphb,t∈rsltb}-cphb,t的计算,还原出Sever返回给它们的mamRslt值,并执行步骤7.2.3;
步骤7.2.3:Alice依据mamPk,mamDigb,mamRslt,mamWita,mamDiga,调用mamVerify算法:a).首先依据mamRslt计算其中x代表mamRslt中的元素;b).通过双线性映射方法判断等式是否成立,是,则认为子集证据和正确,并执行步骤c),否,则mamVerify算法返回0,并转至步骤6.3;c).最后判断等式是否成立,是,则认为完整性证据 正确,mamVerify算法返回1,同时执行步骤8,否,则mamVerify算法返回0,转至步骤7.3;所述双线性映射方法为现有方法。
同样,Bob依据mamPk,mamDigb,mamRslt,mamWitb,mamDiga,调用mamVerify算法:(a).首先依据mamRslt计算其中x代表mamRslt中的元素;(b).通过双线性映射方法判断等式是否成立,是,则认为子集证据和正确,并执行步骤(c),否,则mamVerify算法返回0,并转至步骤6.3;(c).最后判断等式是否成立,是,则认为完整性证据正确,mamVerify算法返回1,同时执行步骤8,否,则mamVerify算法返回0,转至步骤7.3;
步骤7.3:Verify算法执行结束,返回0;
步骤8:客户端体Alice和Bob分别依据其各自的私钥ska和skb,利用Dec算法分别对其各自收到的数据集合交集运算结果rslta和rsltb进行解密生成相应的明文;下述内容即为Dec算法内容:
假设rslta=(cpha,j,...,cpha,k),其中1≤j,k≤n,可以借助私钥ska,利用公式来解密rslta,其中j≤i≤k,得到相应的明文Da'=Da∩Db={da,j,...,da,k};
假设rsltb=(cphb,j,...,cphb,k),其中1≤j,k≤m,可以借助私钥skb,利用公式来解密rsltb,其中j≤t≤k,得到相应的明文Db'=Da∩Db={db,j,...,db,k}。
在本实施方式的面向外包加密数据的可验证交集运算方法中,实体间的具体通信过程可以划分为十个阶段,如图2所示。为了描述方便,以下在描述实体间的具体通信过程时,采用下面的格式进行描述。
[R]t:program,表示实体R在时刻t执行算法program;
[R1→R2]t:data,表示实体R1在时刻t将数据data传至实体R2;
[R→*]t:data,表示实体R在时刻t将数据data发布出去。
本实施方式中实体间的具体通信过程的十个阶段为:
(1)初始化阶段:在t0时刻,TTP进行公共参数初始化,TTP依据安全参数k来生成公共参数pm,之后把公共参数pm发送出去,本阶段包括以下四个步骤:
(2)Alice密钥生成阶段:在t1时刻,Alice依据TTP的公共参数pm,来生成公私密钥对{pka,ska},之后把公钥pka发布出去,该阶段包括以下两个步骤:
(3)Bob密钥生成阶段:在t2时刻,Bob依据TTP的公共参数pm,来生成公私密钥对
{pkb,skb},之后把公钥pkb发布出去,该阶段包括以下两个步骤:
(4)Alice数据加密阶段:在t3时刻,Alice依据TTP的公共参数pm,自己生成的公钥pka以及明文数据集合Da,来生成密文数据集合Ca,以及摘要信息Diga,之后把密文数据集合Ca发送给Server,该阶段包括以下两个步骤:
(5)Bob数据加密阶段:在t4时刻,Bob依据TTP的公共参数pm,自己生成的公钥pkb以及明文数据集合Db,来生成密文数据集合Cb,以及摘要信息Digb,之后把密文数据集合Cb发送给服务器端Server,该阶段包括以下两个步骤:
(6)Alice认证信息生成阶段:在t5时刻,Alice依据自己生成的私钥ska摘要信息Diga,以及Bob的公钥pkb,来生成认证信息aua,之后把认证信息aua发送给Server,该阶段包括以下两个步骤:
(7)Bob认证信息生成阶段:在t6时刻,Bob依据自己生成的私钥skb摘要信息Digb,以及Alice的公钥pka,来生成认证信息aub,之后把认证信息aub发送给Server,该阶段包括以下两个步骤:
(8)计算阶段:在tc时刻,Server依据Ca和Cb,以及aua和aub执行数据集合交集运算。该阶段包括以下三个步骤:
(9)验证阶段:在tv时刻,Alice和Bob分别利用自己保存的数据集合摘要值以及Server返回的结果和证据来完成数据集合交集运算结果正确性的验证。验证阶段包括以下两个步骤:
(10)解密阶段:在tv+1时刻,Alice和Bob分别利用其各自的私钥ska和skb,对其各自收到的数据集合交集运算结果rslta和rsltb进行解密生成相应的明文;该阶段包括以下两个步骤:
(a){Da'}←Dec(ska,rslta);
(b){Db'}←Dec(skb,rsltb)。
根据本实施方式的面向外包加密数据的可验证交集运算方法的面向外包加密数据的可验证交集运算系统,如图3所示,由可信第三方实体即TTP、至少两个客户端实体即Alice与Bob以及外包服务器端实体即Server构成;所述客户端实体为数据集合的持有者以及数据集合交集运算的请求者;其中,TTP包括公共参数生成与分发模块;Server包括数据集合交集运算模块;Alice与Bob均包括密钥生成模块、数据加密模块、认证信息生成模块、结果验证模块和数据解密模块;
本实施方式的公共参数生成与分发模块,负责整个系统中所有实体的公共参数的初始化,并在初始化公共参数后将公共参数分别发送给Server、Alice与Bob;公共参数初始化及分发的实现过程为:
(1)可信第三方初始化公共参数的操作封装在TTP类中,首先创建该类的对象,可信第三方之后的初始化操作依赖该对象的方法调用。
(2)可信第三方调用公共参数生成方法,然后调用文件操作函数把公共参数写入文件中。
(3)利用Qt中Socket的相关函数完成文件的传输。
本实施方式的数据集合交集运算模块,用于当Alice与Bob发起数据集合交集运算请求时,根据从客户端实体接收的认证信息,对Alice和Bob提供的密文数据集合进行交集运算,同时计算运算结果正确性的证据,并将所述运算结果和所述证据分别发送给Alice和Bob;
本实施方式的密钥生成模块,负责生成公私密钥对即用于对客户端实体的明文数据集合进行加密的公钥和用于对客户端实体的对应的密文数据集合进行解密的私钥,并将公钥发送给对应的另一客户端实体的数据加密模块;
本实施方式的数据加密模块,负责利用对应的另一客户端实体的公钥对本客户端实体的明文数据集合进行加密,完成对本客户端实体的明文数据集合向密文数据集合的转换,同时生成本客户端实体的明文数据集合摘要;
本实施方式的认证信息生成模块,负责生成代理重加密密钥、客户端实体的明文数据集合摘要的密文以及其对应的签名,进而生成客户端实体的认证信息,并将该认证信息发送给Server;
本实施方式的结果验证模块,负责完成对客户端实体收到的所述运算结果和所述证据的正确性验证;
本实施方式的数据解密模块,若所述结果验证模块验证成功,则对数据集合交集运算结果的密文数据集合进行解密,完成该密文数据集合向明文数据集合的转换。
本实施方式的面向外包加密数据的可验证交集运算系统的集合交集运算具体过程如下:
(1)客户端Alice的操作封装在用户类中,当创建该类的对象后,客户端Alice的之后操作都依赖该对象的方法调用。
(2)客户端Alice调用函数密钥生成函数生成密钥。
(3)客户端Alice调用函数加密算法加密数据集合。
(4)客户端Alice调用函数认证信息生成算法生成认证信息。
(5)客户端Alice调用文件操作函数将生成的密文数据集合写入文件cipher.txt中。同时也将认证信息写入文件中。
(6)客户端Bob的操作同样封装在用户类中,首先创建该类的对象,客户端Bob的之后操作依赖该对象的方法调用。之后跟客户端Alice一样调用相关函数完成过程(2)-(5)。
(7)客户端Alice和Bob分布发送密文数据集合和认证信息到服务器端。
(8)服务器端依据接收到的密文数据集合和认证信息计算集合交集和对应的证据。
(9)服务器端执行数据转换函数将密文数据集合转换为大整数。
(10)服务器调用交集运算函数计算大整数的交集。
(11)服务器端依据大整数集合的交集,调用密文运算生成函数计算交集对应的密文数据集合。
(12)服务器端调用证据生成函数生成计算结果正确性的证据。返回客户端Alice和Bob对应的结果和证据。
本实施方式的面向外包加密数据的可验证交集运算系统的开发平台:硬件环境:Intel(R)Core(TM)i3CPU 550@3.20GH处理器,4.00GB DDR2内存;软件环境:Ubuntu 64bit操作系统,开发语言为C++,工具为Qt Creator。
本实施方式的面向外包加密数据的可验证交集运算系统用到的开发工具包括:
(1)PBC函数库:PBC(Pairing-Based Cryptography)函数库是一个基于GMPlibrary的用来执行双线性映射运算的开源库,完全由C语言编写而成。它提供了用于生成双线性映射相关循环群的接口,避免了程序员了解双线性映射以及椭圆曲线的数学细节。
PBC函数库主要包含了配对相关函数和元素相关函数。配对相关函数拥有初始化pairing、双线性配对、双线性配对相关循环群等函数。元素相关函数拥有元素初始化、元素赋值、元素转换、元素运算、元素比较、元素随机生成和元素导入导出等函数。
本实施方式的系统从PBC函数库提供的7类不同的配对参数中,选择类型A作为配对参数,它对应的椭圆曲线方程为:y2=x3+x,其中大素数r=730750818665451621361119245571504901405976559617。
另外,本实施方式面向外包加密数据的可验证交集运算方法是基于双线性映射实现的,因此构建的方案使用了大量的双线性映射。双线性配对的具体实现是基于PBC函数库。在PBC函数库中,双线性配对的数据结构为:配对上下文参数类型pairing_t和元素类型element_t。
(2)NTL函数库:NTL(Number Theory Library)函数库是一个由C++语言编写而成的高性能函数库,它提供了任意长度整数的数据结构和算法、任意精度的浮点运算功能、由有限域整数和任意整数构成的向量、矩阵、多项式的相关数据结构等功能。
本发明系统主要使用了任意长度整数的数据结构以及由有限域整数构成的多项式数据结构等功能。
(3)OpenSSL函数库:OpenSSL函数库是一个由C语言编写而成的函数库。它实现了目前大部分主流的密码算法和标准。其中包括DES、AES、CAST、Blowfish、IDEA、RC2、RC5等对称加密算法,DH、RSA、EC、DSA等非对称加密算法,MD2、MD5、SHA-1等信息摘要算法以及密钥协商、证书管理等功能。其中对称加密算法都支持电子密码本模式、加密分组链接模式、加密反馈模式和输出反馈模式等四种常用的分组密码加密模式。
本发明系统主要使用了其中的数字签名功能,用于完成数据集合双线性累加器值加密之后的验证,保证在传输过程中加密数据的完整性。
(4)Socket通信:本发明系统中四个实体间通信都采用基于TCP/IP的Socket双向通信技术。Socket通常被称为“套接字”。应用程序通过Socket来建立网络连接。当连接成功建立后,应用程序两端分别产生Socket实例。本发明系统使用Qt函数库对套接字封装的接口来完成程序编写。主要有以下几个部分:第三方可信实体分发公共参数;客户端两个实体间交换公共密钥;客户端实体与外包服务器端实体进行数据传输。
综上所述,本发明提供的可扩展、易实施的面向外包加密数据的可验证交集运算的系统及方法,能在不可信的网络环境下保证计算的正确性与数据的机密性,并且这种系统和方法具有普适性,即与现有系统兼容,可以实现很好的系统升级和过渡。且拥有保护数据隐私性、通信代价小和正确性验证效率高等特点,因此有着广泛的应用前景,可以用来实现可验证的外包密文数据的交集运算,具体应用包括数据库操作、大数据处理等。
Claims (9)
1.一种面向外包加密数据的可验证交集运算方法,其特征在于:该方法在可信第三方实体即TTP、至少两个客户端实体即Alice与Bob以及外包服务器端实体即Server之间进行,其中所述客户端实体为数据集合的持有者以及数据集合交集运算的请求者;包括如下步骤:
步骤1:TTP生成公共参数pm并把pm分别发送给Server、Alice和Bob;
步骤2:依据收到的公共参数pm,Alice和Bob分别生成其各自的公私密钥对{pka,ska}和{pkb,skb},并分别把其各自的公钥pka和pkb发布出去;
步骤3:Alice和Bob分别依据其各自的公钥pka和pkb,分别对其各自的明文数据集合Da和Db进行加密,对应生成Alice和Bob的密文数据集合Ca、Cb以及Alice和Bob的摘要信息Diga、Digb,且Alice和Bob均将其各自的密文数据集合Ca、Cb发送给Server;
步骤4:Alice和Bob分别依据其各自的私钥ska,skb与摘要信息Diga,Digb、以及对方的公钥pkb,pka,分别生成Alice的认证信息aua和Bob的认证信息aub并均发送给Server;
步骤5:Alice和Bob向Server发送数据集合交集运算的请求;
步骤6:当收到Alice和Bob的数据集合交集运算的请求时,Server依据Alice的密文数据集合Ca和Bob的密文数据集合Cb、以及Alice的认证信息aua和Bob的认证信息aub进行计算得到交集运算结果rslta,rsltb和运算结果正确性证据proofa,proofb,并分别将(rslta,proofa)和(rsltb,proofb)发送给Alice和Bob;
步骤7:Alice和Bob分别利用其各自保存的摘要信息Diga,Digb以及Server返回的交集运算结果rslta,rsltb和运算结果正确性证据proofa,proofb,完成数据集合交集运算结果正确性的验证;
步骤8:客户端实体Alice和Bob分别依据其各自的私钥ska和skb,分别对其各自收到的数据集合交集运算结果rslta和rsltb进行解密生成相应的明文。
2.根据权利要求1所述的面向外包加密数据的可验证交集运算方法,其特征在于:所述步骤1包括如下步骤:
步骤1.1:生成双线性配对参数;
设定安全参数k,并依据该安全参数k,TTP生成双线性配对参数(e,g,G1,G2,p);其中,G={e,G1,G2,p},G1和G2是两个阶为素数p的乘法循环群,e:G1×G1→G2表示的是一个双线性映射,g为G1群内的随机数生成元;
步骤1.2:根据安全参数k和双线性配对参数,生成公共参数pm;
依据安全参数k,TTP首先从p阶整数群Zp中随机选取一个整数s,再利用步骤1.1中的双线性配对参数完成对PBC双线性配对算法的初始化,然后循环执行幂运算生成参数令则可得到公共参数pm={mamPk,e,p,g,G1,G2};其中mamPk代表用于对客户端实体的明文数据集合计算摘要的公钥;q≤k为正整数;
步骤1.3:TTP将其生成的公共参数pm发布出去。
3.根据权利要求2所述的面向外包加密数据的可验证交集运算方法,其特征在于:所述步骤2包括如下步骤:
步骤2.1:依据收到的公共参数pm,Alice和Bob分别调用签名密钥生成算法sigKeyGen生成用于对其各自的密文数据集合进行签名的签名公私钥对(sigPka,sigSka)和(sigPkb,sigSkb),其中sigPka为Alice的签名公钥,sigPkb为Bob的签名公钥,sigSka为Alice的签名私钥,sigSkb为Bob的签名私钥;
步骤2.2:Alice和Bob均从p阶整数群Zp中随机选取两个整数βa,γa和βb,γb,则可得到Alice的明文数据集合加密公钥和对应的密文数据集合解密私钥ska={βa,γa,sigSka}、Bob的明文数据集合加密公钥和对应的密文数据集合解密私钥skb={βb,γb,sigSkb};
步骤2.3:Alice和Bob分别把其各自的公钥pka和pkb发布出去。
4.根据权利要求3所述的面向外包加密数据的可验证交集运算方法,其特征在于:所述步骤3包括如下步骤:
步骤3.1:假设Alice的明文数据集合Da={da,1,da,2,...,da,n},Bob的明文数据集合Db={db,1,db,2,...,db,m},为了保护客户端实体的输入隐私,Alice和Bob分别从G1中随机选取元素da,0和db,0,并分别将da,0和db,0加入到Da和Db中;其中Da中的元素da,i∈G1,0≤i≤n;Db中的元素db,t∈G1,0≤t≤m;
步骤3.2:在i的取值范围[0,n]内,Alice按照i从0至n的取值顺序依次从Zp中随机选取整数对ri1、ri2并依次相应得到进而得到Alice的密文数据集合Ca=(cpha,0,cpha,1,...,cpha,n),并将其发送给Server;同时,在t的取值范围[0,m]内,Bob按照t从0至m的取值顺序依次从Zp中随机选取整数对rt3、rt4并依次相应得到进而得到Bob的密文数据集合Cb=(cphb,0,cphb,1,...,cphb,m),并将其发送给Server;
步骤3.3:Alice和Bob分别按照计算并生成Alice的明文数据集合Da的摘要信息Diga和Bob的明文数据集合Db的摘要信息Digb;其中ha,i=H(e(da,i,g))和hb,t=H(e(db,t,g)),其中e(da,i,g)代表da,i和g的配对值;H()代表哈希函数;ha,i代表对da,i和g的配对值计算哈希值;e(db,t,g)代表db,t和g的配对值;hb,t代表对db,t和g的配对值计算哈希值。
5.根据权利要求4所述的面向外包加密数据的可验证交集运算方法,其特征在于:所述步骤4包括如下步骤:
步骤4.1:Alice和Bob分别依据其各自的私钥ska,skb计算代理重加密密钥和
步骤4.2:Alice使用Bob的公钥pkb来加密其自己的摘要信息Diga得到Diga的密文Bob使用Alice的公钥pka来加密其自己的摘要信息Digb得到Digb的密文其中r1,r2,r3,r4是从Zp中随机选取的整数;
步骤4.3:Alice和Bob分别依据sigSka,cphB和sigSkb,cphA,通过调用不可抵赖的签名算法sigSign分别生成cphB的签名信息σB和cphA的签名信息σA,完成对cphB和cphA的签名;
步骤4.4:Alice和Bob分别得到其各自的认证信息aua={rka,cphB,σa}与aub={rkb,cphA,σb},且Alice和Bob分别将aua和aub发送给Server。
6.根据权利要求5所述的面向外包加密数据的可验证交集运算方法,其特征在于:所述步骤6包括如下步骤:
步骤6.1:先对Ca和Cb进行转化处理,以使Da与Db中所具有的相同明文数据部分能够转化为相同的密文;
分别对cpha,i和cphb,t进行转化,且用Ta,i和hb,t表示转化后的结果,Ta,i和Tb,t分别表示为mamDa={H(Ta,1),H(Ta,2),...,H(Ta,n)}和mamDb={H(Tb,1),H(Tb,2),...,H(Tb,m)},
步骤6.2:Server依据mamPk、mamDa和mamDb,为Alice和Bob生成对应的交集运算结果mamRslt和对应的运算结果正确性证据mamWita和mamWitb,其中mamRslt=mamDa∩mamDb;和均为证明交集运算结果mamRslt正确性的部分证据;其中mamDa-mamRslt代表mamDa和mamRslt的差集运算,xa是该差集中的元素;mamDb-mamRslt代表mamDb和mamRslt的差集运算,xb是该差集中的元素;为子集证据,用来证明集合交集运算结果分别为对应的参与交集运算的两个数据集合的子集;以及为完整性证据,用来证明对应的参与交集运算的两个数据集合除交集之外没有其他共同元素;令x′a是mamDa中的元素,x′b是mamDb中的元素;依据欧几里得定理,寻找qa1(s),qa2(s)使得p2(s)*qa1(s)+Ra(s)*qa2(s)=1成立,从而得到qa1(s),qa2(s)的值,以及寻找qb1(s),qb2(s)使得p1(s)*qb1(s)+Rb(s)*qb2(s)=1成立,从而得到qb1(s),qb2(s)的值;
步骤6.3:Server令rslta={cpha,i|H(e(da,i,g))∈mamRslt},proofa=(mamWita,cphA,σb),rsltb={cphb,t|H(e(db,t,g))∈mamRslt},proofb=(mamWitb,cphB,σa);其中H()代表哈希函数;并分别将(rslta,proofa)和(rsltb,proofb)发送给Alice和Bob。
7.根据权利要求6所述的面向外包加密数据的可验证交集运算方法,其特征在于:所述步骤7包括如下步骤:
步骤7.1:Alice和Bob分别依据sigPka,cphB,σa和sigPkb,cphA,σb,通过调用签名认证算法sigVerify分别验证cphB和cphA的完整性,以确定Sever返回的交集运算结果rslta,rsltb没有被更改,如果sigVerify算法的结果为0,则转至步骤7.3,否则执行步骤7.2;
步骤7.2:Alice和Bob分别调用成员结果验证算法mamVerify对Sever返回的交集运算结果rslta,rsltb的正确性进行验证,若验证成功则,mamVerify算法返回1,同时执行步骤8,若验证失败则mamVerify算法返回0,并转至步骤7.3;
步骤7.2.1:Alice和Bob分别依据其各自的私钥ska,skb分别对cphB,cphA进行解密得到mamDiga,mamDigb;
步骤7.2.2:Alice和Bob分别判断rslta和rsltb是否为空,是,则mamVerify算法返回0,并转至步骤7.3;否,则Alice进行{H(e(da,i,g))|cpha,i∈rslta}-cpha,i的计算,同时Bob进行{H(e(db,t,g))|cphb,t∈rsltb}-cphb,t的计算,还原出Sever返回给它们的mamRslt值,并执行步骤7.2.3;
步骤7.2.3:Alice依据mamPk,mamDigb,mamRslt,mamWita,mamDiga,调用成员结果验证算法mamVerify:a).首先依据mamRslt计算其中x代表mamRslt中的元素;b).通过双线性映射方法判断等式是否成立,是,则认为子集证据和正确,并执行步骤c),否,则mamVerify算法返回0,并转至步骤7.3;c).最后判断等式是否成立,是,则认为完整性证据正确,mamVerify算法返回1,同时执行步骤8,否,则mamVerify算法返回0,转至步骤7.3;
同样,Bob依据mamPk,mamDigb,mamRslt,mamWitb,mamDiga,调用成员结果验证算法mamVerify:(a).首先依据mamRslt计算其中x代表mamRslt中的元素;(b).判断等式是否成立,是,则认为子集证据和正确,并执行步骤(c),否,则mamVerify算法返回0,并转至步骤7.3;(c).最后判断等式是否成立,是,则认为完整性证据正确,mamVerify算法返回1,同时执行步骤8,否,则mamVerify算法返回0,转至步骤7.3;
步骤7.3:Verify算法执行结束,返回0。
8.根据权利要求7所述的面向外包加密数据的可验证交集运算方法,其特征在于:所述步骤8包括如下内容:
假设rslta=(cpha,j,...,cpha,k),其中1≤j,k≤n,借助私钥ska,利用公式来解密rslta,其中j≤i≤k,得到相应的明文Da'=Da∩Db={da,j,...,da,k};
假设rsltb=(cphb,j,...,cphb,k),其中1≤j,k≤m,借助私钥skb,利用公式来解密rsltb,其中j≤t≤k,得到相应的明文Db=Da∩Db={db,j,...,db,k}。
9.一种面向外包加密数据的可验证交集运算系统,采用根据权利要求1所述的面向外包加密数据的可验证交集运算方法,其特征在于:该系统由可信第三方实体即TTP、至少两个客户端实体即Alice与Bob以及外包服务器端实体即Server构成;所述客户端实体为数据集合的持有者以及数据集合交集运算的请求者;其中,TTP包括公共参数生成与分发模块;Server包括数据集合交集运算模块;Alice与Bob均包括密钥生成模块、数据加密模块、认证信息生成模块、结果验证模块和数据解密模块;
所述公共参数生成与分发模块,负责整个系统中所有实体的公共参数的初始化,并在初始化公共参数后将公共参数分别发送给Server、Alice与Bob;
所述数据集合交集运算模块,用于当Alice与Bob发起数据集合交集运算请求时,根据从客户端实体接收的认证信息,对Alice和Bob提供的密文数据集合进行交集运算,同时计算运算结果正确性的证据,并将所述运算结果和所述证据分别发送给Alice和Bob;
所述密钥生成模块,负责生成公私密钥对,即用于对客户端实体的明文数据集合进行加密的公钥和用于对客户端实体的对应的密文数据集合进行解密的私钥;
所述数据加密模块,负责对客户端实体的明文数据集合进行加密,完成对客户端实体的明文数据集合向密文数据集合的转换,同时生成客户端实体的明文数据集合摘要;
所述认证信息生成模块,负责生成代理重加密密钥、客户端实体的明文数据集合摘要的密文以及其对应的签名,进而生成客户端实体的认证信息,并将该认证信息发送给Server;
所述结果验证模块,负责完成对客户端实体收到的所述运算结果和所述证据的正确性验证;
所述数据解密模块,若所述结果验证模块验证成功,则对数据集合交集运算结果的密文数据集合进行解密,完成该密文数据集合向明文数据集合的转换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610130706.9A CN105812141B (zh) | 2016-03-07 | 2016-03-07 | 一种面向外包加密数据的可验证交集运算方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610130706.9A CN105812141B (zh) | 2016-03-07 | 2016-03-07 | 一种面向外包加密数据的可验证交集运算方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105812141A CN105812141A (zh) | 2016-07-27 |
CN105812141B true CN105812141B (zh) | 2018-11-27 |
Family
ID=56466988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610130706.9A Active CN105812141B (zh) | 2016-03-07 | 2016-03-07 | 一种面向外包加密数据的可验证交集运算方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105812141B (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107196926B (zh) * | 2017-04-29 | 2020-04-14 | 河南师范大学 | 一种云外包隐私集合比较方法与装置 |
CN107451281B (zh) * | 2017-08-08 | 2020-09-29 | 东北大学 | 基于ads的外包数据库sql查询完整性验证系统及方法 |
CN107659395B (zh) * | 2017-10-30 | 2021-09-24 | 武汉大学 | 一种多服务器环境下基于身份的分布式认证方法及系统 |
CN108055118B (zh) * | 2017-12-11 | 2020-06-05 | 东北大学 | 一种隐私保护的图数据交集计算方法 |
CN108052834B (zh) * | 2017-12-11 | 2019-09-27 | 东北大学 | 一种面向密态图结构的近似最短距离查询方法 |
CN107786580B (zh) * | 2017-12-12 | 2020-10-02 | 南京航空航天大学 | 基于云计算平台的Paillier加密方法 |
CN108365959B (zh) * | 2018-02-14 | 2020-09-15 | 东北大学 | 一种云环境下全代理的外包多项式验证方法 |
CN108494738B (zh) * | 2018-02-27 | 2020-10-27 | 华南理工大学 | 一种可验证的后量子电子投票系统及其实现方法 |
CN108388807B (zh) * | 2018-02-28 | 2020-05-22 | 华南理工大学 | 一种支持偏好搜索和逻辑搜索的高效可验证的多关键字排序可搜索加密方法 |
CN109040076B (zh) * | 2018-08-09 | 2020-07-24 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、系统、装置、设备及介质 |
CN109274655B (zh) * | 2018-09-04 | 2021-07-13 | 东北大学 | 一种面向外包流式数据的查询完整性验证方法 |
CN109495465B (zh) * | 2018-11-05 | 2020-12-25 | 河南师范大学 | 基于智能合约的隐私集合交集方法 |
CN109547429B (zh) * | 2018-11-16 | 2020-12-01 | 湖南数格信息科技有限公司 | 一种加密条形码群绑定与解绑方法 |
CN109889341A (zh) * | 2019-01-15 | 2019-06-14 | 思力科(深圳)电子科技有限公司 | 数据处理方法、电子标签及射频读卡器 |
CN109886029B (zh) * | 2019-01-28 | 2020-09-22 | 湖北工业大学 | 基于多项式表示的隐私保护集合交集计算方法与系统 |
CN110336837B (zh) * | 2019-08-06 | 2020-10-09 | 福州大学 | 一种实用性的云端隐私保护外包计算系统及其计算方法 |
CN110891046A (zh) * | 2019-08-26 | 2020-03-17 | 湖北工业大学 | 一种基于集合表示方法及安全计算协议的加密方法 |
CN110933026B (zh) * | 2019-10-22 | 2021-06-04 | 东北大学 | 一种轻量级隐私保护的等值查询方法 |
CN110826089B (zh) * | 2019-12-12 | 2020-06-30 | 四川大学 | 一种实现大尺度矩阵乘法安全高效的可验证外包计算方法、客户端及云计算系统 |
CN112217639B (zh) * | 2020-09-30 | 2022-12-20 | 招商局金融科技有限公司 | 数据的加密共享方法、装置、电子设备及计算机存储介质 |
CN112651051A (zh) * | 2020-12-23 | 2021-04-13 | 上海同态信息科技有限责任公司 | 一种基于不可信第三方隐私数据求交集散列校验方法 |
CN112651042A (zh) * | 2020-12-23 | 2021-04-13 | 上海同态信息科技有限责任公司 | 一种基于可信第三方隐私数据求交集方法 |
CN112737772B (zh) * | 2020-12-25 | 2022-10-25 | 山东师范大学 | 私有集合交集数据的安全统计方法、终端设备及系统 |
CN113065155A (zh) * | 2021-03-26 | 2021-07-02 | 杭州宇链科技有限公司 | 一种基于可信执行环境辅助的隐私集合求交方法 |
CN114915426B (zh) * | 2022-05-20 | 2023-12-15 | 曲阜师范大学 | 基于无证书的消息可恢复盲签名方法 |
CN117056983B (zh) * | 2023-10-13 | 2024-01-02 | 中国移动紫金(江苏)创新研究院有限公司 | 多级可控数据共享授权方法、装置及区块链系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102938767A (zh) * | 2012-11-13 | 2013-02-20 | 西安电子科技大学 | 基于云数据外包系统的高效可验证的模糊关键词搜索方法 |
CN103309973A (zh) * | 2013-06-08 | 2013-09-18 | 上海交通大学 | 可验证外包数据查询的方法及系统 |
CN104038349A (zh) * | 2014-07-03 | 2014-09-10 | 西安电子科技大学 | 一种基于kp-abe的有效可验证的公钥可搜索加密方法 |
CN104601586A (zh) * | 2015-01-29 | 2015-05-06 | 西安电子科技大学 | 一种公开可验证的外包统计方法 |
CN105072086A (zh) * | 2015-07-06 | 2015-11-18 | 武汉科技大学 | 一种基于MapReduce的云存储批量审计方法 |
-
2016
- 2016-03-07 CN CN201610130706.9A patent/CN105812141B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102938767A (zh) * | 2012-11-13 | 2013-02-20 | 西安电子科技大学 | 基于云数据外包系统的高效可验证的模糊关键词搜索方法 |
CN103309973A (zh) * | 2013-06-08 | 2013-09-18 | 上海交通大学 | 可验证外包数据查询的方法及系统 |
CN104038349A (zh) * | 2014-07-03 | 2014-09-10 | 西安电子科技大学 | 一种基于kp-abe的有效可验证的公钥可搜索加密方法 |
CN104601586A (zh) * | 2015-01-29 | 2015-05-06 | 西安电子科技大学 | 一种公开可验证的外包统计方法 |
CN105072086A (zh) * | 2015-07-06 | 2015-11-18 | 武汉科技大学 | 一种基于MapReduce的云存储批量审计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105812141A (zh) | 2016-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105812141B (zh) | 一种面向外包加密数据的可验证交集运算方法及系统 | |
Bonawitz et al. | Practical secure aggregation for privacy-preserving machine learning | |
Li et al. | Full verifiability for outsourced decryption in attribute based encryption | |
Seo et al. | An efficient certificateless encryption for secure data sharing in public clouds | |
Wang et al. | Oruta: Privacy-preserving public auditing for shared data in the cloud | |
Gennaro et al. | Non-interactive verifiable computing: Outsourcing computation to untrusted workers | |
US20220006615A1 (en) | Computer-implemented system and method for distributing shares of digitally signed data | |
Garillot et al. | Threshold schnorr with stateless deterministic signing from standard assumptions | |
US10630476B1 (en) | Obtaining keys from broadcasters in supersingular isogeny-based cryptosystems | |
Alexandru et al. | Secure multi-party computation for cloud-based control | |
JP2022531593A (ja) | Aesカウンタモード暗号化において準群演算によって暗号化された整数を加算および比較するシステムおよび方法 | |
Nasiraee et al. | Privacy-preserving distributed data access control for cloudiot | |
Qin et al. | Simultaneous authentication and secrecy in identity-based data upload to cloud | |
Wang et al. | Tag-based verifiable delegated set intersection over outsourced private datasets | |
Chatel et al. | Verifiable encodings for secure homomorphic analytics | |
Zickau et al. | Applied attribute-based encryption schemes | |
Yang et al. | Secure and efficient parallel hash function construction and its application on cloud audit | |
Talviste | Applying secure multi-party computation in practice | |
Peng et al. | Efficient distributed decryption scheme for IoT gateway-based applications | |
Rewadkar et al. | Cloud storage system enabling secure privacy preserving third party audit | |
Ziegler et al. | Fine-grained access control in industrial Internet of Things: evaluating outsourced attribute-based encryption | |
Cui et al. | Towards Multi-User, Secure, and Verifiable $ k $ NN Query in Cloud Database | |
Hu et al. | Public-key encryption for protecting data in cloud system with intelligent agents against side-channel attacks | |
Ould-Yahia et al. | Towards privacy and ownership preserving of outsourced health data in IoT-cloud context | |
Ma et al. | Plaintext-checkable encryption with unlink-CCA security in the standard model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |