首页 / 专利库 / 疗法 / 安全边界 / 基于最小冗余划分和随机数的安全最近邻查询方法及系统

基于最小冗余划分和随机数的安全最近邻查询方法及系统

阅读:1033发布:2020-06-26

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

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

说明书全文

基于最小冗余划分和随机数的安全最近邻查询方法及系统

技术领域

[0001] 本发明涉及安全查询处理领域,一种基于最小冗余划分和随机数的安全最近邻查询方法及系统。

背景技术

[0002] 安全查询处理领域的现有研究涉及加密数据库上的基本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.Secure knn computation on encrypted databases.In SIGMOD,pages 139–152,2009和文献6和文献7)所证明的,为满足一定的安全性要求和获得更高的效率,较复杂的查询类型往往需要一些特殊处理。特别的,针对SNN问题现在已有不少前人所做的研究工作(参见文献1和文献2),然而他们所提出的解决方案最后往往被证明是不安全的,可以被轻而易举地攻击成功。
[0003] 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 preserving encryption 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.Mehrotra.Efficient execution of aggregation queries over encrypted relational databases.In DASFAA,pages125-136,2004)。然而,正如Mykletun等人所证明的那样,实际上同态法连最低级别的安全都不能保证(参见文献5)。概而言之,之前的ODB模型都仅仅考虑了简单的数值域和SQL操作,而没有考虑以kNN(knearest neighbor,k最近邻)查询等更复杂的操作为研究对象;另外,ODB模型研究总是假设单一类型的攻击, 而没有综合考虑不同层次的攻击,不具有普适性。
[0004] 除了各种加密技术,还有其他的数据保护方法来保证查询计算的安全性。ODB模型上的SQL语句执行就采用了“粗索引”(coarse index,亦称“基于桶的索引”,bucket-based index)技术(参见文献3)。元组通过诸如RSA的普通加密法加密;将各数据库属性域分割,分割后得到的每一部分(即一个“划分”,partition)通过哈希函数赋以一ID。数据主将加密元组连同其所在分割的ID送至服务器,充当“粗索引”。查询变为获取包含目标元组的分割。服务器则返回一个查询结果的超集。继而,拥有密钥的用户便可以将结果解密,再通过一定的后处理筛选掉其中无用信息。高级查询中无用信息的数量可能十分巨大,对用户而言这会成为十分沉重的负担。例如,kNN计算中所需的数据点与查询点间距便难以通过分割的ID轻易获得。因此,直接应用这种“粗索引”技术会导致服务器将整个数据库返回给用户,让用户独自负担查询结果的计算。显然,当用户处理能有限(如用户使用的是移动设备)这种方法很不适用。
[0005] 另一种安全查询处理方法利用了特殊的硬件——安全的协处理器(参见文 献 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)。它是一种安全的计算单元,其计算过程及储存的数据对查询中的任一方都是透明的。协处理器的使用很简单,只需要安装上加密和解密密钥,并直接部署应用逻辑即可。然而另一方面,它的速度不如普通处理器,因此不适用于需要大量计算的复杂应用。除此之外,协处理器必须靠用户来维护。例如,如果处理器意外停机,用户必须重新对其进行部署。这显然与计算中用户本无需亲自维护原始数据是矛盾的。
[0006] 另外,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模型中的数据安全两者的目标是不同的:前者力图避免发布的信息暴露特定个体,后者注重针对非授权用户保护信息。 [0007] 为更好地解决安全查询处理问题,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)。
[0008] 不可靠平台上的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类似的问题,容易被攻击成功。

发明内容

