一种保护多方隐私的联邦k近邻查询方法

文档序号:26280486发布日期:2021-08-13 19:37阅读:179来源:国知局
一种保护多方隐私的联邦k近邻查询方法

本发明属于联邦计算领域,具体涉及一种保护多方隐私的联邦k近邻查询方法。



背景技术:

随着大数据时代的飞速发展,数据在各种产业应用中具有越来越重要的价值。由于单一主体所拥有的数据有限,因此各主体间互相共享数据能进一步挖掘数据所含价值。然而出于保护敏感数据隐私的考量以及受监管政策所限制,各主体不能直接拿出数据进行共享。因此如何在“数据不能出本地”这一保护隐私的联邦场景下,完成多方协同的查询与计算成为亟待解决的问题。

k近邻查询是指返回数据集中距查询点最近的前k个点,是数据库的经典查询之一,可用于聚类、检索等。而联邦k近邻是指数据分布在多个数据拥有方中,如何在各数据拥有方不交出数据即“数据不出本地”的前提下,完成所有数据上的k近邻查询。

已有保护数据隐私的查询处理方法如加密数据库技术,是指数据拥有方将数据加密并上传至云服务器,云服务器在加密数据上进行查询与计算操作;该技术也可应用至多方共享数据场景下的k近邻查询:首先,各方使用同态加密技术将所有数据均加密上传至云端服务器;服务器在密文上计算所有数据点距查询点的距离;最后对这些距离排序并选出前k个最近的数据点作为答案。

尽管该方法在完成查询的同时一定程度上保护了数据隐私,但是并不能满足“数据不出本地”的隐私保护要求。但是由于各方均需要将全部数据加密传出本地至云服务器,而云服务器汇集了所有数据一旦被攻击,数据泄露风险极大,且难以保证云服务提供商的可靠性。因此该方法不能满足“数据不出本地”的联邦隐私保护要求。

在联邦数据库技术中,其架构主要由各数据拥有方的本地数据库和中心管理系统组成。针对用户发起的查询,中心管理系统首先将该查询进行解析和拆分,其次由各数据拥有方的本地数据库系统执行拆分所得的子查询,最后由中心管理系统聚合各查询结果从而得到该查询的最终结果。

该技术尽管避免了直接汇总各数据拥有方的数据,减少了发送出本地的数据量,一定程度上贴合“数据不出本地”的思想,但在查询拆分和结果聚合过程中并不考虑保护数据隐私,因此该技术也难以满足在联邦场景下进行保护隐私的查询。

近年来也出现了一些基于联邦数据库架构并保护数据隐私的数据联邦系统,然而这些系统多针对关系型数据库的查询,并未解决诸如k近邻查询等空间数据上的经典查询。



技术实现要素:

针对现有技术的不足,本发明采用了多方安全计算技术,通过设计联邦场景下k近邻查询的拆分与结果聚合方法,使各数据拥有方在不泄露本地数据隐私的前提下,达到了共享数据协同计算k近邻查询的效果,具体是一种保护多方隐私的联邦k近邻查询方法,具有在大规模数据上安全高效的计算联邦k近邻查询的优势,实现多数据拥有方在数据不出本地前提下完成保护数据隐私的数据共享。

所述的保护多方隐私的联邦k近邻查询方法,具体步骤如下:

步骤一、针对查询点lq,服务器生成k近邻查询请求q;

q=(lq,k),其中lq表示查询点的坐标,k表示与查询点的距离最近的k个数据点。

步骤二、服务器端将查询请求q发送给n个数据拥有方客户端,各客户端分别执行各自的本地k近邻查询,得到各自的本地查询结果。

各客户端为f1,f2,...,fn;数据点集合为{l1,l2,...,li,...,ln};

客户端fi计算本地k近邻查询所得数据点集合为是客户端fi本地数据集中,与查询点lq的距离值从小到大排序中第j近的数据点。

步骤三、利用各客户端的本地查询结果,确定联邦k近邻中第k近数据点距离的上界rmax和距离下界为rmin=0。

确定上下界的方法包括以下两种:

1)、首先,客户端fi距查询点lq最远的距离为

然后,各客户端将各自的最远距离d1,d2,...,dn分别发送至服务器端,服务器端选取其中最小值设为上界rmax=min{d1,d2,...,dn};同时设定距离下界为rmin=0。

2)、首先,客户端fi距查询点lq最远的距离为

然后,各客户端将各自的最远距离分别添加噪声得d′i=di+△i;

其中△i>0,具体值可通过随机或差分隐私技术确定。

