CN102999594B - 基于最大划分和随机数据块的安全最近邻查询方法及系统 - Google Patents

基于最大划分和随机数据块的安全最近邻查询方法及系统 Download PDF

Info

Publication number
CN102999594B
CN102999594B CN201210465742.2A CN201210465742A CN102999594B CN 102999594 B CN102999594 B CN 102999594B CN 201210465742 A CN201210465742 A CN 201210465742A CN 102999594 B CN102999594 B CN 102999594B
Authority
CN
China
Prior art keywords
division
data
point
border
true
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201210465742.2A
Other languages
English (en)
Other versions
CN102999594A (zh
Inventor
姚斌
李飞飞
肖小奎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN201210465742.2A priority Critical patent/CN102999594B/zh
Publication of CN102999594A publication Critical patent/CN102999594A/zh
Application granted granted Critical
Publication of CN102999594B publication Critical patent/CN102999594B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及一种基于最大划分和随机数据块的安全最近邻查询方法及系统,所述方法包括:数据主将包含外包数据库的voronoi图分割成为k个划分,记录划分的边界,在划分中添加随机字节,并根据预设的哈希函数对每个边界建立对应的索引,并将加密后的所有划分及其对应的索引发送给服务器,将所有划分对应的边界发送给数据用户;数据用户将包含真实查询点的划分对应的索引发送给服务器;服务器向数据用户发送加密后的包含真实查询点的划分;数据用户获取加密后的包含所述真实查询点的划分,并解密后计算出最近邻,在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、查询点及查询结果,保证数据安全。

Description

基于最大划分和随机数据块的安全最近邻查询方法及系统
技术领域
本发明涉及安全查询处理领域,一种基于最大划分和随机数据块的安全最近邻查询方法及系统。
背景技术
安全查询处理领域的现有研究涉及加密数据库上的基本SQL查询(参见文献3:H.Hacigumus,B.R.Iyer,C.Li,and S.Mehrotra.Executing SQL overencrypted data in the database service provider model.In SIGMOD,2002)、聚合查询(参见文献4:H.Hacigumus,B.R.Iyer,and S.Mehrotra.Efficient execution ofaggregation queries over encrypted relational databases.In DASFAA,pages 125–136,2004和文献5:E.Mykletun and G.Tsudik.Aggregation queries in thedatabase-as-a-service model.In DBSec,2006)和范围查询(参见文献6:B.Hore,S.Mehrotra,M.Canim,and M.Kantarcioglu.Secure multidimensional range queriesover outsourced data.VLDBJ.To Appear.和文献7:E.Shi,J.Bethencourt,H.T.-H.Chan,D.X.Song,and A.Perrig.Multi-dimensional range query over encrypted data.In IEEE Symposium on Security and Privacy,pages 350-364,2007)。正如诸多现有研究(参见文献1:H.Hu,J.Xu,C.Ren,and B.Choi.Processing private queriesover untrusted data cloud through privacy homomorphism.In ICDE,pages 601-612,2011和文献2:W.K.Wong,D.W.-L.Cheung,B.Kao,and N.Mamoulis.Secureknn computation on encrypted databases.In SIGMOD,pages 139–152,2009和文献6和文献7)所证明的,为满足一定的安全性要求和获得更高的效率,较复杂的查询类型往往需要一些特殊处理。特别的,针对SNN问题现在已有不少前人所做的研究工作(参见文献1和文献2),然而他们所提出的解决方案最后往往被证明是不安全的,可以被轻而易举地攻击成功。
Hacigumus等人首先提出了“外包数据库”(outsourced database,ODB)模型(参见文献8:H.Hacigumus,B.R.Iyer,and S.Mehrotra.Providing database as aservice.In ICDE,2002),在这个模型里,数据拥有者(data owner)将“数据管理”及“查询应答”两项服务外包给不可靠的服务提供商(service provider)。关于ODB的安全性研究旨在通过加密及在加密数据上进行查询处理来确保数据安全。例如,使用一种保序加密法(order-preserving encryption scheme,OPES,参见文献9:R.Agrawal,J.Kiernan,R.Srikant,and Y.Xu.Order preservingencryption for numeric data.In SIGMOD,2002),对一序数域(ordinal domain)应用函数E,使得对任一对满足x<y的值x,y,都有E(x)<E(y)。另外,Hacigumus等人还提出了一种加乘同态(additive and multiplicative homomorphic)加密函数E(E满足E(x)+E(y)=E(x+y),E(x)E(y)=E(xy))来支持加密数据上的聚合查询(参见文献4:H.Hacigumus,B.R.Iyer,and S.Mehrotex ecution ofaggregation queries over encrypted relational databases.In DASFAA,pages 125-136,2004)。然而,正如Mykletun等人所证明的那样,实际上同态法连最低级别的安全都不能保证(参见文献5)。概而言之,之前的ODB模型都仅仅考虑了简单的数值域和SQL操作,而没有考虑以kNN(k nearest neighbor,k最近邻)查询等更复杂的操作为研究对象;另外,ODB模型研究总是假设单一类型的攻击,而没有综合考虑不同层次的攻击,不具有普适性。
除了各种加密技术,还有其他的数据保护方法来保证查询计算的安全性。ODB模型上的SQL语句执行就采用了“粗索引”(coarse index,亦称“基于桶的索引”,bucket-based index)技术(参见文献3)。元组通过诸如RSA的普通加密法加密;将各数据库属性域分割,分割后得到的每一部分(即一个“划分”,partition)通过哈希函数赋以一ID。数据主将加密元组连同其所在分割的ID送至服务器,充当“粗索引”。查询变为获取包含目标元组的分割。服务器则返回一个查询结果的超集。继而,拥有密钥的用户便可以将结果解密,再通过一定的后处理筛选掉其中无用信息。高级查询中无用信息的数量可能十分巨大,对用户而言这会成为十分沉重的负担。例如,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.Sovereign joins.In ICDE,2006)。它是一种安全的计算单元,其计算过程及储存的数据对查询中的任一方都是透明的。协处理器的使用很简单,只需要安装上加密和解密密钥,并直接部署应用逻辑即可。然而另一方面,它的速度不如普通处理器,因此不适用于需要大量计算的复杂应用。除此之外,协处理器必须靠用户来维护。例如,如果处理器意外停机,用户必须重新对其进行部署。这显然与云计算中用户本无需亲自维护原始数据是矛盾的。
另外,Sweeney,Li,Machanavajjhala等人提出了各种各样的数据匿名模型,如k匿名(k-anonymity),用于数据发布时的隐私保护(参见文献12:L.Sweeney.k-anonymity:A model for protecting privacy.In IJUFKS,2002)。他们的基本思想都是使数据库中各元组与另外至少k-1个元组的“准”标示符(quasi-identifiers)是不可辨(indistinguishable)的。“k匿名”可以通过“准”标示符一般化(generalizing)、元组抑制(suppressing tuples)、元组扰乱(perturbing tuples)等方法实现。但是,“k匿名”模型在查询过程中会有信息丢失,并且模型本身还有特定的缺陷。如Machanavajjhala等人所指出的,匿名化的不可辨的“准”标示符组也含有不少敏感值,因此攻击者通过有限的背景知识就可以引起信息泄露(参见文献13:A.Machanavajjhala,J.Gehrke,D.Kifer,and M.Venkitasubramaniam.l-diversity:Privacy beyond k-anonymity.In ICDE,2006)。另外,一般化后的值域也会方便潜在攻击者对原始数据或一些宝贵的统计信息做出准确估计。特别需要注意的是,数据发布时的隐私保护与ODB模型中的数据安全两者的目标是不同的:前者力图避免发布的信息暴露特定个体,后者注重针对非授权用户保护信息。
为更好地解决安全查询处理问题,W.K.Wong等重点研究了SCONEDB模型中的kNN查询(参见文献2)。Oliveira等曾提出“等距转换”(distance-preservingtransformation,DPT)作为其加密方法(参见文献14:S.R.M.Oliveira and O.R.Zaiane.Privacy preserving clustering by data transformation.In SBBD,Manaus,Amazonas,Brazil,2003)。DPT将给定点x转换为Nx+t,其中,N是一个d×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中的一组点{x1,x2,...,xm}及其相应的加密值{y1,y2,...,ym},然后建立出一组等式yi=Nxi+t,形成线性等式组,其中,N的d2和t的d未知。如此,如果m>=d+1,则此等式组可解。对于一2级攻击,攻击者可见DB中的一组点P。由于DPT保留了各维间的相关性,Liu等使用PCA确定点集P中和转换后所得数据库中的主成分。通过匹配主成分,攻击者可以对N和t做出准确估计(参见文献8)。
不可靠平台上的kNN计算也是“适地性服务”(LBS)系统需要考虑的问题。在LBS模型中,服务器拥有一个元组集(也即“兴趣点”point of interest,POI)。用户向服务器提交查询(范围查询或kNN查询),获取想要的兴趣点。其中主要的安全目标即为保护查询点的位置信息,另外一些模型也会考虑POI的隐私问题。“k匿名”模型是常被使用,以将查询点的位置转换为一个空间范围,如此这一范围中至少包含了其他k-1的点,服务器则难以在其中确定出用户(查询点)的位置。尽管这一模型可以用来解决我们的问题,但它也有一定缺陷。首先,匿名后的数据会近似地暴露出原始数据值;其次,在特定模型中(参见文献15:G.Ghinita,P.Kalnis,A.Khoshgozaran,C.Shahabi,and K.L.Tan.Privatequeries in location based services:Anonymizers are not necessary.In SIGMOD,2008),数据库被假定为服务器所有,因此服务器能看到原始数据;再次,在一些系统(诸如“粗索引”系统)中,服务器通常返回查询结果的超集以供用户进行后处理,这增添了用户负担,对于一些“轻量级”(light-weight)用户端,这甚至是不可承受的。Khoshgozaran等人提出了一个可以为kNN查询进行加密的LBS模型(参见文献16:A.Khoshgozaran and C.Shahabi.Blind evaluation ofnearest neighbor queries using space transformation to preserve location privacy.InSSTD,2007)。其主要思想是使用Hilbert曲线来对数据点和查询进行“加密”。各点的Hilbert值被送往服务器。然后在Hilbert转换后所得的空间中计算kNN得出近似结果。这种方法除了返回的是近似结果,还存在DPT类似的问题,容易被攻击成功。
发明内容
本发明的目的在于提供一种基于最大划分和随机数据块的安全最近邻查询方法及系统,能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。
为解决上述问题,本发明提供一种基于最大划分和随机数据块的安全最近邻查询方法,包括:
数据主生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;
数据用户或数据主给定参数K,数据主根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的真实数据点部分重复或完全不重复,k大于等于1且小于等于N,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分或用平行X坐标轴的直线不断分割当前的最大的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图的当前的最大的划分中的多边形的顶点最多;
数据主在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;
数据主获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;
数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;
数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;
所述数据用户确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;
所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;
所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;
所述数据用户确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器;
所述服务器根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分。
根据本发明的另一面,提供一种基于最大划分和随机数据块的安全最近邻查询系统,包括:
数据主,用于给定所述参数k,生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的真实数据点部分重复或完全不重复,k大于等于1且小于等于N,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分或用平行X坐标轴的直线不断分割当前的最大的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图的当前的最大的划分中的多边形的顶点最多;在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;
数据用户,用于给定所述参数k,确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器;
服务器,用于根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分。
与现有技术相比,本发明通过数据主生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;数据用户或数据主给定参数K,数据主根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的真实数据点部分重复或完全不重复,k大于等于1且小于等于N,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分或用平行X坐标轴的直线不断分割当前的最大的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图的当前的最大的划分中的多边形的顶点最多;数据主在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;数据主获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;所述数据用户确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;所述数据用户确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器;所述服务器根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分,能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。
附图说明
图1是本发明一实施例的基于最大划分和随机数据块的安全最近邻查询方法的流程图;
图2是本发明一实施例的基于最大划分和随机数据块的安全最近邻查询方法的划分示意图;
图3是本发明一实施例的一维空间下划分示意图;
图4a是本发明一实施例的MinDp方法的划分示意图;
图4b是本发明一实施例的MinMax方法的划分示意图;
图5a是本发明一实施例的MinMax划分方法下k对划分时间代价的影响图;
图5b是本发明一实施例的MinMax划分方法下|D|对划分时间代价的影响图;
图6a是本发明一实施例的划分大小的平均值、最大值和最小值随参数k变化情况图;
图6b是本发明一实施例的划分大小的平均值、最大值和最小值随|D|变化情况图
图7a是本发明一实施例的MinMax划分方法的总运行时间随参数k变化情况图;
图7b是本发明一实施例的MinMax划分方法的总运行时间随|D|变化情况图;
图8a是本发明一实施例的MinMax划分方法下|E(D)|随k变化情况图;
图8b是本发明一实施例的MinMax划分方法下|E(D)|随|D|变化情况图;
图9a是本发明一实施例的MinMax划分方法下查询通信代价随k变化情况图;
图9b是本发明一实施例的MinMax划分方法下查询通信代价随|D|变化情况图;
图10a是本发明一实施例的MinMax划分方法下查询时间随|D|变化情况图;
图10b是本发明一实施例的MinMax划分方法下查询时间随k变化情况图;
图11是本发明一实施例的基于最大划分和随机数据块的安全最近邻查询系统的功能模块示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
随着“云计算”概念及其应用的日益普及,针对“云”上的加密数据集E(D)的“安全查询问题”得到了越来越多的关注。本发明即对其中的“安全最近邻”(secure nearest neighbor,SNN)问题进行了较为深入的研究;该问题涉及数据主(data owner)、数据用户(client)和服务器(server)三方,数据用户会向服务器发送查询密文(encrypted query,E(q))来获取查询点在E(D)中的最近数据点(即“最近邻”)的密文,但要保证不能让服务器获知数据和查询的具体内容。具体说,SNN问题涉及数据主、数据用户和服务器三方及所述三方其相应的动作:
(1)数据主:拥有由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-1对E(D)进行解密(假定数据主与数据用户共享E-1)得到D,从而可以在本地计算出SNN查询的结果——可将这一“朴素”的方法称为“(直接)传送D”(Send-D方法)算法。显然,这种算法具有与E相同的安全性,但却十分低效。于是在此基础上,如图1所示,进一步提出了更为高效的SNN处理方法,即本发明提供的一种基于最大划分和随机数据块的安全最近邻查询方法(secure voronoidiagram,SVD),包括预处理阶段步骤S1~S5,查询阶段包括步骤S6~S8,步骤S6~S8可以根据实施查询需要不断重复,直至没有查询需求为止,其中,
步骤S1,数据主生成包含外包数据库D的所有真实数据点pi的voronoi图,其中,每个真实数据点pi的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库。由于在后续步骤S2中要产生外包数据库D的k个划分,这里一个关键问题就是如何产生外包数据库D的(可能存在重叠的)“划分”G(D)={G1,...,Gk},考虑到的目标是有两个:(1)SNN查询结果(查询点的最近邻)至少应被包含于某一划分中,且(2)数据用户能够用尽可能小的信息量确定出Gi以降低查询代价,因此一个自然的选择就是用基于外包数据库D的voronoi图来构建G(D),其中每个数据点pi用一个voronoi cell表示。
本发明需要针对以下四个问题:
问题一:边界信息P(D)用voronoi cell来描述空间代价太大。例如,当所述外包数据库D为二维即d=2时,每个voronoi cell是一个任意形状的凸多边形,并且这些多边形平均会有6个顶点。因此,如此表示边界信息P(D)所占的存储空间将比存储外包数据库D本身的大得多。
问题二:如何给边界信息P(D)建立索引以使数据用户能够迅速地确定所需要的原始索引值i。这一问题在边界信息P(D)中元素具有不规则边界时会显得尤为突出,例如:当Bj∈P(D)为一voronoi cell时(此时Bj即是任意形状的的凸多边形)。
问题三:保证|E(Gi)|=|E(Gj)|(i≠j),如此服务器才不会根据划分(密文)的大小情况区分出它们,进而了解划分情况。在任意安全加密算法E中我们都需保证这一点,因此需对G(D)加以强制约束|Gi|b=|Gj|b(i≠j),其中|Gi|b表示划分Gi的字节数(注意区分表示Gi中数据点的个数为|Gi|)。
问题四:数据用户在本地计算出满足nn(q,D)∈Gi的原始索引值i后,不应将i直接送至服务器获取E(Gi),这样方可保证服务器不会在查询处理过程中获知任何关于划分情况的信息。若数据用户只向服务器发送i的密文,那么这一问题就不存在了;但这意味着服务器必须能通过i的密文查找到E(Gi)。
步骤S2,数据用户或数据主给定参数K,数据主根据所述参数k将所述voronoi图G(D)分割成为k个划分G1,...,Gk,记录每个划分对应的边界信息P(D)={B1,...,Bk},其中,每个划分互不相交,不同划分包含的真实数据点部分重复或完全不重复,k大于等于1且小于等于N。具体的,根据用户给定的参数k将D分割为k部分,每个这样的部分称为一个“划分”(各划分之间允许相交,即各划分可含有相同数据点),即有G(D)={G1,...,Gk},然后将E(D)={E(G1),...,E(Gk)}传送至所述服务器。在这个过程中,还需对各划分的“几何边界信息”P(D)={B1,...,Bk}(其中Bi为划分Gi的几何边界)进行存储,这样的信息在保证足够描述出划分情况的前提下,所占空间当然是越小越好。
这里先考虑一种极端情形:如果令k=N(N为数据集D的数据点的个数,即|D|),那么每个Gi即由单一数据点pi∈D构成的集合,而边界信息P(D)即为D的voronoi cell的集合。设pi的voronoi cell为vci(pi为vci所包含),那么给定任意查询点q,数据用户需查找包含q的voronoi cell;假定则数据用户需向服务器请求获取E(Gi);这里显然有nn(q,D)=pi以及Gi={pi},而算法返回nn(q,E-1(E(Gi)))=nn(q,{pi})=pi,可见为正确结果。可以考虑把上述思想推广应用到k<<N的一般情形。
具体的,步骤S2包括步骤S21和步骤S22:
步骤S21,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线;具体的,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线。具体的,为了解决问题一和问题二,规定G(D)中的各个划分必须具有规则形状。如图3所示,在一维情形下存在一个“最优方案”的,它可以产生大小平衡且互不相交的划分,这是因为一维数据点的voronoi图都是由连续而不相交的区间构成,为生成“完全平衡”(即大小相等)的划分,只需在D中找到其1/k,...,(k-1)/k分位点,然后用它们产生G(D),这些分位点所对应voronoi cell的边界以及±∞确定了P(D)={B1,...,Bk}。
上述查找(k-1)个分位点并通过它们对D的voronoi图进行划分的过的程可通过对D的一次线性扫描完成。因此,该算法在外存模型中的IO(输入/输出)代价为O(N log N)。由于每个划分大小均为|D|/k=N/k,因此Gi大小均为|E(N/k)|,故而E(D)大小为k|E(N/k)|;并且显然P(D)的大小是O(k)的。
步骤S22,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分或用平行X坐标轴的直线不断分割当前的最大的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图的当前的最大的划分中的多边形的顶点最多。
具体的,为了解决上述问题一和问题二,规定G(D)中的各个划分必须具有规则形状,具体来说就是,每个划分必须被限定在一个由与X坐标轴和Y坐标轴(X坐标轴或Y坐标轴)平行的边围成的“格子”(box)中。然而,这意味着划分Gi的边界信息Bi可能包含或贯穿多个voronoi cell,如图2所示,其中虚线为划分的边界信息B1和B2,代表不同数据点p1~p16的凸多边形为voronoi cell。
为了解决上述问题二,设D中点pi对应的voronoi cell为vci,为保证数据用户能够为P(D)编制索引以及轻松高效地确定出满足nn(q,D)∈Gi的原始索引值i,可以确定如下划分原则:设Gi的几何边界由Bi表示,那么
原则一:Bi是一个由与X坐标轴和Y坐标轴平行的边围成的“格子”;
原则二:即G(D)中不同的划分其对应的边界是互不相交的;
原则三:如果Bi完全包含或相交于一个voronoi cell集Vi,那么Gi={pj|vcj∈Vi},但不同的Gi可能会含重复的数据点。如在图2中,深色的voronoi cell里面的数据点会被同时加入到划分G1和G2中,即G1={p1,p2,p3,p4,p5,p6,p7,p8,p10},G2={p5,p6,p7,p8,p10,p11,p12,p13,p14,p15,p16,p9}。
引理1.如图2所示,依照上述划分原则,若nn(q,D)=pi且q∈Bj,则有pi∈Gj
证明:若有查询点q∈Bj,即q属于Bj所框定的区域,那么q必属于一个被Bj完全包含或贯穿的voronoi cell。依照上述划分原则,这一voronoi cell必属于Vj,而Vj确定了Gj的元素。假设q包含在vci中(则有nn(q,D)=pi),由上可知,vci∈Vj,继而pi∈Gj
由上述引理1可知,步骤S6中,对于任意查询点q,数据用户端的工作就是找到满足q∈Bj的Bj∈P(D),即在P(D)中找到一个包含q的格子,这实际上是一个“点位置查询”(point location query)的过程。由于P(D)中的格子都是不相交的,但会覆盖整个外包数据库D的voronoi图的空间,因此有且只有一个格子包含点q;另外,由于这些格子的边都是与X坐标轴和Y坐标轴平行的,因此数据用户能够方便地为P(D)编制索引i。之后,数据用户便可以向服务器请求获取E(Gj),这是因为由所述引理1告,只要q被包含在Bj中,那么就有nn(q,D)∈Gj
通过步骤S7,一旦E(Gj)被服务器返回,步骤S8中数据用户便可以由E-1对E(Gj)解密得到Gj;之后,数据用户通过识别随机字符*,可以轻松地将之前数据主通过“随机填补操作”添加在Gj中的随机字节序列去除;最后,数据用户可得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(i)),服务器便可以通过在T中查找,最终找到E(Gi),这个过程的时间复杂度仅为O(1),因此服务器可以通过上述过程由E(g(j))高效地查找到E(Gj)。
步骤S31,数据主在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数。具体的,在数据主生成G(D)和P(D)后,只需在G(D)中添加k'个随机划分,然后加密传送给服务器,如此服务器得到的划分数为k+k',从而k值得到了隐蔽。
步骤S3,数据主获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数。具体的,假设数据主已经生成了G(D)及P(D)为了上述解决问题三,数据主需保证|Gi|=|Gj|(i≠j)。设Gx为G(D)中具有最多个数据点(下称为“大小”,size)的划分,即对于任意i∈[1,k],都有|Gi|≤|Gx|。对于各个划分Gi(i≠x),对其添加(|Gx|b-|Gi|b)个随机字节,这里可用字符*代表任意随机字节以与Gi中的实际数据点进行区分(*代表的这些随机字符都不会在Gi中实际出现),可称此过程为“随机填补操作”。显然,经此“随机填补操作”,对于任意划分Gi,都有|Gx|b=|Gi|b。这样,在后续步骤S4中,无论数据主使用何种安全加密算法生成{E(G1),...,E(Gk)},都有|E(Gi)|b=|E(Gj)|b(i≠j),从而保证服务器无法在G(D)中区分出任意某个划分,从而了解到划分情况。
步骤S4,数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储。具体的,为了解决上述问题四,数据主应用一秘密随机哈希函数g:[1,N]→Z+,最终将E(D)={(E(g(1)),E(G1)),...,(E(g(k)),E(Gk))}发布给服务器,将P(D)、E-1和g发布给数据用户。
步骤S5,数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储,具体的,数据主将所有划分对应的边界信息P(D)发送给所述数据用户存储。将P(D)存储在数据用户端,这样对于任意查询点q,数据用户能够高效地确定出一原始索引值i满足nn(q,D)∈Gi,然后向服务器提出请求获取到E(Gi),这个过程完全可以在服务器不知道具体原始索引值i的情况下进行,而是通过所述哈希函数获取原始索引值i(边界)对应的索引,如此可以保证服务器不会在答复查询的过程中了解到划分情况;最后,数据用户自然能够轻松得出nn(q,D)=nn(q,E-1(E(Gi)))。
步骤S6,所述数据用户确定真实查询点q,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引E(g(j))发送给服务器,即数据用户将E(D)={(E(g(1)),E(G1)),...,(E(g(k)),E(Gk))}传送给服务器。
步骤S7,所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分。
步骤S8,所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;
步骤S9,所述数据用户确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器。具体的,服务器可能会通过统计对各个划分的查询频度,结合相关“背景知识”,大致判断出该划分所对应的实际地理区域,例如,假设D代表纽约地区,基于对纽约某些区域实际被“关注”程度的了解,服务器便可以推断出被最频繁查询的划分对应的很可能就是曼哈顿,为避免此类隐私泄露,还是可以使用“伪查询”的办法,让数据用户随机地发出“伪查询”,如此使得各划分在整体上有较为接近的查询频度即可以让数据用户发出一些针对上述随机划分的“伪查询”请求,即数据用户随机地向服务器请求E(g(j)),而这里j∈[k+1,k+k'],这样服务器便无法确定哪些是添加的随机划分,从而不能确定出k值。
步骤S10,所述服务器根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分。
上述步骤S6至S10的查询过程可以根据实际需要不断重复,直至无查询需求。通过步骤S31、步骤S9和步骤S10,可以很容易地使k对服务器透明。
本实施例中提供一种MinMax划分方法,这种方法遵循了上述提出的划分原则一至三,由于加入了“随机填补操作”,因此很显然,本实施例的通信代价以及服务器端的存储代价是由最大划分与各划分的大小之差,即|Gx|-|Gi|,或更准确地,|E(Gx)|-|E(Gi)|)决定的,也就是说,为了降低通信代价以及服务器端的存储代价,在设计划分方法时还应尽可能地遵循原则四:尽可能生成大小“平衡”(相等或接近)的划分。
MinMax方法为数据主根据所述参数k将所述voronoi图分割成为k个划分的步骤中,用平行于Y坐标轴的直线不断分割当前的最大的划分或用平行X坐标轴的直线不断分割当前的最大的划分,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图的当前的最大的划分中的多边形的顶点最多。
具体的,先介绍一下MinDp方法,MinDp方法为数据主根据所述参数K将所述voronoi图分割成为k个划分的步骤中,用平行于Y轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y轴的直线上的相邻的划分,或用平行X轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行X轴的直线上的相邻的划分,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y轴的直线或平行X轴的直线穿过voronoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将voronoi图中的划分的个数减至所述参数k。
具体的,MinDp方法中为了使G(D)中的(|Gx|-|Gi|)值达到最小,可以采用一种“贪心”策略。具体来说,初始时令P(D)={Ω},其中Ω代表D对应voronoi图的全部区域;随后,迭代地用垂直直线(平行于Y轴的贯穿Ω的直线,下同)或水平直线(平行于X轴的贯穿Ω的直线)将P(D)中格子逐步切小,直至P(D)中格子数达到k。为简明起见,下面将此构造过程中处于第i步骤状态的P(D)表示为Pi(D)。
在任意的第i步,用MinCs中提到的方式为Pi(D)中的格子编制索引对{x,y}。现在假设切至第i步时,已用了ai条垂直线和bi条水平线,那么在Pi(D)中便有了(ai+1)(bi+1)个格子,即Pi(D)={C1,1,...,C1,bi+1,...,Cai+1,1,...,Cai+1,bi+1}。那么如果把接下来MinDp的切割过程看做一个函数的话,就相当于以Pi(D)(或ai条垂直线和bi条水平线)为其输入状态,而输出一条新的分割线l(水平线或垂直线)。
这里用到的基本思路是:每一步中总是选取当前最大的划分进行切割,此即为“贪心”策略。这里,将格子Cx,y∈Pi(D)对应的划分表示为Gx,y。如图2所示,需注意每个格子Cx,y通过MinDp方法总可以产生一个对应的划分Gx,y。假设当前最大划分为Gα,β(α∈[1,ai+1],β∈[1,bi+1]),那么下一条切割线l的选取范围即为Gα,β对应的XY坐标范围。
然而,即使我们只考虑Gα,β的XY坐标范围,l的选择范围应是无穷的。这是因为,如果假设Gα,β由其左下角点(xl,yl)和右上角点(xu,yu)给定;那么,[xl,xu]范围内的任意垂直线和[yl,yu]范围内的任意水平线都可以作为Gα,β的切割线加以考虑。
为解决以上问题,如图2所示,可以发现如引理2。
引理2.当一个格子通过MinDp方法产生一个划分时,其边界线穿过的voronoi顶点(相对该边界线只是从“中间”穿过一个voronoi cell)越多,产生的划分越小。
证明:如若边界线l穿过某voronoi cell(设为vci),但并非穿过vci的顶点,那么vci对应的点pi必会同时分配给l两侧的划分,由此可得引理2的正确性。
引理2的一个例子就是,在图2中,p9只被分配给了划分G2,而没有分配给G1
由引理2,可以通过一种进一步的“贪心”策略确定切割线l。令V(Gα,β)表示这样的voronoi顶点集合:其所属的voronoi cell的坐标范围完全在[xl,xu]和[yl,yu]之中,点(xl,yl)和点(xu,yu)分别为Gα,β左下角和右上角。那么在确定l时只需考虑其水平或垂直穿过v∈V(Gα,β)的情形。这样的l将Gα,β及其对应的最大划分Gα,β切割开来,得Pi+1(D)。不难得知,这样的l可有2|V(Gα,β)|个可能的选择;从中选择一个,使之满足Pi+1(D)中的最大划分的数据点数最小。一旦l确定,即将Pi(D)更新为Pi+1(D),并如此继续,直至Pi+1(D)中格子数达到k。
由于上述划分方法是基于尽可能减少“重复点”的思想,因此称之为“MinDp(Minimum Duplicate Points)方法”。这里需注意的是,划分至最后一步时,MinDp方法产生的划分数可能会大于k;如若这样,可以通过逐步合并最小划分的方式将划分数减至k,对此我们这里不做赘述。图4a给出了MinDp方法应用的一个示例,其中,图4a中虚线l代表试切割过程。
MinDp方法最多需进行(k-1)步划分,例如,所有划分线均为水平或垂直时;在每一步,需试验2|V(Gα,β)|条可能的划分线。由于平均单个voronoi cell的顶点数小于6,并且有N个voronoi cell,因此O(|V(Gα,β)|)=N。对于每条切割线l,需找出与其相交的voronoi cell以便后续产生划分,这在最坏情况下需要O(N)的复杂度。综上,最坏情形下MinDp的复杂度为O(kN2)。需注意,现实中几乎不会出现上述最坏情形,而往往是要么只是|V(Gα,β)|为O(N),要么只是l穿过的voronoi cell数为O(N),两者只占其一,故总的复杂度仅为O(kN)。最后特别值得一提的是,P(D)的大小显然是O(k)的。
上面介绍的MinDp方法试图通过用一条垂直直线或水平直线不断切割当前最大划分的方法,来使|Gx|最小。然而,这种方法会对最大划分的“相关”(与最大划分垂直地或水平地在一条直线上排列)划分一并进行切割,从而产生许多不必要的小划分。以图4a为例,此时的最大划分为G1,2,如果要进行切割产生更多划分,MinDp方法会用一条穿过C1,2的垂直直线或水平直线将C1,2切开。然而,这样的图4a中点状虚线直线l一旦选定,不仅C1,2会被切开,C1,1也会“连带”地被切割。对应地,这种情况会导致许多很小的划分产生。例如,由于虚线l的切割,图4a中出现了那个位于左下角的小划分,它仅仅包含两个数据点{p1,p2}。
不难想到,如果有更多的格子与Gα,β相关,情况会变得更糟。事实上,考虑到“随机填补操作”,“额外”(相比较填补操作前)的通信代价和存储代价与(|Gx|-|Gi|)值是呈正相关的。因此,不仅应减小|Gx|,同时也要避免存在过小的划分(即减小|Gx|-|Gi|的方差)。
为了解决上述问题,可以考虑只对当前最大的划分进行切割,而非连带相关划分一起切割,即我们只需用一条贯穿Gα,β的垂直或水平线段,而非贯穿整个D的voronoi图空间的直线,对Gα,β进行切割。其余处理与MinDp方法相同。将此方法称为“MinMax(Minimum Maximum partition)方法”。图4b是MinMax方法的一个应用实例,其中所用数据集D同MinDp方法的示例图4a。
MinMax方法每进行一次分割,会增加一个格子(对应增加一个划分),因此该方法总是需进行(k-1)步划分。而在每一步,MinMax需试验2|V(Gα,β)|条可能的划分线,最坏情况下这是O(N)的。同样在最坏情况下,每条切割线会与O(N)的voronoi cell相交。综上,MinMax在最坏情况下的复杂度为O(kN2)。但类似于对MinDp的分析,最坏情况往往不会发生,因此MinMax在实际中的复杂度一般是O(kN)。该方法中P(D)的大小显然也是O(k)的。
更详细的,可用C++语言对上述二种划分方案MinDp方法和MinMax方法进行实现。本实现的实验中,使用Qhull库对数据集D进行了voronoi划分;使用最新的Crypto++库进行了加密。随后实验的进行是在一台配置为Intel Xeon3.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比特。这里需特别一提的是,实验过其他加密算法后,发现不同加密算法对本实施例的性能几乎不构成影响。因此任何安全的公共密钥或对称密钥加密算法都可用于实现本实施例,并且不同加密算法实现本实施例性能都可由实验说明。最后要说明的是,在全部实验中,除非特别声明,当将某个参数作为变量进行研究时,其他参数均为默认值。
具体实验结果如下:
1.预处理阶段
在预处理阶段,数据主端需进行划分和加密两项工作,它们均主要受划分数k和数据集大小|D|的影响。图5a、5b所示分别为不同划分方法下k和|D|对运行时间的影响。其中,图5a显示MinDp方法和MinMax方法的划分时间代价(partition time)均随k线性增长,但MinDp方法的增幅明显大于MinMax方法的(MinMax方法几乎无明显增长),这应归因于MinMax方法关于分割线的优化,相比较MinDp,MinMax中分割线被完全限制在所要分割的格子中(即由“直线”变成了“线段”)。整体而言,MinMax方法效率很高,其划分代价低,;特别值得一提的,它将1,000,000个点分割为1,225个划分只需22秒。
图5b显示的是数据大小|D|变化(从250,000到2,000,000)对划分时间代价的影响。尽管MinDp方法和MinMax方法在最坏情况下的复杂度是O(kN2),但在现实(实验)中,它们的处理时间与N也是呈线性关系,这是因为所述最坏情形——一条分割线会同全部N个voronoi cell相交——在实际数据集中几乎是不可能发生的。事实上,在MinDp和MinMax的每一步分割中,与分割线相交的voronoi cell数几乎可以认为是常数个,因此它们的复杂度可认为是O(kN)的。并且,很显然相较MinMax,MinDp中的分割线会与更多的voronoi cell相交,因此,正如图5b中所示,MinDp划分的时间代价会高于MinMax,并且前者随|D|的增幅也要高于后者。由图5b,MinMax在效率和可扩展性方面的表现较好。当|D|由250,000增至2,000,000时,MinMax的处理时间仅仅是由5秒增至45秒,其时间代价较低。
下面来看不同方法下产生的划分G(D)={G1,...,Gk}的大小(进行“随机填补操作”前)。由于“随机填补操作”会通过填补随机字节将所有划分的大小增至与最大划分一样大,因此以下两个数值对于评估不同方法的性能至关重要:最大划分的大小|Gx|和(|Gx|-|Gi|)的方差(i∈[1,k])。|Gx|决定了服务器端的存储代价和每次查询的通信代价;(|Gx|-|Gi|)的方差决定了填补操作本身的代价。为了将这些数值在一个图中简单直观地呈现,图6a、6b分别显示了划分大小的平均值(avg partition size)、最大值|Gx|=maxi∈[1,k]|Gi|和最小值|Gy|=mini∈[1,k]|Gi|随参数k和|D|的变化情况。
由图6a、6b显见,MinDp和MinMax二种方法在相同参数设置下划分大小的平均值是相近的。MinDp方法就在很大程度上减小了|Gx|值,这自然归因于它总是切割最大划分的“贪心策略”。然而由于MinDp方法中切割线是贯穿整个空间的“直线”,因此会产生许多很小的划分,这在图6a、6b中也很明显地表现了出来。MinMax方法遵循了与MinDp相似的思路,因此其|Gx|也是非常小的;但同时由于MinMax方法中将切割线优化成了只是贯穿待切割格子的“线段”,避免了小划分的产生,因此MinMax方法产生的划分相对“平衡”,其|Gx|会非常接近于平均值,(|Gx|-|Gi|)的方差也很小,这些在图6a、6b中都有体现。
最后,如图6a、6b所示,无论哪种划分方法,其划分大小的平均值和最大值随k增加都是递减的,这显然是理所当然的。略有区别的是,MinMax产生的划分总是最平衡的。
下面通过图7a、7b来看在预处理阶段MinDp和MinMax二种方法的总运行时间(total running time)。所谓总运行时间,具体含划分和加密两个步骤的时间(voronoi划分时间和“随机填补操作”时间也包含在内,不过它们相对划分和加密时间来说要小一些)。在图7a、7b中,还加入了所述Send-D方法的预处理时间以作参照,Send-D方法的预处理时间就是将D看做一个整体进行加密的时间。
综上分析,MinMax方法是最快的方法,并且这里特别值得一提的是,如图5a、5b所示,MinMax方法具有优越的划分时间性能。
另外,从图7a、7b中可见,MinDp和MinMax二种方法预处理阶段的总时间随k或|D|增加都是线性增长的,这也是理所当然的结果。但是,如图7a、7b所示,MinMax相对MinDp也快数倍。事实上,如图7b所示,在一个大小为2,000,000的数据集上生成有625个划分的E(D),MinMax只需65秒(包含进行voronoi划分、分割、随机填补操作和加密的时间)。当然,Send-D方法比MinMax方法还要快,但比较而言,MinMax方法的效率已处于一个很合理的可接受的范围内。
再来看最终产生的E(D)的大小,这是影响服务器端存储代价和数据主至服务器通信代价的关键因素。进行过随机填补操作后,每个划分都具有了与最大划分相同的大小,因此,|E(D)|=k|E(Gx)|=k|E(Gi)|(i∈[1,k])。
图8a、8b分别显示了MinDp和MinMax二种方法下|E(D)|(size of E(D))随k或|D|变化的情况。类似于针对图7a、7b的讨论,也把D的大小和将D作为一个整体进行加密得到的E(D)的大小(即Send-D的代价)加入图8a、8b中以作参照。显然,MinDp和MinMax二种方法中E(D)的大小随k或|D|增加都是线性增长的。Send-D对应的E(D)大小也是随|D|线性增长的,但却与k无关。在二种方法中,MinMax显然是最理想的,这仍然可以用其划分的“平衡性”来解释(如图6a、6b所示)。自然,相对直接传送外包数据库D的明文本身,遥种方法都会引入数据主至服务器的通信代价和服务器端的存储代价。然而,MinMax的代价几乎是同代价最低的Send-D相近的。
数据用户端的存储代价是取决于P(D)的大小的,并且这一代价在MinDp和MinMax二种方法中分别是O(k)和O(k)的。由于k相对数据点的个数|D|来说小得多(对于一个包含几百万个点的数据集来说,分割出几百个划分即已足够),因此上述存储代价几乎是可以忽略的。
最后需声明的是,在实验中观察到使用哪种数据集(CA数据集或TX数据集)对实验结果几乎没有什么明显的差别,因此为简便起见,这里没有讨论TX数据集上的实验结果。
2.查询处理代价
首先,对任意查询点q,采用本发明的方法,服务器至数据用户端的通信代价仅仅取决于|E(Gj)|。然而,正如上述对图8a、8b结果的分析,由于进行了随机填补操作,因此每个划分有了相同的大小,并且|E(Gi)|=|E(D)|/k(i∈[1,k])。相反,在Send-D方法中,服务器至数据用户端的通信代价就是对数据集D整体加密的大小,即|E(D as one message)|。因此,虽然|E(D as one message)|比三种方法生成的|E(D)|小得多(如图8a、8b所示),如图9a、9b所示,本发明的方法中服务器至数据用户端的查询通信代价(query communication)仍然比Send-D的小得多,特别本发明的方法中性能最好的MinMax方法。事实上,MinMax方法的查询通信代价比Send-D要小约3个数量级。
下面,再来看数据用户端的查询处理代价。每次实验,都随机进行了100次查询,然后得到如图10a、10b所示的MinDp和MinMax二种方法的平均处理时间。图10a显示二种MinDp和MinMax方法的查询时间(query time)都是随k增大而递减的,这显然是因为k增大导致了划分变小。这里需特别一提的是,MinMax具有最短的查询时间,这还是因为MinMax方法能产生平衡的划分。相比Send-D,二种MinDp和MinMax方法的性能都要好得多,特别是MinMax方法,其查询速度要比Send-D方法快2至3个数量级。图10b所示,而当|D|增加时,二种MinDp和MinMax方法的查询时间都随之线性增长。但是须注意的是,MinMax仍表现出最好的性能,其查询速度能比Send-D块3个数量级。举例来看,当D大小为2,000,000、划分数为625时,MinMax的查询时间仅约为10-2秒。
本发明的算法效率包括预处理阶段的时空代价和查询阶段的查询代价,所述预处理阶段的时空代价包括时间代价和存储代价,查询阶段的查询代价包括时间代价和通信代价:
1.SVD算法进行预处理时的时间代价主要体现在以下三阶段:
(1)得到D的voronoi图;
(2)对D进行划分;
(3)生成E(D)。
针对一维和二维的外包数据库,阶段(1)的代价是O(NlogN)的。
而在第(2)阶段(对D进行划分),一维情形下,很显然可以在对数据进行排序后通过一次遍历得到所需的分位点,因此阶段2的代价也是O(NlogN)的;二维情形下,该阶段的代价取决于我们所选用的划分方法。MinDp和MinMax二种方法的代价分别为O(kN)和O(kN)。
阶段(3)的代价同加密代价呈线性关系。假设通过加密算法E对信息m进行加密的代价为e(m);由于“随机填补操作”将每个划分的大小都增至最大,因此可得生成E(D)的时间复杂度是O(ke(|Gx|b))的,其中 G x = arg max G i &Element; G ( D ) | G i | .
2.预处理阶段的存储代价
服务器端的存储代价为|E(D)|,是O(k|E(Gx)|)的。
数据用户端的存储代价为P(D)和索引i所占的空间。对于同类型的大部分的索引结构(如kd树、R树、线段树等),i的大小是与|P(D)|线性相关的,因此数据用户端的存储代价是O(|P(D)|)的;至于P(D),一维情形下,P(D)仅仅含有(k-1)个数值,因此|P(D)|=k-1;二维情形下,|P(D)|由所选用的划分方法所决定。MinDp和MinMax二种方法的|P(D)|分别是O(k)和O(k)的。
3.查询阶段的查询代价
查询阶段的时间代价主要体现在两端:数据用户端和服务器端。其中,数据用户需通过P(D)的索引i查找包含查询点q的Bi∈P(D),其中任意Bi都是由平行于X坐标轴和Y坐标轴的边围成的d维(一至三维)格子;由于已保证P(D)中的任意两个格子不会相交,且必有一个格子包含q,因此这种查找实际是一个输出大小为1(结果有且只有一个)的典型“点位置查询”过程;在一二维情形下,以上过程的代价仅是O(logk)的。
在服务器端,数据用户给定一个请求E(g(j)),服务器便通过查询哈希表T来找到E(Gj),这个过程是O(1)的。
系统中的单次通信代价为|E(D)|和|P(D)|,这可由我们上面对存储代价的讨论自然得出。查询的通信代价为|E(g(j))+|E(Gj)|,或|E(g(j))|+|E(Gx)|,或|E(g(j))|+|E(Gj)|/k。
在本发明的安全性方面,由于本实施例中数据用户仅仅是把E(D)={(E(g(1)),E(G1)),...,(E(g(k)),E(Gk))}传送给服务器,并且在查询处理过程中,只有E(g(j))是对服务器可见的,由此我们可证得下述定理1。
定理1.假设E是某种已在标准安全模型M(如,IND-CPA)中被证明安全的加密算法,那么在M中SVD算法与E具有相同的安全性。
证明:在整个处理过程中,服务器只能看到来自数据主的E(D)和来自数据用户的E(g(j))随机序列,因此,服务器只能了解到划分个数k。由于“随机填补操作”保证了|E(Gj)|=|E(Gi)|(i≠j),如果E在M中是安全的,那么显然,服务器不会了解到关于任意划分Gi的顶点信息。再者,因为随机哈希函数g:[1,N]→Z+不为服务器所知,因此服务器不可能在仅仅被给定E(g(j))的情况下还原出原始索引值i,也即,服务器不可能知道E(D)中(E(g(i),E(Gi))对的原始索引值i。
综上,本实施例能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。
如图11所示,本发明还提供另一种基于最大划分和随机数据块的安全最近邻查询系统,包括数据主1、数据用户2和服务器3。
数据主1,用于给定所述参数k,生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的真实数据点部分重复或完全不重复,k大于等于1且小于等于N,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分或用平行X坐标轴的直线不断分割当前的最大的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图的当前的最大的划分中的多边形的顶点最多;在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储。
数据用户2,用于给定所述参数k,确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器。
服务器3,用于根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分。
综上所述,本发明通过数据主生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;数据用户或数据主给定参数K,数据主根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的真实数据点部分重复或完全不重复,k大于等于1且小于等于N,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分或用平行X坐标轴的直线不断分割当前的最大的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图的当前的最大的划分中的多边形的顶点最多;数据主在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;数据主获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;所述数据用户确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;所述数据用户确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器;所述服务器根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分,能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

Claims (2)

1.一种基于最大划分和随机数据块的安全最近邻查询方法,其特征在于,包括:
数据主生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;
数据用户或数据主给定参数K,数据主根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的真实数据点部分重复或完全不重复,k大于等于1且小于等于N,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分或用平行X坐标轴的直线不断分割当前的最大的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图的当前的最大的划分中的多边形的顶点最多;
数据主在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;
数据主获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;
数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;
数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;
所述数据用户确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;
所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;
所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;
所述数据用户确定伪查询点,根据所述伪查询点确定包含虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器;
所述服务器根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分。
2.一种基于最大划分和随机数据块的安全最近邻查询系统,其特征在于,包括:
数据主,用于给定参数k,生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的真实数据点部分重复或完全不重复,k大于等于1且小于等于N,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分或用平行X坐标轴的直线不断分割当前的最大的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图的当前的最大的划分中的多边形的顶点最多;在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给数据用户存储;
数据用户,用于给定所述参数k,确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;确定伪查询点,根据所述伪查询点确定包含虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器;
服务器,用于根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分。
CN201210465742.2A 2012-11-16 2012-11-16 基于最大划分和随机数据块的安全最近邻查询方法及系统 Expired - Fee Related CN102999594B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210465742.2A CN102999594B (zh) 2012-11-16 2012-11-16 基于最大划分和随机数据块的安全最近邻查询方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210465742.2A CN102999594B (zh) 2012-11-16 2012-11-16 基于最大划分和随机数据块的安全最近邻查询方法及系统

Publications (2)

Publication Number Publication Date
CN102999594A CN102999594A (zh) 2013-03-27
CN102999594B true CN102999594B (zh) 2015-08-19

Family

ID=47928162

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210465742.2A Expired - Fee Related CN102999594B (zh) 2012-11-16 2012-11-16 基于最大划分和随机数据块的安全最近邻查询方法及系统

Country Status (1)

Country Link
CN (1) CN102999594B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809175B (zh) * 2015-04-13 2018-02-27 上海达梦数据库有限公司 特征库的生成方法和装置
CN109741362B (zh) * 2018-12-29 2019-09-03 牡丹江师范学院 基于Voronoi的建模方法及在大数据安全上的应用
CN110276204B (zh) * 2019-05-22 2022-05-13 湖北工业大学 一种隐私保护下的球员配置方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101464910A (zh) * 2009-01-12 2009-06-24 浙江大学 基于数据相似的平衡聚类压缩方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070192316A1 (en) * 2006-02-15 2007-08-16 Matsushita Electric Industrial Co., Ltd. High performance vector search engine based on dynamic multi-transformation coefficient traversal

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101464910A (zh) * 2009-01-12 2009-06-24 浙江大学 基于数据相似的平衡聚类压缩方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Optimized skyline queries on road networks using nearest neighbors;Maytham Safar, et al.;《Personal and Ubiquitous Computing》;20111231;第15卷(第8期);845-856 *
基于空间填充曲线网格划分的最近邻查询算法;徐洪波等;《计算机科学》;20100131;第37卷(第1期);184-188 *

Also Published As

Publication number Publication date
CN102999594A (zh) 2013-03-27

Similar Documents

Publication Publication Date Title
CN102945281B (zh) 基于最大数据块划分的安全最近邻查询的方法及系统
US11973889B2 (en) Searchable encrypted data sharing method and system based on blockchain and homomorphic encryption
CN102930051B (zh) 基于等长划分和随机填充的安全最近邻查询的方法及系统
Li et al. Enabling fine-grained multi-keyword search supporting classified sub-dictionaries over encrypted cloud data
Orencik et al. A practical and secure multi-keyword search method over encrypted cloud data
Liu et al. Toward highly secure yet efficient KNN classification scheme on outsourced cloud data
JP6180177B2 (ja) プライバシーを保護することができる暗号化データの問い合わせ方法及びシステム
Andola et al. Searchable encryption on the cloud: a survey
Liu et al. Accurate range query with privacy preservation for outsourced location-based service in IOT
CN104967693A (zh) 面向云存储的基于全同态密码技术的文档相似度计算方法
Cui et al. Secure range query over encrypted data in outsourced environments
Tong et al. Privacy-preserving ranked spatial keyword query in mobile cloud-assisted fog computing
CN107885705A (zh) 一种高效可扩展的安全的文档相似性计算方法和装置
CN102999594B (zh) 基于最大划分和随机数据块的安全最近邻查询方法及系统
CN102882933B (zh) 一种加密云存储系统
CN102968475B (zh) 基于最小化冗余数据划分的安全最近邻查询的方法及系统
Wang et al. Forward/backward and content private DSSE for spatial keyword queries
Cui et al. Secure boolean spatial keyword query with lightweight access control in cloud environments
Meng et al. Verifiable spatial range query over encrypted cloud data in VANET
Wang et al. QuickN: Practical and secure nearest neighbor search on encrypted large-scale data
CN102968477B (zh) 基于最小冗余划分和随机数的安全最近邻查询方法及系统
CN102945282B (zh) 基于等长数据划分的安全最近邻查询的方法及系统
Talha et al. Enhancing confidentiality and privacy of outsourced spatial data
Yang et al. Trust enhancement over range search for encrypted data
Modak et al. Privacy preserving distributed association rule hiding using concept hierarchy

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150819

Termination date: 20181116