1.一种云环境下隐私保护的集合交集计算方法,其特征在于,应用于包括服务器S、参与请求的双方用户A、B的系统,且参与者A、B均单独拥有d个集合元素,且,参与者A与参与者B中的每个集合元素都只由自己秘密拥有,其中,将参与者B作为请求方,参与者A作为被请求方,所述方法包括以下步骤:步骤S1:参数的初始化,参数包括服务器随机多项式、请求方隐藏后的第一向量值和被请求方隐藏后的第二向量值;
步骤S2:请求方发送进行集合交集计算请求,包括:请求方生成随机数密文后,将随机数密文发送至服务器;
步骤S3:服务器第一次计算,包括:服务器利用被请求方的公钥加密伪随机函数中的种子,得到种子密文,然后将种子密文发送给被请求方,利用生成的随机数计算服务器随机多项式后,利用请求方的公钥对多项式计算结果进行加密,获得构造密文,发送至被请求方,再根据随机数密文进行同态计算,将同态计算结果发送至被请求方;
步骤S4:被请求方交互计算,包括:被请求方利用自身私钥对种子密文进行解密后,再根据伪随机函数中的种子,获得随机生成数;被请求方利用根据构造密文、同态计算结果和随机生成数,获得交互结果,然后将交互结果发送给请求方;
步骤S5:服务器第二次计算,包括:服务器根据隐藏后的第一向量值、被请求方隐藏后的第二向量值以及服务器随机多项式,获得第三向量值,并将第三向量值发送至请求方;
步骤S6:请求方得出交集,包括:请求方利用自身私钥对交互结果进行解密,获得交互结果明文,然后根据第三向量值和交互结果明文,计算出请求方集合与被请求方集合的交集;
其中,步骤S1具体包括以下子步骤:A B
步骤S1.1:服务器S随机选取向量(x1,...,xn),生成服务器随机多项式γ(x)、γ(x),步骤S1.2:参与者A根据本身拥有的集合元素获得第一多项式,并计算向量(x1,...,xn)中每一个点对应的值,获得第一向量值,参与者B根据本身拥有的集合元素获得第二多项式计算向量(x1,...,xn)中每一个点对应的值,获得第二向量值;
A B
步骤S1.3:参与者A采用随机数zi对第一向量值进行隐藏,参与者B采用随机数zi对第二向量值进行隐藏,并分别将隐藏后的第一向量值和隐藏后的第二向量值发送至服务器;
步骤S1.4:参与者A、B将本身密钥对中的公钥发布至系统中;
步骤S3具体包括以下子步骤:S S
步骤S3.1:服务器S利用伪随机函数生成随机数Zi ,Zi=PRF(i,ks),(1≤i≤n);
S
步骤S3.2:服务器S用被请求方的公钥加密伪随机函数中的种子ks,得到种子密文C ,其S S
中,C=EnpkA(kS),然后将C发送给被请求方A;
S
步骤S3.3:服务器S根据步骤S3.1中生成的Zi ,计算 并用请求方B的公钥将其加密得到构造密文βi,其中, 然后将βi发送给被请求方A;
步骤S3.4:服务器S根据请求方发送过来的请求方随机数密文σi,(1≤i≤n),进行同态计算得到计算结果 然后将δi发送给被请求方。
2.根据权利要求1所述的方法,其特征在于,步骤S2的具体包括以下子步骤:B
步骤S2.1:请求方利用自身的公钥对随机数zi加密,得到请求方随机数密文σi;
步骤S2.2:请求方将请求方随机数密文σi,(1≤i≤n)发送给服务器。
3.根据权利要求1所述的方法,其特征在于,步骤S4具体包括以下子步骤:S
步骤S4.1:被请求方采用自身私钥解密服务器S传送过来的种子密文C ,kS=DesSKAS
(c ),解密得到种子ks后,根据伪随机函数 得到随机生成数步骤S4.2:被请求方根据βi,δi,以及随机生成数 计算得到交互结果 其中, 然后将 发送给请求方。
4.根据权利要求1所述的方法,其特征在于,步骤S5具体包括:服务器S根据参与者A,B发送的隐藏后的第一向量和第二向量 以及自A B
身生成的服 务器多项式γ (x) ,γ (x) ,计算第三向量 值 其中 ,并将结果 发送给请求方。
5.根据权利要求1所述的方法,其特征在于,步骤S6具体包括:步骤S6 .1:请求方用自身私钥解密被请求方传送的交互结果密文获得交互结果明文 其中,
步骤S6.2:请求方服务器发送的第三向量值 以及步骤S6.1中的交互结果明文 计算交集索引ωi,其中,
步骤S6.3:请求方根据步骤S6.2中得到的点值对(xi,ωi),(1≤i≤n)插值得到的零解作为集合的交集。
6.一种云环境下隐私保护的集合交集计算系统,其特征在于,所述系统包括服务器S、参与请求的双方用户A、B的系统,且参与者A、B均单独拥有d个集合元素,且,参与者A与参与者B中的每个集合元素都只由自己秘密拥有,其中,将参与者B作为请求方,参与者A作为被请求方,所述系统还包括:
参数初始化模块,用于进行参数的初始化,参数包括服务器随机多项式、请求方隐藏后的第一向量值和被请求方隐藏后的第二向量值;
请求方发送请求模块,用于请求方发送进行集合交集计算请求,包括:请求方生成随机数密文后,将随机数密文发送至服务器;
服务器第一次计算模块,用于进行服务器第一次计算,包括:服务器利用被请求方的公钥加密伪随机函数中的种子,得到种子密文,然后将种子密文发送给被请求方,利用生成的随机数计算服务器随机多项式后,利用请求方的公钥对多项式计算结果进行加密,获得构造密文,发送至被请求方,再根据随机数密文进行同态计算,将同态计算结果发送至被请求方;
被请求方交互计算模块,用于进行被请求方交互计算,包括:被请求方利用自身私钥对种子密文进行解密后,再根据伪随机函数中的种子,获得随机生成数;被请求方利用根据构造密文、同态计算结果和随机生成数,获得交互结果,然后将交互结果发送给请求方;
服务器第二次计算模块,用于进行服务器第二次计算,包括:服务器根据隐藏后的第一向量值、被请求方隐藏后的第二向量值以及服务器随机多项式,获得第三向量值,并将第三向量值发送至请求方;
交集求解模块,用于请求方得出交集,包括:请求方利用自身私钥对交互结果进行解密,获得交互结果明文,然后根据第三向量值和交互结果明文,计算出请求方集合与被请求方集合的交集;
其中,参数初始化模块具体用于执行下述步骤:A B
步骤S1.1:服务器S随机选取向量(x1,...,xn),生成服务器随机多项式γ(x)、γ(x),步骤S1.2:参与者A根据本身拥有的集合元素获得第一多项式,并计算向量(x1,...,xn)中每一个点对应的值,获得第一向量值,参与者B根据本身拥有的集合元素获得第二多项式计算向量(x1,...,xn)中每一个点对应的值,获得第二向量值;
A B
步骤S1.3:参与者A采用随机数zi对第一向量值进行隐藏,参与者B采用随机数zi对第二向量值进行隐藏,并分别将隐藏后的第一向量值和隐藏后的第二向量值发送至服务器;
步骤S1.4:参与者A、B将本身密钥对中的公钥发布至系统中;
其中,服务器第一次计算模块具体用于执行下述步骤:步骤S3.1:服务器S利用伪随机函数生成随机数S
步骤S3.2:服务器S用被请求方的公钥加密伪随机函数中的种子ks,得到种子密文C ,其S S
中,C=EnpkA(kS),然后将C发送给被请求方A;
S
步骤S3.3:服务器S根据步骤S3.1中生成的Zi,计算 并用请求方B的公钥将其加密得到构造密文βi,其中, 然后将βi发送给被请求方A;
步骤S3.4:服务器S根据请求方发送过来的请求方随机数密文σi,(1≤i≤n),进行同态计算得到计算结果 然后将δi发送给被请求方。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被执行时实现如权利要求1至5中任一项权利要求所述的方法。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5中任一项权利要求所述的方法。