最后,各客户端将添加噪声后的最远距离d1′,d2′,...,dn′分别发送至服务器端,服务器端选取其中最小值设为上界rmax=min{d1′,d2′,...,dn′},同时设定下界为rmin=0。

通过为最远距离添加噪声保护了各数据拥有方距查询点第k近的距离值。

步骤四、服务器端通过上界rmax和下界rmin设定二分距离阈值rq,并生成范围计数查询请求rangecount发送给各客户端;

二分距离阈值rq计算公式为:

范围计数查询请求为:rangecount=(lq,rq);

rangecount表示返回到查询点lq距离不超过rq的数据点的个数;

步骤五、各客户端分别执行查询请求rangecount,得到各自的查询个数,结合多方安全计算技术,在保护各客户端数据隐私的前提下将查询个数进行融合并发送至服务器端。

融合公式为:c=c1+c2+…+cn;c1,c2,...,cn为各客户端的查询结果。

步骤六、服务器端判断融合结果是否满足c≠k,且rmax-rmin>tr,如果是,更新联邦k近邻中第k近数据点距离的上界或下界;返回步骤四,通过二分搜索不断迭代从而逼近第k近数据点距离的值;否则,距离r为最终的rq;停止搜索并继续执行步骤七。

tr为设定阈值,当c≠k时,继续判断是否c>k,如果是,更新联邦k近邻中第k近数据点距离的上界rmax=rq;否则,c<k,更新下界rmin=rq;

步骤七、服务器端根据查询点lq与最终距离r发起范围查询请求,并返给各客户端。

范围查询请求为rangequery=(lq,r);该请求表示返回与查询点lq距离不超过rq的数据点对象。

步骤八、各客户端分别在本地执行范围查询请求,得到各自的查询结果p1,p2,...,pn;结合多方安全计算技术,在保护各客户端数据来源隐私的前提下将最终的查询结果进行融合,并发送至服务器端,即为联邦k近邻查询结果。

融合公式为:p=p1∪p2∪...∪pn。

本发明的优点在于:

1)、一种保护多方隐私的联邦k近邻查询方法,相比现有技术中,对于查询请求,n个数据拥有方本地执行k近邻查询后,将各自的查询结果作为候选数据点,并安全加密后发送至服务器端,对n*k个数据点排序后选出距查询点最近的前k个点;本发明通过对联邦k近邻查询进行拆解与聚合,使得多数据拥有方共同计算k近邻查询,不仅能保护各数据拥有方的数据隐私,且能高效完成计算,以应用至大规模数据。

2)、一种保护多方隐私的联邦k近邻查询方法,将联邦k近邻查询拆分为范围计数与范围查询,增强对各数据拥有方数据的隐私保护;通过不同距离的范围计数,每次只汇总符合距离要求的数据点个数而非数据点本身,只在完成二分迭代确定距离后,再进行范围查询,此时汇总的数据点即为本次k近邻查询的结果;从而避免现有方法中汇总所有候选数据点时,可能泄露候选点中不是查询结果的数据点信息。

3)、一种保护多方隐私的联邦k近邻查询方法,通过二分搜索逼近第k近点的距离值,高效且可适用大规模数据;现有方法需要对n*k个候选点进行加密排序,时间复杂度为o(nklognk*e加密比较),而本发明通过二分搜索逼近距离,时间复杂度o(logrmax*e加密求和(n));可知,本发明的时间复杂度上与k值无关,所以在时间效率上首先去除了对k值的敏感度,即使k值增大也无影响。

附图说明

图1为本发明一种保护多方隐私的联邦k近邻查询方法的框架图;

图2为本发明一种保护多方隐私的联邦k近邻查询方法的流程图;

图3为本发明使用对各客户端rangecount的查询结果进行融合的示意图;

图4为本发明实施例中联邦k近邻查询中迭代过程示意图;

图5为本发明实施例中联邦k近邻查询中迭代终止示意图。

具体实施方式

下面结合实施例和附图,对本发明的实施方式做详细、清楚的描述。

所述的使用联邦数据库技术计算联邦k近邻查询是指:中心管理系统首先将查询任务拆分给n个数据拥有方,各拥有方在自有数据上计算本地k近邻查询;每方均计算得k个候选点,并将所有n*k个候选点发送至中心管理系统;中心管理系统对所有候选点排序选出前k个数据点即为联邦k近邻答案。

本发明提供了一种保护多方隐私的联邦k近邻查询方法,高效且安全,使各数据拥有方在不泄露本地数据隐私的前提下,达到了共享数据协同计算k近邻查询的效果;搭建的架构如图1所示,包括服务器端和若干数据拥有方的客户端;服务器端负责协调多方客户端,包括:接收k近邻查询、分解k近邻查询、分发子查询以及汇总子查询结果等。各数据拥有方的客户端主要配合服务器端,在各方本地完成对本地数据库的查询。

