基于最小化冗余数据划分的安全最近邻查询的方法及系统的制作方法

文档序号:6381582阅读:171来源:国知局
专利名称:基于最小化冗余数据划分的安全最近邻查询的方法及系统的制作方法
技术领域
本发明涉及安全查询处理领域,一种基于最小化冗余数据划分的安全最近邻查询的方法及系统。
背景技术
安全查询处理领域的现有研究涉及加密数据库上的基本SQL查询(参见文献3 H. Hacigumusj B. R. Iyer, C. Li,and S. Mehrotra. Executing SQL over encrypted datain the database service provider model. In SIGMOD,2002)、聚合查询(参见文献 4 :H. Hacigumusj B. R. Iyer, and S. Mehrotra. Eficient execution of aggregation queriesover encrypted relational databases. In DASFAAj pages 125 - 136,2004 和文献 5 :E. Mykletun and G. Tsudik. Aggregation queries in the database-as—a—servicemodel. In DBSecj 2006)和范围查询(参见文献 6 :B. Horej S. Mehrotra, M. Canimj andM.Kantarcioglu. Secure multidimensional range queries over outsourced data.VLDBJ. To Appear.和文献 7 :Ε· Shi,J. Bethencourt,Η· Τ· _Η· Chan,D. X. Song,andA. Perrig. Multi-dimensional range query over encrypted data. In IEEE Symposium onSecurity and Privacy, pages 350-364,2007)。正如诸多现有研究(参见文献 I :H. Hu,J.XujC. Renj and B.Choi. Processing private queries over untrusted data cloudthrough privacy homomorphism. In ICDEj pages 601612, 2011 和文献 2 W. K. Wong, D.W. -L. Cheung, B. Kaoj and N. Mamoulis.Secure knn computation on encrypteddatabases. In SIGMOD, pages 139 - 152,2009和文献6和文献7)所证明的,为满足一定的安全性要求和获得更高的效率,较复杂的查询类型往往需要一些特殊处理。特别的,针对SNN问题现在已有不少前人所做的研究工作(参见文献I和文献2),然而他们所提出的解决方案最后往往被证明是不安全的,可以被轻而易举地攻击成功。Hacigumus 等人首先提出了“外包数据库”(outsourced database,0DB)模型(参见文献 8 H. Hacigumusj B. R. Iyer, and S. Mehrotra. Providing database as a service.In I⑶E,2002),在这个模型里,数据拥有者(data owner)将“数据管理”及“查询应答”两项服务外包给不可靠的服务提供商(service provider)。关于ODB的安全性研究旨在通过加密及在加密数据上进行查询处理来确保数据安全。例如,使用一种保序加密法(order-preserving encryption scheme, 0PES,参见文献 9 :R. Agrawalj J. Kiernanj R.Srikantj and Y. Xu. Order preserving encryption for numeric data. In SIGMOD, 2002),对一序数域(ordinal domain)应用函数E,使得对任一对满足x < y的值x,y,都有E(x)< E(y) o 另外,Hacigumus 等人还提出了一种加乘同态(additive and multiplicativehomomorphic)加密函数E (E 满足 E (x)+E (y) =E (x+y),E (x) E (y) =E (xy))来支持加密数据上的聚合查询(参见文献 4 :H. Hacigumusj B. R. Iyer, and S. Mehrotra. Efficientexecution of aggregation queries over encrypted relational databases.InDASFAAj pages 125-136,2004)。然而,正如Mykletun等人所证明的那样,实际上同态法连最低级别的安全都不能保证(参见文献5)。概而言之,之前的ODB模型都仅仅考虑了简单的数值域和SQL操作,而没有考虑以kNN (k nearest neighbor, k最近邻)查询等更复杂的操作为研究对象;另外,ODB模型研究总是假设单一类型的攻击,而没有综合考虑不同层次的攻击,不具有普适性。除了各种加密技术,还有其他的数据保护方法来保证查询计算的安全性。ODB模型上的SQL语句执行就采用了“粗索引”(coarse index,亦称“基于桶的索引”,bucket-basedindex)技术(参见文献3)。元组通过诸如RSA的普通加密法加密;将各数据库属性域分割,分割后得到的每一部分(即一个“划分”,partition)通过哈希函数赋以一 ID。数据主将加密元组连同其所在分割的ID送至服务器,充当“粗索引”。查询变为获取包含目标元组的分害I]。服务器则返回一个查询结果的超集。继而,拥有密钥的用户便可以将结果解密,再通过一定的后处理筛选掉其中无用信息。高级查询中无用信息的数量可能十分巨大,对用户而言这会成为十分沉重的负担。例如,kNN计算中所需的数据点与查询点间距便难以通过分割的ID轻易获得。因此,直接应用这种“粗索引”技术会导致服务器将整个数据库返回给用户,让用户独自负担查询结果的计算。显然,当用户处理能力有限(如用户使用的是移动设备)这种方法很不适用。另一种安全查询处理方法利用了特殊的硬件一安全的协处理器(参见文献 10 E.Mykletun and G.Tsudik.Incorporating a secure coprocessor in thedatabase-as-a-service model. In IWIA, 2005 和文献 11 R. Agrawal, D. Asonov, M.Kantarcioglu, and Y. Li. Sovereignjoins. In ICDE, 2006)。它是一种安全的计算单兀,其计算过程及储存的数据对查询中的任一方都是透明的。协处理器的使用很简单,只需要安装上加密和解密密钥,并直接部署应用逻辑即可。然而另一方面,它的速度不如普通处理器,因此不适用于需要大量计算的复杂应用。除此之外,协处理器必须靠用户来维护。例如,如果处理器意外停机,用户必须重新对其进行部署。这显然与云计算中用户本无需亲自维护原始数据是矛盾的。另夕卜,Sweeney, Li, Machanavajjhala等人提出了各种各样的数据匿名模型,如k匿名(k-anonymity),用于数据发布时的隐私保护(参见文献12 L. Sweeney,k-anonymity :A model for protecting privacy. In IJUFKS, 2002)。他们的基本思想都是使数据库中各元组与另外至少k-Ι个元组的“准”标示符(quasi-identifiers)是不可辨(indistinguishable)的。“k匿名”可以通过“准”标示符一般化(generalizing)、元组抑制(suppressing tuples)、元组扰乱(perturbing tuples)等方法实现。但是,“k匿名”模型在查询过程中会有信息丢失,并且模型本身还有特定的缺陷。如Machanavajjhala等人所指出的,匿名化的不可辨的“准”标示符组也含有不少敏感值,因此攻击者通过有限的背景知识就可以引起信息泄露(参见文献13 A. Machanavajjhala, J. Gehrke, D. Kifer, andM. Venkitasubramaniam. 1-diversity:Privacy beyond k-anonymity. In ICDE, 2006)。另夕卜,一般化后的值域也会方便潜在攻击者对原始数据或一些宝贵的统计信息做出准确估计。特别需要注意的是,数据发布时的隐私保护与ODB模型中的数据安全两者的目标是不同的前者力图避免发布的信息暴露特定个体,后者注重针对非授权用户保护信息。为更好地解决安全查询处理问题,W. K. Wong等重点研究了 SC0NEDB模型中的kNN查询(参见文献2)。Oliveira等曾提出“等距转换”(distance-preservingtransformation, DPT)作为其加密方法(参见文献 14 S. R. M. Oliveira and 0. R. Zaiane.Privacy preserving clustering by data transformation. In SBBD, Manaus, Amazonas, Brazil, 2003)。DPT将给定点x转换为Nx+t,其中,N是一个dX d的正交矩阵,t是一个d维向量。DPT的主要特性是转换前后点间距不变,即,d (X,y) =d (E (X),E (y)),其中,d表示欧几里得距离,E是加密(转换)函数。由于距离没有改变,kNN查询能够得到正确的计算。然而,Liu等人证得DPT关于2级攻击和3级攻击是不安全的[8]。对于一 3级攻击,W. K. Wong等审查了 DB中的一组点{xl, x2,. . . , xm}及其相应的加密值{yl, y2,——,ym},然后建立出一组等式yi=Nxi+ t,形成线性等式组,其中,N的d2和t的d未知。如此,如果m>=d+l,则此等式组可解。对于一 2级攻击,攻击者可见DB中的一组点P。由于DPT保留了各维间的相关性,Liu等使用PCA确定点集P中和转换后所得数据库中的主成分。通过匹配主成分,攻击者可以对N和t做出准确估计(参见文献8)。不可靠平台上的kNN计算也是“适地性服务”(LBS)系统需要考虑的问题。在LBS模型中,服务器拥有一个元组集(也即“兴趣点”point of interest, Ρ0Ι)ο用户向服务器提交查询(范围查询或kNN查询),获取想要的兴趣点。其中主要的安全目标即为保护查询点的位置信息,另外一些模型也会考虑POI的隐私问题。“k匿名”模型是常被使用,以将查询点的位置转换为一个空间范围,如此这一范围中至少包含了其他k-Ι的点,服务器则难以在其中确定出用户(查询点)的位置。尽管这一模型可以用来解决我们的问题,但它也有一定缺陷。首先,匿名后的数据会近似地暴露出原始数据值;其次,在特定模型中(参见文献15 G. Ghinita, P. Kalnis, A. Khoshgozaran, C. Shahabi, and K. L. Tan. Private queries inlocation based services:Anonymizers are not necessary. In SIGMOD, 2008),数据库被假定为服务器所有,因此服务器能看到原始数据;再次,在一些系统(诸如“粗索引”系统)中,服务器通常返回查询结果的超集以供用户进行后处理,这增添了用户负担,对于一些“轻量级”(light-weight)用户端,这甚至是不可承受的。Khoshgozaran等人提出了一个可以为kNN查询进行加密的LBS模型(参见文献16 A. Khoshgozaran and C. Shahabi. Blindevaluation of nearest neighbor queries using space transformation to preservelocation privacy. InSSTD, 2007)。其主要思想是使用Hilbert曲线来对数据点和查询进行“加密”。各点的Hilbert值被送往服务器。然后在Hilbert转换后所得的空间中计算kNN得出近似结果。这种方法除了返回的是近似结果,还存在DPT类似的问题,容易被攻击成功。

