一种具有隐私保护的两方多维数据比较方法和系统
技术领域
本发明涉及信息安全比较技术领域,特别是涉及一种具有隐私保护的两方多维数据比较方法和系统。
背景技术
随着互联网大数据的各种应用渗透到人们生活的方方面面,这些应用正影响着人们的日常生活方式、思维方式和工作模式,同时大数据所导致的隐私泄露也给人们带来了严重的威胁。因此,大数据时代的隐私保护问题是一个值得研究的问题。数据计算是一种基本的大数据隐私保护技术。该技术能够在不泄漏输入数据的同时完成对输入数据的计算任务。数据比较是其中应用非常广泛的一类数据计算。该类计算实现了在不泄漏输入数据的情况下得到这些数据之间的大小关系。
目前实现隐私保护数据比较的技术主要是多方安全计算。实现两个数之间比较大小的两方安全计算使得双方参与者在不知道彼此数据的情况下共同完成对彼此数据的比较。但该方法解决的是,两方一维数据的安全比较。考虑以下应用场景:两家有合作意向的公司想了解彼此在多个方面(如公司规模、人员流动率、运营成本、年度收益等等)的对比情况,但是两家公司都不愿意公开这些敏感信息;再如两位初相识的朋友之间相了解彼此在多个方面(如身高、体重、工资收入、股票投资、住房情况等等)的优劣情况,但是他们也不愿意透露自己的这些私密信息。为了实现上述应用需求,我们需要解决的关键问题是:如何在不泄露双方多维数据的情况下实现它们多维数据的比较。因此,如何实现具有隐私保护的两方多维数据的比较是一个值得研究的问题。
发明内容
本发明的目的是提供一种具有隐私保护的两方多维数据比较方法和系统,在不泄露两方多维数据的情况下只进行一轮通信便可以获得两方之间多个数据的比较结果,提高了计算效率和通信效率,特别适合资源受限的两个移动用户之间的多个数据的安全比较,具有很强的实用性。
为实现上述目的,本发明提供了如下方案:
一种具有隐私保护的两方多维数据比较方法,包括:
云服务器CS获取参数R1和参数R2,并将所述参数R1和参数R2分别发送给客户端A和客户端B;
所述客户端A获取用户A的多维数据;所述客户端B获取用户B的多维数据;所述用户A的多维数据和所述用户B的多维数据均包括公司规模维度数据、人员流动率维度数据、运营成本维度数据和年度收益维度数据;
所述云服务器CS生成公钥PKCS和私钥SKCS,并将所述公钥PKCS分别发送给所述客户端A和所述客户端B;
所述客户端A生成用户A的公钥PKA和用户A的私钥SKA,并将所述公钥PKA发送给云服务器CS;所述客户端B生成用户B的公钥PKB和用户B的私钥SKB,并将所述公钥PKB发送给云服务器CS;
所述客户端A拥有m维数据(a1,a2,…,am),每维数据可以用一个n位二进制数表示,即用户A的m维数据可以表示为一个二进制矩阵其中ai,n-1是最高二进制位,ai0是最低二进制位,aij为用户A的第i维数据的第j个比特位置上的二进制数;所述客户端B拥有m维数据(b1,b2,…,bm),每维数据可以用一个n位二进制数表示,即用户B的m维数据可以表示为一个二进制矩阵其中bi,n-1是最高二进制位,bi0是最低二进制位,bij为用户B的第i维数据的第j个比特位置上的二进制数;
所述客户端A对所述用户A的二进制矩阵进行盲化,得到十进制矩阵其中a′ij为用户A的第i维数据盲化后第j个比特位置上的十进制数;所述客户端B对所述用户B的二进制矩阵进行盲化,得到十进制矩阵其中b′ij为用户B的第i维数据盲化后第j个比特位置上的十进制数;
所述客户端A根据所述参数R1和所述参数R2将所述十进制矩阵封装成一个十进制数DA;所述客户端B根据所述参数R1和所述参数R2将所述十进制矩阵封装成一个十进制数DB;
所述客户端A,根据所述公钥PKCS对所述十进制数DA进行加密,得到密文CA,将所述密文CA传送给雾设备FD;所述客户端B,根据所述公钥PKCS对所述十进制数DB进行加密,得到密文CB,将所述密文CB传送给所述雾设备FD;
所述雾设备FD将所述密文CA和密文CB相乘得到新密文C,并将所述新密文C传送给云服务器CS;
所述云服务器CS根据所述私钥SKCS对所述新密文C进行解密,得到明文D;
所述云服务器CS根据所述参数R1和所述参数R2对所述明文D进行解析,得到解析结果x=(x1,x2,…,xm);
所述云服务器利用所述公钥PKA对所述解析结果x=(x1,x2,…,xm)进行加密,得到密文并将所述密文传输给所述客户端A;所述客户端A利用所述私钥SKA对所述密文进行解密,得到解析结果x=(x1,x2,…,xm);
所述云服务器CS利用所述公钥PKB对所述解析结果x=(x1,x2,…,xm)进行加密,得到密文并将所述密文传送给所述客户端B;所述客户端B利用所述私钥SKB对所述密文进行解密,得到解析结果x=(x1,x2,…,xm);
客户端A和客户端B分别根据解析结果x=(x1,x2,…,xm)和各自的原始数据,获取两方多维数据大小的比较结果:
若所述解析结果x=(x1,x2,…,xm)中xi为0,则所述用户A的第i维数据和所述用户B的第i维数据相等;
若所述解析结果x=(x1,x2,…,xm)中xi不为0,并假设xi等于j+1,则所述用户A的第i维数据和所述用户B的第i维数据从高比特位到低比特位的方向上第一个不相等的比特位是第j(即xi-1)个比特位;所述客户端A查看所述用户A的第i维数据的第xi-1个二进制位的数值为1还是为0,所述客户端B查看所述用户B的第i维数据的第(xi–1)个二进制位的数值为1还是为0;
若所述客户端A中第i维数据的第(xi–1)个二进制比特位上的数值为1,则所述用户A的第i维数据大于所述用户B的第i维数据;若所述客户端A中第i维数据的第(xi–1)个二进制比特位上的数值为0,则所述用户A的第i维数据小于所述用户B的第i维数据;
若所述客户端B中第i维数据的第(xi–1)个二进制比特位上的数值为1,则所述用户B的第i维数据大于所述用户A的第i维数据;若所述客户端B中第i维数据的第(xi–1)个二进制比特位上的数值为0,则所述用户B的第i维数据小于所述用户A的第i维数据;其中,i=1,2,…,m。
可选的,所述客户端A对所述用户A的多维数据进行盲化,得到十进制矩阵包括:
将所述用户A的多维数据表示为一个二进制矩阵
随机选择n个偶数ci,n-1,ci,n-2,...,ci,1,ci,0;将所选择的n个偶数分别添加到所述二进制矩阵的第i行,得到所述十进制矩阵
其中,i=1,2,...,m,m≥1,j=n-1,...,1,0,n≥1,ai,n-1是用户A的第i维数据的最高二进制位,ai0是用户A的第i维数据的最低二进制位,aij为用户A的第i维数据的第j个比特位置上的二进制数。
可选的,所述对所述用户B的多维数据进行盲化,得到十进制矩阵包括:
将所述用户B的第i维数据表示为一个二进制矩阵
随机选择n个偶数di,n-1,di,n-2,...,di,1,di,0;将所选择的n个偶数分别添加到所述二进制矩阵的第i行,得到所述十进制矩阵
其中,i=1,2,...,m,m≥1,j=n-1,...,1,0,n≥1,bi,n-1是用户B的第i维数据的最高二进制位,bi0是用户B的第i维数据的最低二进制位,bij为用户B的第i维数据的第j个比特位置上的二进制数。
可选的,所述封装得到的十进制数DA为:
所述封装得到的十进制数DB为:
其中,i=1,2,...,m,m≥1,j=n-1,...,1,0,n≥1,为所述参数R2的i次幂,为所述参数R1的(n-1)-j次幂。
可选的,所述明文D为:
其中,i=1,2,...,m,m≥1,j=n-1,...,1,0,n≥1,为所述参数R2的i次幂,为所述参数R1的(n-1)-j次幂。
可选的,所述云服务器CS根据所述参数R1和所述参数R2对所述明文D进行解析,得到解析结果,包括:
基于所述参数R2对所述明文D进行m次的整除和取余,得到m个第一解析结果Di,其中i=1,2,…,m;m的值与多维数据的总维数相同;
基于所述参数R1分别对第一解析结果Di进行最多n次的整除和取余,在进行第(n-1)-j+1次的整除和取余之后,得到第二解析结果Dij,Dij=a″ij+b″ij;其中,i=1,2,...,m,m≥1,j=n-1,...,1,0,n≥1;
判断所述第二解析结果Dij的数值是奇数还是偶数,若所述第二解析结果Dij的数值为奇数,则与Di对应的解析结果xi=j+1,结束对Di的解析;若所述第二解析结果Dij的数值为偶数,则继续对Di进行下一轮的整除和取余;若对Di进行了n次整除和取余,每次得到的第二解析结果均为偶数,则与Di对应的解析结果xi=0。
可选的,所述解析结果x为x=(x1,x2,…,xm);其中,i=1,2,...,m,m≥1。
可选的,所述获取参数R1和参数R2,包括:
获取随机正整数T;
使所述参数R1为R1=T+2,使所述参数R2为R2=(T+2)n-T,其中n为整数。
一种具有隐私保护的两方多维数据比较系统,包括:
参数获取模块,用于通过云服务器CS获取参数R1和参数R2,并将所述参数R1和参数R2分别发送给客户端A和客户端B;
多维数据获取模块,用于通过所述客户端A获取用户A的多维数据,用于通过所述客户端B获取用户B的多维数据;所述用户A的多维数据和所述用户B的多维数据均包括公司规模维度数据、人员流动率维度数据、运营成本维度数据和年度收益维度数据;
第一秘钥生成模块,用于通过所述云服务器CS生成公钥PKCS和私钥SKCS,并将所述公钥PKCS分别发送给所述客户端A和所述客户端B;
第二秘钥生成模块,用于通过所述客户端A生成用户A的公钥PKA和用户A的私钥SKA,并将所述公钥PKA发送给云服务器CS;
第三秘钥生成模块,用于通过所述客户端B生成用户B的公钥PKB和用户B的私钥SKB,并将所述公钥PKB发送给云服务器CS;
第一盲化处理模块,用于通过所述客户端A对所述用户A的多维数据进行盲化,得到十进制矩阵其中a′ij为用户A的第i维数据盲化后的第j个比特位置上的十进制数;
第二盲化处理模块,用于通过所述客户端B对所述用户B的多维数据进行盲化,得到十进制矩阵其中b′ij为用户B的第i维数据盲化后的第j个比特位置上的十进制数;
第一矩阵封装模块,用于通过所述客户端A根据所述参数R1和所述参数R2,将所述十进制矩阵封装为一个十进制数DA;
第二矩阵封装模块,用于通过所述客户端B根据所述参数R1和所述参数R2,将所述十进制矩阵封装为一个十进制数DB;
第一密文生成模块,用于通过所述客户端A,根据所述公钥PKCS对所述十进制数DA进行加密,得到密文CA,将所述密文CA传送给雾设备FD;
第二密文生成模块,用于通过所述客户端B根据所述公钥PKCS对所述十进制数DB进行加密,得到密文CB,并将所述密文CB传送给所述雾设备FD;
第三密文生成模块,用于通过所述雾设备FD将所述密文CA和密文CB相乘得到新密文C,并将所述新密文C传送给云服务器CS;
明文获取模块,用于通过所述云服务器CS根据所述私钥SKCS对所述新密文C进行解密,得到明文D;
第一解析模块,用于通过所述云服务器CS根据所述参数R1和所述参数R2对所述明文D进行解析,得到解析结果x=(x1,x2,…,xm);
第一加密模块,用于通过所述云服务器利用所述公钥PKA对所述解析结果进行加密,得到密文并将所述密文传输给所述客户端A;
第一解密模块,用于通过所述客户端A利用所述私钥SKA对所述密文进行解密,得到解析结果x=(x1,x2,…,xm);
第二加密模块,用于通过所述云服务器CS利用所述公钥PKB对所述解析结果进行加密,得到密文并将所述密文传送给所述客户端B;
第二解密模块,用于通过所述客户端B利用所述私钥SKB对所述密文进行解密,得到解析结果x=(x1,x2,…,xm);
比较结果获取模块,用于通过客户端A和客户端B分别根据得到的解析结果和各自的原始数据,获取两方多维数据大小的比较结果:
若所述解析结果xi为0,则所述用户A的第i维数据和所述用户B的第i维数据相等;
若所述解析结果xi不为0,并假设xi等于j+1,则所述用户A的第i维数据和所述用户B的第i维数据从高比特位到低比特位的方向上第一个不相等的比特位是第j(即xi-1)个比特位;所述客户端A查看所述用户A的第i维数据的第xi-1个二进制位的数值为1还是为0,所述客户端B查看所述用户B的第i维数据的第(xi–1)个二进制位的数值为1还是为0;
若所述客户端A中第i维数据的第(xi–1)个二进制比特位上的数值为1,则所述用户A的第i维数据大于所述用户B的第i维数据;若所述客户端A中第i维数据的第(xi–1)个二进制比特位上的数值为0,则所述用户A的第i维数据小于所述用户B的第i维数据;
若所述客户端B中第i维数据的第(xi–1)个二进制比特位上的数值为1,则所述用户B的第i维数据大于所述用户A的第i维数据;若所述客户端B中第i维数据的第(xi–1)个二进制比特位上的数值为0,则所述用户B的第i维数据小于所述用户A的第i维数据;其中,i=1,2,…,m。
根据本发明提供的具体实施例,本发明公开了以下技术效果:本发明提供的具有隐私保护的两方多维数据比较方法和系统,通过利用数的二进制表示将用户A的多维数据和用户B的多维数据分别表示为一个二进制矩阵,然后对得到的二进制矩阵进行盲化处理得到一个十进制矩阵,再根据参数R1和参数R2将用户A和用户B中盲化后得到的十进制矩阵分别封装成一个十进制数,使得用户A和用户B中所包含的多维数据分别隐藏到一个十进制数中;然后对用户A和用户B所得到的十进制数利用同态加密算法分别进行加密,并将密文发送给雾设备;雾设备对收到的密文进行密文域上的运算,并将得到的结果密文发生给云服务器;云服务器对结果密文执行解密运算,并利用参数R1和R2对解密得到的结果进行多次解析,通过判断所得到解析结果就可以得到两方多维数据的比较结果,以能够在不泄露双方多维数据的情况下只进行一轮通信便可以获得双方之间多个数据的比较结果,提高了计算效率和通信效率,特别适合资源受限的两个移动用户之间的多个数据的安全比较,具有很强的实用性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例两方多维数据比较方法涉及的实体结构示意图;
图2为本发明实施例两方多维数据比较方法的流程图;
图3为本发明实施例两方多维数据比较系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种两方多维数据比较方法和系统,能够在提高两方多维数据安全性的情况下,提高比较效率。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图1所示,本发明涉及如下实体:客户端A、客户端B、雾设备FD和云服务器CS。假设用户A和用户B各自拥有一个m维数据,用(a1,a2,…,am)表示用户A的m维数据,用(b1,b2,…,bm)表示用户B的m维数据。将每维数据表示为n位二进制数,即用户A的第i维数据表示为(ai,n-1,ai,n-2,…,ai1,ai0)其中ai,n-1是最高二进制位,ai0是最低二进制位,i=1,2,…,m,即用户A的m维数据可以表示为一个二进制矩阵用户B的第i维数据表示为(bi,n-1,bi,n-2,…,bi1,bi0)其中bi,n-1是最高二进制位,bi0是最低二进制位,i=1,2,…,m,即用户B的m维数据可以表示为一个二进制矩阵用户A和用户B在不知道彼此数据的情况下,获得彼此每维数据的比较结果。换句话说,用户A在不知道(b1,b2,…,bm)的情况下获知ai与bi(i=1,2,…,m)的大小关系,同时用户B在不知道(a1,a2,…,am)的情况下获知bi与ai(i=1,2,…,m)的大小关系。同时,在整个处理过程中雾设备FD和云服务器CS也不知道用户A的数据(a1,a2,…,am)和用户B的数据(b1,b2,…,bm)。
图2为本发明实施例两方多维数据比较方法的流程图,如图2所示,一种具有隐私保护的两方多维数据比较方法,包括:
S100、云服务器CS获取参数R1和参数R2,并将所述参数R1和参数R2分别发送给客户端A和客户端B。
S101、所述客户端A获取用户A的多维数据。所述客户端B获取用户B的多维数据。所述用户A的多维数据和所述用户B的多维数据均包括公司规模维度数据、人员流动率维度数据、运营成本维度数据和年度收益维度数据。
S102、所述云服务器CS生成公钥PKCS和私钥SKCS,并将所述公钥PKCS分别发送给所述客户端A和所述客户端B。
S103、所述客户端A生成用户A的公钥PKA和用户A的私钥SKA,并将所述公钥PKA发送给云服务器CS。所述客户端B生成用户B的公钥PKB和用户B的私钥SKB,并将所述公钥PKB发送给云服务器CS。
S104、所述客户端A对所述用户A的多维数据进行盲化,得到十进制矩阵其中a′ij为用户A的第i维数据盲化后第j个比特位置上的十进制数。所述客户端B对所述用户B的多维数据进行盲化,得到十进制矩阵其中b′ij为用户B的第i维数据盲化后第j个比特位置上的十进制数。
S105、所述客户端A根据所述参数R1和所述参数R2将所述十进制矩阵封装为一个十进制数DA,所述客户端B根据所述参数R1和所述参数R2将所述十进制矩阵封装为一个十进制数DB,其中,i=1,2,...,m,m≥1,j=n-1,...,1,0,n≥1,为所述参数R2的i次幂,为所述参数R1的(n-1)-j次幂。
S106、所述客户端A,根据所述公钥PKCS对所述矩阵DA进行加密,得到密文CA,将所述密文CA传送给雾设备FD。所述客户端B,根据所述公钥PKCS对所述矩阵DB进行加密,得到密文CB,将所述密文CB传送给所述雾设备FD。
S107、所述雾设备FD将所述密文CA和密文CB相乘得到新密文C,并将所述新密文C传送给云服务器CS。
S108、所述云服务器CS根据所述私钥SKCS对所述新密文C进行解密,得到明文D,其中,i=1,2,...,m,m≥1,j=n-1,...,1,0,n≥1,为所述参数R2的i次幂,为所述参数R1的(n-1)-j次幂。
S109、所述云服务器CS根据所述参数R1和所述参数R2对所述明文D进行解析,得到解析结果x=(x1,x2,…,xm)。
S110、所述云服务器利用所述公钥PKA对所述解析结果x=(x1,x2,…,xm)进行加密,得到密文并将所述密文传输给所述客户端A。所述客户端A利用所述私钥SKA对所述密文进行解密,得到解析结果x=(x1,x2,…,xm)。
S111、所述云服务器CS利用所述公钥PKB对所述解析结果x=(x1,x2,…,xm)进行加密,得到密文并将所述密文传送给所述客户端B。所述客户端B利用所述私钥SKB对所述密文进行解密,得到解析结果x=(x1,x2,…,xm)。
S112、客户端A和客户端B分别根据得到的解析结果x=(x1,x2,…,xm)和各自的原始数据,获取两方多维数据大小的比较结果:
若所述解析结果x=(x1,x2,…,xm)中xi(i=1,2,…,m)为0,则所述用户A的第i维数据和所述用户B的第i维数据相等。
若所述解析结果x=(x1,x2,…,xm)中xi(i=1,2,…,m)不为0,并假设xi等于j+1,则所述用户A的第i维数据和所述用户B的第i维数据从高比特位到低比特位的方向上第一个不相等的比特位是第j(即xi-1)个比特位;所述客户端A查看所述用户A的第i维数据的第(xi–1)个二进制位的数值为1还是为0,所述客户端B查看所述用户B的第i维数据的第(xi–1)个二进制位的数值为1还是为0。
若所述客户端A中第i维数据的第(xi–1)个二进制比特位上的数值为1,则所述用户A的第i维数据大于所述用户B的第i维数据。若所述客户端A中第i维数据的第(xi–1)个二进制比特位上的数值为0,则所述用户A的第i维数据小于所述用户B的第i维数据。
若所述客户端B中第i维数据的第(xi–1)个二进制比特位上的数值为1,则所述用户B的第i维数据大于所述用户A的第i维数据。若所述客户端B中第i维数据的第(xi–1)个二进制比特位上的数值为0,则所述用户B的第i维数据小于所述用户A的第i维数据。
在步骤104中,客户端A对所述用户A的多维数据进行盲化,得到十进制矩阵具体包括:
将所述用户A的多维数据表示为一个二进制矩阵
随机选择n个偶数ci,n-1,ci,n-2,...,ci,1,ci,0;将所选择的n个偶数分别添加到所述二进制矩阵的第i行,得到所述矩阵
其中,i=1,2,...,m,m≥1,j=n-1,...,1,0,n≥1,ai,n-1是用户A的第i维数据的最高二进制位,ai0是用户A的第i维数据的最低二进制位,aij为用户A的第i维数据的第j个比特位置上的二进制数。
客户端B对所述用户B的多维数据进行盲化,得到十进制矩阵具体包括:
将所述用户B的第i维数据表示为一个二进制矩阵
随机选择n个偶数di,n-1,di,n-2,...,di,1,di,0;将所选择的n个偶数分别添加到所述二进制矩阵的第i行,得到所述矩阵
其中,i=1,2,...,m,m≥1,j=n-1,...,1,0,n≥1,bi,n-1是用户B的第i维数据的最高二进制位,bi0是用户B的第i维数据的最低二进制位,bij为用户B的第i维数据的第j个比特位置上的二进制数。
在步骤S109中,云服务器CS根据所述参数R1和所述参数R2对所述明文D进行解析,得到解析结果,具体包括:
基于所述参数R2对所述明文D进行m次的整除和取余,得到m个第一解析结果Di,其中i=1,2,…,m。m的值与多维数据的总维数相同。
基于所述参数R1对第一解析结果Di进行最多n次的整除和取余,在进行第(n-1)-j+1次的整除和取余之后,得到第二解析结果Dij,Dij=a″ij+b″ij。其中,i=1,2,...,m,m≥1,j=n-1,...,1,0,n≥1。
判断所述第二解析结果Dij的数值是奇数还是偶数,若所述第二解析结果Dij的数值为奇数,则与Di对应的解析结果xi=j+1,结束对Di的解析;若所述第二解析结果Dij的数值为偶数,则继续对Di进行下一轮的整除和取余;若对Di进行了n次整除和取余,每次得到的第二解析结果均为偶数,则与Di对应的解析结果xi=0。。其中,所述解析结果x为x=(x1,x2,…,xm)。其中,i=1,2,...,m,m≥1。
步骤S100中,获取参数R1和参数R2,具体包括:
获取随机正整数T。
使所述参数R1为R1=T+2,使所述参数R2为R2=(T+2)n-T,其中n为整数。
此外,在步骤S100之前还包括系统初始化。所述系统初始化具体包括:
系统生成Paillier Cryptosystem(保利尔密码系统)的参数,包括N=pq,p、q是两个大素数,g是的一个生成元,λ=lcm(p-1,q-1),μ=(L(gλmodN2))-1,L(μ)=(μ-1)/N,其中生成ElGamal Cryptosystem(异型密码系统)的参数,包括一个大素数 是的一个生成元,其中
基于上述两种密码系统,在步骤S102中,云服务器CS生成自己的公私钥对(PKCS,SKCS),(PKCS,SKCS)是基于Paillier Cryptosystem的公私钥对,PKCS=(N,g),SKCS=(λ,μ)。
在步骤S103中用户A和用户B分别生成自己的公私钥对(PKA,SKA)和(PKB,SKB)。(PKA,SKA)和(PKB,SKB)是基于ElGamal Cryptosystem的公私钥对,SKA=αA,SKB=αB,
在步骤S106中,客户端A和客户端B分别利用云服务器的公钥CS的公钥PKCS对生成的十进制数DA和十进制数DB进行加密,具体包括:
客户端A随机选择一个数然后利用云服务器CS的公钥PKCS对执行Paillier加密算法,得到密文:
客户端B随机选择一个数然后利用云服务器CS的公钥PKCS对执行Paillier加密算法,得到密文:
在步骤S107中,雾设备FD对密文CA和密文CB进行如下聚合操作,得到密文C:
在步骤110中,云服务器CS随机选择一个数然后利用用户A的公钥PKA对解析结果执行ElGamal加密算法,得到密文为:
在步骤S101中,云服务器CS随机选择一个数然后利用用户B的公钥PKB对解析结果执行ElGamal加密算法,得到密文为:
此外,如图3所示,本发明还提供了一种具有隐私保护的两方多维数据比较系统,包括:
参数获取模块1,用于通过云服务器CS获取参数R1和参数R2,并将所述参数R1和参数R2分别发送给客户端A和客户端B。
多维数据获取模块2,用于通过所述客户端A获取用户A的多维数据,用于通过所述客户端B获取用户B的多维数据。所述用户A的多维数据和所述用户B的多维数据均包括公司规模维度数据、人员流动率维度数据、运营成本维度数据和年度收益维度数据。
第一秘钥生成模块3,用于通过所述云服务器CS生成公钥PKCS和私钥SKCS,并将所述公钥PKCS分别发送给所述客户端A和所述客户端B。
第二秘钥生成模块4,用于通过所述客户端A生成用户A的公钥PKA和用户A的私钥SKA,并将所述公钥PKA发送给云服务器CS。
第三秘钥生成模块5,用于通过所述客户端B生成用户B的公钥PKB和用户B的私钥SKB,并将所述公钥PKB发送给云服务器CS。
第一盲化处理模块6,用于通过所述客户端A对所述用户A的多维数据进行盲化,得到十进制矩阵其中a′ij为用户A的第i维数据盲化后第j个比特位置上的十进制数。
第二盲化处理模块7,用于通过所述客户端B对所述用户B的多维数据进行盲化,得到十进制矩阵其中b′ij为用户B的第i维数据盲化后第j个比特位置上的十进制数。
第一矩阵转化模块8,用于通过所述客户端A根据所述参数R1和所述参数R2将所述矩阵封装成一个十进制数DA。
第二矩阵转化模块9,用于通过所述客户端B根据所述参数R1和所述参数R2将所述矩阵封装成一个十进制数DB。
第一密文生成模块10,用于通过所述客户端A,根据所述公钥PKCS对所述十进制数DA进行加密,得到密文CA,将所述密文CA传送给雾设备FD。
第二密文生成模块11,用于通过所述客户端B根据所述公钥PKCS对所述十进制数DB进行加密,得到密文CB,并将所述密文CB传送给所述雾设备FD。
第三密文生成模块12,用于通过所述雾设备FD将所述密文CA和密文CB相乘得到新密文C,并将所述新密文C传送给云服务器CS。
明文获取模块13,用于通过所述云服务器CS根据所述私钥SKCS对所述新密文C进行解密,得到明文D。
第一解析模块14,用于通过所述云服务器CS根据所述参数R1和所述参数R2对所述明文D进行解析,得到解析结果。
第一加密模块15,用于通过所述云服务器利用所述公钥PKA对所述解析结果进行加密,得到密文并将所述密文传输给所述客户端A。
第一解密模块16,用于通过所述客户端A利用所述私钥SKA对所述密文进行解密,得到解析结果x=(x1,x2,…,xm)。
第二加密模块17,用于通过所述云服务器CS利用所述公钥PKB对所述解析结果进行加密,得到密文并将所述密文传送给所述客户端B。
第二解密模块18,用于通过所述客户端B利用所述私钥SKB对所述密文进行解密,得到解析结果x=(x1,x2,…,xm)。
比较结果获取模块19,用于通过客户端A和客户端B分别根据得到的解析结果和各种的原始数据,获取两方多维数据大小的比较结果:
若所述解析结果和所述解析结果均为0,则所述用户A的第i维数据和所述用户B的第i维数据相等。
若所述解析结果x=(x1,x2,…,xm)中xi(i=1,2,…,m)不为0,并假设xi等于j+1,则所述用户A的第i维数据和所述用户B的第i维数据从高比特位到低比特位的方向上第一个不相等的比特位是第j(即xi-1)个比特位;所述客户端A查看所述用户A的第i维数据的第(xi–1)个二进制位的数值为1还是为0,所述客户端B查看所述用户B的第i维数据的第(xi–1)个二进制位的数值为1还是为0。
若所述客户端A中第i维数据的第(xi–1)个二进制比特位上的数值为1,则所述用户A的第i维数据大于所述用户B的第i维数据。若所述客户端A中第i维数据的第(xi–1)个二进制比特位上的数值为0,则所述用户A的第i维数据小于所述用户B的第i维数据。
若所述客户端B中第i维数据的第(xi–1)个二进制比特位上的数值为1,则所述用户B的第i维数据大于所述用户A的第i维数据。若所述客户端B中第i维数据的第(xi–1)个二进制比特位上的数值为0,则所述用户B的第i维数据小于所述用户A的第i维数据。
根据本发明提供的具体实施例,本发明公开了以下技术效果:本发明提供的具有隐私保护的两方多维数据比较方法和系统,利用数的二进制表示将用户A的多维数据和用户B的多维数据分别表示为一个二进制矩阵,然后对得到的二进制矩阵进行盲化处理得到一个十进制矩阵,再根据参数R1和参数R2将用户A和用户B盲化后得到的十进制矩阵分别封装成一个十进制数,使得用户A和用户B中所包含的多维数据封装到了一个十进制数中;然后对用户A和用户B所得到的十进制数利用同态加密算法分别进行加密,并将密文发送给雾设备;雾设备对收到的密文进行密文域上的运算,并将得到的结果密文发生给云服务器;云服务器对结果密文执行解密运算,并利用参数R1和R2对解密得到的结果进行多次解析,通过判断所得到解析结果就可以得到两方多维数据的比较结果。本发明提供的具有隐私保护的两方多维数据比较方法和系统,能够在不泄露双方多维数据的情况下只进行一轮通信便可以获得双方之间多个数据的比较结果,提高了计算效率和通信效率,特别适合资源受限的两个移动用户之间的多个数据的安全比较,具有很强的实用性。
此外,本法说明所提供的具有隐私保护的两方多维数据比较方法和系统,将雾设备引入到客户端-服务器模型中,使得本发明只需要进行一轮通信就可以完成双方的多维数据间的大小比较,这就能够大大减小双方数据在比较过程中的计算代价和通信代价。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。