[0009] 本发明的目的在于提供一种基于最小冗余划分和随机数的安全最近邻查询方法及系统,能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。 [0010] 为解决上述问题,本发明提供一种基于最小冗余划分和随机数的安全最近邻查询方法,包括:
[0011] 数据主生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;
[0012] 数据用户或数据主给定参数K,数据主根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,每个划分互不相交,不同划分包含的数据点部分重复或完全不重复,k大于等于1且小于等于N,其中,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由 与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y坐标轴的直线上的相邻的划分,或用平行X坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行X坐标轴的直线上的相邻的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将voronoi图中的划分的个数减至所述参数k;
[0013] 数据主在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;
[0014] 数据主获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;
[0015] 数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储; [0016] 数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;
[0017] 所述数据用户确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划 分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;
[0018] 所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;
[0019] 所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;
[0020] 所述数据用户确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器; [0021] 所述服务器根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分。
[0022] 根据本发明的另一面,提供一种基于最小冗余划分和随机数的安全最近邻查询系统,包括:
[0023] 数据主,用于给定所述参数k,生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;根据参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的数据点部分重复或完全不重复,k大于等于1且小于等于N,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相 邻真实数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,所述数据主用平行于Y坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y坐标轴的直线上的相邻的划分,或用平行X坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行X坐标轴的直线上的相邻的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将voronoi图中的划分的个数减至所述参数k;在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;
[0024] 数据用户,用于给定所述参数k,确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的 划分的对应的边界的对应的索引发送给服务器;根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的数据点;确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器; [0025] 服务器,用于根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分。
[0026] 与现有技术相比,本发明通过数据主生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;数据用户或数据主给定参数K,数据主根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,每个划分互不相交,不同划分包含的数据点部分重复或完全不重复,k大于等于1且小于等于N,其中,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y坐标轴的直线上的相邻的划分,或用平行X坐标轴的直线不断分割当前的最大的划分 和与所述最大的划分在同一条平行X坐标轴的直线上的相邻的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将voronoi图中的划分的个数减至所述参数k;数据主在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;数据主获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;所述数据用户确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据 点;
所述数据用户确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器;所述服务器根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分,能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。
附图说明
[0027] 图1是本发明一实施例的基于最小冗余划分和随机数的安全最近邻查询方法的流程图
[0028] 图2是本发明一实施例的基于最小冗余划分和随机数的安全最近邻查询方法的划分示意图;
[0029] 图3是本发明一实施例的一维空间下划分示意图;
[0030] 图4是本发明一实施例的MinDp方法的划分示意图;
[0031] 图5a是本发明一实施例的MinDp划分方法下k对划分时间代价的影响图; [0032] 图5b是本发明一实施例的MinDp划分方法下|D|对划分时间代价的影响图; [0033] 图6a是本发明一实施例的划分大小的平均值、最大值和最小值随参数k变化情况图;
[0034] 图6b是本发明一实施例的划分大小的平均值、最大值和最小值随|D|变化情况图 [0035] 图7a是本发明一实施例的MinDp划分方法的总运行时间随参数k变化情况 图; [0036] 图7b是本发明一实施例的MinDp划分方法的总运行时间随|D|变化情况图; [0037] 图8a是本发明一实施例的MinDp划分方法下|E(D)|随k变化情况图;
[0038] 图8b是本发明一实施例的MinDp划分方法下|E(D)|随|D|变化情况图; [0039] 图9a是本发明一实施例的MinDp划分方法下查询通信代价随k变化情况图; [0040] 图9b是本发明一实施例的MinDp划分方法下查询通信代价随|D|变化情况图; [0041] 图10a是本发明一实施例的MinDp划分方法下查询时间随|D|变化情况图; [0042] 图10b是本发明一实施例的MinDp划分方法下查询时间随k变化情况图; [0043] 图11是本发明一实施例的基于最小冗余划分和随机数的安全最近邻查询系统的功能模示意图。

具体实施方式

