本技术涉及多方安全计算和隐私求交,尤其涉及一种隐私求交方法、装置及电子设备。
背景技术:
1、隐私求交(private set intersection,psi),是密码学中多方安全计算技术领域近年来兴起的一个重要场景。psi在金融、政务、工业等领域的敏感隐私数据流通中发挥了重要作用,经常在联合统计、联合建模前直接应用psi进行数据对齐,除此之外,在一些如交易流水核验等业务场景中,也能直接应用隐私求交来解决。
2、在隐私求交的具体场景中,有一类问题是两个参与方的数据量的量级不对等,即有一方的数据量远大于另一方,我们将这类问题称为非对称隐私求交。这类非对称psi一般出现在具有查询意图的求交场景中,即一个参与方拥有较大的数据量,作为被查询方,另一个参与方用较少量的数据进行求交查询,作为查询方,最后由查询方获取查询结果——即其较少量的数据与被查询方的大量数据的交集。
3、由于实际场景中被查询方的数据量往往很大,甚至达到十亿级以上,而查询方查询的数据量可能最多是百万级的,若使用通用的对称数据量下的psi方案,协议的总通信量可能达到数十gb,因为其通信量与被查询方数据量成正比。
4、现有技术中的一些psi实现方案,可以做到和被查询方次线性的通信量,故在此非对称psi场景中,其通信量会比其他通用psi方案要少1个数量级以上。
5、然而,在这些psi实现方案中,其计算开销较大,计算效率较低。
技术实现思路
1、本技术实施例提供一种隐私求交方法、装置及电子设备,用以解决现有技术中存在的隐私求交计算中在通信量与计算开销两方面的综合性能较差的技术问题。
2、本技术实施例提供一种隐私求交方法,应用于接收方设备,所述接收方设备持有n条数据x,发送方设备持有m条数据y,所述方法,包括:
3、基于k个哈希函数,对所述n条数据x执行布谷鸟哈希计算,得到放置有所述n条数据x的接收方哈希表,且所述接收方哈希表中的每个位置仅存放一条数据x,未存放有数据x的位置放置有随机数,所述接收方哈希表包含的位置的数量大于n,所述接收方哈希表中第i个位置存放的数据称作数据zi,所述k个哈希函数还用于所述发送方设备对所述m条数据y执行哈希计算,得到放置有所述m条数据y的发送方哈希表,且每条数据y放置在所述发送方哈希表的k个位置,所述发送方哈希表的第i个位置存放的第j条数据y称作数据hij,h(i)为第i个位置存放的数据y的数量,所述发送方哈希表与所述接收方哈希表包含的位置的数量相同;
4、基于所述接收方哈希表中的数据zi,与所述发送方设备之间执行多点oprf协议,得到与每条数据zi和每个种子si均一一对应的伪随机数,作为接收方伪随机数oprf(si,zi),在执行多点oprf协议之后,所述发送方设备获得有与所述发送方哈希表的每个位置i一一对应的种子si,使得所述发送方设备使用每个种子si,计算该种子si对应位置i的数据y的伪随机数,作为发送方伪随机数oprf(si,hij),使得所述发送方设备针对每个位置i,使用第i个位置的h(i)个发送方伪随机数oprf(si,hij),计算p(i)个多项式函数fir(x),p(i)为h(i)除以t的商值向上取整,t为多项式函数的次数,r的取值为1至p(i)的整数,其中,h(i)个发送方伪随机数oprf(si,hij)按顺序且每组t个划分为p(i)组,最后一组发送方伪随机数oprf(si,hij)的数量小于等于t,第r个多项式函数fir(x)为基于第r组发送方伪随机数oprf(si,hij)计算得到的,且第r组发送方伪随机数oprf(si,hij)为第r个多项式函数fir(x)的所有的根;
5、基于得到的接收方伪随机数oprf(si,zi),以及所述发送方设备计算出的多项式函数fir(x),通过与所述发送方设备之间的消息交互,采用同态加密算法,计算所述n条数据x和所述m条数据y之间的交集数据。
6、进一步的,所述基于得到的接收方伪随机数oprf(si,zi),以及所述发送方设备计算出的多项式函数fir(x),通过与所述发送方设备之间的消息交互,采用同态加密算法,计算所述n条数据x和所述m条数据y之间的交集数据,包括:
7、使用同态加密算法的公钥,对每个位置i对应的接收方伪随机数oprf(si,zi)进行加密,得到密文数据epk(oprf(si,zi)),并发送至所述发送方设备,使得所述发送方设备利用第i个位置对应的p(i)个多项式函数fir(x),对所述密文数据epk(oprf(si,zi))执行同态运算,得到与第i个位置对应的p(i)个多项式密文epk(fir(oprf(si,zi))),并发送至所述接收方设备;
8、使用同态加密算法的私钥,对接收的与第i个位置对应的p(i)个多项式密文epk(fir(oprf(si,zi)))进行解密,得到p(i)个解密结果;
9、如果所述p(i)个解密结果中任一解密结果为0,确定第i个位置的数据zi为所述n条数据x和所述m条数据y之间的交集数据。
10、本技术实施例还提供一种隐私求交方法,应用于发送方设备,所述发送方设备持有m条数据y,接收方设备持有n条数据x,所述方法,包括:
11、基于k个哈希函数,对所述m条数据y执行哈希计算,得到放置有所述m条数据y的发送方哈希表,且每条数据y放置在所述发送方哈希表的k个位置,所述发送方哈希表的第i个位置存放的第j条数据y称作数据hij,h(i)为第i个位置存放的数据y的数量,所述k个哈希函数还用于所述接收方设备对所述n条数据x执行布谷鸟哈希计算,得到放置有所述n条数据x的接收方哈希表,且所述接收方哈希表中的每个位置仅存放一条数据x,未存放有数据x的位置放置有随机数,所述接收方哈希表包含的位置的数量大于n,所述接收方哈希表中第i个位置存放的数据称作数据zi,所述发送方哈希表与所述接收方哈希表包含的位置的数量相同;
12、基于所述接收方哈希表中的数据zi,与所述接收方设备之间执行多点oprf协议,得到与所述发送方哈希表的每个位置i一一对应的种子si,在执行多点oprf协议之后,所述接收方设备获得有与每条数据zi和每个种子si均一一对应的伪随机数,作为接收方伪随机数oprf(si,zi);
13、使用每个种子si,计算该种子si对应位置i的数据y的伪随机数,作为发送方伪随机数oprf(si,hij);
14、针对每个位置i,使用第i个位置的h(i)个发送方伪随机数oprf(si,hij),计算p(i)个多项式函数fir(x),p(i)为h(i)除以t的商值向上取整,t为多项式函数的次数,r的取值为1至p(i)的整数,其中,h(i)个发送方伪随机数oprf(si,hij)按顺序且每组t个划分为p(i)组,最后一组发送方伪随机数oprf(si,hij)的数量小于等于t,第r个多项式函数fir(x)为基于第r组发送方伪随机数oprf(si,hij)计算得到的,且第r组发送方伪随机数oprf(si,hij)为第r个多项式函数fir(x)的所有的根;
15、基于所述接收方设备得到的接收方伪随机数oprf(si,zi),以及计算出的多项式函数fir(x),通过与所述接收方设备之间的消息交互,采用同态加密算法,计算所述n条数据x和所述m条数据y之间的交集数据。
16、进一步的,所述基于所述接收方设备得到的接收方伪随机数oprf(si,zi),以及计算出的多项式函数fir(x),通过与所述接收方设备之间的消息交互,采用同态加密算法,计算所述n条数据x和所述m条数据y之间的交集数据,包括:
17、接收所述接收方设备发送的密文数据epk(oprf(si,zi)),所述密文数据epk(oprf(si,zi))为所述接收方设备使用同态加密算法的公钥,对每个位置i对应的接收方伪随机数oprf(si,zi)进行加密得到的;
18、利用第i个位置对应的p(i)个多项式函数fir(x),对所述密文数据epk(oprf(si,zi))执行同态运算,得到与第i个位置对应的p(i)个多项式密文epk(fir(oprf(si,zi)));
19、向所述接收方设备发送与第i个位置对应的p(i)个多项式密文epk(fir(oprf(si,zi))),使得所述接收方设备使用同态加密算法的私钥,对接收的与第i个位置对应的p(i)个多项式密文epk(fir(oprf(si,zi)))进行解密,得到p(i)个解密结果,以及如果所述p(i)个解密结果中任一解密结果为0,确定第i个位置的数据zi为所述n条数据x和所述m条数据y之间的交集数据。
20、进一步的,所述利用第i个位置对应的p(i)个多项式函数fir(x),对所述密文数据epk(oprf(si,zi))执行同态运算,包括:
21、利用同态乘法,计算所述密文数据epk(oprf(si,zi))的第2至t次幂的次幂密文数据;
22、针对p(i)个多项式函数fir(x)中的每个多项式函数fir(x),将该多项式函数fir(x)的系数作为数乘因子,所述密文数据epk(oprf(si,zi))的第2至t次幂的次幂密文数据作为被数乘的密文,执行同态数乘运算,并将得到的同态数乘运算结果执行同态加法,得到该多项式函数fir(x)对应的多项式密文epk(fir(oprf(si,zi)))。
23、本技术实施例还提供一种隐私求交装置,应用于接收方设备,所述接收方设备持有n条数据x,发送方设备持有m条数据y,所述装置,包括:
24、第一哈希计算模块,用于基于k个哈希函数,对所述n条数据x执行布谷鸟哈希计算,得到放置有所述n条数据x的接收方哈希表,且所述接收方哈希表中的每个位置仅存放一条数据x,未存放有数据x的位置放置有随机数,所述接收方哈希表包含的位置的数量大于n,所述接收方哈希表中第i个位置存放的数据称作数据zi,所述k个哈希函数还用于所述发送方设备对所述m条数据y执行哈希计算,得到放置有所述m条数据y的发送方哈希表,且每条数据y放置在所述发送方哈希表的k个位置,所述发送方哈希表的第i个位置存放的第j条数据y称作数据hij,h(i)为第i个位置存放的数据y的数量,所述发送方哈希表与所述接收方哈希表包含的位置的数量相同;
25、第一协议执行模块,用于基于所述接收方哈希表中的数据zi,与所述发送方设备之间执行多点oprf协议,得到与每条数据zi和每个种子si均一一对应的伪随机数,作为接收方伪随机数oprf(si,zi),在执行多点oprf协议之后,所述发送方设备获得有与所述发送方哈希表的每个位置i一一对应的种子si,使得所述发送方设备使用每个种子si,计算该种子si对应位置i的数据y的伪随机数,作为发送方伪随机数oprf(si,hij),使得所述发送方设备针对每个位置i,使用第i个位置的h(i)个发送方伪随机数oprf(si,hij),计算p(i)个多项式函数fir(x),p(i)为h(i)除以t的商值向上取整,t为多项式函数的次数,r的取值为1至p(i)的整数,其中,h(i)个发送方伪随机数oprf(si,hij)按顺序且每组t个划分为p(i)组,最后一组发送方伪随机数oprf(si,hij)的数量小于等于t,第r个多项式函数fir(x)为基于第r组发送方伪随机数oprf(si,hij)计算得到的,且第r组发送方伪随机数oprf(si,hij)为第r个多项式函数fir(x)的所有的根;
26、第一同态加密模块,用于基于得到的接收方伪随机数oprf(si,zi),以及所述发送方设备计算出的多项式函数fir(x),通过与所述发送方设备之间的消息交互,采用同态加密算法,计算所述n条数据x和所述m条数据y之间的交集数据。
27、进一步的,所述第一同态加密模块,具体用于使用同态加密算法的公钥,对每个位置i对应的接收方伪随机数oprf(si,zi)进行加密,得到密文数据epk(oprf(si,zi)),并发送至所述发送方设备,使得所述发送方设备利用第i个位置对应的p(i)个多项式函数fir(x),对所述密文数据epk(oprf(si,zi))执行同态运算,得到与第i个位置对应的p(i)个多项式密文epk(fir(oprf(si,zi))),并发送至所述接收方设备;
28、使用同态加密算法的私钥,对接收的与第i个位置对应的p(i)个多项式密文epk(fir(oprf(si,zi)))进行解密,得到p(i)个解密结果;
29、如果所述p(i)个解密结果中任一解密结果为0,确定第i个位置的数据zi为所述n条数据x和所述m条数据y之间的交集数据。
30、本技术实施例还提供一种隐私求交装置,应用于发送方设备,所述发送方设备持有m条数据y,接收方设备持有n条数据x,所述装置,包括:
31、第二哈希计算模块,用于基于k个哈希函数,对所述m条数据y执行哈希计算,得到放置有所述m条数据y的发送方哈希表,且每条数据y放置在所述发送方哈希表的k个位置,所述发送方哈希表的第i个位置存放的第j条数据y称作数据hij,h(i)为第i个位置存放的数据y的数量,所述k个哈希函数还用于所述接收方设备对所述n条数据x执行布谷鸟哈希计算,得到放置有所述n条数据x的接收方哈希表,且所述接收方哈希表中的每个位置仅存放一条数据x,未存放有数据x的位置放置有随机数,所述接收方哈希表包含的位置的数量大于n,所述接收方哈希表中第i个位置存放的数据称作数据zi,所述发送方哈希表与所述接收方哈希表包含的位置的数量相同;
32、第二协议执行模块,用于基于所述接收方哈希表中的数据zi,与所述接收方设备之间执行多点oprf协议,得到与所述发送方哈希表的每个位置i一一对应的种子si,在执行多点oprf协议之后,所述接收方设备获得有与每条数据zi和每个种子si均一一对应的伪随机数,作为接收方伪随机数oprf(si,zi);
33、伪随机数计算模块,用于使用每个种子si,计算该种子si对应位置i的数据y的伪随机数,作为发送方伪随机数oprf(si,hij);
34、多项式计算模块,用于针对每个位置i,使用第i个位置的h(i)个发送方伪随机数oprf(si,hij),计算p(i)个多项式函数fir(x),p(i)为h(i)除以t的商值向上取整,t为多项式函数的次数,r的取值为1至p(i)的整数,其中,h(i)个发送方伪随机数oprf(si,hij)按顺序且每组t个划分为p(i)组,最后一组发送方伪随机数oprf(si,hij)的数量小于等于t,第r个多项式函数fir(x)为基于第r组发送方伪随机数oprf(si,hij)计算得到的,且第r组发送方伪随机数oprf(si,hij)为第r个多项式函数fir(x)的所有的根;
35、第二同态加密模块,用于基于所述接收方设备得到的接收方伪随机数oprf(si,zi),以及计算出的多项式函数fir(x),通过与所述接收方设备之间的消息交互,采用同态加密算法,计算所述n条数据x和所述m条数据y之间的交集数据。
36、进一步的,所述第二同态加密模块,具体用于接收所述接收方设备发送的密文数据epk(oprf(si,zi)),所述密文数据epk(oprf(si,zi))为所述接收方设备使用同态加密算法的公钥,对每个位置i对应的接收方伪随机数oprf(si,zi)进行加密得到的;
37、利用第i个位置对应的p(i)个多项式函数fir(x),对所述密文数据epk(oprf(si,zi))执行同态运算,得到与第i个位置对应的p(i)个多项式密文epk(fir(oprf(si,zi)));
38、向所述接收方设备发送与第i个位置对应的p(i)个多项式密文epk(fir(oprf(si,zi))),使得所述接收方设备使用同态加密算法的私钥,对接收的与第i个位置对应的p(i)个多项式密文epk(fir(oprf(si,zi)))进行解密,得到p(i)个解密结果,以及如果所述p(i)个解密结果中任一解密结果为0,确定第i个位置的数据zi为所述n条数据x和所述m条数据y之间的交集数据。
39、进一步的,所述第二同态加密模块,具体用于利用同态乘法,计算所述密文数据epk(oprf(si,zi))的第2至t次幂的次幂密文数据;针对p(i)个多项式函数fir(x)中的每个多项式函数fir(x),将该多项式函数fir(x)的系数作为数乘因子,所述密文数据epk(oprf(si,zi))的第2至t次幂的次幂密文数据作为被数乘的密文,执行同态数乘运算,并将得到的同态数乘运算结果执行同态加法,得到该多项式函数fir(x)对应的多项式密文epk(fir(oprf(si,zi)))。
40、本技术实施例还提供一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现上述应用于接收方设备的隐私求交方法,或者,实现上述应用于发送方设备的隐私求交方法。
41、本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述应用于接收方设备的隐私求交方法,或者,实现上述应用于发送方设备的隐私求交方法。
42、本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述应用于接收方设备的隐私求交方法,或者,执行上述应用于发送方设备的隐私求交方法。
43、本技术有益效果包括:
44、本技术实施例提供的方法中,作为查询方的接收方设备持有n条数据x,作为被查询方的发送方设备持有m条数据y,接收方设备基于k个哈希函数对n条数据x执行布谷鸟哈希计算,将n条数据x放置到接收方哈希表中,发送方设备基于相同的k个哈希函数对m条数据执行哈希计算,将m条数据y放置到相同大小的发送方哈希表中,双方基于接收方哈希表中的数据zi,执行多点oprf协议,接收方设备得到与每条数据zi和每个种子si均一一对应的伪随机数,作为接收方伪随机数oprf(si,zi),发送方设备得到与所述发送方哈希表的每个位置i一一对应的种子si,发送方设备使用每个种子si,计算该种子si对应位置i的数据y的伪随机数,作为发送方伪随机数oprf(si,hij),发送方设备针对每个位置i,使用第i个位置的h(i)个发送方伪随机数oprf(si,hij),计算p(i)个多项式函数fir(x),进一步的,双方可以基于得到的接收方伪随机数oprf(si,zi),以及计算出的多项式函数fir(x),采用同态加密算法,计算n条数据x和m条数据y之间的交集数据。由于该隐私求交方法中采用了多点oprf协议,可以减少计算开销,并且,还采用了同态加密算法,可以减少查询方与被查询方之间的通信量,因此能够较好的实现计算开销与通信量之间的平衡,针对非对称隐私求交的应用场景,可以提高在通信量与计算开销两方面的综合性能。
45、本技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。