首先,服务器端接收联邦k近邻距离查询请求,并发送给n个客户端,各客户端执行本地数据库查询,得到本地查询结果,返回给客户端本地k近邻距离结果。服务器端根据各客户端的本地查询结果,从而确定联邦k近邻中第k近数据点距离的上界rmax和下界,进一步根据二分搜索思想设定距离阈值,根据该阈值发起范围计数请求发送给各客户端;各客户端统计个数后进行安全加密融合并发送至服务器端,服务器端不断比较与k的大小,更新上下界rmax,rmin,直至满足条件后得到最终的距离阈值;服务器端发起范围查询请求,并返给各客户端,各客户端将本地符合范围查询的各数据点进行安全加密融合,并发送至服务器端,得到最终的联邦k近邻查询结果。

如图2所示,具体分以下步骤:

步骤一、针对查询点lq,服务器利用联邦k近邻查询,生成k近邻查询请求q;

q=(lq,k),其中lq表示查询点的坐标,k表示与查询点的距离最近的k个数据点;该请求表示返回离查询点lq距离最近的前k个数据点;

距离可以为欧氏距离等距离度量。

步骤二、服务器端将查询请求q发送给n个数据拥有方客户端,各客户端分别执行各自的本地k近邻查询,得到各自的本地查询结果。

各客户端为f1,f2,...,fn;数据点集合为{l1,l2,...,li,...,ln};

客户端fi计算本地k近邻查询所得数据点集合为是客户端fi本地数据集中,与查询点lq的距离值从小到大排序中第j近的数据点。

步骤三、利用各客户端的本地查询结果,确定联邦k近邻中第k近数据点距离的上界rmax和距离下界为rmin=0。

确定上下界的方法包括以下两种:

1)、首先,客户端fi距查询点lq最远的距离为

然后,各客户端将各自的最远距离d1,d2,...,dn分别发送至服务器端,服务器端选取其中最小值设为上界rmax=min{d1,d2,...,dn};同时设定距离下界为rmin=0。

2)、首先,客户端fi距查询点lq最远的距离为

然后,各客户端将各自的最远距离分别添加噪声得d′i=di+△i;

其中△i>0,具体值可通过随机或差分隐私技术确定。

最后,各客户端将添加噪声后的最远距离d1′,d2′,...,dn′分别发送至服务器端,服务器端选取其中最小值设为上界rmax=min{d1′,d2′,...,dn′},同时设定下界为rmin=0。

通过为最远距离添加噪声保护了各数据拥有方距查询点第k近的距离值。

步骤四、服务器端通过上界rmax和下界rmin设定二分距离阈值rq,并生成范围计数查询请求rangecount发送给各客户端;

二分距离阈值rq计算公式为:

根据二分搜索思想,服务器端根据设定的二分距离阈值rq,发送范围计数查询请求为:rangecount=(lq,rq);

rangecount表示返回到查询点la距离不超过rq的数据点的个数;

步骤五、各客户端分别执行查询请求rangecount,得到各自的查询个数,结合多方安全计算融合技术,在保护各客户端数据隐私的前提下将查询个数进行融合并发送至服务器端。

多方安全计算包含混淆电路、秘密共享等多种方法,如图3所示,此处使用基于秘密共享的方法计算c=c1+c2+…+cn,c1,c2,...,cn为各客户端rangecount的查询结果;

具体过程为:

1.首先,服务器端生成与客户端数量等同的n个随机数,组成集合u,并发送给所有客户端。

u={u1,u2,...,un}

2.每个客户端结合自身随机生成的n-1个数字,计算各客户端对应的多项式:

客户端fi随机生成的n-1个数字为ai(n-1),ai(n-2),...,ai3,ai2,ai1,多项式为:

ti(u)=ai(n-1)un-1+ai(n-2)un-2+…+ai3u3+ai2u2+ai1u+ci;

3.每个客户端将多项式计算结果分别发给其余各客户端。

客户端f1对应的多项式计算结果为t1(u),包括t1(u1),t1(u2),...,t1(ui),...,t1(un),并将各结果分别发给n个对应的客户端,如t1(u1)分给客户端f1;t1(u2)分给客户端f2,……以此类推,t1(un)分给客户端fn。