发明内容
本发明的目的在于提供一种基于最小化冗余数据划分的安全最近邻查询的方法及系统,能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。为解决上述问题,本发明提供一种基于最小化冗余数据划分的安全最近邻查询的方法,包括数据主生成包含外包数据库的所有数据点的voronoi图,其中,每个数据点的字节数相同,外包数据库中的数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;
数据用户或数据主给定参数K,数据主根据所述参数k将所述VOTonoi图分割成为k个划分,记录每个划分对应的边界,每个划分互不相交,不同划分包含的数据点部分重复或完全不重复,k大于等于I且小于等于N,其中,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y坐标轴的直线上的相邻的划分,或用平行X坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行X坐标轴的直线上的相邻的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将VOTonoi图中的划分的个数减至所述参数k ;数据主获取所有划分中包含最多个数据点的划分的字节数作为最长字节数,在除包含最多个数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个数据点的划分之外的每个其它划分的字节数等于所述最长字节数;数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;所述数据用户确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的数据点。根据本发明的另一面,提供一种基于最小化冗余数据划分的安全最近邻查询的系统,包括数据主,用于给定所述参数k,生成包含外包数据库的所有数据点的VOTonoi图,其中,每个数据点的字节数相同,外包数据库中的数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;根据参数k将所述VOTonoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的数据点部分重复或完全不重复,k大于等于I且小于等于N,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,所述数据主用平行于Y坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y坐标轴的直线上的相邻的划分,或用平行X坐标轴的直线不断分割当前的最大的划分和与所 述最大的划分在同一条平行X坐标轴的直线上的相邻的划分以生成格子,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将voronoi图中的划分的个数减至所述参数k ;获取所有划分中包含最多个数据点的划分的字节数作为最长字节数,在除包含最多个数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个数据点的划分之外的每个其它划分的字节数等于所述最长字节数;根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;数据用户,用于给定所述参数k,确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的 划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的数据点;服务器,用于根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分。与现有技术相比,本发明通过数据主生成包含外包数据库的所有数据点的voronoi图,其中,每个数据点的字节数相同,外包数据库中的数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;数据用户或数据主给定参数K,数据主根据所述参数k将所述VOTonoi图分割成为k个划分,记录每个划分对应的边界,每个划分互不相交,不同划分包含的数据点部分重复或完全不重复,k大于等于I且小于等于N,其中,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y坐标轴的直线上的相邻的划分,或用平行X坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行X坐标轴的直线上的相邻的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voixmoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将voronoi图中的划分的个数减至所述参数k ;数据主获取所有划分中包含最多个数据点的划分的字节数作为最长字节数,在除包含最多个数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个数据点的划分之外的每个其它划分的字节数等于所述最长字节数;数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;所述数据用户确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的数据点,能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。


