CN102930051B - 基于等长划分和随机填充的安全最近邻查询的方法及系统 - Google Patents

基于等长划分和随机填充的安全最近邻查询的方法及系统 Download PDF

Info

Publication number
CN102930051B
CN102930051B CN201210465661.2A CN201210465661A CN102930051B CN 102930051 B CN102930051 B CN 102930051B CN 201210465661 A CN201210465661 A CN 201210465661A CN 102930051 B CN102930051 B CN 102930051B
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
CN201210465661.2A
Other languages
English (en)
Other versions
CN102930051A (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 CN201210465661.2A priority Critical patent/CN102930051B/zh
Publication of CN102930051A publication Critical patent/CN102930051A/zh
Application granted granted Critical
Publication of CN102930051B publication Critical patent/CN102930051B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

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

Description

基于等长划分和随机填充的安全最近邻查询的方法及系统
技术领域
本发明涉及安全查询处理领域,一种基于等长划分和随机填充的安全最近邻查询的方法及系统。
背景技术
安全查询处理领域的现有研究涉及加密数据库上的基本SQL查询(参见文献3:H.Hacigumus,B.R.Iyer,C.Li,andS.Mehrotra.ExecutingSQLoverencrypteddatainthedatabaseserviceprovidermodel.InSIGMOD,2002)、聚合查询(参见文献4:H.Hacigumus,B.R.Iyer,andS.Mehrotra.executionofaggregationqueriesoverencryptedrelationaldatabases.InDASFAA,pages125–136,2004和文献5:E.MykletunandG.Tsudik.Aggregationqueriesinthedatabase-as-a-servicemodel.InDBSec,2006)和范围查询(参见文献6:B.Hore,S.Mehrotra,M.Canim,andM.Kantarcioglu.Securemultidimensionalrangequeriesoveroutsourceddata.VLDBJ.ToAppear.和文献7:E.Shi,J.Bethencourt,H.T.-H.Chan,D.X.Song,andA.Perrig.Multi-dimensionalrangequeryoverencrypteddata.InIEEESymposiumonSecurityandPrivacy,pages350-364,2007)。正如诸多现有研究(参见文献1:H.Hu,J.Xu,C.Ren,andB.Choi.Processingprivatequeriesoveruntrusteddatacloudthroughprivacyhomomorphism.InICDE,pages601612,2011和文献2:W.K.Wong,D.W.-L.Cheung,B.Kao,andN.Mamoulis.Secureknncomputationonencrypteddatabases.InSIGMOD,pages139–152,2009和文献6和文献7)所证明的,为满足一定的安全性要求和获得更高的效率,较复杂的查询类型往往需要一些特殊处理。特别的,针对SNN问题现在已有不少前人所做的研究工作(参见文献1和文献2),然而他们所提出的解决方案最后往往被证明是不安全的,可以被轻而易举地攻击成功。
Hacigumus等人首先提出了“外包数据库”(outsourceddatabase,ODB)模型(参见文献8:H.Hacigumus,B.R.Iyer,andS.Mehrotra.Providingdatabaseasaservice.InICDE,2002),在这个模型里,数据拥有者(dataowner)将“数据管理”及“查询应答”两项服务外包给不可靠的服务提供商(serviceprovider)。关于ODB的安全性研究旨在通过加密及在加密数据上进行查询处理来确保数据安全。例如,使用一种保序加密法(order-preservingencryptionscheme,OPES,参见文献9:R.Agrawal,J.Kiernan,R.Srikant,andY.Xu.Orderpreservingencryptionfornumericdata.InSIGMOD,2002),对一序数域(ordinaldomain)应用函数E,使得对任一对满足x<y的值x,y,都有E(x)<E(y)。另外,Hacigumus等人还提出了一种加乘同态(additiveandmultiplicativehomomorphic)加密函数E(E满足E(x)+E(y)=E(x+y),E(x)E(y)=E(xy))来支持加密数据上的聚合查询(参见文献4:H.Hacigumus,B.R.Iyer,andS.executionofaggregationqueriesoverencryptedrelationaldatabases.InDASFAA,pages125-136,2004)。然而,正如Mykletun等人所证明的那样,实际上同态法连最低级别的安全都不能保证(参见文献5)。概而言之,之前的ODB模型都仅仅考虑了简单的数值域和SQL操作,而没有考虑以kNN(knearestneighbor,k最近邻)查询等更复杂的操作为研究对象;另外,ODB模型研究总是假设单一类型的攻击,而没有综合考虑不同层次的攻击,不具有普适性。
除了各种加密技术,还有其他的数据保护方法来保证查询计算的安全性。ODB模型上的SQL语句执行就采用了“粗索引”(coarseindex,亦称“基于桶的索引”,bucket-basedindex)技术(参见文献3)。元组通过诸如RSA的普通加密法加密;将各数据库属性域分割,分割后得到的每一部分(即一个“划分”,partition)通过哈希函数赋以一ID。数据主将加密元组连同其所在分割的ID送至服务器,充当“粗索引”。查询变为获取包含目标元组的分割。服务器则返回一个查询结果的超集。继而,拥有密钥的用户便可以将结果解密,再通过一定的后处理筛选掉其中无用信息。高级查询中无用信息的数量可能十分巨大,对用户而言这会成为十分沉重的负担。例如,kNN计算中所需的数据点与查询点间距便难以通过分割的ID轻易获得。因此,直接应用这种“粗索引”技术会导致服务器将整个数据库返回给用户,让用户独自负担查询结果的计算。显然,当用户处理能力有限(如用户使用的是移动设备)这种方法很不适用。
另一种安全查询处理方法利用了特殊的硬件——安全的协处理器(参见文献10:E.MykletunandG.Tsudik.Incorporatingasecurecoprocessorinthedatabase-as-a-servicemodel.InIWIA,2005和文献11:R.Agrawal,D.Asonov,M.Kantarcioglu,andY.Li.Sovereignjoins.InICDE,2006)。它是一种安全的计算单元,其计算过程及储存的数据对查询中的任一方都是透明的。协处理器的使用很简单,只需要安装上加密和解密密钥,并直接部署应用逻辑即可。然而另一方面,它的速度不如普通处理器,因此不适用于需要大量计算的复杂应用。除此之外,协处理器必须靠用户来维护。例如,如果处理器意外停机,用户必须重新对其进行部署。这显然与云计算中用户本无需亲自维护原始数据是矛盾的。
另外,Sweeney,Li,Machanavajjhala等人提出了各种各样的数据匿名模型,如k匿名(k-anonymity),用于数据发布时的隐私保护(参见文献12:L.Sweeney.k-anonymity:Amodelforprotectingprivacy.InIJUFKS,2002)。他们的基本思想都是使数据库中各元组与另外至少k-1个元组的“准”标示符(quasi-identifiers)是不可辨(indistinguishable)的。“k匿名”可以通过“准”标示符一般化(generalizing)、元组抑制(suppressingtuples)、元组扰乱(perturbingtuples)等方法实现。但是,“k匿名”模型在查询过程中会有信息丢失,并且模型本身还有特定的缺陷。如Machanavajjhala等人所指出的,匿名化的不可辨的“准”标示符组也含有不少敏感值,因此攻击者通过有限的背景知识就可以引起信息泄露(参见文献13:A.Machanavajjhala,J.Gehrke,D.Kifer,andM.Venkitasubramaniam.l-diversity:Privacybeyondk-anonymity.InICDE,2006)。另外,一般化后的值域也会方便潜在攻击者对原始数据或一些宝贵的统计信息做出准确估计。特别需要注意的是,数据发布时的隐私保护与ODB模型中的数据安全两者的目标是不同的:前者力图避免发布的信息暴露特定个体,后者注重针对非授权用户保护信息。
为更好地解决安全查询处理问题,W.K.Wong等重点研究了SCONEDB模型中的kNN查询(参见文献2)。Oliveira等曾提出“等距转换”(distance-preservingtransformation,DPT)作为其加密方法(参见文献14:S.R.M.OliveiraandO.R.Zaiane.Privacypreservingclusteringbydatatransformation.InSBBD,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模型中,服务器拥有一个元组集(也即“兴趣点”pointofinterest,POI)。用户向服务器提交查询(范围查询或kNN查询),获取想要的兴趣点。其中主要的安全目标即为保护查询点的位置信息,另外一些模型也会考虑POI的隐私问题。“k匿名”模型是常被使用,以将查询点的位置转换为一个空间范围,如此这一范围中至少包含了其他k-1的点,服务器则难以在其中确定出用户(查询点)的位置。尽管这一模型可以用来解决我们的问题,但它也有一定缺陷。首先,匿名后的数据会近似地暴露出原始数据值;其次,在特定模型中(参见文献15:G.Ghinita,P.Kalnis,A.Khoshgozaran,C.Shahabi,andK.L.Tan.Privatequeriesinlocationbasedservices:Anonymizersarenotnecessary.InSIGMOD,2008),数据库被假定为服务器所有,因此服务器能看到原始数据;再次,在一些系统(诸如“粗索引”系统)中,服务器通常返回查询结果的超集以供用户进行后处理,这增添了用户负担,对于一些“轻量级”(light-weight)用户端,这甚至是不可承受的。Khoshgozaran等人提出了一个可以为kNN查询进行加密的LBS模型(参见文献16:A.KhoshgozaranandC.Shahabi.Blindevaluationofnearestneighborqueriesusingspacetransformationtopreservelocationprivacy.InSSTD,2007)。其主要思想是使用Hilbert曲线来对数据点和查询进行“加密”。各点的Hilbert值被送往服务器。然后在Hilbert转换后所得的空间中计算kNN得出近似结果。这种方法除了返回的是近似结果,还存在DPT类似的问题,容易被攻击成功。
发明内容
本发明的目的在于提供一种基于等长划分和随机填充的安全最近邻查询的方法及系统,能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。
为解决上述问题,本发明提供一种基于等长划分和随机填充的安全最近邻查询的方法,包括:
数据主生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数;
数据用户或数据主给定参数K,数据主根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的真实数据点部分重复或完全不重复,k大于等于1且小于等于N;
数据主在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;
数据主获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;
数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;
数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;
所述数据用户确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;
所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;
所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;
所述数据用户确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器;
所述服务器根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分
进一步的,在上述方法中,所述外包数据库为一至三维外包数据库。
进一步的,在上述方法中,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线。
进一步的,在上述方法中,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子。
进一步的,在上述方法中,数据主根据所述参数k将所述voronoi图分割成为k个划分的步骤中,将所述voronoi图分割成为k个等大小的正方形的格子,其中,k为一平方数。
根据本发明的另一面,提供一种基于等长划分和随机填充的安全最近邻查询的系统,包括:
数据主,用于给定所述参数k,生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数;根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的真实数据点部分重复或完全不重复,k大于等于1且小于等于N;在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;
数据用户,用于给定所述参数k,确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器;
服务器,用于根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分。
进一步的,在上述系统中,所述外包数据库为一至三维外包数据库。
进一步的,在上述系统中,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线。
进一步的,在上述系统中,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子。
进一步的,在上述系统中,所述数据主将所述voronoi图分割成为k个等大小的正方形的格子,其中,k为一平方数。
与现有技术相比,本发明通过数据主生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数;数据用户或数据主给定参数K,数据主根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的真实数据点部分重复或完全不重复,k大于等于1且小于等于N;数据主在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;数据主获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;所述数据用户确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;所述数据用户确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器;所述服务器根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分,能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。
附图说明
图1是本发明一实施例的基于等长划分和随机填充的安全最近邻查询的方法的流程图;
图2是本发明一实施例的基于等长划分和随机填充的安全最近邻查询的方法的划分示意图;
图3是本发明一实施例的一维空间下划分示意图;
图4是本发明一实施例的MinCs方法的划分示意图;
图5a是本发明一实施例的MinCs划分方法下k对划分时间代价的影响图;
图5b是本发明一实施例的MinCs划分方法下|D|对划分时间代价的影响图;
图6a是本发明一实施例的划分大小的平均值、最大值和最小值随参数k变化情况图;
图6b是本发明一实施例的划分大小的平均值、最大值和最小值随|D|变化情况图
图7a是本发明一实施例的MinCs划分方法的总运行时间随参数k变化情况图;
图7b是本发明一实施例的MinCs划分方法的总运行时间随|D|变化情况图;
图8a是本发明一实施例的MinCs划分方法下|E(D)|随k变化情况图;
图8b是本发明一实施例的MinCs划分方法下|E(D)|随|D|变化情况图;
图9a是本发明一实施例的MinCs划分方法下查询通信代价随k变化情况图;
图9b是本发明一实施例的MinCs划分方法下查询通信代价随|D|变化情况图;
图10a是本发明一实施例的MinCs划分方法下查询时间随|D|变化情况图;
图10b是本发明一实施例的MinCs划分方法下查询时间随k变化情况图;
图11是本发明一实施例的基于等长划分和随机填充的安全最近邻查询的系统的功能模块示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
随着“云计算”概念及其应用的日益普及,针对“云”上的加密数据集E(D)的“安全查询问题”得到了越来越多的关注。本发明即对其中的“安全最近邻”(securenearestneighbor,SNN)问题进行了较为深入的研究;该问题涉及数据主(dataowner)、数据用户(client)和服务器(server)三方,数据用户会向服务器发送查询密文(encryptedquery,E(q))来获取查询点在E(D)中的最近数据点(即“最近邻”)的密文,但要保证不能让服务器获知数据和查询的具体内容。具体说,SNN问题涉及数据主、数据用户和服务器三方及所述三方其相应的动作:
(1)数据主:拥有由d维欧式点或对象构成的外包数据库D,并会将D外包给不完全可靠的服务器。
(2)数据用户:需要对所述外包数据库D进行查询。
(3)服务器:不完全可靠,会因为自身原因或第三方原因而窥探来自数据主的数据内容和来自数据用户的查询内容。
为了让数据用户能在外包数据库D上进行最近邻(NN,nearestneighbor),查询,却不会让服务器获知数据主的外包数据库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处理方法,即本发明提供的一种基于等长划分和随机填充的安全最近邻查询的方法(securevoronoidiagram,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用一个voronoicell表示。
本发明需要针对以下四个问题:
问题一:边界P(D)用voronoicell来描述空间代价太大。例如,当所述外包数据库D为二维即d=2时,每个voronoicell是一个任意形状的凸多边形,并且这些多边形平均会有6个顶点。因此,如此表示边界P(D)所占的存储空间将比存储外包数据库D本身的大得多。
问题二:如何给边界P(D)建立索引以使数据用户能够迅速地确定所需要的原始索引值i。这一问题在边界P(D)中元素具有不规则边界时会显得尤为突出,例如:当Bj∈P(D)为一voronoicell时(此时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的voronoicell的集合。设pi的voronoicell为vci(pi为vci所包含),那么给定任意查询点q,数据用户需查找包含q的voronoicell;假定则数据用户需向服务器请求获取E(Gi);这里显然有nn(q,D)=pi以及Gi={pi},而算法返回nn(q,E-1(E(Gi)))=nn(q,{pi})=pi,可见为正确结果。可以考虑把上述思想推广应用到k<<N的一般情形。
步骤S21,数据主在所述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,数据用户能够高效地确定出边界P(D)的原始索引值i满足nn(q,D)∈Gi,然后根据哈希函数划分对应的边界的对应的索引向服务器提出请求获取到E(Gi),这个过程完全可以在服务器不知道具体原始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可以根据实际查询需要不断重复,直至没的查询点输入。通过步骤S21、步骤S9和步骤S10,可以很容易地使k对服务器透明。
较佳的,所述外包数据库为一至三维外包数据库。
优选的,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线。具体的,为了解决问题一和问题二,规定G(D)中的各个划分必须具有规则形状。如图3所示,在一维情形下存在一个“最优方案”,它可以产生大小平衡且互不相交的划分,这是因为一维数据点的voronoi图都是由连续而不相交的区间构成,为生成“完全平衡”(即大小相等)的划分,只需在D中找到其1/k,...,(k-1)/k分位点,然后用它们产生G(D),这些分位点所对应voronoicell的边界以及±∞确定了P(D)={B1,...,Bk}。
上述查找(k-1)个分位点并通过它们对D的voronoi图进行划分的过的程可通过对D的一次线性扫描完成。因此,该算法在外存模型中的IO(输入/输出)代价为O(NlogN)。由于每个划分大小均为|D|/k=N/k,因此Gi大小均为|E(N/k)|,故而E(D)大小为k|E(N/k);并且显然P(D)的大小是O(k)的。
优选的,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子。具体的,为了解决上述问题一和问题二,规定G(D)中的各个划分必须具有规则形状,具体来说就是,每个划分必须被限定在一个由与X坐标轴和Y坐标轴(X轴或Y轴)平行的边围成的“格子”(box)中。然而,这意味着划分Gi的边界Bi可能包含或贯穿多个voronoicell,如图2所示,其中虚线为划分的边界B1和B2,代表不同数据点p1~p16的凸多边形为voronoicell。
为了解决上述问题二,设D中点pi对应的voronoicell为vci,为保证数据用户能够为P(D)编制索引以及轻松高效地确定出满足nn(q,D)∈Gi的索引值i,可以确定如下划分原则:设Gi的几何边界由Bi表示,那么
原则一:Bi是一个由与X坐标轴和Y坐标轴平行的边围成的“格子”;
原则二:即G(D)中不同的划分其对应的边界是互不相交的;
原则三:如果Bi完全包含或相交于一个voronoicell集Vi,那么Gi={pj|vcj∈Vi},但不同的Gi可能会含重复的数据点。如在图2中,深色的voronoicell里面的数据点会被同时加入到划分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完全包含或贯穿的voronoicell。依照上述划分原则,这一voronoicell必属于Vj,而Vj确定了Gj的元素。假设q包含在vci中(则有nn(q,D)=pi),由上可知,vci∈Vj,继而pi∈Gj
由上述引理1可知,步骤S6中,对于任意查询点q,数据用户端的工作就是找到满足q∈Bj的Bj∈P(D),即在P(D)中找到一个包含q的格子,这实际上是一个“点位置查询”(pointlocationquery)的过程。由于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)。
进一步的,本实施例中提供一种MinCs划分方法,遵循了上述提出的划分原则一至三,由于加入了“随机填补操作”,因此很显然,本实施例的通信代价以及服务器端的存储代价是由最大划分与各划分的大小之差,即|Gx|-|Gi|,或更准确地,|E(Gx)|-|E(Gi)|)决定的,也就是说,为了降低通信代价以及服务器端的存储代价,在设计划分方法时还应尽可能地遵循原则四:尽可能生成大小“平衡”(相等或接近)的划分。
MinCs方法为数据主根据所述参数K将所述voronoi图分割成为K个划分的步骤中,将所述voronoi图分割成为K个等大小的正方形的格子,其中,k为一平方数。
MinCs方法是最简单的一种划分方法,它将D及其voronoi图划分为网格(grid)状,这里“网格”中的每个格子的几何大小是相同的。这样的划分决定了P(D)中元素为所有边都与X坐标轴和Y坐标轴平行的正方形格子。一旦给定P(D),便可按照图2所示的思路产生G(D)。如图4所示,其中k=4;请注意这里k必须为一平方数。在MinCs方法中,只需一个数值——小正方形的边长l——便可表示出P(D)(假设D边界值为已知参数)。
为简化讨论,可按由左至右、由下至上的顺序用一对参数值{x,y}来表示一个格子。例如,在图4中,最左下端的格子标为C1,1,最右上端的格子标为C2,2。根据每个格子Ci,j与每个划分的几何边界Bx的对应关系,此例中我们可得 C i , j = B ( i - 1 ) &CenterDot; k + j .
易证得:只需知道l和k(k可由l和D边界值算得)和q点坐标,数据用户便可以以O(1)的时间代价找出q所在的格子。因此,在所有的划分方法中,这种方法在数据用户端的存储代价最低,因为P(D)只需一个数值l便可表示,故而称之为“MinCs(MinimumClientStorage)方法”。
更详细的,可用C++语言对上述MinCs划分方法进行实现。本实现的实验中,使用Qhull库对数据集D进行了voronoi划分;使用最新的Crypto++库进行了加密。随后实验的进行是在一台配置为IntelXeon3.07GHzCPU、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所示分别为MinCs方法下k和|D|对运行时间的影响。在图5a中,很明显MinCs的时间代价几乎是一个与k无关的常数,这是因为MinCs的划分过程简繁程度本身与k大小无关。MinCs实际上是最简单直接的一种划分方法;特别值得一提的,它将1,000,000个点分割为1,225个划分只需22秒。
图5b显示的是数据大小|D|变化(从250,000到2,000,000)对划分时间代价的影响。显然,MinCs的处理时间同N=|D|呈线性关系。
下面来看MinCs方法下产生的划分G(D)={G1,...,Gk}的大小(进行“随机填补操作”前)。由于“随机填补操作”会通过填补随机字节将所有划分的大小增至与最大划分一样大,因此以下两个数值对于评估本实施例的划分方法的性能至关重要:最大划分的大小|Gx|和(|Gx|-|Gi|)的方差(i∈[1,k])。|Gx|决定了服务器端的存储代价和每次查询的通信代价;(|Gx|-|Gi|)的方差决定了填补操作本身的代价。为了将这些数值在一个图中简单直观地呈现,图6a、6b分别显示了划分大小的平均值(avgpartitionsize)、最大值|Gx|=maxi∈[1,k]|Gi|和最小值|Gy|=mini∈[1,k]|Gi|随参数k和|D|的变化情况。
如图6a、6b所示,MinCs划分方法中,其划分大小的平均值和最大值随k增加都是递减的。
下面通过图7a、7b来看在预处理阶段MinCs方法的总运行时间(totalrunningtime)。所谓总运行时间,具体含划分和加密两个步骤的时间(voronoi划分时间和“随机填补操作”时间也包含在内,不过它们相对划分和加密时间来说要小一些)。在图7a、7b中,还加入了所述Send-D方法的预处理时间以作参照,Send-D方法的预处理时间就是将D看做一个整体进行加密的时间。
另外,从图7a、7b中可见,MinCs方法预处理阶段的总时间随k或|D|增加都是线性增长的。
再来看最终产生的E(D)的大小,这是影响服务器端存储代价和数据主至服务器通信代价的关键因素。进行过随机填补操作后,每个划分都具有了与最大划分相同的大小,因此,|E(D)|=k|E(Gx)|=k|E(Gi)|(i∈[1,k])。
图8a、8b分别显示了MinCs方法下|E(D)|(sizeofE(D))随k或|D|变化的情况。类似于针对图7a、7b的讨论,也把D的大小和将D作为一个整体进行加密得到的E(D)的大小(即Send-D的代价)加入图8a、8b中以作参照。显然,MinCs方法中E(D)的大小随k或|D|增加都是线性增长的。Send-D对应的E(D)大小也是随|D|线性增长的,但却与k无关。自然,相对直接传送外包数据库D的明文本身,MinCs方法会引入数据主至服务器的通信代价和服务器端的存储代价。
数据用户端的存储代价是取决于P(D)的大小的,并且这一代价在MinCs方法中是O(1)。
最后需声明的是,在实验中观察到使用哪种数据集(CA数据集或TX数据集)对实验结果几乎没有什么明显的差别,因此为简便起见,这里没有讨论TX数据集上的实验结果。
2.查询处理代价
首先,对任意查询点q,采用本实施例的方法,服务器至数据用户端的通信代价仅仅取决于|E(Gj)|。然而,正如上述对图8a、8b结果的分析,由于进行了随机填补操作,因此每个划分有了相同的大小,并且|E(Gi)|=|E(D)|/k(i∈[1,k])。相反,在Send-D方法中,服务器至数据用户端的通信代价就是对数据集D整体加密的大小,即|E(Dasonemessage)|。因此,虽然|E(Dasonemessage)|比MinCs方法生成的|E(D)|小得多(如图8a、8b所示),如图9a、9b所示,本实施例的方法中服务器至数据用户端的查询通信代价(querycommunication)仍然比Send-D的小得多。
下面,再来看数据用户端的查询处理代价。每次实验,都随机进行了100次查询,然后得到如图10a、10b所示的MinCs方法的平均处理时间。图10a显示MinCs方法的查询时间(querytime)是随k增大而递减的,这显然是因为k增大导致了划分变小。相比Send-D,MinCs方法的性能要好得多。图10b所示,而当|D|增加时,MinCs方法的查询时间都随之线性增长。
本实施例的算法效率包括预处理阶段的时空代价和查询阶段的查询代价,所述预处理阶段的时空代价包括时间代价和存储代价,查询阶段的查询代价包括时间代价和通信代价:
1.SVD算法进行预处理时的时间代价主要体现在以下三阶段:
(1)得到D的voronoi图;
(2)对D进行划分;
(3)生成E(D)。
针对一维和二维的外包数据库,阶段(1)的代价是O(NlogN)的。
而在第(2)阶段(对D进行划分),一维情形下,很显然可以在对数据进行排序后通过一次遍历得到所需的分位点,因此阶段2的代价也是O(NlogN)的;二维情形下,该阶段的代价取决于我们所选用的划分方法。MinCs方法的代价为O(N)。
阶段(3)的代价同加密代价呈线性关系。假设通过加密算法E对信息m进行加密的代价为e(m);由于“随机填补操作”将每个划分的大小都增至最大,因此可得生成E(D)的时间复杂度是O(ke(|Gx|b))的,其中 G x = arg ma x 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)|由所选用的划分方法所决定。MinCs方法的|P(D)|是O(1)。
3.查询阶段的查询代价
查询阶段的时间代价主要体现在两端:数据用户端和服务器端。其中,数据用户需通过P(D)的索引查找包含查询点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。
通过步骤S21、步骤S9和步骤S10,可以很容易地使k对服务器透明。
综上,本实施例能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。
如图11所示,本发明还提供另一种基于等长划分和随机填充的安全最近邻查询的系统,包括数据主1、数据用户2和服务器3。
数据主1,用于给定所述参数k,生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数;根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的真实数据点部分重复或完全不重复,k大于等于1且小于等于N;在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;
数据用户2,用于给定所述参数k,确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器;
服务器3,用于根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分。
较佳的,所述外包数据库为一至三维外包数据库。
优选的,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线。
优选的,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子。其中,所述数据主将所述voronoi图分割成为k个等大小的正方形的格子,其中,k为一平方数。
综上所述,本发明通过数据主生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数;数据用户或数据主给定参数K,数据主根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的真实数据点部分重复或完全不重复,k大于等于1且小于等于N;数据主在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;数据主获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;所述数据用户确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;所述数据用户确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器;所述服务器根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分,能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

Claims (8)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210465661.2A CN102930051B (zh) 2012-11-16 2012-11-16 基于等长划分和随机填充的安全最近邻查询的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210465661.2A CN102930051B (zh) 2012-11-16 2012-11-16 基于等长划分和随机填充的安全最近邻查询的方法及系统

Publications (2)

Publication Number Publication Date
CN102930051A CN102930051A (zh) 2013-02-13
CN102930051B true CN102930051B (zh) 2015-12-23

Family

ID=47644848

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210465661.2A Expired - Fee Related CN102930051B (zh) 2012-11-16 2012-11-16 基于等长划分和随机填充的安全最近邻查询的方法及系统

Country Status (1)

Country Link
CN (1) CN102930051B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107169372B (zh) * 2017-05-10 2020-04-14 东南大学 基于Voronoi多边形与Hilbert曲线编码的隐私保护查询方法
CN108337085B (zh) * 2018-01-03 2020-11-13 西安电子科技大学 一种支持动态更新的近似邻检索构建方法
CN109344216A (zh) * 2018-09-17 2019-02-15 南京中物联科技有限公司 一种面向大数据的k近邻连接查询方法
CN109194666B (zh) * 2018-09-18 2021-06-01 东北大学 一种基于LBS的安全kNN查询方法
CN113076319B (zh) * 2021-04-13 2022-05-06 河北大学 基于离群值检测技术和位图索引的动态数据库填充方法
CN117353926B (zh) * 2023-12-01 2024-02-27 苏州元脑智能科技有限公司 一种基于芯片的sm2算法密码处理方法、装置及设备
CN117349898B (zh) * 2023-12-05 2024-03-08 中国电子科技集团公司第十研究所 一种访问模式隐藏的密文k近邻查询方法与系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
《Secure kNN Computation on Encrypted Databases》;W. K. Wong 等;《SIGMOD’09》;20090629;第1-14页 *
《基于空间填充曲线网格划分的最近邻查询算法》;徐红波,郝忠孝;《计算机科学》;20100131;第37卷(第1期);第184-188页 *
Bin Yao, Feifei Li, Piyush Kumar.《Reverse Furthest Neighbors in Spatial Databases》.《1. ww2.cs.fsu.edu/~yao/papers/RFN-icde2009.pdf》.2009,第1-12页. *

Also Published As

Publication number Publication date
CN102930051A (zh) 2013-02-13

Similar Documents

Publication Publication Date Title
CN102930051B (zh) 基于等长划分和随机填充的安全最近邻查询的方法及系统
US11973889B2 (en) Searchable encrypted data sharing method and system based on blockchain and homomorphic encryption
CN102945281B (zh) 基于最大数据块划分的安全最近邻查询的方法及系统
Shen et al. Secure phrase search for intelligent processing of encrypted data in cloud-based IoT
Li et al. Enabling fine-grained multi-keyword search supporting classified sub-dictionaries over encrypted cloud data
Wang et al. Secure and efficient access to outsourced data
JP6180177B2 (ja) プライバシーを保護することができる暗号化データの問い合わせ方法及びシステム
Yao et al. Privacy-preserving search over encrypted personal health record in multi-source cloud
CN105471826A (zh) 密文数据查询方法、装置和密文查询服务器
Liu et al. Accurate range query with privacy preservation for outsourced location-based service in IOT
CN104967693A (zh) 面向云存储的基于全同态密码技术的文档相似度计算方法
Sun et al. Research on logistics information blockchain data query algorithm based on searchable encryption
Li et al. Traceable and controllable encrypted cloud image search in multi-user settings
CN106453393B (zh) 参与式感知中可验证的隐私保护数据类型匹配方法
Zhang et al. Secure hitch in location based social networks
CN114598472A (zh) 基于区块链的条件隐藏可搜索代理重加密方法及存储介质
Cui et al. Secure range query over encrypted data in outsourced environments
Tang et al. A proxy re-encryption with keyword search scheme in cloud computing
Tong et al. Privacy-preserving ranked spatial keyword query in mobile cloud-assisted fog computing
CN101859306A (zh) 盲化索引表产生方法和设备、联合关键字搜索方法和设备
Ma et al. CP-ABE-based secure and verifiable data deletion in cloud
CN102968475B (zh) 基于最小化冗余数据划分的安全最近邻查询的方法及系统
CN102999594B (zh) 基于最大划分和随机数据块的安全最近邻查询方法及系统
Wang et al. Forward/backward and content private dsse for spatial keyword queries
CN102945282B (zh) 基于等长数据划分的安全最近邻查询的方法及系统

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

Granted publication date: 20151223

Termination date: 20181116

CF01 Termination of patent right due to non-payment of annual fee