同理,客户端fi对应的多项式计算结果为t1(u),包括ti(u1),ti(u2),...,ti(uj),...,ti(un),并将各结果分别发给n个对应的客户端,如ti(u1)分给客户端f1;ti(u2)分给客户端f2,……以此类推,ti(un)分给客户端fn。

4.各客户端都得到n个值,将其相加所得之和等价于将ui代入新的多项式s(ui)。

客户端fi得到

5.每个客户端都将该和发送至服务器端,服务器端得到s(u1),s(u2),....,s(un),相当于关于n-1次多项式的n个点,利用该n个点解出该多项式,多项式的常数项即为c。

至此服务器已经得到c=c1+c2+…+cn

在该计算过程中,服务器与各客户端之间传输的均为随机值u或根据随机值计算多项式的结果,而非原始的ci值,保护各数据拥有方rangecount的查询结果同时完成安全求和。

如图3所示,对三个客户端rangecount的查询结果进行融合的过程示意。

步骤六、服务器端判断融合结果是否满足c≠k,且rmax-rmin>tr,如果是,更新联邦k近邻中第k近数据点距离的上界或下界;返回步骤四,通过二分搜索不断迭代从而逼近第k近数据点距离的值;否则,距离r为最终的ra;停止搜索并继续执行步骤七。

tr为设定阈值,设为较小值如10-6

当c≠k且rmax-rmin>tr时,继续判断是否c>k,如果是,更新联邦k近邻中第k近数据点距离的上界rmax=rq;否则,c<k,更新下界rmin=rq;

如图4和图5所示,以三个客户端k=6的联邦k近邻查询为例,具体如下:在二分搜索的某一轮次中,服务器端设定距离值rq=0.8,并根据该值发起范围计数rangecount=(lq,0.8),中心点表示查询点lq;该实施例中各客户端执行范围计数查询并分别得到计数结果为:c1=3,c2=6,c3=5。结合加密共享技术对c1,c2,c3安全求和,得计数和为14。服务器端将该值与k比较,得k<14,因此更新上界rmax=14。

判断14≠k不满足迭代停止条件,继续重复更新ra=0.4,最终得到本次范围计数结果为6,判断6=k,符合迭代停止条件。

步骤七、服务器端根据查询点lq与最终距离r发起范围查询请求,并返给各客户端。

范围查询请求为rangequery=(lq,r);该请求表示返回与查询点lq距离不超过rq的数据点对象。

本次实施结果得r=0.4,服务器端发起范围查询请求为:rangequery=(lq,0.4)。

步骤八、各客户端分别在本地执行范围查询请求,得到各自的查询结果p1,p2,...,pn;结合多方安全计算融合技术,在保护各客户端数据来源隐私的前提下将最终的查询结果进行融合,并发送至服务器端,即为联邦k近邻查询结果。

本实施例基于混淆思想的多方求并集法为例,计算户=p1∪p2∪..∪pn,该方法主要包含两轮客户端间依次传输。

第一轮中具体操作如下:

客户端f1随机生成数据点作为噪声数据其中噪声数量|n1|可为随机值、客户端设定值或通过差分隐私技术确定,将噪声添加至本地查询结果p1中,得到p1′=p1∪n1,将p1′发送给下一客户端f2。

对客户端f2来说,f2无法区分p1′中哪些属于真实查询结果p1,哪些属于噪声数据n1。f2同样生成噪声数据n2,得到p2′=p2∪n2,将p1′∪p2′发送给下一客户端f3。

重复该操作依次传递,直至客户端fn将p1′∪p2′∪...∪pn′发送给客户端f1,第一轮结束。其中传递次序可以为任意随机次序,而非从1传到n,只要n个客户端均参加第一轮即可。

第二轮具体操作如下:

客户端f1将噪声数据n1从p1′∪p2′∪...∪pn′集合中挑出,得到p1∪p2′∪..∪pn′,并随机选择下一客户端将其发送。

对下一客户端来说,仍然无法区分其中的真实结果与噪声数据。下一客户端重复该操作,直至n个客户端均参与第二轮后,即得到户=p1∪p2∪..∪pn。

在以上计算过程中由于每个客户端对接收到的数据均无法区分其中噪声,因此可保护查询结果数据点具体来源于哪一数据拥有方。

联邦k近邻查询在现实生活中有着广泛应用。以市域社会治理中应急治理为例,当某地发生突发事故后,需要派遣距事故发生地最近的5名网格员前往处置,然而不同类型网格员如社区网格员、警务网格员等,其位置数据由所在单位自治,不能直接共享。此时需要联合多个单位进行联邦k近邻查询,在该查询中查询点为事故发生地的位置,k为5,各数据拥有方为各单位。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1