[0044] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0045] 随着“云计算”概念及其应用的日益普及,针对“云”上的加密数据集E(D)的“安全查询问题”得到了越来越多的关注。本发明即对其中的“安全最近邻”(secure nearest neighbor,SNN)问题进行了较为深入的研究;该问题涉及数据主(data owner)、数据用户(client)和服务器(server)三方,数据用户会向服务器发送查询密文(encrypted query,E(q))来获取查询点在E(D)中的最近数据点(即“最近邻”)的密文,但要保证不能让服务器获知数据和查询的具体内容。 具体说,SNN问题涉及数据主、数据用户和服务器三方及所述三方其相应的动作:
[0046] (1)数据主:拥有由d维欧式点或对象构成的外包数据库D,并会将D外包给不完全可靠的服务器。
[0047] (2)数据用户:需要对所述外包数据库D进行查询。
[0048] (3)服务器:不完全可靠,会因为自身原因或第三方原因而窥探来自数据主的数据内容和来自数据用户的查询内容。
[0049] 为了让数据用户能在外包数据库D上进行最近邻(NN,nearest neighbor),查询,却不会让服务器获知数据主的外包数据库D中的数据、数据用户的真实查询及查询结果的具体信息,数据主须对外包数据库D应用某种加密算法E进行加密,可以用E(D)代表D的-1密文,用E 代表相应的解密算法。相似的,数据用户应将其查询点q(具体代表一个查询点)加密得到E(q)发送给服务器,这里需要力图保证SNN方法在安全性上同数据主使用的加密算法E是一样的,也就是说,所有E在SNN方法中被证明是安全(在选择明文攻击下是不可分辨的,或在选择密文攻击下是不可分辨的)的攻击模型。
[0050] 事实上可以证明,在只给定E(q)和E(D)的条件下,服务器不可能查找到精准的查询点最近邻。但若不要求服务器给出SNN查询结果的精准定位,而只需给出查询结果的一个“大致定位”呢?不妨设想一个非常简单直接的查询处理方法:数据主将外包数据库D看做一个整体进行加密得到E(D)后,传送给服务器;而服务器可以将整个E(D)作为查询结果-1 -1返回给数据用户;数据用户再用E 对E(D)进行解密(假定数据主与数据用户共享E )得到D,从而可以在本地计算出SNN查询的结果——可将这一“朴素”的方法称为“(直接)传送D”(Send-D 方法)算法。显然,这种算法具有与E相同的安全性,但却十分低效。于是在此基础上,如图1所示,进一步提出了更为高效的SNN处理方法,即本发明提供的一种基于最小冗余划分和随机数的安全最近邻查询方法(secure voronoidiagram,SVD),包括预处理阶段步骤S1~S5,查询阶段包括步骤S6~S8,步骤S6~S8可以根据实际需要不断重复其中,
[0051] 步骤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表示。
[0052] 本发明需要针对以下四个问题:
[0053] 问题一:边界P(D)用voronoi cell来描述空间代价太大。例如,当所述外包数据库D为二维即d=2时,每个voronoi cell是一个任意形状的凸多边形,并且这些多边形平均会有6个顶点。因此,如此表示边界P(D)所占的存储空间将比存储外包数据库D本身的大得多。
[0054] 问题二:如何给边界P(D)建立索引以使数据用户能够迅速地确定所需要的原始索引值i。这一问题在边界P(D)中元素具有不规则边界时会显得尤为突出,例如:当Bj∈P(D)为一voronoi cell时(此时Bj即是任意形状的的凸多边形)。
[0055] 问题三:保证|E(Gi)|=|E(Gj)|(i≠j),如此服务器才不会根据划分(密文)的大小情况区分出它们,进而了解划分情况。在任意安全加密算法E中我们都需保证这一点,因此需对G(D)加以强制约束|Gi|b=|Gj|b(i≠j),其中|Gi|b表示划分Gi的字节数(注意区分表示Gi中数据点的个数为|Gi|)。
[0056] 问题四:数据用户在本地计算出满足nn(q,D)∈Gi的原始索引值i后,不应将i直接送至服务器获取E(Gi),这样方可保证服务器不会在查询处理过程中获知任何关于划分情况的信息。若数据用户只向服务器发送i的密文,那么这一问题就不存在了;但这意味着服务器必须能通过i的密文查找到E(Gi)。
[0057] 步骤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的几何边界)进行存储,这样的信息在保证足够描述出划分情况的前提下,所占空间当然是越小越好。
[0058] 这里先考虑一种极端情形:如果令k=N(N为数据集D的数据点的个数,即|D|),那么每个Gi即由单一数据点pi∈D构成的集合,而边界P(D)即为D的voronoi cell的集合。设pi的voronoi cell为vc(i pi为vci所包含),那么给定任意查询点q,数据用户需查找包含q的voronoi cell;假定 则数据用户需向服务器请求获取E(Gi);这里显然有-1nn(q,D)=pi以及Gi={pi},而算法返回nn(q, E (E(Gi)))=nn(q,{pi})=pi,可见为正确结果。
可以考虑把上述思想推广应用到k<
[0059] 步骤S2具体包括步骤S21和步骤S22:
[0060] 步骤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)的。
[0061] 步骤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。
[0062] 为了解决上述问题二,设D中点pi对应的voronoi cell为vci,为保证数据用户能够为P(D)编制索引以及轻松高效地确定出满足nn(q,D)∈Gi的索引值i,可以确定如下划分原则:设Gi的几何边界由Bi表示,那么
[0063] 原则一:Bi是一个由与坐标轴平行的边围成的“格子”;
[0064] 原则二: 即G(D)中不同的划分其对应的边界是互不相交的;
[0065] 原则三:如果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}。
[0066] 引理1.如图2所示,依照上述划分原则,若nn(q,D)=pi且q∈Bj,则有pi∈Gj。 [0067] 证明:若有查询点q∈Bj,即q属于Bj所框定的区域,那么q必属于一个被Bj完全包含或贯穿的voronoi cell。依照上述划分原则,这一voronoi cell必属于Vj,而Vj确定了Gj的元素。假设q包含在vci中(则有nn(q,D)=pi),由上可知,vci∈Vj,继而pi∈Gj。 [0068] 由上述引理1可知,步骤S6中,对于任意查询点q,数据用户端的工作就是找到满足q∈Bj的Bj∈P(D),即在P(D)中找到一个包含q的格子,这实际上是一个“点位置查询”(point location query)的过程。由于P(D)中的格子都是不相交的,但会覆盖整个外包数据库D的voronoi图的空间,因此有且只有一个格子包含点q;另外,由于这些格子的边都是与坐标轴平行的,因此数据用户能够方便地为P(D)编制原始索引值i。之后,数据用户便可以向服务器请求获取E(Gj),这是因为由所述引理1告,只要q被包含在Bj中,那么就有nn(q,D)∈Gj。
[0069] 通过步骤S7,一旦E(Gj)被服务器返回,步骤S8中数据用户便可以由E-1对E(Gj)解密得到Gj;之后,数据用户通过识别随机字符*,可以轻松地将之前数据主通过“随机填补操作”添加在Gj中的随机字节序列去除;最后,数据用户可得nn(q,D)=nn(q,Gj)。 [0070] 然而别忘了,数据用户在向服务器请求获取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)。
[0071] 步骤S31,数据主在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数。具体的,在数 据主生成G(D)和P(D)后,只需在G(D)中添加k′个随机划分,然后加密传送给服务器,如此服务器得到的划分数为k+k′,从而k值得到了隐蔽。
[0072] 步骤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)中区分出任意某个划分,从而了解到划分情况。 [0073] 步骤S4,数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储。具+体的,为了解决上述问题四,数据主应用一秘密随机哈希函数g:[1,N]→Z,最终将E(D)={-1
(E(g(1)),E(G1)),...,(E(g(k)),E(Gk))}发布给服务器,将P(D)、E 和g发布给数据用户。 [0074] 步骤S5,数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储,具体的,数据主将所有划分对应的 边界P(D)发送给所述数据用户存储。将P(D)存储在数据用户端,这样对于任意查询点q,数据用户能够高效地确定出原始索引值i满足nn(q,D)∈Gi,根据所述哈希函数计算出与该原始索引值i(边界)对应的索引,然后根据该索引向服务器提出请求获取到E(Gi),这个过程完全可以在服务器不知道具体原始索引值i值的情况下进行,如此可以保证服务器不会在答复查询的-1
过程中了解到划分情况;最后,数据用户自然能够轻松得出nn(q,D)=nn(q,E (E(Gi)))。 [0075] 步骤S6,所述数据用户确定真实查询点q,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引E(g(j))发送给服务器,即数据用户将E(D)={(E(g(1)),E(G1)),...,(E(g(k)),E(Gk))}传送给服务器。
[0076] 步骤S7,所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分。
[0077] 步骤S8,所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;
[0078] 步骤S9,所述数据用户确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器。具体的,服务器可能会通过统计对各个划分的查询频度,结合相关“背景知识”,大致判断出该划分所对应的实际地理区域, 例如,假设D代表纽约地区,基于对纽约某些区域实际被“关注”程度的了解,服务器便可以推断出被最频繁查询的划分对应的很可能就是曼哈顿,为避免此类隐私泄露,还是可以使用“伪查询”的办法,让数据用户随机地发出“伪查询”,如此使得各划分在整体上有较为接近的查询频度即可以让数据用户发出一些针对上述随机划分的“伪查询”请求,即数据用户随机地向服务器请求E(g(j)),而这里j∈[k+1,k+k′],这样服务器便无法确定哪些是添加的随机划分,从而不能确定出k值。 [0079] 步骤S10,所述服务器根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分。
[0080] 上述步骤S6至S10的查询过程可以根据实际需要不断重复,直至无查询需求。通过步骤S31、步骤S9和步骤S10,可以很容易地使k对服务器透明。
[0081] 本实施例中提供一种MinDp划分方法,这种方法遵循了上述提出的划分原则一至三,由于加入了“随机填补操作”,因此很显然,本实施例的通信代价以及服务器端的存储代价是由最大划分与各划分的大小之差,即|Gx-|Gi|,或更准确地,|E(Gx)|-|E(Gi)|)决定的,也就是说,为了降低通信代价以及服务器端的存储代价,在设计划分方法时还应尽可能地遵循原则四:尽可能生成大小“平衡”(相等或接近)的划分。
[0082] MinDp方法为数据主根据所述参数K将所述voronoi图分割成为k个划分的步骤中,用平行于Y坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y坐标轴的直线上的相邻的划分,或用平行X坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行X坐标轴的直线上的相邻的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于 所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将voronoi图中的划分的个数减至所述参数k。
[0083] 具体的,MinDp方法中为了使G(D)中的(|Gx|-|Gi|)值达到最小,可以采用一种“贪心”策略。具体来说,初始时令P(D)={Ω},其中Ω代表D对应voronoi图的全部区域;随后,迭代地用垂直直线(平行于Y坐标轴的贯穿Ω的直线,下同)或平直线(平行于X坐标轴的贯穿Ω的直线)将P(D)中格子逐步切小,直至P(D)中格子数达到k。为简明起见,下面将此构造过程中处于第i步骤状态的P(D)表示为Pi(D)。
[0084] 在任意的第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(水平线或垂直线)。
[0085] 这里用到的基本思路是:每一步中总是选取当前最大的划分进行切割,此即为“贪心”策略。这里,将格子Cx,y∈Pi(D)对应的划分表示为Gx,y。如图2所示,需注意每个格子Cx,y通过MinDp方法总可以产生一个对应的划分Gx,y。假设当前最大划分为Gα,β(α∈[1,ai+1],β∈[1,bi+1]),那么下一条切割线l的选取范围即为Gα,β对应的XY坐标范围。
[0086] 然而,即使我们只考虑Gα,β的XY坐标范围,l的选择范围应是无穷的。这是因为,如果假设Gα,β由其左下点(xl,yl)和右上角点(xu,yu)给定;那么,[xl,xu]范围内的任意垂直线和[yl,yu]范围内的任意水平线都可以作为Gα,β的切 割线加以考虑。 [0087] 为解决以上问题,如图2所示,可以发现如引理2。
[0088] 引理2.当一个格子通过MinDp方法产生一个划分时,其边界线穿过的voronoi顶点(相对该边界线只是从“中间”穿过一个voronoi cell)越多,产生的划分越小。 [0089] 证明:如若边界线l穿过某voronoi cell(设为vci),但并非穿过vci的顶点,那么vci对应的点pi必会同时分配给l两侧的划分,由此可得引理2的正确性。
[0090] 引理2的一个例子就是,在图2中,p9只被分配给了划分G2,而没有分配给G1。 [0091] 由引理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。
[0092] 由于上述划分方法是基于尽可能减少“重复点”的思想,因此称之为“MinDp(Minimum Duplicate Points)方法”。这里需注意的是,划分至最后一步时,MinDp方法产生的划分数可能会大于k;如若这样,可以通过逐步合并最小划分的方式将划分数减至k,对此我们这里不做赘述。图4给出了MinDp方法应用的一个示例,其中,图4中虚线l代表试切割过程。
[0093] MinDp方法最多需进行(k-1)步划分,例如,所有划分线均为水平或垂直时; 在每一步,需试验2|V(Gα,β)|条可能的划分线。由于平均单个voronoi cell的顶点数小于6,并且有N个voronoi cell,因此O(|V(Gα,β)|)=N。对于每条切割线l,需找出与其相交的voronoi cell以便后续产生划分,这在最坏情况下需要O(N)的复杂度。综上,最坏情形下2
MinDp的复杂度为O(kN)。需注意,现实中几乎不会出现上述最坏情形,而往往是要么只是|V(Gα,β)|为O(N),要么只是l穿过的voronoi cell数为O(N),两者只占其一,故总的复杂度仅为O(kN)。最后特别值得一提的是,P(D)的大小显然是O(k)的。
[0094] 更详细的,可用C++语言对上述MinDp方法进行实现。本实现的实验中,使用Qhull库对数据集D进行了voronoi划分;使用最新的Crypto++库进行了加密。随后实验的进行是在一台配置为Intel Xeon 3.07GHz CPU、8GB内存的Linux机上。
[0095] 针对二维外包数据库D,实验时具体数据集使用了取样自美国加利福尼亚州(CA)和德克萨斯州(TX)的千万个数据点作为原始数据集,这些数据都来自OpenStreetMap项目。在CA和TX数据集中,各随机选取2,000,000个数据点作为最大实验数据集Dmax,并基于Dmax形成了较小规模的数据集。这里需特别一提的是,当改变数据集大小以测试本实施例的划分方法的可扩展性时,会确保小数据集总是大数据集的子集,这样是为了避免D中具体数据点变化带来的影响,从而单单体现出|D|的影响。
[0096] 对实验所涉及参数的默认设置如下:|D|=106,k=625(|D|、k分别为数据点的个数和最后的划分数);数据点的个数默认使用来自CA的数据;使用AES加密算法进行加密,其key大小和块大小均为256比特。这里需特别一提的是,实验过其他加密算法后,发现不同加密算法对本实施例的性能几乎不构成影响。 因此任何安全的公共密钥或对称密钥加密算法都可用于实现本实施例,并且不同加密算法实现本实施例性能都可由实验说明。最后要说明的是,在全部实验中,除非特别声明,当将某个参数作为变量进行研究时,其他参数均为默认值。
[0097] 具体实验结果如下:
[0098] 1.预处理阶段
[0099] 在预处理阶段,数据主端需进行划分和加密两项工作,它们均主要受划分数k和数据集大小|D|的影响。图5a、5b所示分别为不同划分方法下k和|D|对运行时间的影响。其中,图5a显示MinDp方法的划分时间代价(partition time)均随k线性增长。 [0100] 图5b显示的是数据大小|D|变化(从250,000到2,000,000)对划分时间代价的
2
影响。但尽管MinDp方法在最坏情况下的复杂度是O(kN),但在现实(实验)中,它的处理时间与N也是呈线性关系,这是因为所述最坏情形--一条分割线会同全部N个voronoi cell相交——在实际数据集中几乎是不可能发生的。事实上,在MinDp的每一步分割中,与分割线相交的voronoi cell数几乎可以认为是常数个,因此它们的复杂度可认为是O(kN)的。 [0101] 下面来看MinDp方法下产生的划分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|的变化情况。 [0102] 最后,如图6a、6b所示,MinDp方法,其划分大小的平均值和最大值随k增加是递减的。
[0103] 下面通过图7a、7b来看在预处理阶段MinDp方法的总运行时间(totalrunning time)。所谓总运行时间,具体含划分和加密两个步骤的时间(voronoi划分时间和“随机填补操作”时间也包含在内,不过它们相对划分和加密时间来说要小一些)。在图7a、7b中,还加入了所述Send-D方法的预处理时间以作参照,Send-D方法的预处理时间就是将D看做一个整体进行加密的时间。
[0104] 另外,从图7a、7b中可见,MinDp方法预处理阶段的总时间随k或|D|增加都是线性增长的。
[0105] 再来看最终产生的E(D)的大小,这是影响服务器端存储代价和数据主至服务器通信代价的关键因素。进行过随机填补操作后,每个划分都具有了与最大划分相同的大小,因此,|E(D)|=k|E(Gx)|=k|E(Gi)|(i∈[1,k])。
[0106] 图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方法会引入数据主至服务器的通信代价和服务器端的存储代价。
[0107] 数据用户端的存储代价是取决于P(D)的大小的,并且这一代价在MinDp方法中是O(k)。由于k相对数据点的个数|D|来说小得多(对于一个包含几百万个 点的数据集来说,分割出几百个划分即已足够),因此上述存储代价几乎是可以忽略的。
[0108] 最后需声明的是,在实验中观察到使用哪种数据集(CA数据集或TX数据集)对实验结果几乎没有什么明显的差别,因此为简便起见,这里没有讨论TX数据集上的实验结果。
[0109] 2.查询处理代价
[0110] 首先,对任意查询点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)|比MinDp方法生成的|E(D)|小得多(如图8a、8b所示),如图9a、9b所示,本发明的方法中服务器至数据用户端的查询通信代价(query communication)仍然比Send-D的小得多。
[0111] 下面,再来看数据用户端的查询处理代价。每次实验,都随机进行了100次查询,然后得到如图10a、10b所示的MinDp方法的平均处理时间。图10a显示MinDp方法的查询时间(query time)是随k增大而递减的,这显然是因为k增大导致了划分变小。相比Send-D,MinDp方法的性能要好得多。图10b所示,而当|D|增加时,MinDp的查询时间都随之线性增长。
[0112] 本发明的算法效率包括预处理阶段的时空代价和查询阶段的查询代价,所述预处理阶段的时空代价包括时间代价和存储代价,查询阶段的查询代价包括时间代价和通信代价:
[0113] 1.SVD算法进行预处理时的时间代价主要体现在以下三阶段:
[0114] (1)得到D的voronoi图;
[0115] (2)对D进行划分;
[0116] (3)生成E(D)。
[0117] 针对一维和二维的外包数据库,阶段(1)的代价是O(NlogN)的。
[0118] 而在第(2)阶段(对D进行划分),一维情形下,很显然可以在对数据进行排序后通过一次遍历得到所需的分位点,因此阶段2的代价也是O(NlogN)的;二维情形下,该阶段的代价取决于我们所选用的划分方法。MinDp方法的代价分别为O(kN)。
[0119] 阶段(3)的代价同加密代价呈线性关系。假设通过加密算法E对信息m进行加密的代价为e(m);由于“随机填补操作”将每个划分的大小都增至最大,因此可得生成E(D)的时间复杂度是O(ke(|Gx|b))的,其中
[0120] 2.预处理阶段的存储代价
[0121] 服务器端的存储代价为|E(D)|,是O(k|E(Gx)|)的。
[0122] 数据用户端的存储代价为P(D)和索引i所占的空间。对于同类型的大部分的索引结构(如kd树、R树、线段树等),i的大小是与|P(D)|线性相关的,因此数据用户端的存储代价是O(|P(D)|)的;至于P(D),一维情形下,P(D)仅仅含有(k-1)个数值,因此|P(D)|=k-1;二维情形下,|P(D)|由所选用的划分方法所决定。MinDp方法的|P(D)|分别是O(k)。 [0123] 3.查询阶段的查询代价
[0124] 查询阶段的时间代价主要体现在两端:数据用户端和服务器端。其中,数 据用户需通过P(D)的索引i查找包含查询点q的Bi∈P(D),其中任意Bi都是由平行于坐标轴的边围成的d维(一至三维)格子;由于已保证P(D)中的任意两个格子不会相交,且必有一个格子包含q,因此这种查找实际是一个输出大小为1(结果有且只有一个)的典型“点位置查询”过程;在一二维情形下,以上过程的代价仅是O(logk)的。
[0125] 在服务器端,数据用户给定一个请求E(g(j)),服务器便通过查询哈希表T来找到E(Gj),这个过程是O(1)的。
[0126] 系统中的单次通信代价为|E(D)|和|P(D)|,这可由我们上面对存储代价的讨论自然得出。查询的通信代价为|E(g(j))|+|E(Gj)|,或|E(g(j))|+|E(Gx)|,或|E(g(j))|+|E(Gj)|/k。
[0127] 在本发明的安全性方面,由于本实施例中数据用户仅仅是把E(D)={(E(g(1)),E(G1)),...,(E(g(k)),E(Gk))}传送给服务器,并且在查询处理过程中,只有E(g(j))是对服务器可见的,由此我们可证得下述定理1。
[0128] 定理1.假设E是某种已在标准安全模型M(如,IND-CPA)中被证明安全的加密算法,那么在M中SVD算法与E具有相同的安全性。
[0129] 证明:在整个处理过程中,服务器只能看到来自数据主的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。
[0130] 通过步骤S31、步骤S9和步骤S10,可以很容易地使k对服务器透明。
[0131] 综上,本实施例能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。
[0132] 如图11所示,本发明还提供另一种基于最小冗余划分和随机数的安全最近邻查询系统,包括数据主1、数据用户2和服务器3。
[0133] 数据主1,用于给定所述参数k,生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;根据参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的数据点部分重复或完全不重复,k大于等于1且小于等于N,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,所述数据主用平行于Y坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y坐标轴的直线上的相邻的划分,或用平行X坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行X坐标轴的直线上的相邻的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数k,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将voronoi图中的划分的个数减至所述参数k;在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据 点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分的字节数等于所述最长字节数;根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;
[0134] 数据用户2,用于给定所述参数k,确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的数据点;确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器; [0135] 服务器3,用于根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用 户发送对应的加密后的包含所述伪查询点的划分。
[0136] 综上所述,本发明通过数据主生成包含外包数据库的所有真实数据点的voronoi图,其中,每个真实数据点的字节数相同,外包数据库中的真实数据点的个数为N,N为正整数,所述外包数据库为一至三维外包数据库;数据用户或数据主给定参数K,数据主根据所述参数k将所述voronoi图分割成为k个划分,记录每个划分对应的边界,每个划分互不相交,不同划分包含的数据点部分重复或完全不重复,k大于等于1且小于等于N,其中,当所述外包数据库为一维外包数据库时,每个划分的边界为两个相邻真实数据点之间的垂直平分线,当所述外包数据库为二维外包数据库时,每个划分的边界为由与所述voronoi图的X坐标轴和Y坐标轴平行的直线围成的格子,用平行于Y坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行Y坐标轴的直线上的相邻的划分,或用平行X坐标轴的直线不断分割当前的最大的划分和与所述最大的划分在同一条平行X坐标轴的直线上的相邻的划分以生成所述格子,直至voronoi图中的划分的个数大于或等于所述参数,其中,每次分割时,使平行于Y坐标轴的直线或平行X坐标轴的直线穿过voronoi图中的多边形的顶点最多,当划分的个数大于所述参数k时,通过逐步合并最小划分的方式将voronoi图中的划分的个数减至所述参数k;数据主在所述voronoi图中随机添加k’个划分,并在k’个划分中分别添加虚拟数据点,记录每个划分对应的边界,其中,每个划分互不相交,不同划分包含的虚拟数据点部分重复或完全不重复,k’为正整数;数据主获取所有划分中包含最多个真实数据点或虚拟数据点的划分的字节数作为最长字节数,在除包含最多个真实数据点或虚拟数据点的划分之外的每个其它划分中添加随机字节,使除包含最多个真实数据点或虚拟数据点的划分之外 的每个其它划分的字节数等于所述最长字节数;数据主根据预设的哈希函数对每个边界建立对应的索引,并根据一预设的加密算法将加密后的所有划分及其所有与相应的边界对应的索引发送给服务器存储;数据主将所有划分对应的边界、与所述加密算法对应的解密算法和所述哈希函数发送给所述数据用户存储;所述数据用户确定真实查询点,根据所述真实查询点确定包含所述真实查询点的划分的对应的边界,根据所述哈希函数获取与包含所述真实查询点的划分的对应的边界的对应的索引,并将包含所述真实查询点的划分的对应的边界的对应的索引发送给服务器;所述服务器根据接收到的包含所述真实查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述真实查询点的划分;所述数据用户根据所述解密算法将接收到的加密后的包含所述真实查询点的划分进行解密,获取包含所述真实查询点的划分,并从包含所述真实查询点的划分中获取所述真实查询点的最近邻的真实数据点;所述数据用户确定伪查询点,根据所述伪查询点确定包含所述虚拟查询点的划分的对应的边界,根据所述哈希函数获取与包含所述伪查询点的划分的对应的边界的对应的索引,并将包含所述虚拟查询点的划分的对应的边界的对应的索引发送给服务器;所述服务器根据接收到的包含所述伪查询点的划分的对应的边界的对应的索引向所述数据用户发送对应的加密后的包含所述伪查询点的划分。,能够在数据用户对服务器上存储的外包数据库中进行最近邻查询时,使服务器无法获知外包数据库中的数据、数据用户的查询点及最近邻的查询结果,保证数据安全。
[0137] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于 实施例公开的系统而言,由于与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0138] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0139] 显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