图I是本发明一实施例的基于最小化冗余数据划分的安全最近邻查询的方法的流程图;图2是本发明一实施例的基于最小化冗余数据划分的安全最近邻查询的方法的划分示意图; 图3是本发明一实施例的一维空间下划分示意图;图4是本发明一实施例的MinDp方法的划分示意图;图5a是本发明一实施例的MinDp划分方法下k对划分时间代价的影响图;图5b是本发明一实施例的MinDp划分方法下| D |对划分时间代价的影响图;图6a是本发明一实施例的划分大小的平均值、最大值和最小值随参数k变化情况图;图6b是本发明一实施例的划分大小的平均值、最大值和最小值随|d|变化情况7a是本发明一实施例的MinDp划分方法的总运行时间随参数k变化情况图;图7b是本发明一实施例的MinDp划分方法的总运行时间随|D|变化情况图;图8a是本发明一实施例的MinDp划分方法下| E⑶|随k变化情况图;图8b是本发明一实施例的MinDp划分方法下| E⑶|随| D |变化情况图;图9a是本发明一实施例的MinDp划分方法下查询通信代价随k变化情况图;图9b是本发明一实施例的MinDp划分方法下查询通信代价随ID |变化情况图;图IOa是本发明一实施例的MinDp划分方法下查询时间随ID |变化情况图;图IOb是本发明一实施例的MinDp划分方法下查询时间随k变化情况图;图11是本发明一实施例的基于最小化冗余数据划分的安全最近邻查询的系统的功能模块示意图。
具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。随着“云计算”概念及其应用的日益普及,针对“云”上的加密数据集E⑶的“安全查询问题”得到了越来越多的关注。本发明即对其中的“安全最近邻”(secure nearestneighbor, SNN)问题进行了较为深入的研究;该问题涉及数据主(data owner)、数据用户(client)和服务器(server)三方,数据用户会向服务器发送查询密文(encryptedquery, E(q))来获取查询点在E(D)中的最近数据点(即“最近邻”)的密文,但要保证不能让服务器获知数据和查询的具体内容。具体说,SNN问题涉及数据主、数据用户和服务器三方及所述三方其相应的动作
( I)数据主拥有由d维欧式点或对象构成的外包数据库D,并会将D外包给不完全可靠的服务器。(2)数据用户需要对所述外包数据库D进行查询。(3)服务器不完全可靠,会因为自身原因或第三方原因而窥探来自数据主的数据内容和来自数据用户的查询内容。为了让数据用户能在外包数据库D上进行最近邻(NN, nearest neighbor),查询,却不会让服务器获知数据主的外包数据库D中的数据、数据用户的真实查询及查询结果的具体信息,数据主须对外包数据库D应用某种加密算法E进行加密,可以用E(D)代表D的密文,用E—1代表相应的解密算法。相似的,数据用户应将其查询点q (具体代表一个查询 点)加密得到E (q)发送给服务器,这里需要力图保证SNN方法在安全性上同数据主使用的加密算法E是一样的,也就是说,所有E在SNN方法中被证明是安全(在选择明文攻击下是不可分辨的,或在选择密文攻击下是不可分辨的)的攻击模型。事实上可以证明,在只给定E(q)和E(D)的条件下,服务器不可能查找到精准的查询点最近邻。但若不要求服务器给出SNN查询结果的精准定位,而只需给出查询结果的一个“大致定位”呢?不妨设想一个非常简单直接的查询处理方法数据主将外包数据库D看做一个整体进行加密得到E(D)后,传送给服务器;而服务器可以将整个E(D)作为查询结果返回给数据用户;数据用户再用E_htE(D)进行解密(假定数据主与数据用户共享E—1)得到D,从而可以在本地计算出SNN查询的结果一可将这一 “朴素”的方法称为“(直接)传送D”(Send-D方法)算法。显然,这种算法具有与E相同的安全性,但却十分低效。于是在此基础上,如图I所示,进一步提出了更为高效的SNN处理方法,即本发明提供的一种基于最小化冗余数据划分的安全最近邻查询的方法(secure voronoi diagram, SVD),包括预处理阶段步骤SI S5,查询阶段包括步骤S6 S8,步骤S6 S8可以根据实际需要不断重复其中,步骤SI,数据主生成包含外包数据库D的所有数据点Pi的voronoi图,其中,每数据点Pi的字节数相同,外包数据库中的数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库。由于在后续步骤S2中要产生外包数据库D的k个划分,这里一个关键问题就是如何产生外包数据库D的(可能存在重叠的)“划分” G⑶= ,GJ,考虑到的目标是有两个(I) SNN查询结果(查询点的最近邻)至少应被包含于某一划分中,且(2)数据用户能够用尽可能小的信息量确定出Gi以降低查询代价,因此一个自然的选择就是用基于外包数据库D的voronoi图来构建G (D),其中每个数据点Pi用一个voronoi cell表
/Jn ο本发明需要针对以下四个问题问题一边界P (D)用voronoi cell来描述空间代价太大。例如,当所述外包数据库D为二维即d=2时,每个voronoi cell是一个任意形状的凸多边形,并且这些多边形平均会有6个顶点。因此,如此表示边界P(D)所占的存储空间将比存储外包数据库D本身的
大得多。问题二 如何给边界P(D)建立索引以使数据用户能够迅速地确定所需要的原始索引值i。这一问题在边界P(D)中元素具有不规则边界时会显得尤为突出,例如当Bj e P(D)为一 voronoi cell时(此时Bj即是任意形状的的凸多边形)。
问题三保证IE(Gi) =Ie(Gj) I (i Φ j),如此服务器才不会根据划分(密文)的大小情况区分出它们,进而了解划分情况。在任意安全加密算法E中我们都需保证这一点,因此需对G (D)加以强制约束GiIb=IGjIb (i关j),其中Gi |b表示划分Gi的字节数(注意区分表示Gi中数据点的个数为|G」)。问题四数据用户在本地计算出满足nn(q,D) e Gi的原始索引值i后,不应将i直接送至服务器获取E (Gi),这样方可保证服务器不会在查询处理过程中获知任何关于划分情况的信息。若数据用户只向服务器发送i的密文,那么这一问题就不存在了;但这意味着服务器必须能通过i的密文查找到E(Gi)。步骤S2,数据用户或数据主给定参数K,数据主根据所述参数k将所述VOTonoi图G(D)分割成为k个划分G1,, Gk,记录每个划分对应的边界P (D) = {B” . . .,BJ,其中,每个划分互不相交,不同划分包含的数据点部分重复或完全不重复,k大于等于I且小于等于N。具体的,根据用户给定的参数k将D分割为k部分,每个这样的部分称为一个“划分”(各划分之间允许相交,即各划分可含有相同数据点),即有G(D)HG1,. . .,Gk},然后 将传送至所述服务器。在这个过程中,还需对各划分的“几何边界”P⑶=取,...,BJ (其中Bi为划分Gi的几何边界)进行存储,这样的信息在保证足够描述出划分情况的前提下,所占空间当然是越小越好。这里先考虑一种极端情形如果令k=N (N为数据集D的数据点的个数,S卩|D| ),那么每个Gi即由单一数据点Pi e D构成的集合,而边界P (D)即为D的voronoi cell的集合。设Pi的voronoi cell为Vci (Pi为Vci所包含),那么给定任意查询点q,数据用户需查找包含q的voronoi cell ;假定qcVCh则数据用户需向服务器请求获取E (Gi);这里显然有 nn(q, D) =Pi 以及 Gi=(Pi),而算法返回 nn(q, E—1 (E (Gi))) =nn (q, {pj) =Pi,可见为正确结果。可以考虑把上述思想推广应用到k〈〈N的一般情形。步骤S2具体包括步骤S21和步骤S22 步骤S21,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻数据点之间的垂直平分线;具体的,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻数据点之间的垂直平分线。为了解决问题一和问题二,规定G(D)中的各个划分必须具有规则形状。如图3所示,在一维情形下存在一个“最优方案”的,它可以产生大小平衡且互不相交的划分,这是因为一维数据点的voronoi图都是由连续而不相交的区间构成,为生成“完全平衡”(即大小相等)的划分,只需在D中找到其1/k,(k-l)/k分位点,然后用它们产生G(D),这些分位点所对应voronoi cell的边界以及土 00确定了P(D) = IB1,. . . , Bj ο上述查找(k-Ι)个分位点并通过它们对D的voronoi图进行划分的过的程可通过对D的一次线性扫描完成。因此,该算法在外存模型中的10 (输入/输出)代价为0(N log N)。由于每个划分大小均为|0|八=~1^,因此61大小均为IE (N/k) |,故而E (D)大小为k|E(N/k);并且显然P(D)的大小是0(k)的。步骤S22,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y坐标轴的直线上的相邻的划分,或用平行X坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行X坐标轴的直线上的相邻的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将voronoi图中的划分的个数减至所述参数k。具体的,为了解决上述问题一和问题二,规定G(D)中的各个划分必须具有规则形状,具体来说就是,每个划分必须被限定在一个由与坐标轴(X坐标轴或Y坐标轴)平行的边围成的“格子”(box)中。然而,这意味着划分Gi的边界Bi可能包含或贯穿多个voronoi cell,如图2所示,其中虚线为划分的边界B1和B2,代表不同数据点P1^P16的凸多边形为voronoi cell。为了解决上述问题二,设D中点Pi对应的voronoi cell为Vci,为保证数据用户能够为P(D)编制索引以及轻松高效地确定出满足nn(q,D) e Gi的索引值i,可以确定如下划分原则设Gi的几何边界由Bi表示,那么 原则一 Bi是一个由与坐标轴平行的边围成的“格子”;原则二 0 (Pj)JPG(D)中不同的划分其对应的边界是互不相交的;原则三如果Bi完全包含或相交于一个voronoi cell集\^,那么Gi= {p」| V。」e Vj ,但不同的Gi可能会含重复的数据点。如在图2中,深色的voronoi cell里面的数据点会被同时加入到划分 G1 和 G2 中,即 G1= {ρ1; P2, P3, P4, P5, P6, P7, P8. PiJ,G2= {p5, P6, P7, P8. Pi。,Pu,
Pl2> Pl3> Pl4> Pl5> Pl6> P9}。引理I.如图2所示,依照上述划分原则,若nn (q, D) =Pi且q e Bj,则有Pi e G」。证明若有查询点q e Bj,即q属于Bj所框定的区域,那么q必属于一个被Bj完全包含或贯穿的voronoi cell。依照上述划分原则,这一 voronoi cell必属于V」,而Vj确定了 Gj的元素。假设q包含在Vei中(贝U有nn(q, D) =Pi),由上可知,vci e Vj,继而Pi e G」。由上述引理I可知,步骤S6中,对于任意查询点q,数据用户端的工作就是找到满Mqe e P (D),即在P (D)中找到一个包含q的格子,这实际上是一个“点位置查询”(point location query)的过程。由于P (D)中的格子都是不相交的,但会覆盖整个外包数据库D的VOTonoi图的空间,因此有且只有一个格子包含点q ;另外,由于这些格子的边都是与坐标轴平行的,因此数据用户能够方便地为P(D)编制原始索引值i。之后,数据用户便可以向服务器请求获取E(Gj),这是因为由所述引理I告,只要q被包含在Bj中,那么就有nn (q, D) e Gj。通过步骤S7,一旦E(Gj)被服务器返回,步骤S8中数据用户便可以由E—1对E(Gj)解密得到Gy之后,数据用户通过识别随机字符*,可以轻松地将之前数据主通过“随机填补操作”添加在中的随机字节序列去除;最后,数据用户可得nn(q,D)=nn(q, Gj)。然而别忘了,数据用户在向服务器请求获取E(Gj)时需要解决问题四,通过步骤S4数据主根据预设的哈希函数对每个划分建立对应的索引,并将加密后的所有划分及其对应的加密后的所有索引发送给服务器存储之后,在步骤S6中,让数据用户向服务器发送E(g(j))。步骤S7中在服务器端,数据主发送来的E(g(i))与E(Gi)存在配对关系,服务器在接收到数据主发送来的E(D)后,便会建立一个含k个记录的哈希表T,将E(g(i))映射到E (Gi)。如此,数据用户给定一个请求E (g⑴),服务器便可以通过在T中查找,最终找到E(Gi),这个过程的时间复杂度仅为0(1),因此服务器可以通过上述过程由E(g(j))高效地查找到E (Gj)。
步骤S3,数据主获取所有划分中包含最多个数据点的划分的字节数作为最长字节数,在除包含最多个数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个数据点的划分之外的每个其它划分的字节数等于所述最长字节数。具体的,假设数据主已经生成了 G(D)及P(D)为了上述解决问题三,数据主需保证IGiI = IGjl (i关j)。设&为G(D)中具有最多个数据点(下称为“大小”,size)的划分,即对于任意i e [l,k],都有IGiI ( IgxU对于各个划分Gi (i关X),对其添加(|Gx|b-|G丄)个随机字节,这里可用字符*代表任意随机字节以与Gi中的实际数据点进行区分(*代表的这些随机字符都不会在Gi中实际出现),可称此过程为“随机填补操作”。显然,经此“随机填补操作”,对于任意划
,都有I Gx Ib= I GiIbt5这样,在后续步骤S4中 ,无论数据主使用何种安全加密算法生成{E (G1) ,...,E (Gk)},都有IE (Gi) I b= IE (Gj) I b (i关j ),从而保证服务器无法在G⑶中区分出任意某个划分,从而了解到划分情况。步骤S4,数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储。具体的,为了解决上述问题四,数据主应用一秘密随机哈希函数g:[l,N] — Z+,最终将E(D) = {(E (g (I)),E (G1) ),...,(E (g (k) ),E (Gk))}发布给服务器,将P (D) 'E-1 和 g发布给数据用户。步骤S5,数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储,具体的,数据主将所有划分对应的边界P (D)发送给所述数据用户存储。将P(D)存储在数据用户端,这样对于任意查询点q,数据用户能够高效地确定出原始索引值i满足rm(q,D) e Gi,根据所述哈希函数计算出与该原始索引值i (边界)对应的索引,然后根据该索引向服务器提出请求获取到E (Gi),这个过程完全可以在服务器不知道具体原始索引值i值的情况下进行,如此可以保证服务器不会在答复查询的过程中了解到划分情况;最后,数据用户自然能够轻松得出rm (q, D) =nn (q, Γ1 (Ε (Gi)))。步骤S6,所述数据用户确定真实查询点q,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引E (g (j))发送给服务器,即数据用户将 E (D) = {(E (g (I)),E (G1) ),···,(E (g (k) ),E (Gk))}传送给服务器。步骤S7,所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分。步骤S8,所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的数据点。上述步骤S6至S8的查询过程可以根据实际需要不断重复,直至无查询需求。本实施例中提供一种MinDp划分方法,这种方法遵循了上述提出的划分原则一至三,由于加入了 “随机填补操作”,因此很显然,本实施例的通信代价以及服务器端的存储代价是由最大划分与各划分的大小之差,即IGxI-IGiI,或更准确地,Ie(Gx) I-IE(Gi) I)决定的,也就是说,为了降低通信代价以及服务器端的存储代价,在设计划分方法时还应尽可能地遵循原则四尽可能生成大小“平衡”(相等或接近)的划分。MinDp方法为数据主根据所述参数K将所述VOTonoi图分割成为k个划分的步骤中,用平行于Y坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y坐标轴的直线上的相邻的划分,或用平行X坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行X坐标轴的直线上的相邻的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将voronoi图中的划分的个数减至所述参数k。具体的,MinDp方法中为了使G(D)中的(IGjJ-IGil)值达到最小,可以采用一种“贪心”策略。具体来说,初始时令ΡΦ) = {Ω},其中Ω代表D对应voronoi图的全部区域;随后,迭代地用垂直直线(平行于Y坐标轴的贯穿Ω的直线,下同)或水平直线(平行于X坐标轴的贯穿Ω的直线MfP(D)中格子逐步切小,直至P(D)中格子数达到k。为简明起见,下面将此构造过程中处于第i步骤状态的P(D)表示为Pi(D)。 在任意的第i步,用MinCs中提到的方式为PJD)中的格子编制索引对{x,y}。现在假设切至第i步时,已用了%条垂直线和匕条水平线,那么在Pi (D)中便有了(ai+l) (bi+1)个格子,即 Pi (D) = {C1;1,...,C
l’bi+l,· · ·,Cai+i,i,· · ·,Cai+1,bi+1 }。那么如果把接下来MinDp的切割过程看做一个函数的话,就相当于以Pi(D)(或ai条垂直线和匕条水平线)为其输入状态,而输出一条新的分割线I (水平线或垂直线)。这里用到的基本思路是每一步中总是选取当前最大的划分进行切割,此即为“贪心”策略。这里,将格子Cx,y e Pi(D)对应的划分表示为Gx,y。如图2所示,需注意每个格子Cx,y通过MinDp方法总可以产生一个对应的划分Gx,y。假设当前最大划分为Ga,e(a e [l,ai+l], β e [l,bi+l]),那么下一条切割线I的选取范围即为Ga,e对应的XY坐标范围。然而,即使我们只考虑Ga,e的XY坐标范围,I的选择范围应是无穷的。这是因为,如果假设Ga,e由其左下角点(xl,yl)和右上角点(xu, yu)给定;那么,[xl, xu]范围内的任意垂直线和[yl,yu]范围内的任意水平线都可以作为Ga,e的切割线加以考虑。为解决以上问题,如图2所示,可以发现如引理2。引理2.当一个格子通过MinDp方法产生一个划分时,其边界线穿过的voronoi顶点(相对该边界线只是从“中间”穿过一个voronoi cell)越多,产生的划分越小。证明如若边界线I穿过某voronoi cell (设为Vci),但并非穿过Vci的顶点,那么VCi对应的点Pi必会同时分配给I两侧的划分,由此可得引理2的正确性。引理2的一个例子就是,在图2中,p9只被分配给了划分G2,而没有分配给匕。由引理2,可以通过一种进一步的“贪心”策略确定切割线I。令V(Ga,e)表示这样的voronoi顶点集合其所属的voronoi cell的坐标范围完全在[xl, xu]和[yl, yu]之中,点(xl, yl)和点(xu, yu)分别为Ga,e左下角和右上角。那么在确定I时只需考虑其水平或垂直穿过V e V(Ga,0)的情形。这样的I将Ga,e及其对应的最大划分Ga,e切割开来,得Pi+1(D)。不难得知,这样的I可有2|V(Ga,e)|个可能的选择;从中选择一个,使之满足Pi+1(D)中的最大划分的数据点数最小。一旦I确定,即将PJD)更新为Pi+1(D),并如此继续,直至Pi+1(D)中格子数达到k。由于上述划分方法是基于尽可能减少“重复点”的思想,因此称之为“MinDp(Minimum Duplicate Points)方法”。这里需注意的是,划分至最后一步时,MinDp方法产生的划分数可能会大于k;如若这样,可以通过逐步合并最小划分的方式将划分数减至k,对此我们这里不做赘述。图4给出了 MinDp方法应用的一个示例,其中,图4中虚线I代表试切割过程。MinDp方法最多需进行(k_l)步划分,例如,所有划分线均为水平或垂直时;在每一步,需试验2 I V(Ga,e) I条可能的划分线。由于平均单个voronoi cell的顶点数小于6,并且有N个voronoi cell,因此O(| V(Ga,e) |) =N。对于每条切割线1,需找出与其相交的voronoi cell以便后续产生划分,这在最坏情况下需要O(N)的复杂度。综上,最坏情形下MinDp的复杂度为0(kN2)。需注意,现实中几乎不会出现上述最坏情形,而往往是要么只是
V(Ga,e) I为0(N),要么只是I穿过的VOTonoi cell数为O (N),两者只占其一,故总的复杂度仅为0(kN)。最后特别值得一提的是,P(D)的大小显然是0(k)的。更详细的,可用C++语言对上述MinDp方法进行实现。本实现的实验中,使用Qhull库对数据集D进行了 voronoi划分;使用最新的Crypto++库进行了加密。随后实验的进行是在一台配置为Intel Xeon 3.07GHz CPU、8GB内存的Linux机上。针对二维外包数据库D,实验时具体数据集使用了取样自美国加利福尼亚州(CA)和德克萨斯州(TX)的千万个数据点作为原始数据集,这些数据都来自OpenStreetMap项目。在CA和TX数据集中,各随机选取2,000,000个数据点作为最大实验数据集Dmax,并基于Dmax形成了较小规模的数据集。这里需特别一提的是,当改变数据集大小以测试本实施例的划分方法的可扩展性时,会确保小数据集总是大数据集的子集,这样是为了避免D中具体数据点变化带来的影响,从而单单体现出|D|的影响。对实验所涉及参数的默认设置如下|D|=106,k=625 ( |D|、k分别为数据点的个数和最后的划分数);数据点的个数默认使用来自CA的数据;使用AES加密算法进行加密,其key大小和块大小均为256比特。这里需特别一提的是,实验过其他加密算法后,发现不同加密算法对本实施例的性能几乎不构成影响。因此任何安全的公共密钥或对称密钥加密算法都可用于实现本实施例,并且不同加密算法实现本实施例性能都可由实验说明。最后要说明的是,在全部实验中,除非特别声明,当将某个参数作为变量进行研究时,其他参数均 为默认值。具体实验结果如下I.预处理阶段在预处理阶段,数据主端需进行划分和加密两项工作,它们均主要受划分数k和数据集大小|D|的影响。图5a、5b所示分别为不同划分方法下k和IdI对运行时间的影响。其中,图5a显示MinDp方法的划分时间代价(partition time)均随k线性增长。图5b显示的是数据大小ID I变化(从250,000到2,000, 000)对划分时间代价的影响。但尽管MinDp方法在最坏情况下的复杂度是O (kN2),但在现实(实验)中,它的处理时间与N也是呈线性关系,这是因为所述最坏情形一一条分割线会同全部N个VOTonoi cell相交一在实际数据集中几乎是不可能发生的。事实上,在MinDp的每一步分割中,与分割线相交的voixmoi cell数几乎可以认为是常数个,因此它们的复杂度可认为是0(kN)的。下面来看MinDp方法下产生的划分G (D) = {Gl,. . .,Gk}的大小(进行“随机填补操作”前)。由于“随机填补操作”会通过填补随机字节将所有划分的大小增至与最大划分一样大,因此以下两个数值对于评估本实施例的划分方法的性能至关重要最大划分的大小IgJ和(IgxI-IgJ)的方差(i e [i,k])。IGx决定了服务器端的存储代价和每次查询的通信代价;(IGxI-IGiI)的方差决定了填补操作本身的代价。为了将这些数值在一个图中简
单直观地呈现,图6a、6b分别显示了划分大小的平均值Zl GiJ/是 (avg partition size)、
i 二I
最大值Igx I =maXi E [uilGi I和最小值IGyI=HiiniE [UilGiI随参数k和|D|的变化情况。最后,如图6a、6b所示,MinDp方法,其划分大小的平均值和最大值随k增加是递减的。下面通过图7a、7b来看在预处理阶段MinDp方法的总运行时间(total runningtime)。所谓总运行时间,具体含划分和加密两个步骤的时间(voronoi划分时间和“随机填补操作”时间也包含在内,不过它们相对划分和加密时间来说要小一些)。在图7a、7b中, 还加入了所述Send-D方法的预处理时间以作参照,Send-D方法的预处理时间就是将D看做一个整体进行加密的时间。另外,从图7a、7b中可见,MinDp方法预处理阶段的总时间随k或|D|增加都是线性增长的。再来看最终产生的E(D)的大小,这是影响服务器端存储代价和数据主至服务器通信代价的关键因素。进行过随机填补操作后,每个划分都具有了与最大划分相同的大小,因此,Ie(D) I =kIE(Gx) I =kIE(Gi) I (i e [l,k])。图8a、8b分别显示了 MinDp方法下E(D) | (size of E(D))随k或D变化的情况。类似于针对图7a、7b的讨论,也把D的大小和将D作为一个整体进行加密得到的E (D)的大小(即Send-D的代价)加入图8a、8b中以作参照。显然,MinDp方法中E(D)的大小随k或|D|增加都是线性增长的。Send-D对应的E(D)大小也是随|D|线性增长的,但却与k无关。自然,相对直接传送外包数据库D的明文本身,MinDp方法会引入数据主至服务器的通信代价和服务器端的存储代价。数据用户端的存储代价是取决于P (D)的大小的,并且这一代价在MinDp方法中是o(k)。由于k相对数据点的个数|d|来说小得多(对于一个包含几百万个点的数据集来说,分割出几百个划分即已足够),因此上述存储代价几乎是可以忽略的。最后需声明的是,在实验中观察到使用哪种数据集(CA数据集或TX数据集)对实验结果几乎没有什么明显的差别,因此为简便起见,这里没有讨论TX数据集上的实验结果O2.查询处理代价首先,对任意查询点q,采用本发明的方法,服务器至数据用户端的通信代价仅仅取决于|E(Gp|。然而,正如上述对图8a、8b结果的分析,由于进行了随机填补操作,因此每个划分有了相同的大小,并且IE(Gi) | = |E(D) |/k (i e [l,k])。相反,在Send-D方法中,服务器至数据用户端的通信代价就是对数据集D整体加密的大小,S卩|E(D as onemessage) |。因此,虽然|E(D as one message) |比MinDp方法生成的|E(D)小得多(如图8a、8b所示),如图9a、9b所示,本发明的方法中服务器至数据用户端的查询通信代价(querycommunication)仍然比Send-D的小得多。下面,再来看数据用户端的查询处理代价。每次实验,都随机进行了 100次查询,然后得到如图10a、10b所示的MinDp方法的平均处理时间。图IOa显示MinDp方法的查询时间(query time)是随k增大而递减的,这显然是因为k增大导致了划分变小。相比Send-D,MinDp方法的性能要好得多。图IOb所示,而当|D|增加时,MinDp的查询时间都随之线性增长。本发明的算法效率包括预处理阶段的时空代价和查询阶段的查询代价,所述预处理阶段的时空代价包括时间代价和存储代价,查询阶段的查询代价包括时间代价和通信代价I. SVD算法进行预处理时的时间代价主要体现在以下三阶段(I)得到 D 的 voronoi 图;(2)对D进行划分;(3)生成 E(D)。 针对一维和二维的外包数据库,阶段(I)的代价是O(NlogN)的。而在第(2)阶段(对D进行划分),一维情形下,很显然可以在对数据进行排序后通过一次遍历得到所需的分位点,因此阶段2的代价也是O(NlogN)的;二维情形下,该阶段的代价取决于我们所选用的划分方法。MinDp方法的代价分别为0(kN)。阶段(3)的代价同加密代价呈线性关系。假设通过加密算法E对信息m进行加密的代价为e(m);由于“随机填补操作”将每个划分的大小都增至最大,因此可得生成E (D)的
时间复杂度是 ο(ke( IGx |b))的,其中 Gjt = argmaxGeG(i)) | Gi |
ο2.预处理阶段的存储代价服务器端的存储代价为Ie(D) I,是0(k|E(Gx) I)的。数据用户端的存储代价为P(D)和索引i所占的空间。对于同类型的大部分的索引结构(如kd树、R树、线段树等),i的大小是与Ip(D) I线性相关的,因此数据用户端的存储代价是0( IP (D) I)的;至于P(D),一维情形下,P (D)仅仅含有(k-Ι)个数值,因此Ip(D) =k-i ;二维情形下,Ip(D) I由所选用的划分方法所决定。MinDp方法的IP(D) I分别是0(k)。3.查询阶段的查询代价查询阶段的时间代价主要体现在两端数据用户端和服务器端。其中,数据用户需通过P(D)的索引i查找包含查询点q的Bi e P(D),其中任意Bi都是由平行于坐标轴的边围成的d维(一至三维)格子;由于已保证P (D)中的任意两个格子不会相交,且必有一个格子包含q,因此这种查找实际是一个输出大小为I (结果有且只有一个)的典型“点位置查询”过程;在一二维情形下,以上过程的代价仅是O(Iogk)的。在服务器端,数据用户给定一个请求E (g (j)),服务器便通过查询哈希表T来找到E(Gj),这个过程是O (I)的。系统中的单次通信代价为|e(d)|和Ip⑶|,这可由我们上面对存储代价的讨论自然得出。查询的通信代价为|E(g(j)) +IE(Gj) I,或|E(g(j)) +IE(Gx) I,或
E(g(j)) | + |E(Gj) |/k。在本发明的安全性方面,由于本实施例中数据用户仅仅是把E(D) = {(E(g(l)),E(GI)),..., (E(g(k)),E(Gk))}传送给服务器,并且在查询处理过程中,只有E(g(j))是对服务器可见的,由此我们可证得下述定理I。定理I.假设E是某种已在标准安全模型M (如,IND-CPA)中被证明安全的加密算法,那么在M中SVD算法与E具有相同的安全性。证明在整个处理过程中,服务器只能看到来自数据主的E(D)和来自数据用户的E(g(j))随机序列,因此,服务器只能了解到划分个数k。由于“随机填补操作”保证了Ie(Gj) =IE(Gi) I (i Φ j),如果E在M中是安全的,那么显然,服务器不会了解到关于任意划分Gi的边界信息。再者,因为随机哈希函数g: [I, N] — Z+不为服务器所知,因此服务器不可能在仅仅被给定E (g (j))的情况下还原出原始索引值i,也即,服务器不可能知道E (D)中(E(g⑴,E(Gi))对的索引值i。综上,本实施例能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。 如图11所示,本发明还提供另一种基于最小化冗余数据划分的安全最近邻查询的系统,包括数据主I、数据用户2和服务器3。数据主1,用于给定所述参数k,生成包含外包数据库的所有数据点的VOTonoi图,其中,每个数据点的字节数相同,外包数据库中的数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;根据参数k将所述VOTonoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的数据点部分重复或完全不重复,k大于等于I且小于等于N,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,所述数据主用平行于Y坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y坐标轴的直线上的相邻的划分,或用平行X坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行X坐标轴的直线上的相邻的划分以生成格子,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将voronoi图中的划分的个数减至所述参数k ;获取所有划分中包含最多个数据点的划分的字节数作为最长字节数,在除包含最多个数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个数据点的划分之外的每个其它划分的字节数等于所述最长字节数;根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储。其中,所述参数k由数据主I或数据用户2给定。数据用户2,用于给定所述参数k,确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的数据点。服务器3,用于根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分。
综上所述,本发明通过数据主生成包含外包数据库的所有数据点的voronoi图,其中,每个数据点的字节数相同,外包数据库中的数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;数据用户或数据主给定参数K,数据主根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,每个划分互不相交,不同划分包含的数据点部分重复或完全不重复,k大于等于I且小于等于N,其中,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y坐标轴的直线上的相邻的划分,或用平行X坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行X坐标轴的直线上的相邻的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将VOTonoi图中的划分的个数减至所述参数k ;数据主获取所有划分中包含最多个数据点的划分的字节数作为最长字节数,在除包含最多个数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个数据点的划分之外的每个其它划分的字节数等于所述最长字节数;数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;所述数据用户确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的数据点,能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之 内,则本发明也意图包括这些改动和变型在内。
权利要求
1.一种基于最小化冗余数据划分的安全最近邻查询的方法,其特征在于,包括 数据主生成包含外包数据库的所有数据点的voronoi图,其中,每个数据点的字节数相同,外包数据库中的数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库; 数据用户或数据主给定参数K,数据主根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,每个划分互不相交,不同划分包含的数据点部分重复或完全不重复,k大于等于I且小于等于N,其中,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y坐标轴的直线上的相邻的划分,或用平行X坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行X坐标轴的直线上的相邻的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将voronoi图中的划分的个数减至所述参数k ;数据主获取所有划分中包含最多个数据点的划分的字节数作为最长字节数,在除包含最多个数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个数据点的划分之外的每个其它划分的字节数等于所述最长字节数; 数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储; 数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储; 所述数据用户确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器; 所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分; 所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的数据点。
2.一种基于最小化冗余数据划分的安全最近邻查询的系统,其特征在于,包括 数据主,用于给定所述参数k,生成包含外包数据库的所有数据点的voronoi图,其中,每个数据点的字节数相同,外包数据库中的数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;根据参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的数据点部分重复或完全不重复,k大于等于I且小于等于N,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,所述数据主用平行于Y坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y坐标轴的直线上的相邻的划分,或用平行X坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行X坐标轴的直线上的相邻的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将voronoi图中的划分的个数减至所述参数k ;获取所有划分中包含最多个数据点的划分的字节数作为最长字节数,在除包含最多个数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个数据点的划分之外的每个其它划分的字节数等于所述最长字节数;根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储; 数据用户,用于给定所述参数k,确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的 对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的数据点; 服务器,用于根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分。
全文摘要
本发明涉及一种基于最小化冗余数据划分的安全最近邻查询的方法及系统,所述方法包括数据主将包含外包数据库的voronoi图分割成为k个划分,记录划分的边界,在划分中添加随机字节,并根据预设的哈希函数对每个边界建立对应的索引,并将加密后的所有划分及其对应的索引发送给服务器,将所有划分对应的边界发送给数据用户;数据用户确定将包含真实查询点的划分对应的索引发送给服务器;服务器向数据用户发送加密后的包含真实查询点的划分;数据用户获取加密后的包含所述真实查询点的划分,并解密后计算出最近邻,在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、查询点及查询结果,保证数据安全。
文档编号G06F21/62GK102968475SQ201210466318
公开日2013年3月13日 申请日期2012年11月16日 优先权日2012年11月16日
发明者姚斌, 李飞飞, 肖小奎 申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1