一种不暴露中间结果的私有数据隐匿求交方法与流程

文档序号:29407432发布日期:2022-03-26 10:58阅读:167来源:国知局
一种不暴露中间结果的私有数据隐匿求交方法与流程

1.本发明涉及数据求交技术领域,尤其涉及一种不暴露中间结果的私有数据隐匿求交方法。


背景技术:

2.隐私集合求交(private set intersection, psi)属于隐私计算领域的特定应用问题,其兼具重要的理论意义与极强的现实应用价值。随着用户数据的隐私保护需求的日益提升,psi可以在满足依赖个人信息的业务的便利性的同时最大程度保护个人信息私密性需求。psi允许持有各自隐私数据集的多方计算他们数据的交集,同时不泄露任何交集以外的信息。
3.现有的技术一般是发起方a、参与方b双方输入数据进行隐私集合求交,发起方a、参与方b获得双方的交集结果,假如用来求交的数据是个人数据(例如:身份证号、手机号等),那么发起方a、参与方b都会知道对方拥有的用户(a∩b),会泄漏双方的核心用户名单。
4.目前,两方私有数据求交集广泛应用于两家商业公司想对彼此拥有的客户列表进行交集运算从而进行对应的商业活动,比如,销售公司需要知道有多少客户是通过广告公司的宣传媒介来实际达成交易的,这需要知道广告公司投放群体和销售公司实际签单的客户清单的交集数量,广告公司的投放群体往往是其极为重要的资源,广告公司不愿意泄露,销售公司的实际达成交易客户信息也是其核心机密,不愿意透露,现有技术只能让销售公司、广告公司不能获得交集以外的数据,而销售公司、广告公司能获得交集部分的数据,还是存在一部分数据泄露的缺陷。


技术实现要素:

5.本发明为了解决上述技术问题,提供了一种不暴露中间结果的私有数据隐匿求交方法,其可以在不泄露交集内容的情况下获得交集含有的数据数量,保护了求交双方的私有数据隐私和安全。
6.为了解决上述问题,本发明采用以下技术方案予以实现:本发明的一种不暴露中间结果的私有数据隐匿求交方法,包括以下步骤:s1:发起方客户端读取发起方数据库内待求交集的数据集a,发起方客户端采用布谷鸟哈希算法将数据集a内的每个数据分配到布谷鸟哈希的相应哈希桶中的存储位置存储,布谷鸟哈希有k个哈希桶,每个哈希桶只有1个存储位置,将没有被分配到数据的存储位置存入随机数a;参与方客户端读取参与方数据库内待求交集的数据集b,参与方客户端采用简单哈希算法将数据集b内的每个数据分配到简单哈希的相应哈希桶中的相应存储位置存储,简单哈希有k个哈希桶,每个哈希桶有d个存储位置,将没有被分配到数据的存储位置存入随机数b;s2:发起方客户端和参与方客户端配合使用秘密分享算法对布谷鸟哈希的每个哈
希桶内存储的数据与简单哈希的编号相同的哈希桶内存储的d个数据依次进行比较运算,如果两个数据不相同,则发起方客户端得到比较结果[enc(0)]0,参与方客户端得到比较结果[enc(0)]1;如果两个数据相同,则发起方客户端得到比较结果[enc(1)]0,参与方客户端得到比较结果[enc(1)]1;enc(0)= [enc(0)]0+[enc(0)]1,enc(1)= [enc(1)]0+[enc(1)]1,其中,enc(0)表示采用秘密分享算法加密数值0得到的加密值,[enc(0)]0表示enc(0)的第0个分片,[enc(0)]1表示enc(0)的第1个分片,enc(1)表示采用秘密分享算法加密数值1得到的加密值,[enc(1)]0表示enc(1)的第0个分片,[enc(1)]1表示enc(1)的第1个分片;s3:发起方客户端采用秘密分享算法的加法对得到的所有比较结果进行累加计算得到累加值[enc(f)]0,参与方客户端采用秘密分享算法的加法对得到的所有比较结果进行累加计算得到累加值[enc(f)]1,enc(f)表示采用秘密分享算法加密数值f得到的加密值,[enc(f)]0表示enc(f)的第0个分片,[enc(f)]1表示enc(f)的第1个分片;s4:发起方客户端与参与方客户端配合使用秘密分享算法对累加值[enc(f)]0、累加值[enc(f)]1进行解密,得到数值f,数值f就是数据集a与数据集b的交集含有的数据总数。
[0007]
在本方案中,发起方对数据集a内的数据进行布谷鸟哈希处理,使数据集a内的每个数据都被分配到唯一对应的哈希桶中的存储位置存储,没有被分配到数据的存储位置存入随机数a。参与方对数据集b内的数据进行简单哈希处理,使得数据集b内的每个数据被分配到简单哈希的相应哈希桶中的相应存储位置存储,由于数据集b内的数据是经过简单哈希处理,所以数据集b内的每个数据可能被分配到1个哈希桶中的相应存储位置或多个哈希桶中的不同存储位置,即有可能多个哈希桶中都有存储位置被分配到同样的数据,被分配到数据的存储位置都存入对应的数据,没有被分配到数据的存储位置存入随机数b。随机数a不等于随机数b,随机数a、随机数b也与数据集a、数据集b中的所有数据都不相同。
[0008]
通过上述方法就实现了对数据集a内数据、数据集b内数据的重新排序。数据集b内的单个数据可能会被分配到多个简单哈希的哈希桶中,这些哈希桶的编号中有一个编号与数据集a内的同样数据被分配到的布谷鸟哈希的哈希桶的编号一致。这样,比较同样编号的布谷鸟哈希的哈希桶中数据与简单哈希的哈希桶中每个数据是否一样,就能快速找出相同的数据。
[0009]
之后,发起方和参与方配合使用现有的秘密分享算法的比较协议对布谷鸟哈希的每个哈希桶内存储的数据与简单哈希的编号相同的哈希桶内存储的d个数据依次进行比较运算,得到比较结果,由于发起方、参与方都只得到加密状态的比较结果,且秘密分享算法的机制会使得发起方客户端得到的每个[enc(0)]0的值都不相同,每个[enc(1)]0的值都不相同,参与方客户端得到的每个[enc(0)]1的值都不相同,每个[enc(1)]1的值都不相同,所以发起方、参与方都不知道每个数据的具体比较情况,从而无法获得交集的具体数据。
[0010]
最后,发起方、参与方分别将各自得到的比较结果进行累加,由于两个数据相同的比较结果是数值1的加密状态的分片,两个数据不相同的比较结果是数值0的加密状态的分片,所以累加后得到的累加值经过秘密分享算法解密后得到的数值就是交集内含有的数据
总数。
[0011]
本方案的整个流程中,发起方和参与方都不能获取交集的具体数据内容,即无法获得对方的数据,在不泄露交集内容的情况下获得交集含有的数据数量,保护了求交双方的私有数据隐私和安全。
[0012]
例如:发起方为c机构,参与方为d机构,c机构委托d机构做广告投放业务,在结算阶段需要评估广告投放业务的效果,需要知道d机构投放的效果,即c机构的多少用户是通过d机构的投放产生的新用户。可以使用d机构投放的用户和c机构产生的新用户采用本方案的方法求交并统计交集包含的用户的数目进行按效果付费,而没有暴露具体求交中的用户的名单。
[0013]
作为优选,所述布谷鸟哈希和简单哈希都使用相同的e个哈希函数。
[0014]
作为优选,所述k=max(m,n)*f,其中,m为数据集a含有的数据个数,n为数据集b含有的数据个数,f为大于1的系数。
[0015]
布谷鸟哈希、简单哈希具有的哈希桶的数量一致,都为k个。取m、n中的最大值乘以f得到k的值,使得数据集a内的数据、数据集b内的数据都能分配到对应的哈希桶。
[0016]
作为优选,所述步骤s3还包括以下步骤:发起方客户端使用秘密分享算法比较[enc(f)]0与[enc(g)]0的大小,参与方客户端使用秘密分享算法比较[enc(f)]1与[enc(g)]1的大小,如果[enc(f)]0>[enc(g)]0、[enc(f)]1>[enc(g)]1,则执行步骤s4,如果[enc(f)]0≤[enc(g)]0、[enc(f)]1≤[enc(g)]1,则输出数据集a与数据集b的交集含有的数据总数没有超过阈值的结果,求交结束;其中,g为阈值,enc(g)表示采用秘密分享算法加密数值g得到的加密值,[enc(g)]0表示enc(g)的第0个分片,[enc(g)]1表示enc(g)的第1个分片。
[0017]
发起方、参与方在双方交集数目大于一定阈值时才计算交集含有的数据个数,否则不统计交集含有的数据个数。
[0018]
本发明的一种不暴露中间结果的私有数据隐匿求交方法,其特征在于,包括以下步骤:s1:发起方客户端读取发起方数据库内待求交集的数据集a,发起方客户端采用布谷鸟哈希算法将数据集a内的每个数据分配到布谷鸟哈希的相应哈希桶中的存储位置存储,布谷鸟哈希有k个哈希桶,每个哈希桶只有1个存储位置,将没有被分配到数据的存储位置存入随机数a;参与方客户端读取参与方数据库内待求交集的数据集b,参与方客户端采用简单哈希算法将数据集b内的每个数据分配到简单哈希的相应哈希桶中的相应存储位置存储,简单哈希有k个哈希桶,每个哈希桶有d个存储位置,将没有被分配到数据的存储位置存入随机数b;s2:发起方客户端将布谷鸟哈希的每个哈希桶内的存储位置扩充到d个,将每个哈希桶内新增加的d-1个存储位置都存入该哈希桶原先被分配的数据;s3:发起方客户端和参与方客户端配合使用秘密分享算法对布谷鸟哈希的每个哈希桶内的每个存储位置存储的数据与简单哈希的编号相同的哈希桶内的编号相同的存储位置存储的数据进行比较运算,如果两个数据不相同,则发起方客户端得到比较结果[enc(0)]0,参与方客户端得到比较结果[enc(0)]1;如果两个数据相同,则发起方客户端得到比
较结果[enc(1)]0,参与方客户端得到比较结果[enc(1)]1;enc(0)= [enc(0)]0+[enc(0)]1,enc(1)= [enc(1)]0+[enc(1)]1,其中,enc(0)表示采用秘密分享算法加密数值0得到的加密值,[enc(0)]0表示enc(0)的第0个分片,[enc(0)]1表示enc(0)的第1个分片,enc(1)表示采用秘密分享算法加密数值1得到的加密值,[enc(1)]0表示enc(1)的第0个分片,[enc(1)]1表示enc(1)的第1个分片;s4:发起方客户端采用秘密分享算法的加法对得到的所有比较结果进行累加计算得到累加值[enc(f)]0,参与方客户端采用秘密分享算法的加法对得到的所有比较结果进行累加计算得到累加值[enc(f)]1,enc(f)表示采用秘密分享算法加密数值f得到的加密值,[enc(f)]0表示enc(f)的第0个分片,[enc(f)]1表示enc(f)的第1个分片;s5:发起方客户端与参与方客户端配合使用秘密分享算法对累加值[enc(f)]0、累加值[enc(f)]1进行解密,得到数值f,数值f就是数据集a与数据集b的交集含有的数据总数。
[0019]
在本方案中,通过步骤s2将布谷鸟哈希的每个哈希桶内的存储位置扩充到d个,这样布谷鸟哈希的每个哈希桶内的存储位置与简单哈希的每个哈希桶内的存储位置就一一对应了。然后将布谷鸟哈希的每个哈希桶内新增加的d-1个存储位置都存入该哈希桶原先被分配的数据,即将布谷鸟哈希的每个哈希桶内的数据复制了d-1个,每个哈希桶内有d个相同的原先数据,这样就可以将布谷鸟哈希的每个哈希桶内每个存储位置存储的数据与简单哈希的编号相同的哈希桶内的编号相同的存储位置存储的数据进行比较,大大提高了并发计算效率。
[0020]
作为优选,所述布谷鸟哈希和简单哈希都使用相同的e个哈希函数。
[0021]
作为优选,所述k=max(m,n)*f,其中,m为数据集a含有的数据个数,n为数据集b含有的数据个数,f为大于1的系数。
[0022]
作为优选,所述步骤s4还包括以下步骤:发起方客户端使用秘密分享算法比较[enc(f)]0与[enc(g)]0的大小,参与方客户端使用秘密分享算法比较[enc(f)]1与[enc(g)]1的大小,如果[enc(f)]0>[enc(g)]0、[enc(f)]1>[enc(g)]1,则执行步骤s4,如果[enc(f)]0≤[enc(g)]0、[enc(f)]1≤[enc(g)]1,则输出数据集a与数据集b的交集含有的数据总数没有超过阈值的结果,求交结束;其中,g为阈值,enc(g)表示采用秘密分享算法加密数值g得到的加密值,[enc(g)]0表示enc(g)的第0个分片,[enc(g)]1表示enc(g)的第1个分片。
[0023]
本发明的有益效果是:(1)可以在不泄露交集内容的情况下获得交集含有的数据数量,保护了求交双方的私有数据隐私和安全。(2)提高了求交集的计算速度。
附图说明
[0024]
图1是实施例的流程图;图2是数据分配到哈希桶的示意图。
具体实施方式
[0025]
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
[0026]
实施例1:本实施例的一种不暴露中间结果的私有数据隐匿求交方法,如图1所示,包括以下步骤:s1:发起方客户端读取发起方数据库内待求交集的数据集a,发起方客户端采用布谷鸟哈希算法将数据集a内的每个数据分配到布谷鸟哈希的相应哈希桶中的存储位置存储,布谷鸟哈希有k个哈希桶,每个哈希桶只有1个存储位置,将没有被分配到数据的存储位置存入随机数a;参与方客户端读取参与方数据库内待求交集的数据集b,参与方客户端采用简单哈希算法将数据集b内的每个数据分配到简单哈希的相应哈希桶中的相应存储位置存储,简单哈希有k个哈希桶,每个哈希桶有d个存储位置,将没有被分配到数据的存储位置存入随机数b;s2:发起方客户端和参与方客户端配合使用秘密分享算法对布谷鸟哈希的每个哈希桶内存储的数据与简单哈希的编号相同的哈希桶内存储的d个数据依次进行比较运算,如果两个数据不相同,则发起方客户端得到比较结果[enc(0)]0,参与方客户端得到比较结果[enc(0)]1;如果两个数据相同,则发起方客户端得到比较结果[enc(1)]0,参与方客户端得到比较结果[enc(1)]1;enc(0)= [enc(0)]0+[enc(0)]1,enc(1)= [enc(1)]0+[enc(1)]1,其中,enc(0)表示采用秘密分享算法加密数值0得到的加密值,[enc(0)]0表示enc(0)的第0个分片,[enc(0)]1表示enc(0)的第1个分片,enc(1)表示采用秘密分享算法加密数值1得到的加密值,[enc(1)]0表示enc(1)的第0个分片,[enc(1)]1表示enc(1)的第1个分片;s3:发起方客户端采用秘密分享算法的加法对得到的所有比较结果进行累加计算得到累加值[enc(f)]0,参与方客户端采用秘密分享算法的加法对得到的所有比较结果进行累加计算得到累加值[enc(f)]1,enc(f)表示采用秘密分享算法加密数值f得到的加密值,[enc(f)]0表示enc(f)的第0个分片,[enc(f)]1表示enc(f)的第1个分片;s4:发起方客户端与参与方客户端配合使用秘密分享算法对累加值[enc(f)]0、累加值[enc(f)]1进行解密,发起方客户端、参与方客户端都得到解密后的数值f,数值f就是数据集a与数据集b的交集含有的数据总数。
[0027]
在本方案中,数据集a、数据集b内的数据都是经过sha1或者md5脱敏后的数据。发起方对数据集a内的数据进行布谷鸟哈希处理,使数据集a内的每个数据都被分配到唯一对应的哈希桶中的存储位置存储,没有被分配到数据的存储位置存入随机数a。参与方对数据集b内的数据进行简单哈希处理,使得数据集b内的每个数据被分配到简单哈希的相应哈希桶中的相应存储位置存储,由于数据集b内的数据是经过简单哈希处理,所以数据集b内的每个数据可能被分配到1个哈希桶中的相应存储位置或多个哈希桶中的不同存储位置,即有可能多个哈希桶中都有存储位置被分配到同样的数据,被分配到数据的存储位置都存入对应的数据,没有被分配到数据的存储位置存入随机数b。随机数a不等于随机数b,随机数a、随机数b也与数据集a、数据集b中的所有数据都不相同。
[0028]
通过上述方法就实现了对数据集a内数据、数据集b内数据的重新排序。数据集b内的单个数据可能会被分配到多个简单哈希的哈希桶中,这些哈希桶的编号中有一个编号与数据集a内的同样数据被分配到的布谷鸟哈希的哈希桶的编号一致。这样,比较同样编号的布谷鸟哈希的哈希桶中数据与简单哈希的哈希桶中每个数据是否一样,就能快速找出相同的数据。
[0029]
之后,发起方和参与方配合使用现有的秘密分享算法的比较协议对布谷鸟哈希的每个哈希桶内存储的数据与简单哈希的编号相同的哈希桶内存储的d个数据依次进行比较运算,得到比较结果,由于发起方、参与方都只得到加密状态的比较结果,且秘密分享算法的机制会使得发起方客户端得到的每个[enc(0)]0的值都不相同,每个[enc(1)]0的值都不相同,参与方客户端得到的每个[enc(0)]1的值都不相同,每个[enc(1)]1的值都不相同,所以发起方、参与方都不知道每个数据的具体比较情况,从而无法获得交集的具体数据。
[0030]
最后,发起方、参与方分别将各自得到的比较结果进行累加,由于两个数据相同的比较结果是数值1的加密状态的分片,两个数据不相同的比较结果是数值0的加密状态的分片,所以累加后得到的累加值经过秘密分享算法解密后得到的数值就是交集内含有的数据总数。
[0031]
本方案的整个流程中,发起方和参与方都不能获取交集的具体数据内容,即无法获得对方的数据,在不泄露交集内容的情况下获得交集含有的数据数量,保护了求交双方的私有数据隐私和安全。
[0032]
例如:发起方为c机构,参与方为d机构,c机构委托d机构做广告投放业务,在结算阶段需要评估广告投放业务的效果,需要知道d机构广告投放的效果,即c机构的多少用户是通过d机构的投放产生的新用户。数据集a包含的数据就是c机构在d机构做广告投放之后新增加的用户信息(比如:身份证号、手机号),数据集b包含的数据就是d机构广告投放的用户信息,采用本方案求交可以统计出数据集a与数据集b的交集含有的数据总数,即c机构、d机构可以得到因为广告投放使c机构新增加的用户总数,便于c机构、d机构评估广告投放业务的效果,而整个过程中没有暴露具体求交中用户的名单。
[0033]
布谷鸟哈希和简单哈希都使用相同的e个哈希函数。k=max(m,n)*f,其中,m为数据集a含有的数据个数,n为数据集b含有的数据个数,f为大于1的系数。
[0034]
布谷鸟哈希、简单哈希具有的哈希桶的数量一致,都为k个。取m、n中的最大值乘以f得到k的值,使得数据集a内的数据、数据集b内的数据都能分配到对应的哈希桶。
[0035]
举例说明:如图2所示,发起方具有的数据集a包括3个数据,分别为x1、x2、x3,参与方具有的数据集b包括3个数据,分别为y1、y2、y3。x1=y1,x2=y2,x3≠y3,a≠b≠x1≠x2≠x3≠y3。
[0036]
布谷鸟哈希、简单哈希都有8个哈希桶。x1、x2、x3经过布谷鸟哈希处理后,x1被分配到布谷鸟哈希的编号为2的哈希桶中的存储位置存储,x2被分配到布谷鸟哈希的编号为6的哈希桶中的存储位置存储,x3被分配到布谷鸟哈希的编号为8的哈希桶中的存储位置存储,没有被分配到数据的存储位置存入随机数a;y1、y2、y3经过简单哈希处理后,布谷鸟哈希的编号为4的哈希桶中的编号为1存储位置、编号为6的哈希桶中的编号为1存储位置都存入y1,布谷鸟哈希的编号为2的哈希桶中的编号为1存储位置、编号为7的哈希桶中的编号为1存储位置都存入y2,布谷鸟哈希的编号
为4的哈希桶中的编号为2存储位置、编号为7的哈希桶中的编号为2存储位置都存入y3,没有被分配到数据的存储位置存入随机数b。
[0037]
发起方客户端和参与方客户端配合使用秘密分享算法对布谷鸟哈希的每个哈希桶内存储的数据与简单哈希的编号相同的哈希桶内存储的d个数据依次进行比较运算,由于x1=y1,x2=y2,x3≠y3,a≠b≠x1≠x2≠x3≠y3,所以发起方客户端得到比较结果为{〈[enc(0)]0,[enc(0)]0〉,〈[enc(1)]0,[enc(0)]0〉,〈[enc(0)]0,[enc(0)]0〉,〈[enc(0)]0,[enc(0)]0〉,〈[enc(0)]0,[enc(0)]0〉,〈[enc(1)]0,[enc(0)]0〉,〈[enc(0)]0,[enc(0)]0〉,〈[enc(0)]0,[enc(0)]0〉},秘密分享算法使得这里的每个[enc(0)]0的值都不相同,每个[enc(1)]0的值都不相同,将所有比较结果采用秘密分享算法的加法进行累加计算,得到累加值[enc(2)]0;参与方客户端得到比较结果为{〈[enc(0)]1,[enc(0)]1〉,〈[enc(1)]1,[enc(0)]1〉,〈[enc(0)]1,[enc(0)]1〉,〈[enc(0)]1,[enc(0)]1〉,〈[enc(0)]1,[enc(0)]1〉,〈[enc(1)]1,[enc(0)]1〉,〈[enc(0)]1,[enc(0)]1〉,〈[enc(0)]1,[enc(0)]1〉},秘密分享算法使得这里的每个[enc(0)]1的值都不相同,每个enc(1)]1的值都不相同,将所有比较结果采用秘密分享算法的加法进行累加计算,得到累加值[enc(2)]1。
[0038]
发起方客户端与参与方客户端配合使用秘密分享算法对累加值[enc(2)]0、累加值[enc(2)]1进行解密,得到数值2,数值2就是数据集a与数据集b的交集含有的数据总数。
[0039]
最终,发起方、参与方都获得了交集含有的数据总数2,即数据集a与数据集b有2个相同的数据,但是整个过程中发起方、参与方都无法知道具体是哪个数据位于交集中,即无法获取交集的具体数据,从而无法获得对方的数据,保护了求交双方的私有数据隐私和安全。
[0040]
实施例2:本实施例的一种不暴露中间结果的私有数据隐匿求交方法,包括以下步骤:s1:发起方客户端读取发起方数据库内待求交集的数据集a,发起方客户端采用布谷鸟哈希算法将数据集a内的每个数据分配到布谷鸟哈希的相应哈希桶中的存储位置存储,布谷鸟哈希有k个哈希桶,每个哈希桶只有1个存储位置,将没有被分配到数据的存储位置存入随机数a;参与方客户端读取参与方数据库内待求交集的数据集b,参与方客户端采用简单哈希算法将数据集b内的每个数据分配到简单哈希的相应哈希桶中的相应存储位置存储,简单哈希有k个哈希桶,每个哈希桶有d个存储位置,将没有被分配到数据的存储位置存入随机数b;s2:发起方客户端和参与方客户端配合使用秘密分享算法对布谷鸟哈希的每个哈希桶内存储的数据与简单哈希的编号相同的哈希桶内存储的d个数据依次进行比较运算,如果两个数据不相同,则发起方客户端得到比较结果[enc(0)]0,参与方客户端得到比较结果[enc(0)]1;如果两个数据相同,则发起方客户端得到比较结果[enc(1)]0,参与方客户端得到比较结果[enc(1)]1;enc(0)= [enc(0)]0+[enc(0)]1,enc(1)= [enc(1)]0+[enc(1)]1,其中,enc(0)表示采用秘密分享算法加密数值0得到的加密值,[enc(0)]0表示enc(0)的第0个分片,[enc(0)]1表示enc(0)的第1个分片,enc(1)表示采用秘密分享算法加密
数值1得到的加密值,[enc(1)]0表示enc(1)的第0个分片,[enc(1)]1表示enc(1)的第1个分片;s3:发起方客户端采用秘密分享算法的加法对得到的所有比较结果进行累加计算得到累加值[enc(f)]0,参与方客户端采用秘密分享算法的加法对得到的所有比较结果进行累加计算得到累加值[enc(f)]1,enc(f)表示采用秘密分享算法加密数值f得到的加密值,[enc(f)]0表示enc(f)的第0个分片,[enc(f)]1表示enc(f)的第1个分片;发起方客户端使用秘密分享算法比较[enc(f)]0与[enc(g)]0的大小,参与方客户端使用秘密分享算法比较[enc(f)]1与[enc(g)]1的大小,如果[enc(f)]0>[enc(g)]0、[enc(f)]1>[enc(g)]1,则执行步骤s4,如果[enc(f)]0≤[enc(g)]0、[enc(f)]1≤[enc(g)]1,则输出数据集a与数据集b的交集含有的数据总数没有超过阈值的结果,求交结束;其中,g为阈值,enc(g)表示采用秘密分享算法加密数值g得到的加密值,[enc(g)]0表示enc(g)的第0个分片,[enc(g)]1表示enc(g)的第1个分片;s4:发起方客户端与参与方客户端配合使用秘密分享算法对累加值[enc(f)]0、累加值[enc(f)]1进行解密,发起方客户端、参与方客户端都得到解密后的数值f,数值f就是数据集a与数据集b的交集含有的数据总数。
[0041]
在本方案中,发起方、参与方在双方交集数目大于阈值g时才计算交集含有的数据个数,否则不统计交集含有的数据个数。
[0042]
实施例3:本实施例的一种不暴露中间结果的私有数据隐匿求交方法,包括以下步骤:s1:发起方客户端读取发起方数据库内待求交集的数据集a,发起方客户端采用布谷鸟哈希算法将数据集a内的每个数据分配到布谷鸟哈希的相应哈希桶中的存储位置存储,布谷鸟哈希有k个哈希桶,每个哈希桶只有1个存储位置,将没有被分配到数据的存储位置存入随机数a;参与方客户端读取参与方数据库内待求交集的数据集b,参与方客户端采用简单哈希算法将数据集b内的每个数据分配到简单哈希的相应哈希桶中的相应存储位置存储,简单哈希有k个哈希桶,每个哈希桶有d个存储位置,将没有被分配到数据的存储位置存入随机数b;s2:发起方客户端将布谷鸟哈希的每个哈希桶内的存储位置扩充到d个,将每个哈希桶内新增加的d-1个存储位置都存入该哈希桶原先被分配的数据;s3:发起方客户端和参与方客户端配合使用秘密分享算法对布谷鸟哈希的每个哈希桶内的每个存储位置存储的数据与简单哈希的编号相同的哈希桶内的编号相同的存储位置存储的数据进行比较运算,如果两个数据不相同,则发起方客户端得到比较结果[enc(0)]0,参与方客户端得到比较结果[enc(0)]1;如果两个数据相同,则发起方客户端得到比较结果[enc(1)]0,参与方客户端得到比较结果[enc(1)]1;enc(0)= [enc(0)]0+[enc(0)]1,enc(1)= [enc(1)]0+[enc(1)]1,其中,enc(0)表示采用秘密分享算法加密数值0得到的加密值,[enc(0)]0表示enc(0)的第0个分片,[enc(0)]1表示enc(0)的第1个分片,enc(1)表示采用秘密分享算法加密数值1得到的加密值,[enc(1)]0表示enc(1)的第0个分片,[enc(1)]1表示enc(1)的第1个分
片;s4:发起方客户端采用秘密分享算法的加法对得到的所有比较结果进行累加计算得到累加值[enc(f)]0,参与方客户端采用秘密分享算法的加法对得到的所有比较结果进行累加计算得到累加值[enc(f)]1,enc(f)表示采用秘密分享算法加密数值f得到的加密值,[enc(f)]0表示enc(f)的第0个分片,[enc(f)]1表示enc(f)的第1个分片;s5:发起方客户端与参与方客户端配合使用秘密分享算法对累加值[enc(f)]0、累加值[enc(f)]1进行解密,发起方客户端、参与方客户端都得到解密后的数值f,数值f就是数据集a与数据集b的交集含有的数据总数。
[0043]
布谷鸟哈希和简单哈希都使用相同的e个哈希函数。k=max(m,n)*f,其中,m为数据集a含有的数据个数,n为数据集b含有的数据个数,f为大于1的系数。
[0044]
在本方案中,通过步骤s2将布谷鸟哈希的每个哈希桶内的存储位置扩充到d个,这样布谷鸟哈希的每个哈希桶内的存储位置与简单哈希的每个哈希桶内的存储位置就一一对应了。然后将布谷鸟哈希的每个哈希桶内新增加的d-1个存储位置都存入该哈希桶原先被分配的数据,即将布谷鸟哈希的每个哈希桶内的数据复制了d-1个,每个哈希桶内有d个相同的原先数据,这样就可以将布谷鸟哈希的每个哈希桶内每个存储位置存储的数据与简单哈希的编号相同的哈希桶内的编号相同的存储位置存储的数据进行比较,大大提高了并发计算效率。
[0045]
实施例4:本实施例的一种不暴露中间结果的私有数据隐匿求交方法,包括以下步骤:s1:发起方客户端读取发起方数据库内待求交集的数据集a,发起方客户端采用布谷鸟哈希算法将数据集a内的每个数据分配到布谷鸟哈希的相应哈希桶中的存储位置存储,布谷鸟哈希有k个哈希桶,每个哈希桶只有1个存储位置,将没有被分配到数据的存储位置存入随机数a;参与方客户端读取参与方数据库内待求交集的数据集b,参与方客户端采用简单哈希算法将数据集b内的每个数据分配到简单哈希的相应哈希桶中的相应存储位置存储,简单哈希有k个哈希桶,每个哈希桶有d个存储位置,将没有被分配到数据的存储位置存入随机数b;s2:发起方客户端将布谷鸟哈希的每个哈希桶内的存储位置扩充到d个,将每个哈希桶内新增加的d-1个存储位置都存入该哈希桶原先被分配的数据;s3:发起方客户端和参与方客户端配合使用秘密分享算法对布谷鸟哈希的每个哈希桶内的每个存储位置存储的数据与简单哈希的编号相同的哈希桶内的编号相同的存储位置存储的数据进行比较运算,如果两个数据不相同,则发起方客户端得到比较结果[enc(0)]0,参与方客户端得到比较结果[enc(0)]1;如果两个数据相同,则发起方客户端得到比较结果[enc(1)]0,参与方客户端得到比较结果[enc(1)]1;enc(0)= [enc(0)]0+[enc(0)]1,enc(1)= [enc(1)]0+[enc(1)]1,其中,enc(0)表示采用秘密分享算法加密数值0得到的加密值,[enc(0)]0表示enc(0)的第0个分片,[enc(0)]1表示enc(0)的第1个分片,enc(1)表示采用秘密分享算法加密数值1得到的加密值,[enc(1)]0表示enc(1)的第0个分片,[enc(1)]1表示enc(1)的第1个分
片;s4:发起方客户端采用秘密分享算法的加法对得到的所有比较结果进行累加计算得到累加值[enc(f)]0,参与方客户端采用秘密分享算法的加法对得到的所有比较结果进行累加计算得到累加值[enc(f)]1,enc(f)表示采用秘密分享算法加密数值f得到的加密值,[enc(f)]0表示enc(f)的第0个分片,[enc(f)]1表示enc(f)的第1个分片;发起方客户端使用秘密分享算法比较[enc(f)]0与[enc(g)]0的大小,参与方客户端使用秘密分享算法比较[enc(f)]1与[enc(g)]1的大小,如果[enc(f)]0>[enc(g)]0、[enc(f)]1>[enc(g)]1,则执行步骤s4,如果[enc(f)]0≤[enc(g)]0、[enc(f)]1≤[enc(g)]1,则输出数据集a与数据集b的交集含有的数据总数没有超过阈值的结果,求交结束;其中,g为阈值,enc(g)表示采用秘密分享算法加密数值g得到的加密值,[enc(g)]0表示enc(g)的第0个分片,[enc(g)]1表示enc(g)的第1个分片;s5:发起方客户端与参与方客户端配合使用秘密分享算法对累加值[enc(f)]0、累加值[enc(f)]1进行解密,发起方客户端、参与方客户端都得到解密后的数值f,数值f就是数据集a与数据集b的交集含有的数据总数。
[0046]
在本方案中,发起方、参与方在双方交集数目大于阈值g时才计算交集含有的数据个数,否则不统计交集含有的数据个数。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1