欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于最小冗余劃分和隨機(jī)數(shù)的安全最近鄰查詢方法及系統(tǒng)的制作方法

文檔序號(hào):6381591閱讀:182來源:國知局
專利名稱:基于最小冗余劃分和隨機(jī)數(shù)的安全最近鄰查詢方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及安全查詢處理領(lǐng)域,一種基于最小冗余劃分和隨機(jī)數(shù)的安全最近鄰查詢方法及系統(tǒng)。
背景技術(shù)
安全查詢處理領(lǐng)域的現(xiàn)有研究涉及加密數(shù)據(jù)庫上的基本SQL查詢(參見文獻(xiàn)3 H. Hacigumusj B. R. Iyer, C. Li,and S. Mehrotra. Executing SQL overencrypted datain the database service provider model. In SIGMOD,2002)、聚合查詢(參見文獻(xiàn) 4 :
H.Hacigumusj B. R. Iyer, and S. Mehrotra. Efficient execution ofaggregation queriesover encrypted relational databases. In DASFAAj pages 125 - 136,2004 和文獻(xiàn) 5 E. Mykletun and G.Tsudik. Aggregation queries in thedatabase—as—a—servicemodel. In DBSecj 2006)和范圍查詢(參見文獻(xiàn) 6 :B. Horej S. Mehrotra, M. Canimj andM. Kantarcioglu. Secure multidimensional range queriesover outsourced data.VLDBJ. To Appear.和文獻(xiàn) 7 :Ε· Shij J. Bethencourtj H. T. _Η· Chan, D. X. Song, andA. Perrig. Multi-dimensional range query over encrypted data. In IEEE Symposium onSecurity and Privacy, pages 350-364,2007)。正如諸多現(xiàn)有研究(參見文獻(xiàn) I :H. Hu,J.Xuj C. Renj and B. Choi. Processing private queriesover untrusted data cloud throughprivacy homomorphism. In ICDEj pages 601-612,2011 和文獻(xiàn) 2 W. K. Wong, D. W. _L.Cheung,B. Kaoj and N. Mamoulis. Secure knn computation on encrypted databases. InSIGMOD, pages 139 - 152,2009和文獻(xiàn)6和文獻(xiàn)7)所證明的,為滿足一定的安全性要求和獲得更高的效率,較復(fù)雜的查詢類型往往需要一些特殊處理。特別的,針對SNN問題現(xiàn)在已有不少前人所做的研究工作(參見文獻(xiàn)I和文獻(xiàn)2),然而他們所提出的解決方案最后往往被證明是不安全的,可以被輕而易舉地攻擊成功。Hacigumus 等人首先提出了“外包數(shù)據(jù)庫”(outsourced database,0DB)模型(參見文獻(xiàn) 8 H. Hacigumusj B. R. Iyer, and S. Mehrotra. Providing database as aservice.In I⑶E,2002),在這個(gè)模型里,數(shù)據(jù)擁有者(data owner)將“數(shù)據(jù)管理”及“查詢應(yīng)答”兩項(xiàng)服務(wù)外包給不可靠的服務(wù)提供商(service provider)。關(guān)于ODB的安全性研究旨在通過加密及在加密數(shù)據(jù)上進(jìn)行查詢處理來確保數(shù)據(jù)安全。例如,使用一種保序加密法(order-preserving encryption scheme, 0PES,參見文獻(xiàn) 9 :R. Agrawalj J. Kiernanj R.Srikantj and Y. Xu. Order preserving encryption for numeric data. In SIGMOD, 2002),對一序數(shù)域(ordinal domain)應(yīng)用函數(shù)E,使得對任一對滿足x < y的值x,y,都有E(x)< E(y) o 另外,Hacigumus 等人還提出了一種加乘同態(tài)(additive and multiplicativehomomorphic)加密函數(shù)E (E 滿足 E (x)+E (y) =E (x+y),E (x) E (y) =E (xy))來支持加密數(shù)據(jù)上的聚合查詢(參見文獻(xiàn) 4 :H. Hacigumusj B. R. Iyer, and S. Mehrotra. Efficientexecution of aggregation queries over encrypted relational databases.InDASFAAj pages 125-136,2004)。然而,正如Mykletun等人所證明的那樣,實(shí)際上同態(tài)法連最低級別的安全都不能保證(參見文獻(xiàn)5)。概而言之,之前的ODB模型都僅僅考慮了簡單的數(shù)值域和SQL操作,而沒有考慮以kNN (knearest neighbor, k最近鄰)查詢等更復(fù)雜的操作為研究對象;另外,ODB模型研究總是假設(shè)單一類型的攻擊,而沒有綜合考慮不同層次的攻擊,不具有普適性。除了各種加密技術(shù),還有其他的數(shù)據(jù)保護(hù)方法來保證查詢計(jì)算的安全性。ODB模型上的SQL語句執(zhí)行就采用了“粗索引”(coarse index,亦稱“基于桶的索引”,bucket-basedindex)技術(shù)(參見文獻(xiàn)3)。元組通過諸如RSA的普通加密法加密;將各數(shù)據(jù)庫屬性域分割,分割后得到的每一部分(即一個(gè)“劃分”,partition)通過哈希函數(shù)賦以一 ID。數(shù)據(jù)主將加密元組連同其所在分割的ID送至服務(wù)器,充當(dāng)“粗索引”。查詢變?yōu)楂@取包含目標(biāo)元組的分害I]。服務(wù)器則返回一個(gè)查詢結(jié)果的超集。繼而,擁有密鑰的用戶便可以將結(jié)果解密,再通過一定的后處理篩選掉其中無用信息。高級查詢中無用信息的數(shù)量可能十分巨大,對用戶而言這會(huì)成為十分沉重的負(fù)擔(dān)。例如,kNN計(jì)算中所需的數(shù)據(jù)點(diǎn)與查詢點(diǎn)間距便難以通過分割的ID輕易獲得。因此,直接應(yīng)用這種“粗索引”技術(shù)會(huì)導(dǎo)致服務(wù)器將整個(gè)數(shù)據(jù)庫返回給 用戶,讓用戶獨(dú)自負(fù)擔(dān)查詢結(jié)果的計(jì)算。顯然,當(dāng)用戶處理能力有限(如用戶使用的是移動(dòng)設(shè)備)這種方法很不適用。另一種安全查詢處理方法利用了特殊的硬件一安全的協(xié)處理器(參見文獻(xiàn) 10 E.Mykletun and G. Tsudik. Incorporating a secure coprocessor inthedatabase-as-a-service model. In IWIA, 2005 和文獻(xiàn) 11 R. Agrawal, D. Asonov,M. Kantarcioglu, and Y. Li. Sovereignjoins. In ICDE, 2006)。它是一種安全的計(jì)算單兀,其計(jì)算過程及儲(chǔ)存的數(shù)據(jù)對查詢中的任一方都是透明的。協(xié)處理器的使用很簡單,只需要安裝上加密和解密密鑰,并直接部署應(yīng)用邏輯即可。然而另一方面,它的速度不如普通處理器,因此不適用于需要大量計(jì)算的復(fù)雜應(yīng)用。除此之外,協(xié)處理器必須靠用戶來維護(hù)。例如,如果處理器意外停機(jī),用戶必須重新對其進(jìn)行部署。這顯然與云計(jì)算中用戶本無需親自維護(hù)原始數(shù)據(jù)是矛盾的。另夕卜,Sweeney, Li, Machanavajjhala等人提出了各種各樣的數(shù)據(jù)匿名模型,如k匿名(k-anonymity),用于數(shù)據(jù)發(fā)布時(shí)的隱私保護(hù)(參見文獻(xiàn)12 L. Sweeney,k-anonymity :A model for protecting privacy. In IJUFKS, 2002)。他們的基本思想都是使數(shù)據(jù)庫中各元組與另外至少k-Ι個(gè)元組的“準(zhǔn)”標(biāo)示符(quasi-identifiers)是不可辨(indistinguishable)的。“k匿名”可以通過“準(zhǔn)”標(biāo)示符一般化(generalizing)、元組抑制(suppressing tuples)、元組擾亂(perturbing tuples)等方法實(shí)現(xiàn)。但是,“k匿名”模型在查詢過程中會(huì)有信息丟失,并且模型本身還有特定的缺陷。如Machanavajjhala等人所指出的,匿名化的不可辨的“準(zhǔn)”標(biāo)示符組也含有不少敏感值,因此攻擊者通過有限的背景知識(shí)就可以引起信息泄露(參見文獻(xiàn)13 A. Machanavajjhala, J. Gehrke, D. Kifer, andM. Venkitasubramaniam. 1-diversity:Privacy beyond k-anonymity. In ICDE, 2006)。另夕卜,一般化后的值域也會(huì)方便潛在攻擊者對原始數(shù)據(jù)或一些寶貴的統(tǒng)計(jì)信息做出準(zhǔn)確估計(jì)。特別需要注意的是,數(shù)據(jù)發(fā)布時(shí)的隱私保護(hù)與ODB模型中的數(shù)據(jù)安全兩者的目標(biāo)是不同的前者力圖避免發(fā)布的信息暴露特定個(gè)體,后者注重針對非授權(quán)用戶保護(hù)信息。為更好地解決安全查詢處理問題,W. K. Wong等重點(diǎn)研究了 SC0NEDB模型中的kNN 查詢(參見文獻(xiàn) 2)。Oliveira 等曾提出“等距轉(zhuǎn)換”(distance-preservingtransformation, DPT)作為其加密方法(參見文獻(xiàn) 14 S. R. M. Oliveira and 0. R. Zaiane. Privacypreserving clustering by data transformation. In SBBD, Manaus, Amazonas, Brazil, 2003)。DPT將給定點(diǎn)X轉(zhuǎn)換為Nx+t,其中,N是一個(gè)dXd的正交矩陣,t是一個(gè)d維向量。DPT的主要特性是轉(zhuǎn)換前后點(diǎn)間距不變,即,d (x, y) =d (E (X),E (y)),其中,d表示歐幾里得距離,E是加密(轉(zhuǎn)換)函數(shù)。由于距離沒有改變,kNN查詢能夠得到正確的計(jì)算。然而,Liu等人證得DPT關(guān)于2級攻擊和3級攻擊是不安全的[8]。對于一 3級攻擊,W. K. Wong等審查了DB中的一組點(diǎn){xl, x2, . . . , xm}及其相應(yīng)的加密值{yl, y2, . . . , ym},然后建立出一組等式y(tǒng)i=Nxi+t,形成線性等式組,其中,N的d2和t的d未知。如此,如果m>=d+l,則此等式組可解。對于一 2級攻擊,攻擊者可見DB中的一組點(diǎn)P。由于DPT保留了各維間的相關(guān)性,Liu等使用PCA確定點(diǎn)集P中和轉(zhuǎn)換后所得數(shù)據(jù)庫中的主成分。通過匹配主成分,攻擊者可以對N和t做出準(zhǔn)確估計(jì)(參見文獻(xiàn)8)。不可靠平臺(tái)上的kNN計(jì)算也是“適地性服務(wù)”(LBS)系統(tǒng)需要考慮的問題。在LBS模型中,服務(wù)器擁有一個(gè)元組集(也即“興趣點(diǎn)”point of interest, Ρ0Ι)ο用戶向服務(wù)器 提交查詢(范圍查詢或kNN查詢),獲取想要的興趣點(diǎn)。其中主要的安全目標(biāo)即為保護(hù)查詢點(diǎn)的位置信息,另外一些模型也會(huì)考慮POI的隱私問題。“k匿名”模型是常被使用,以將查詢點(diǎn)的位置轉(zhuǎn)換為一個(gè)空間范圍,如此這一范圍中至少包含了其他k-Ι的點(diǎn),服務(wù)器則難以在其中確定出用戶(查詢點(diǎn))的位置。盡管這一模型可以用來解決我們的問題,但它也有一定缺陷。首先,匿名后的數(shù)據(jù)會(huì)近似地暴露出原始數(shù)據(jù)值;其次,在特定模型中(參見文獻(xiàn)15 G. Ghinita, P. Kalnis, A. Khoshgozaran, C. Shahabi, and K. L. Tan. Privatequeries inlocation based services:Anonymizers are not necessary. In SIGMOD, 2008),數(shù)據(jù)庫被假定為服務(wù)器所有,因此服務(wù)器能看到原始數(shù)據(jù);再次,在一些系統(tǒng)(諸如“粗索引”系統(tǒng))中,服務(wù)器通常返回查詢結(jié)果的超集以供用戶進(jìn)行后處理,這增添了用戶負(fù)擔(dān),對于一些“輕量級”(light-weight)用戶端,這甚至是不可承受的。Khoshgozaran等人提出了一個(gè)可以為kNN查詢進(jìn)行加密的LBS模型(參見文獻(xiàn)16 :A. Khoshgozaran and C. Shahabi. Blindevaluation ofnearest neighbor queries using space transformation to preservelocation privacy. InSSTD, 2007)。其主要思想是使用Hilbert曲線來對數(shù)據(jù)點(diǎn)和查詢進(jìn)行“加密”。各點(diǎn)的Hilbert值被送往服務(wù)器。然后在Hilbert轉(zhuǎn)換后所得的空間中計(jì)算kNN得出近似結(jié)果。這種方法除了返回的是近似結(jié)果,還存在DPT類似的問題,容易被攻擊成功。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于最小冗余劃分和隨機(jī)數(shù)的安全最近鄰查詢方法及系統(tǒng),能夠在數(shù)據(jù)用戶對服務(wù)器上存儲(chǔ)的外包數(shù)據(jù)庫中進(jìn)行最近鄰查詢時(shí),使服務(wù)器無法獲知外包數(shù)據(jù)庫中的數(shù)據(jù)、數(shù)據(jù)用戶的查詢點(diǎn)及最近鄰的查詢結(jié)果,保證數(shù)據(jù)安全。為解決上述問題,本發(fā)明提供一種基于最小冗余劃分和隨機(jī)數(shù)的安全最近鄰查詢方法,包括數(shù)據(jù)主生成包含外包數(shù)據(jù)庫的所有真實(shí)數(shù)據(jù)點(diǎn)的voronoi圖,其中,每個(gè)真實(shí)數(shù)據(jù)點(diǎn)的字節(jié)數(shù)相同,外包數(shù)據(jù)庫中的真實(shí)數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù),所述外包數(shù)據(jù)庫為一至三維外包數(shù)據(jù)庫;
數(shù)據(jù)用戶或數(shù)據(jù)主給定參數(shù)K,數(shù)據(jù)主根據(jù)所述參數(shù)k將所述VOTonoi圖分割成為k個(gè)劃分,記錄每個(gè)劃分對應(yīng)的邊界,每個(gè)劃分互不相交,不同劃分包含的數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k大于等于I且小于等于N,其中,當(dāng)所述外包數(shù)據(jù)庫為一維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為兩個(gè)相鄰真實(shí)數(shù)據(jù)點(diǎn)之間的垂直平分線,當(dāng)所述外包數(shù)據(jù)庫為二維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為由與所述voronoi圖的X坐標(biāo)軸和Y坐標(biāo)軸平行的直線圍成的格子,用平行于Y坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行Y坐標(biāo)軸的直線上的相鄰的劃分,或用平行X坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行X坐標(biāo)軸的直線上的相鄰的劃分以生成所述格子,直至VOTonoi圖中的劃分的個(gè)數(shù)大于或等于所述參數(shù),其中,每次分割時(shí),使平行于Y坐標(biāo)軸的直線或平行X坐標(biāo)軸的直線穿過voixmoi圖中的多邊形的頂點(diǎn)最多,當(dāng)劃分的個(gè)數(shù)大于所述參數(shù)k時(shí),通過逐步合并最小劃分的方式將voronoi圖中的劃分的個(gè)數(shù)減至所述參數(shù)k ;數(shù)據(jù)主在所述VOTonoi圖中隨機(jī)添加k’個(gè)劃分,并在k’個(gè)劃分中分別添加虛擬數(shù)據(jù)點(diǎn),記錄每個(gè)劃分對應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的虛擬數(shù)據(jù)點(diǎn) 部分重復(fù)或完全不重復(fù),k’為正整數(shù);數(shù)據(jù)主獲取所有劃分中包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長字節(jié)數(shù),在除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長字節(jié)數(shù);數(shù)據(jù)主根據(jù)預(yù)設(shè)的哈希函數(shù)對每個(gè)邊界建立對應(yīng)的索引,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有與相應(yīng)的邊界對應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ);數(shù)據(jù)主將所有劃分對應(yīng)的邊界、與所述加密算法對應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ);所述數(shù)據(jù)用戶確定真實(shí)查詢點(diǎn),根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引發(fā)送給服務(wù)器;所述服務(wù)器根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分;所述數(shù)據(jù)用戶根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真實(shí)查詢點(diǎn)的最近鄰的真實(shí)數(shù)據(jù)點(diǎn);所述數(shù)據(jù)用戶確定偽查詢點(diǎn),根據(jù)所述偽查詢點(diǎn)確定包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引,并將包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引發(fā)送給服務(wù)器;所述服務(wù)器根據(jù)接收到的包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包含所述偽查詢點(diǎn)的劃分。根據(jù)本發(fā)明的另一面,提供一種基于最小冗余劃分和隨機(jī)數(shù)的安全最近鄰查詢系統(tǒng),包括
數(shù)據(jù)主,用于給定所述參數(shù)k,生成包含外包數(shù)據(jù)庫的所有真實(shí)數(shù)據(jù)點(diǎn)的voronoi圖,其中,每個(gè)真實(shí)數(shù)據(jù)點(diǎn)的字節(jié)數(shù)相同,外包數(shù)據(jù)庫中的真實(shí)數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù),所述外包數(shù)據(jù)庫為一至三維外包數(shù)據(jù)庫;根據(jù)參數(shù)k將所述VOTonoi圖分割成為k個(gè)劃分,記錄每個(gè)劃分對應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k大于等于I且小于等于N,當(dāng)所述外包數(shù)據(jù)庫為一維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為兩個(gè)相鄰真實(shí)數(shù)據(jù)點(diǎn)之間的垂直平分線,當(dāng)所述外包數(shù)據(jù)庫為二維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為由與所述voronoi圖的X坐標(biāo)軸和Y坐標(biāo)軸平行的直線圍成的格子,所述數(shù)據(jù)主用平行于Y坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行Y坐標(biāo)軸的直線上的相鄰的劃分,或用平行X坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行X坐標(biāo)軸的直線上的相鄰的劃分以生成所述格子,直至voronoi圖中的劃分的個(gè)數(shù)大于或等于所述參數(shù)k,其中,每次分割時(shí),使平行于Y坐標(biāo)軸的直線或平行X坐標(biāo)軸的直線穿過voronoi圖中的多邊形的頂點(diǎn)最多,當(dāng)劃分的個(gè)數(shù)大于所述參數(shù)k時(shí),通過逐步合并最小劃分的方式將voronoi圖中的劃分的個(gè)數(shù)減至所述參數(shù)k ;在所述voronoi圖中隨機(jī)添加k’個(gè)劃分,并在k’個(gè)劃分中分別添加虛擬數(shù) 據(jù)點(diǎn),記錄每個(gè)劃分對應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的虛擬數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k’為正整數(shù);獲取所有劃分中包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長字節(jié)數(shù),在除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長字節(jié)數(shù);根據(jù)預(yù)設(shè)的哈希函數(shù)對每個(gè)邊界建立對應(yīng)的索弓丨,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有與相應(yīng)的邊界對應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ);將所有劃分對應(yīng)的邊界、與所述加密算法對應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ);數(shù)據(jù)用戶,用于給定所述參數(shù)k,確定真實(shí)查詢點(diǎn),根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引發(fā)送給服務(wù)器;根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真實(shí)查詢點(diǎn)的最近鄰的數(shù)據(jù)點(diǎn);確定偽查詢點(diǎn),根據(jù)所述偽查詢點(diǎn)確定包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引,并將包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引發(fā)送給服務(wù)器;服務(wù)器,用于根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分;根據(jù)接收到的包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包含所述偽查詢點(diǎn)的劃分。與現(xiàn)有技術(shù)相比,本發(fā)明通過數(shù)據(jù)主生成包含外包數(shù)據(jù)庫的所有真實(shí)數(shù)據(jù)點(diǎn)的voronoi圖,其中,每個(gè)真實(shí)數(shù)據(jù)點(diǎn)的字節(jié)數(shù)相同,外包數(shù)據(jù)庫中的真實(shí)數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù),所述外包數(shù)據(jù)庫為一至三維外包數(shù)據(jù)庫;數(shù)據(jù)用戶或數(shù)據(jù)主給定參數(shù)K,數(shù)據(jù)主根據(jù)所述參數(shù)k將所述VOTonoi圖分割成為k個(gè)劃分,記錄每個(gè)劃分對應(yīng)的邊界,每個(gè)劃分互不相交,不同劃分包含的數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k大于等于I且小于等于N,其中,當(dāng)所述外包數(shù)據(jù)庫為一維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為兩個(gè)相鄰真實(shí)數(shù)據(jù)點(diǎn)之間的垂直平分線,當(dāng)所述外包數(shù)據(jù)庫為二維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為由與所述VOTonoi圖的X坐標(biāo)軸和Y坐標(biāo)軸平行的直線圍成的格子,用平行于Y坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行Y坐標(biāo)軸的直線上的相鄰的劃分,或用平行X坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行X坐標(biāo)軸的直線上的相鄰的劃分以生成所述格子,直至voronoi圖中的劃分的個(gè)數(shù)大于或等于所述參數(shù),其中,每次分割時(shí),使平行于Y坐標(biāo)軸的直線或平行X坐標(biāo)軸的直線穿過VOTonoi圖中的多邊形的頂點(diǎn)最多,當(dāng)劃分的個(gè)數(shù)大于所述參數(shù)k時(shí),通過逐步合并最小劃分的方式將voronoi圖中的劃分的個(gè)數(shù)減至所述參數(shù)k ;數(shù)據(jù)主在所述voronoi圖中隨機(jī)添加k’個(gè)劃分,并 在k’個(gè)劃分中分別添加虛擬數(shù)據(jù)點(diǎn),記錄每個(gè)劃分對應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的虛擬數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k’為正整數(shù);數(shù)據(jù)主獲取所有劃分中包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長字節(jié)數(shù),在除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長字節(jié)數(shù);數(shù)據(jù)主根據(jù)預(yù)設(shè)的哈希函數(shù)對每個(gè)邊界建立對應(yīng)的索引,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有與相應(yīng)的邊界對應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ);數(shù)據(jù)主將所有劃分對應(yīng)的邊界、與所述加密算法對應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ);所述數(shù)據(jù)用戶確定真實(shí)查詢點(diǎn),根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引發(fā)送給服務(wù)器;所述服務(wù)器根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分;所述數(shù)據(jù)用戶根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真實(shí)查詢點(diǎn)的最近鄰的真實(shí)數(shù)據(jù)點(diǎn);所述數(shù)據(jù)用戶確定偽查詢點(diǎn),根據(jù)所述偽查詢點(diǎn)確定包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引,并將包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引發(fā)送給服務(wù)器;所述服務(wù)器根據(jù)接收到的包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包含所述偽查詢點(diǎn)的劃分,能夠在數(shù)據(jù)用戶對服務(wù)器上存儲(chǔ)的外包數(shù)據(jù)庫中進(jìn)行最近鄰查詢時(shí),使服務(wù)器無法獲知外包數(shù)據(jù)庫中的數(shù)據(jù)、數(shù)據(jù)用戶的查詢點(diǎn)及最近鄰的查詢結(jié)果,保證數(shù)據(jù)安全。


圖I是本發(fā)明一實(shí)施例的基于最小冗余劃分和隨機(jī)數(shù)的安全最近鄰查詢方法的流程圖;圖2是本發(fā)明一實(shí)施例的基于最小冗余劃分和隨機(jī)數(shù)的安全最近鄰查詢方法的劃分示意圖;圖3是本發(fā)明一實(shí)施例的一維空間下劃分示意圖;圖4是本發(fā)明一實(shí)施例的MinDp方法的劃分示意圖5a是本發(fā)明一實(shí)施例的MinDp劃分方法下k對劃分時(shí)間代價(jià)的影響圖;圖5b是本發(fā)明一實(shí)施例的MinDp劃分方法下| D |對劃分時(shí)間代價(jià)的影響圖;圖6a是本發(fā)明一實(shí)施例的劃分大小的平均值、最大值和最小值隨參數(shù)k變化情況圖;圖6b是本發(fā)明一實(shí)施例的劃分大小的平均值、最大值和最小值隨|d|變化情況7a是本發(fā)明一實(shí)施例的MinDp劃分方法的總運(yùn)行時(shí)間隨參數(shù)k變化情況圖;圖7b是本發(fā)明一實(shí)施例的MinDp劃分方法的總運(yùn)行時(shí)間隨ID |變化情況圖;圖8a是本發(fā)明一實(shí)施例的MinDp劃分方法下| E⑶|隨k變化情況圖;圖8b是本發(fā)明一實(shí)施例的MinDp劃分方法下| E⑶|隨| D |變化情況圖; 圖9a是本發(fā)明一實(shí)施例的MinDp劃分方法下查詢通信代價(jià)隨k變化情況圖;圖9b是本發(fā)明一實(shí)施例的MinDp劃分方法下查詢通信代價(jià)隨ID |變化情況圖;圖IOa是本發(fā)明一實(shí)施例的MinDp劃分方法下查詢時(shí)間隨ID |變化情況圖;圖IOb是本發(fā)明一實(shí)施例的MinDp劃分方法下查詢時(shí)間隨k變化情況圖;圖11是本發(fā)明一實(shí)施例的基于最小冗余劃分和隨機(jī)數(shù)的安全最近鄰查詢系統(tǒng)的功能模塊示意圖。
具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對本發(fā)明作進(jìn)一步詳細(xì)的說明。隨著“云計(jì)算”概念及其應(yīng)用的日益普及,針對“云”上的加密數(shù)據(jù)集E⑶的“安全查詢問題”得到了越來越多的關(guān)注。本發(fā)明即對其中的“安全最近鄰”(secure nearestneighbor, SNN)問題進(jìn)行了較為深入的研究;該問題涉及數(shù)據(jù)主(data owner)、數(shù)據(jù)用戶(client)和服務(wù)器(server)三方,數(shù)據(jù)用戶會(huì)向服務(wù)器發(fā)送查詢密文(encrypted query,E (q))來獲取查詢點(diǎn)在E⑶中的最近數(shù)據(jù)點(diǎn)(B卩“最近鄰”)的密文,但要保證不能讓服務(wù)器獲知數(shù)據(jù)和查詢的具體內(nèi)容。具體說,SNN問題涉及數(shù)據(jù)主、數(shù)據(jù)用戶和服務(wù)器三方及所述三方其相應(yīng)的動(dòng)作(I)數(shù)據(jù)主擁有由d維歐式點(diǎn)或?qū)ο髽?gòu)成的外包數(shù)據(jù)庫D,并會(huì)將D外包給不完全可靠的服務(wù)器。(2)數(shù)據(jù)用戶需要對所述外包數(shù)據(jù)庫D進(jìn)行查詢。(3)服務(wù)器不完全可靠,會(huì)因?yàn)樽陨碓蚧虻谌皆蚨Q探來自數(shù)據(jù)主的數(shù)據(jù)內(nèi)容和來自數(shù)據(jù)用戶的查詢內(nèi)容。為了讓數(shù)據(jù)用戶能在外包數(shù)據(jù)庫D上進(jìn)行最近鄰(NN, nearest neighbor),查詢,卻不會(huì)讓服務(wù)器獲知數(shù)據(jù)主的外包數(shù)據(jù)庫D中的數(shù)據(jù)、數(shù)據(jù)用戶的真實(shí)查詢及查詢結(jié)果的具體信息,數(shù)據(jù)主須對外包數(shù)據(jù)庫D應(yīng)用某種加密算法E進(jìn)行加密,可以用E(D)代表D的密文,用E—1代表相應(yīng)的解密算法。相似的,數(shù)據(jù)用戶應(yīng)將其查詢點(diǎn)q (具體代表一個(gè)查詢點(diǎn))加密得到E (q)發(fā)送給服務(wù)器,這里需要力圖保證SNN方法在安全性上同數(shù)據(jù)主使用的加密算法E是一樣的,也就是說,所有E在SNN方法中被證明是安全(在選擇明文攻擊下是不可分辨的,或在選擇密文攻擊下是不可分辨的)的攻擊模型。事實(shí)上可以證明,在只給定E(q)和E(D)的條件下,服務(wù)器不可能查找到精準(zhǔn)的查詢點(diǎn)最近鄰。但若不要求服務(wù)器給出SNN查詢結(jié)果的精準(zhǔn)定位,而只需給出查詢結(jié)果的一個(gè)“大致定位”呢?不妨設(shè)想一個(gè)非常簡單直接的查詢處理方法數(shù)據(jù)主將外包數(shù)據(jù)庫D看做一個(gè)整體進(jìn)行加密得到E(D)后,傳送給服務(wù)器;而服務(wù)器可以將整個(gè)E(D)作為查詢結(jié)果返回給數(shù)據(jù)用戶;數(shù)據(jù)用戶再用E_htE(D)進(jìn)行解密(假定數(shù)據(jù)主與數(shù)據(jù)用戶共享E—1)得到D,從而可以在本地計(jì)算出SNN查詢的結(jié)果一可將這一 “樸素”的方法稱為“(直接)傳送D”(Send-D方法)算法。顯然,這種算法具有與E相同的安全性,但卻十分低效。于是在此基礎(chǔ)上,如圖I所示,進(jìn)一步提出了更為高效的SNN處理方法,即本發(fā)明提供的一種基于最小冗余劃分和隨機(jī)數(shù)的安全最近鄰查詢方法(secure voronoidiagram, SVD),包括預(yù)處理階段步驟SI S5,查詢階段包括步驟S6 S8,步驟S6 S8可以根據(jù)實(shí)際需要不斷重復(fù)其中,步驟SI,數(shù)據(jù)主生成包含外包數(shù)據(jù)庫D的所有真實(shí) 數(shù)據(jù)點(diǎn)Pi的voronoi圖,其中,每個(gè)真實(shí)數(shù)據(jù)點(diǎn)Pi的字節(jié)數(shù)相同,外包數(shù)據(jù)庫中的真實(shí)數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù),所述外包數(shù)據(jù)庫為一至三維外包數(shù)據(jù)庫。由于在后續(xù)步驟S2中要產(chǎn)生外包數(shù)據(jù)庫D的k個(gè)劃分,這里一個(gè)關(guān)鍵問題就是如何產(chǎn)生外包數(shù)據(jù)庫D的(可能存在重疊的)“劃分”G(D)HG1, . . .,GJ,考慮到的目標(biāo)是有兩個(gè)(I)SNN查詢結(jié)果(查詢點(diǎn)的最近鄰)至少應(yīng)被包含于某一劃分中,且(2)數(shù)據(jù)用戶能夠用盡可能小的信息量確定出Gi以降低查詢代價(jià),因此一個(gè)自然的選擇就是用基于外包數(shù)據(jù)庫D的VOTonoi圖來構(gòu)建G(D),其中每個(gè)數(shù)據(jù)點(diǎn)Pi M一個(gè) voronoi cell 表不。本發(fā)明需要針對以下四個(gè)問題問題一邊界P (D)用voronoi cell來描述空間代價(jià)太大。例如,當(dāng)所述外包數(shù)據(jù)庫D為二維即d=2時(shí),每個(gè)voronoi cell是一個(gè)任意形狀的凸多邊形,并且這些多邊形平均會(huì)有6個(gè)頂點(diǎn)。因此,如此表示邊界P(D)所占的存儲(chǔ)空間將比存儲(chǔ)外包數(shù)據(jù)庫D本身的
大得多。問題二 如何給邊界P(D)建立索引以使數(shù)據(jù)用戶能夠迅速地確定所需要的原始索引值i。這一問題在邊界P(D)中元素具有不規(guī)則邊界時(shí)會(huì)顯得尤為突出,例如當(dāng)Bj e P(D)為一 voronoi cell時(shí)(此時(shí)Bj即是任意形狀的的凸多邊形)。問題三保證IE(Gi) =Ie(Gj) I (i Φ j),如此服務(wù)器才不會(huì)根據(jù)劃分(密文)的大小情況區(qū)分出它們,進(jìn)而了解劃分情況。在任意安全加密算法E中我們都需保證這一點(diǎn),因此需對G (D)加以強(qiáng)制約束GiIb=IGjIb (i關(guān)j),其中Gi |b表示劃分Gi的字節(jié)數(shù)(注意區(qū)分表示Gi中數(shù)據(jù)點(diǎn)的個(gè)數(shù)為|G」)。問題四數(shù)據(jù)用戶在本地計(jì)算出滿足nn(q,D) e Gi的原始索引值i后,不應(yīng)將i直接送至服務(wù)器獲取E (Gi),這樣方可保證服務(wù)器不會(huì)在查詢處理過程中獲知任何關(guān)于劃分情況的信息。若數(shù)據(jù)用戶只向服務(wù)器發(fā)送i的密文,那么這一問題就不存在了 ;但這意味著服務(wù)器必須能通過i的密文查找到E(Gi)。步驟S2,數(shù)據(jù)用戶或數(shù)據(jù)主給定參數(shù)K,數(shù)據(jù)主根據(jù)所述參數(shù)k將所述VOTonoi圖G(D)分割成為k個(gè)劃分G1,, Gk,記錄每個(gè)劃分對應(yīng)的邊界P (D) = {B” . . .,BJ,其中,每個(gè)劃分互不相交,不同劃分包含的數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k大于等于I且小于等于N。具體的,根據(jù)用戶給定的參數(shù)k將D分割為k部分,每個(gè)這樣的部分稱為一個(gè)“劃分”(各劃分之間允許相交,即各劃分可含有相同數(shù)據(jù)點(diǎn)),即有G(D)HG1,. . .,Gk},然后將傳送至所述服務(wù)器。在這個(gè)過程中,還需對各劃分的“幾何邊界”P⑶=取,...,BJ (其中Bi為劃分Gi的幾何邊界)進(jìn)行存儲(chǔ),這樣的信息在保證足夠描述出劃分情況的前提下,所占空間當(dāng)然是越小越好。這里先考慮一種極端情形如果令k=N (N為數(shù)據(jù)集D的數(shù)據(jù)點(diǎn)的個(gè)數(shù),S卩|D| ),那么每個(gè)Gi即由單一數(shù)據(jù)點(diǎn)Pi e D構(gòu)成的集合,而邊界P (D)即為D的voronoi cell的集合。設(shè)Pi的 voronoi cell為VcJpi為Vci所包含),那么給定任意查詢點(diǎn)q,數(shù)據(jù)用戶需查找包含q的voronoi cell ;假定qVCi,則數(shù)據(jù)用戶需向服務(wù)器請求獲取E(Gi);這里顯然有nn (q, D) =Pi 以及 Gi= {pj ,而算法返回 nn (q, E—1 (E (Gi))) =nn (q, {pj) =Pi,可見為正確結(jié)果。可以考慮把上述思想推廣應(yīng)用到k〈〈N的一般情形。步驟S2具體包括步驟S21和步驟S22 步驟S21,當(dāng)所述外包數(shù)據(jù)庫為一維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為兩個(gè)相鄰真實(shí)數(shù)據(jù)點(diǎn)之間的垂直平分線;具體的,當(dāng)所述外包數(shù)據(jù)庫為一維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為兩個(gè)相鄰真實(shí)數(shù)據(jù)點(diǎn)之間的垂直平分線。為了解決問題一和問題二,規(guī)定G(D)中的各個(gè)劃分必須具有規(guī)則形狀。如圖3所示,在一維情形下存在一個(gè)“最優(yōu)方案”的,它可以產(chǎn)生大小平衡且互不相交的劃分,這是因?yàn)橐痪S數(shù)據(jù)點(diǎn)的voronoi圖都是由連續(xù)而不相交的區(qū)間構(gòu)成,為生成“完全平衡”(即大小相等)的劃分,只需在D中找到其1/k,. . .,(k-1)/k分位點(diǎn),然后用它們產(chǎn)生G(D),這些分位點(diǎn)所對應(yīng)voronoi cell的邊界以及土 00確定了P(D) = IB1,. . . , Bj ο上述查找(k-Ι)個(gè)分位點(diǎn)并通過它們對D的voronoi圖進(jìn)行劃分的過的程可通過對D的一次線性掃描完成。因此,該算法在外存模型中的10 (輸入/輸出)代價(jià)為0(N log N)。由于每個(gè)劃分大小均為|0|八=~1^,因此61大小均為IE (N/k) |,故而E (D)大小為k|E(N/k)| ;并且顯然P(D)的大小是0(k)的。步驟S22,當(dāng)所述外包數(shù)據(jù)庫為二維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為由與所述voronoi圖的X坐標(biāo)軸和Y坐標(biāo)軸平行的直線圍成的格子,用平行于Y坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行Y坐標(biāo)軸的直線上的相鄰的劃分,或用平行X坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行X坐標(biāo)軸的直線上的相鄰的劃分以生成所述格子,直至voronoi圖中的劃分的個(gè)數(shù)大于或等于所述參數(shù),其中,每次分割時(shí),使平行于Y坐標(biāo)軸的直線或平行X坐標(biāo)軸的直線穿過voronoi圖中的多邊形的頂點(diǎn)最多,當(dāng)劃分的個(gè)數(shù)大于所述參數(shù)k時(shí),通過逐步合并最小劃分的方式將voronoi圖中的劃分的個(gè)數(shù)減至所述參數(shù)k。具體的,為了解決上述問題一和問題二,規(guī)定G(D)中的各個(gè)劃分必須具有規(guī)則形狀,具體來說就是,每個(gè)劃分必須被限定在一個(gè)由與坐標(biāo)軸(X坐標(biāo)軸或Y坐標(biāo)軸)平行的邊圍成的“格子”(box)中。然而,這意味著劃分Gi的邊界Bi可能包含或貫穿多個(gè)voronoi cell,如圖2所示,其中虛線為劃分的邊界B1和B2,代表不同數(shù)據(jù)點(diǎn)P1^P16的凸多邊形為voronoi cell。為了解決上述問題二,設(shè)D中點(diǎn)Pi對應(yīng)的voronoi cell為Vci,為保證數(shù)據(jù)用戶能夠?yàn)镻(D)編制索引以及輕松高效地確定出滿足nn(q,D) e Gi的索引值i,可以確定如下劃分原則設(shè)Gi的幾何邊界由Bi表示,那么原則一 =Bi是一個(gè)由與坐標(biāo)軸平行的邊圍成的“格子”;原則二 =BpBl= 0 ( 1>j ),即G(D)中不同的劃分其對應(yīng)的邊界是互不相交的;原則三如果Bi完全包含或相交于一個(gè)voronoi cell集\^,那么Gi= (PjlVcj e Vj ,但不同的Gi可能會(huì)含重復(fù)的數(shù)據(jù)點(diǎn)。如在圖2中,深色的voronoi cell里面的數(shù)據(jù)點(diǎn)會(huì)被同時(shí)加入到劃分 G1 和 G2 中,即 G1= {ρ1; P2, P3, P4, P5, P6, P7, P8. PiJ,G2= {p5, P6, P7, P8. Pi。,Pu,
Pl2> Pl3> Pl4> Pl5> Pl6> P9}。引理I.如圖2所示,依照上述劃分原則,若nn (q, D) =Pi且q e Bj,則有Pi e G」。證明若有查詢點(diǎn)q e Bj,即q屬于B」所框定的區(qū)域,那么q必屬于一個(gè)被B」完全包含或貫穿的voronoi cell。依照上述劃分原則,這一 voronoi cell必屬于V」,而Vj確定了 Gj的元素。假設(shè)q包含在Vei中(則有nn(q,D)=Pi),由上可知,vci e V」,繼而Pi e Gj。
由上述引理I可知,步驟S6中,對于任意查詢點(diǎn)q,數(shù)據(jù)用戶端的工作就是找到滿Mqe e P (D),即在P (D)中找到一個(gè)包含q的格子,這實(shí)際上是一個(gè)“點(diǎn)位置查詢”(point location query)的過程。由于P (D)中的格子都是不相交的,但會(huì)覆蓋整個(gè)外包數(shù)據(jù)庫D的VOTonoi圖的空間,因此有且只有一個(gè)格子包含點(diǎn)q ;另外,由于這些格子的邊都是與坐標(biāo)軸平行的,因此數(shù)據(jù)用戶能夠方便地為P(D)編制原始索引值i。之后,數(shù)據(jù)用戶便可以向服務(wù)器請求獲取E(Gj),這是因?yàn)橛伤鲆鞩告,只要q被包含在Bj中,那么就有nn (q, D) e Gj。通過步驟S7,一旦E(Gj)被服務(wù)器返回,步驟S8中數(shù)據(jù)用戶便可以由E—1對E(Gj)解密得到Gy之后,數(shù)據(jù)用戶通過識(shí)別隨機(jī)字符*,可以輕松地將之前數(shù)據(jù)主通過“隨機(jī)填補(bǔ)操作”添加在中的隨機(jī)字節(jié)序列去除;最后,數(shù)據(jù)用戶可得nn(q,D)=nn(q, Gj)。然而別忘了,數(shù)據(jù)用戶在向服務(wù)器請求獲取E(Gj)時(shí)需要解決問題四,通過步驟S4數(shù)據(jù)主根據(jù)預(yù)設(shè)的哈希函數(shù)對每個(gè)劃分建立對應(yīng)的索引,并將加密后的所有劃分及其對應(yīng)的加密后的所有索引發(fā)送給服務(wù)器存儲(chǔ)之后,在步驟S6中,讓數(shù)據(jù)用戶向服務(wù)器發(fā)送E(g(j))。步驟S7中在服務(wù)器端,數(shù)據(jù)主發(fā)送來的E(g(i))與E(Gi)存在配對關(guān)系,服務(wù)器在接收到數(shù)據(jù)主發(fā)送來的E(D)后,便會(huì)建立一個(gè)含k個(gè)記錄的哈希表T,將E(g(i))映射到E (Gi)。如此,數(shù)據(jù)用戶給定一個(gè)請求E (g⑴),服務(wù)器便可以通過在T中查找,最終找到E(Gi),這個(gè)過程的時(shí)間復(fù)雜度僅為0(1),因此服務(wù)器可以通過上述過程由E(g(j))高效地查找到E (Gj)。步驟S31,數(shù)據(jù)主在所述VOTonoi圖中隨機(jī)添加k’個(gè)劃分,并在k’個(gè)劃分中分別添加虛擬數(shù)據(jù)點(diǎn),記錄每個(gè)劃分對應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的虛擬數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k’為正整數(shù)。具體的,在數(shù)據(jù)主生成G(D)和P(D)后,只需在G(D)中添加k'個(gè)隨機(jī)劃分,然后加密傳送給服務(wù)器,如此服務(wù)器得到的劃分?jǐn)?shù)為k+k/,從而k值得到了隱蔽。步驟S3,數(shù)據(jù)主獲取所有劃分中包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長字節(jié)數(shù),在除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長字節(jié)數(shù)。具體的,假設(shè)數(shù)據(jù)主已經(jīng)生成了 G(D)及P(D)為了上述解決問題三,數(shù)據(jù)主需保證IGiMGjI設(shè)GxSG(D)中具有最多個(gè)數(shù)據(jù)點(diǎn)(下稱為“大小”,size)的劃分,即對于任意i e [l,k],都有IGiI ( |GX|。對于各個(gè)劃分Gi (i關(guān)X),對其添加(IGxIb-IGiIb)個(gè)隨機(jī)字節(jié),這里可用字符*代表任意隨機(jī)字節(jié)以與匕中的實(shí)際數(shù)據(jù)點(diǎn)進(jìn)行區(qū)分(*代表的這些隨機(jī)字符都不會(huì)在Gi中實(shí)際出現(xiàn)),可稱此過程為“隨機(jī)填補(bǔ)操作”。顯然,經(jīng)此“隨機(jī)填補(bǔ)操作”,對于任意劃分Gi,都有IGxIb=IGiIbtj這樣,在后續(xù)步驟S4中,無論數(shù)據(jù)主使用何種安全加密算法生成{E (G1),. . .,E (Gk)},都有IE (Gi) | b= | E (Gj) | b(i幸j),從而保證服務(wù)器無法在G (D)中區(qū)分出任意某個(gè)劃分,從而了解到劃分情況。步驟S4,數(shù)據(jù)主根據(jù)預(yù)設(shè)的哈希函數(shù)對每個(gè)邊界建立對應(yīng)的索引,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有與相應(yīng)的邊界對應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ)。具體的,為了解決上述問題四,數(shù)據(jù)主應(yīng)用一秘密隨機(jī)哈希函數(shù)g:[l,N] — Z+,最終將E(D) = {(E (g (I)),E (G1) ),...,(E (g (k) ),E (Gk))}發(fā)布給服務(wù)器,將P (D) 'E-1 和 g發(fā)布給數(shù)據(jù)用戶。步驟S5,數(shù)據(jù)主將所有劃分對應(yīng)的邊界、與所述加密算法對應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ),具體的,數(shù)據(jù)主將所有劃分對應(yīng)的邊界P(D)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ)。將P(D)存儲(chǔ)在數(shù)據(jù)用戶端,這樣對于任意查詢點(diǎn)q,數(shù)據(jù)用戶能夠高效地確定出原始索引值i滿足rm(q,D) e Gi,根據(jù)所述哈希函數(shù)計(jì)算出與該原始索引值i(邊界)對應(yīng)的索引,然后根據(jù)該索引向服務(wù)器提出請求獲取到E (Gi),這個(gè)過程完全可以在服務(wù)器不知道具體原始索引值i值的情況下進(jìn)行,如此可以保證服務(wù)器不會(huì)在答復(fù)查詢的過程中了解到劃分情況;最后,數(shù)據(jù)用戶自然能夠輕松得出rm (q, D) =nn (q, Γ1 (Ε (Gi)) )。步驟S6,所述數(shù)據(jù)用戶確定真實(shí)查詢點(diǎn)q,根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引E(g(j))發(fā)送給服務(wù)器,即數(shù)據(jù)用戶將 E0)) = {(E(g⑴),Ε%)),···,(E(g(k)),E(Gk))}傳送給服務(wù)器。步驟S7,所述服務(wù)器根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分。步驟S8,所述數(shù)據(jù)用戶根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真實(shí)查詢點(diǎn)的最近鄰的真實(shí)數(shù)據(jù)點(diǎn);步驟S9,所述數(shù)據(jù)用戶確定偽查詢點(diǎn),根據(jù)所述偽查詢點(diǎn)確定包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引,并將包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引發(fā)送給服務(wù)器。具體的,服務(wù)器可能會(huì)通過統(tǒng)計(jì)對各個(gè)劃分的查詢頻度,結(jié)合相關(guān)“背景知識(shí)”,大致判斷出該劃分所對應(yīng)的實(shí)際地理區(qū)域,例如,假設(shè)D代表紐約地區(qū),基于對紐約某些區(qū)域?qū)嶋H被“關(guān)注”程度的了解,服務(wù)器便可以推斷出被最頻繁查詢的劃分對應(yīng)的很可能就是曼哈頓,為避免此類隱私泄露,還是可以使用“偽查詢”的辦法,讓數(shù)據(jù)用戶隨機(jī)地發(fā)出“偽查詢”,如此使得各劃分在整體上有較為接近的查詢頻度即可以讓數(shù)據(jù)用戶發(fā)出一些針對上述隨機(jī)劃分的“偽查詢”請求,即數(shù)據(jù)用戶隨機(jī)地向服務(wù)器請求E (g (j)),而這里j e [k+l,k+k/ ],這樣服務(wù)器便無法確定哪些是添加的隨機(jī)劃分,從而不能確定出k值。步驟S10,所述服務(wù)器根據(jù)接收到的包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包含所述偽查詢點(diǎn)的劃分。上述步驟S6至SlO的查詢過程可以根據(jù)實(shí)際需要不斷重復(fù),直至無查詢需求。通過步驟S31、步驟S9和步驟S10,可以很容易地使k對服務(wù)器透明。本實(shí)施例中提供一種MinDp劃分方法,這種方法遵循了上述提出的劃分原則一至三,由于加入了 “隨機(jī)填補(bǔ)操作”,因此很顯然,本實(shí)施例的通信代價(jià)以及服務(wù)器端的存儲(chǔ)代價(jià)是由最大劃分與各劃分的大小之差,即IGjJGil,或更準(zhǔn)確地,IE(Gx) I-IE(Gi) I)決定的,也就是說,為了降低通信代價(jià)以及服務(wù)器端的存儲(chǔ)代價(jià),在設(shè)計(jì)劃分方法時(shí)還應(yīng)盡可能地遵循原則四盡可能生成大小“平衡”(相等或接近)的劃分。MinDp方法為數(shù)據(jù)主根據(jù)所述參數(shù)K將所述VOTonoi圖分割成為k個(gè)劃分的步驟中,用平行于Y坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行Y坐標(biāo)軸的直線上的相鄰的劃分,或用平行X坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行X坐標(biāo)軸的直線上的相鄰的劃分以生成所述格子,直至voronoi圖中的劃分的個(gè)數(shù)大于或等于所述參數(shù)k,其中,每次分割時(shí),使平行于Y坐標(biāo)軸 的直線或平行X坐標(biāo)軸的直線穿過voronoi圖中的多邊形的頂點(diǎn)最多,當(dāng)劃分的個(gè)數(shù)大于所述參數(shù)k時(shí),通過逐步合并最小劃分的方式將voronoi圖中的劃分的個(gè)數(shù)減至所述參數(shù)k。具體的,MinDp方法中為了使G(D)中的(IGjJ-IGil)值達(dá)到最小,可以采用一種“貪心”策略。具體來說,初始時(shí)令ΡΦ) = {Ω},其中Ω代表D對應(yīng)voronoi圖的全部區(qū)域;隨后,迭代地用垂直直線(平行于Y坐標(biāo)軸的貫穿Ω的直線,下同)或水平直線(平行于X坐標(biāo)軸的貫穿Ω的直線MfP(D)中格子逐步切小,直至P(D)中格子數(shù)達(dá)到k。為簡明起見,下面將此構(gòu)造過程中處于第i步驟狀態(tài)的P(D)表示為Pi(D)。在任意的第i步,用MinCs中提到的方式為PJD)中的格子編制索引對{x,y}?,F(xiàn)在假設(shè)切至第i步時(shí),已用了%條垂直線和匕條水平線,那么在Pi (D)中便有了(ai+l) (bi+1)個(gè)格子,即 Pi (D) = IC1, ”···,
Cl’bi+l,· · ·,Cai+1,1,· · ·,Cai+1,bi+1} ο 那么如果把接下來MinDp的切割過程看做一個(gè)函數(shù)的話,就相當(dāng)于以Pi(D)(或%條垂直線和匕條水平線)為其輸入狀態(tài),而輸出一條新的分割線I (水平線或垂直線)。這里用到的基本思路是每一步中總是選取當(dāng)前最大的劃分進(jìn)行切割,此即為“貪心”策略。這里,將格子Cx,y e Pi(D)對應(yīng)的劃分表示為Gx, y。如圖2所示,需注意每個(gè)格子Cx,y通過MinDp方法總可以產(chǎn)生一個(gè)對應(yīng)的劃分Gx,y。假設(shè)當(dāng)前最大劃分為Ga,e(a e [l,ai+l], β e [l,bi+l]),那么下一條切割線I的選取范圍即為Ga,e對應(yīng)的XY坐標(biāo)范圍。然而,即使我們只考慮Ga,e的XY坐標(biāo)范圍,I的選擇范圍應(yīng)是無窮的。這是因?yàn)?,如果假設(shè)Ga,e由其左下角點(diǎn)(xl,yl)和右上角點(diǎn)(xu, yu)給定;那么,[xl, xu]范圍內(nèi)的任意垂直線和[yl,yu]范圍內(nèi)的任意水平線都可以作為Ga,e的切割線加以考慮。為解決以上問題,如圖2所示,可以發(fā)現(xiàn)如引理2。引理2.當(dāng)一個(gè)格子通過MinDp方法產(chǎn)生一個(gè)劃分時(shí),其邊界線穿過的voronoi頂點(diǎn)(相對該邊界線只是從“中間”穿過一個(gè)voronoi cell)越多,產(chǎn)生的劃分越小。證明如若邊界線I穿過某voronoi cell (設(shè)為Vci),但并非穿過Vci的頂點(diǎn),那么VCi對應(yīng)的點(diǎn)Pi必會(huì)同時(shí)分配給I兩側(cè)的劃分,由此可得引理2的正確性。引理2的一個(gè)例子就是,在圖2中,p9只被分配給了劃分G2,而沒有分配給匕。由引理2,可以通過一種進(jìn)一步的“貪心”策略確定切割線I。令V(Ga,e)表示這樣的voronoi頂點(diǎn)集合其所屬的voronoi cell的坐標(biāo)范圍完全在[xl, xu]和[yl, yu]之中,點(diǎn)(xl, yl)和點(diǎn)(xu, yu)分別為Ga,e左下角和右上角。那么在確定I時(shí)只需考慮其水平或垂直穿過V e V(Ga,0)的情形。這樣的I將Ga,e及其對應(yīng)的最大劃分Ga,e切割開來,得Pi+1(D)。不難得知,這樣的I可有2|V(Ga,e)|個(gè)可能的選擇;從中選擇一個(gè),使之滿足Pi+1(D)中的最大劃分的數(shù)據(jù)點(diǎn)數(shù)最小。一旦I確定,即將PJD)更新為Pi+1(D),并如此繼續(xù),直至Pi+1(D)中格子數(shù)達(dá)到k。由于上述劃分方法是基于盡可能減少“重復(fù)點(diǎn)”的思想,因此稱之為“MinDp(Minimum Duplicate Points)方法”。這里需注意的是,劃分至最后一步時(shí),MinDp方法產(chǎn)生的劃分?jǐn)?shù)可能會(huì)大于k ;如若這樣,可以通過逐步合并最小劃分的方式將劃分?jǐn)?shù)減至k,對此我們這里不做贅述。圖4給出了 MinDp方法應(yīng)用的一個(gè)示例,其中,圖4中虛線I代表試切割過程。MinDp方法最多需進(jìn)行(k_l) 步劃分,例如,所有劃分線均為水平或垂直時(shí);在每一步,需試驗(yàn)2 I V(Ga,e) I條可能的劃分線。由于平均單個(gè)voronoi cell的頂點(diǎn)數(shù)小于6,并且有N個(gè)voronoi cell,因此O(| V(Ga,e) |) =N。對于每條切割線1,需找出與其相交的voronoi cell以便后續(xù)產(chǎn)生劃分,這在最壞情況下需要O(N)的復(fù)雜度。綜上,最壞情形下MinDp的復(fù)雜度為0(kN2)。需注意,現(xiàn)實(shí)中幾乎不會(huì)出現(xiàn)上述最壞情形,而往往是要么只是
V(Ga;0)為0(N),要么只是I穿過的VOTonoi cell數(shù)為O (N),兩者只占其一,故總的復(fù)雜度僅為0(kN)。最后特別值得一提的是,P(D)的大小顯然是0(k)的。更詳細(xì)的,可用C++語言對上述MinDp方法進(jìn)行實(shí)現(xiàn)。本實(shí)現(xiàn)的實(shí)驗(yàn)中,使用Qhull庫對數(shù)據(jù)集D進(jìn)行了 voronoi劃分;使用最新的Crypto++庫進(jìn)行了加密。隨后實(shí)驗(yàn)的進(jìn)行是在一臺(tái)配置為Intel Xeon 3.07GHz CPU、8GB內(nèi)存的Linux機(jī)上。針對二維外包數(shù)據(jù)庫D,實(shí)驗(yàn)時(shí)具體數(shù)據(jù)集使用了取樣自美國加利福尼亞州(CA)和德克薩斯州(TX)的千萬個(gè)數(shù)據(jù)點(diǎn)作為原始數(shù)據(jù)集,這些數(shù)據(jù)都來自O(shè)penStreetMap項(xiàng)目。在CA和TX數(shù)據(jù)集中,各隨機(jī)選取2,000,000個(gè)數(shù)據(jù)點(diǎn)作為最大實(shí)驗(yàn)數(shù)據(jù)集Dmax,并基于Dmax形成了較小規(guī)模的數(shù)據(jù)集。這里需特別一提的是,當(dāng)改變數(shù)據(jù)集大小以測試本實(shí)施例的劃分方法的可擴(kuò)展性時(shí),會(huì)確保小數(shù)據(jù)集總是大數(shù)據(jù)集的子集,這樣是為了避免D中具體數(shù)據(jù)點(diǎn)變化帶來的影響,從而單單體現(xiàn)出|D|的影響。對實(shí)驗(yàn)所涉及參數(shù)的默認(rèn)設(shè)置如下|D|=106,k=625 ( |D|、k分別為數(shù)據(jù)點(diǎn)的個(gè)數(shù)和最后的劃分?jǐn)?shù));數(shù)據(jù)點(diǎn)的個(gè)數(shù)默認(rèn)使用來自CA的數(shù)據(jù);使用AES加密算法進(jìn)行加密,其key大小和塊大小均為256比特。這里需特別一提的是,實(shí)驗(yàn)過其他加密算法后,發(fā)現(xiàn)不同加密算法對本實(shí)施例的性能幾乎不構(gòu)成影響。因此任何安全的公共密鑰或?qū)ΨQ密鑰加密算法都可用于實(shí)現(xiàn)本實(shí)施例,并且不同加密算法實(shí)現(xiàn)本實(shí)施例性能都可由實(shí)驗(yàn)說明。最后要說明的是,在全部實(shí)驗(yàn)中,除非特別聲明,當(dāng)將某個(gè)參數(shù)作為變量進(jìn)行研究時(shí),其他參數(shù)均為默認(rèn)值。具體實(shí)驗(yàn)結(jié)果如下I.預(yù)處理階段在預(yù)處理階段,數(shù)據(jù)主端需進(jìn)行劃分和加密兩項(xiàng)工作,它們均主要受劃分?jǐn)?shù)k和數(shù)據(jù)集大小|D|的影響。圖5a、5b所示分別為不同劃分方法下k和IdI對運(yùn)行時(shí)間的影響。其中,圖5a顯示MinDp方法的劃分時(shí)間代價(jià)(partition time)均隨k線性增長。圖5b顯示的是數(shù)據(jù)大小|D I變化(從250,000到2,000, 000)對劃分時(shí)間代價(jià)的影響。但盡管MinDp方法在最壞情況下的復(fù)雜度是O (kN2),但在現(xiàn)實(shí)(實(shí)驗(yàn))中,它的處理時(shí)間與N也是呈線性關(guān)系,這是因?yàn)樗鲎顗那樾我灰粭l分割線會(huì)同全部Nf VOTonoi cell相交一在實(shí)際數(shù)據(jù)集中幾乎是不可能發(fā)生的。事實(shí)上,在MinDp的每一步分割中,與分割線相交的voixmoi cell數(shù)幾乎可以認(rèn)為是常數(shù)個(gè),因此它們的復(fù)雜度可認(rèn)為是0(kN)的。下面來看MinDp方法下產(chǎn)生的劃分G(D) = {G1,. . .,Gk}的大小(進(jìn)行“隨機(jī)填補(bǔ)操作”前)。由于“隨機(jī)填補(bǔ)操作”會(huì)通過填補(bǔ)隨機(jī)字節(jié)將所有劃分的大小增至與最大劃分一樣大,因此以下兩個(gè)數(shù)值對于評估本實(shí)施例的劃分方法的性能至關(guān)重要最大劃分的大小IgJ和(IgxI-IgJ)的方差(i e [i,k])。IGx決定了服務(wù)器端的存儲(chǔ)代價(jià)和每次查詢的通信代價(jià);(IGxI-IGiI)的方差決定了填補(bǔ)操作本身的代價(jià)。為了將這些數(shù)值在一個(gè)圖中簡
單直觀地呈現(xiàn),圖6a、6b分別顯示了劃分大小的平均值2]|Gi (avg partition size)、最
大值IGxI=HiaxieLldIGiI和最小值IGyI=IninietuldIGiI隨參數(shù)k和|D|的變化情況。最后,如圖6a、6b所示,MinDp方法,其劃分大小的平均值和最大值隨k增加是遞減的。下面通過圖7a、7b來看在預(yù)處理階段MinDp方法的總運(yùn)行時(shí)間(totalrunningtime)。所謂總運(yùn)行時(shí)間,具體含劃分和加密兩個(gè)步驟的時(shí)間(voronoi劃分時(shí)間和“隨機(jī)填補(bǔ)操作”時(shí)間也包含在內(nèi),不過它們相對劃分和加密時(shí)間來說要小一些)。在圖7a、7b中,還加入了所述Send-D方法的預(yù)處理時(shí)間以作參照,Send-D方法的預(yù)處理時(shí)間就是將D看做一個(gè)整體進(jìn)行加密的時(shí)間。另外,從圖7a、7b中可見,MinDp方法預(yù)處理階段的總時(shí)間隨k或|D|增加都是線性增長的。再來看最終產(chǎn)生的E(D)的大小,這是影響服務(wù)器端存儲(chǔ)代價(jià)和數(shù)據(jù)主至服務(wù)器通信代價(jià)的關(guān)鍵因素。進(jìn)行過隨機(jī)填補(bǔ)操作后,每個(gè)劃分都具有了與最大劃分相同的大小,因此,Ie(D) I =kIE(Gx) I =kIE(Gi) I (i e [l,k])。圖8a、8b分別顯示了 MinDp方法下E(D) (size of E(D))隨k或D變化的情況。類似于針對圖7a、7b的討論,也把D的大小和將D作為一個(gè)整體進(jìn)行加密得到的E (D)的大小(即Send-D的代價(jià))加入圖8a、8b中以作參照。顯然,MinDp方法中E(D)的大小隨k或|D|增加都是線性增長的。Send-D對應(yīng)的E(D)大小也是隨|D|線性增長的,但卻與k無關(guān)。自然,相對直接傳送外包數(shù)據(jù)庫D的明文本身,MinDp方法會(huì)引入數(shù)據(jù)主至服務(wù)器的通信代價(jià)和服務(wù)器端的存儲(chǔ)代價(jià)。數(shù)據(jù)用戶端的存儲(chǔ)代價(jià)是取決于P (D)的大小的,并且這一代價(jià)在MinDp方法中是o(k)。由于k相對數(shù)據(jù)點(diǎn)的個(gè)數(shù)|d|來說小得多(對于一個(gè)包含幾百萬個(gè)點(diǎn)的數(shù)據(jù)集來說,分割出幾百個(gè)劃分即已足夠),因此上述存儲(chǔ)代價(jià)幾乎是可以忽略的。最后需聲明的是,在實(shí)驗(yàn)中觀察到使用哪種數(shù)據(jù)集(CA數(shù)據(jù)集或TX數(shù)據(jù)集)對實(shí)驗(yàn)結(jié)果幾乎沒有什么明顯的差別,因此為簡便起見,這里沒有討論TX數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果O2.查詢處理代價(jià)首先,對任意查詢點(diǎn)q,采用本發(fā)明的方法,服務(wù)器至數(shù)據(jù)用戶端的通信代價(jià)僅僅取決于|E(Gp|。然而,正如上述對圖8a、8b結(jié)果的分析,由于進(jìn)行了隨機(jī)填補(bǔ)操作,因此每個(gè)劃分有了相同的大小,并且IE(Gi) | = |E(D) |/k (i e [l,k])。相反,在Send-D方法中,服務(wù)器至數(shù)據(jù)用戶端的通信代價(jià)就是對數(shù)據(jù)集D整體加密的大小,S卩|E(D as onemessage)!。因此,雖然|E(D as one message)比MinDp方法生成的|E(D)|小得多(如圖8a、8b所示),如圖9a、9b所示,本發(fā)明的方法中服務(wù)器至數(shù)據(jù)用戶端的查詢通信代價(jià)(query communication)仍然比 Send-D 的小得多。下面,再來看數(shù)據(jù)用戶端的查詢處理代價(jià)。每次實(shí)驗(yàn),都隨機(jī)進(jìn)行了 100次查詢,然后得到如圖10a、10b所示的MinDp方法的平均處理時(shí)間。圖IOa顯示MinDp方法的查詢時(shí)間(query time)是隨k增大而遞減的,這顯然是因?yàn)閗增大導(dǎo)致了劃分變小。相比Send-D,MinDp方法的性能要好得多。圖IOb所示,而當(dāng)|D|增加時(shí),MinDp的查詢時(shí)間都隨之線性增長。
本發(fā)明的算法效率包括預(yù)處理階段的時(shí)空代價(jià)和查詢階段的查詢代價(jià),所述預(yù)處理階段的時(shí)空代價(jià)包括時(shí)間代價(jià)和存儲(chǔ)代價(jià),查詢階段的查詢代價(jià)包括時(shí)間代價(jià)和通信代價(jià)I. SVD算法進(jìn)行預(yù)處理時(shí)的時(shí)間代價(jià)主要體現(xiàn)在以下三階段(I)得到 D 的 voronoi 圖;(2)對D進(jìn)行劃分;(3)生成 E(D)。針對一維和二維的外包數(shù)據(jù)庫,階段(I)的代價(jià)是O(NlogN)的。而在第(2)階段(對D進(jìn)行劃分),一維情形下,很顯然可以在對數(shù)據(jù)進(jìn)行排序后通過一次遍歷得到所需的分位點(diǎn),因此階段2的代價(jià)也是O(NlogN)的;二維情形下,該階段的代價(jià)取決于我們所選用的劃分方法。MinDp方法的代價(jià)分別為0(kN)。階段(3)的代價(jià)同加密代價(jià)呈線性關(guān)系。假設(shè)通過加密算法E對信息m進(jìn)行加密的代價(jià)為e(m);由于“隨機(jī)填補(bǔ)操作”將每個(gè)劃分的大小都增至最大,因此可得生成E (D)的
時(shí)間復(fù)雜度是 ο(ke( IGx |b))的,其中 Gx = argmaxG_eG(£)) | Gi |2.預(yù)處理階段的存儲(chǔ)代價(jià)服務(wù)器端的存儲(chǔ)代價(jià)為IE(D) I,是0(k|E(Gx) I)的。數(shù)據(jù)用戶端的存儲(chǔ)代價(jià)為P (D)和索引i所占的空間。對于同類型的大部分的索引結(jié)構(gòu)(如kd樹、R樹、線段樹等),i的大小是與Ip(D) I線性相關(guān)的,因此數(shù)據(jù)用戶端的存儲(chǔ)代價(jià)是0( IP (D) I)的;至于P(D),一維情形下,P (D)僅僅含有(k-Ι)個(gè)數(shù)值,因此Ip(D) =k-i ;二維情形下,Ip(D) I由所選用的劃分方法所決定。MinDp方法的IP(D) I分別是0(k)。3.查詢階段的查詢代價(jià)查詢階段的時(shí)間代價(jià)主要體現(xiàn)在兩端數(shù)據(jù)用戶端和服務(wù)器端。其中,數(shù)據(jù)用戶需通過P(D)的索引i查找包含查詢點(diǎn)q的Bi e P(D),其中任意Bi都是由平行于坐標(biāo)軸的邊圍成的d維(一至三維)格子;由于已保證P (D)中的任意兩個(gè)格子不會(huì)相交,且必有一個(gè)格子包含q,因此這種查找實(shí)際是一個(gè)輸出大小為I (結(jié)果有且只有一個(gè))的典型“點(diǎn)位置查詢”過程;在一二維情形下,以上過程的代價(jià)僅是O(Iogk)的。在服務(wù)器端,數(shù)據(jù)用戶給定一個(gè)請求E (g(j)),服務(wù)器便通過查詢哈希表T來找到E(Gj),這個(gè)過程是O (I)的。系統(tǒng)中的單次通信代價(jià)為|e(d)|和Ip⑶|,這可由我們上面對存儲(chǔ)代價(jià)的討論自然得出。查詢的通信代價(jià)為|E(g(j)) +IE(Gj) I,或|E(g(j)) +IE(Gx) I,或E(g(j)) | + |E(Gj) |/k。在本發(fā)明的安全性方面,由于本實(shí)施例中數(shù)據(jù)用戶僅僅是把E(D) = {(E(g(l)),E(G1)),…,(E(g(k)),E(Gk)M傳送給服務(wù)器,并且在查詢處理過程中,只有E (g(j))是對服務(wù)器可見的,由此我們可證得下述定理I。定理I.假設(shè)E是某種已在標(biāo)準(zhǔn)安全模型M (如,IND-CPA)中被證明安全的加密算法,那么在M中SVD算法與E具有相同的安全性。證明在整個(gè)處理過程中,服務(wù)器只能看到來自數(shù)據(jù)主的E(D)和來自數(shù)據(jù)用戶的E(g(j))隨機(jī)序列,因此,服務(wù)器只能了解到劃分個(gè)數(shù)k。由于“隨機(jī)填補(bǔ)操作”保證了Ie(Gj) =IE(Gi) I (i Φ j),如果E在M中是安全的,那么顯然,服務(wù)器不會(huì)了解到關(guān)于任意劃分Gi的邊界信息。再者,因?yàn)殡S機(jī)哈希函數(shù)g: [I, N] — Z+不為服務(wù)器所知,因此服務(wù)器 不可能在僅僅被給定E (g (j))的情況下還原出原始索引值i,也即,服務(wù)器不可能知道E (D)中(E(g⑴,E(Gi))對的索引值i。通過步驟S31、步驟S9和步驟S10,可以很容易地使k對服務(wù)器透明。綜上,本實(shí)施例能夠在數(shù)據(jù)用戶對服務(wù)器上存儲(chǔ)的外包數(shù)據(jù)庫中進(jìn)行最近鄰查詢時(shí),使服務(wù)器無法獲知外包數(shù)據(jù)庫中的數(shù)據(jù)、數(shù)據(jù)用戶的查詢點(diǎn)及最近鄰的查詢結(jié)果,保證數(shù)據(jù)安全。如圖11所示,本發(fā)明還提供另一種基于最小冗余劃分和隨機(jī)數(shù)的安全最近鄰查詢系統(tǒng),包括數(shù)據(jù)主I、數(shù)據(jù)用戶2和服務(wù)器3。數(shù)據(jù)主1,用于給定所述參數(shù)k,生成包含外包數(shù)據(jù)庫的所有真實(shí)數(shù)據(jù)點(diǎn)的voronoi圖,其中,每個(gè)真實(shí)數(shù)據(jù)點(diǎn)的字節(jié)數(shù)相同,外包數(shù)據(jù)庫中的真實(shí)數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù),所述外包數(shù)據(jù)庫為一至三維外包數(shù)據(jù)庫;根據(jù)參數(shù)k將所述voronoi圖分割成為k個(gè)劃分,記錄每個(gè)劃分對應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k大于等于I且小于等于N,當(dāng)所述外包數(shù)據(jù)庫為一維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為兩個(gè)相鄰真實(shí)數(shù)據(jù)點(diǎn)之間的垂直平分線,當(dāng)所述外包數(shù)據(jù)庫為二維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為由與所述voronoi圖的X坐標(biāo)軸和Y坐標(biāo)軸平行的直線圍成的格子,所述數(shù)據(jù)主用平行于Y坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行Y坐標(biāo)軸的直線上的相鄰的劃分,或用平行X坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行X坐標(biāo)軸的直線上的相鄰的劃分以生成所述格子,直至voronoi圖中的劃分的個(gè)數(shù)大于或等于所述參數(shù)k,其中,每次分割時(shí),使平行于Y坐標(biāo)軸的直線或平行X坐標(biāo)軸的直線穿過voronoi圖中的多邊形的頂點(diǎn)最多,當(dāng)劃分的個(gè)數(shù)大于所述參數(shù)k時(shí),通過逐步合并最小劃分的方式將VOTonoi圖中的劃分的個(gè)數(shù)減至所述參數(shù)k ;在所述voronoi圖中隨機(jī)添加k’個(gè)劃分,并在k’個(gè)劃分中分別添加虛擬數(shù)據(jù)點(diǎn),記錄每個(gè)劃分對應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的虛擬數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k’為正整數(shù);獲取所有劃分中包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長字節(jié)數(shù),在除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長字節(jié)數(shù);根據(jù)預(yù)設(shè)的哈希函數(shù)對每個(gè)邊界建立對應(yīng)的索引,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有與相應(yīng)的邊界對應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ);將所有劃分對應(yīng)的邊界、與所述加密算法對應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ);數(shù)據(jù)用戶2,用于給定所述參數(shù)k,確定真實(shí)查詢點(diǎn),根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引發(fā)送給服務(wù)器;根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真實(shí)查詢點(diǎn)的最近鄰的數(shù)據(jù)點(diǎn);確定偽查詢點(diǎn),根據(jù)所述偽查詢點(diǎn)確定包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引,并將包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引發(fā)送給服務(wù)器;服務(wù)器3,用于根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分;根據(jù)接收到的包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包 含所述偽查詢點(diǎn)的劃分。綜上所述,本發(fā)明通過數(shù)據(jù)主生成包含外包數(shù)據(jù)庫的所有真實(shí)數(shù)據(jù)點(diǎn)的voronoi圖,其中,每個(gè)真實(shí)數(shù)據(jù)點(diǎn)的字節(jié)數(shù)相同,外包數(shù)據(jù)庫中的真實(shí)數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù),所述外包數(shù)據(jù)庫為一至三維外包數(shù)據(jù)庫;數(shù)據(jù)用戶或數(shù)據(jù)主給定參數(shù)K,數(shù)據(jù)主根據(jù)所述參數(shù)k將所述voronoi圖分割成為k個(gè)劃分,記錄每個(gè)劃分對應(yīng)的邊界,每個(gè)劃分互不相交,不同劃分包含的數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k大于等于I且小于等于N,其中,當(dāng)所述外包數(shù)據(jù)庫為一維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為兩個(gè)相鄰真實(shí)數(shù)據(jù)點(diǎn)之間的垂直平分線,當(dāng)所述外包數(shù)據(jù)庫為二維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為由與所述voronoi圖的X坐標(biāo)軸和Y坐標(biāo)軸平行的直線圍成的格子,用平行于Y坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行Y坐標(biāo)軸的直線上的相鄰的劃分,或用平行X坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行X坐標(biāo)軸的直線上的相鄰的劃分以生成所述格子,直至voronoi圖中的劃分的個(gè)數(shù)大于或等于所述參數(shù),其中,每次分割時(shí),使平行于Y坐標(biāo)軸的直線或平行X坐標(biāo)軸的直線穿過voronoi圖中的多邊形的頂點(diǎn)最多,當(dāng)劃分的個(gè)數(shù)大于所述參數(shù)k時(shí),通過逐步合并最小劃分的方式將voronoi圖中的劃分的個(gè)數(shù)減至所述參數(shù)k ;數(shù)據(jù)主在所述voronoi圖中隨機(jī)添加k’個(gè)劃分,并在k’個(gè)劃分中分別添加虛擬數(shù)據(jù)點(diǎn),記錄每個(gè)劃分對應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的虛擬數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k’為正整數(shù);數(shù)據(jù)主獲取所有劃分中包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長字節(jié)數(shù),在除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長字節(jié)數(shù);數(shù)據(jù)主根據(jù)預(yù)設(shè)的哈希函數(shù)對每個(gè)邊界建立對應(yīng)的索引,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有與相應(yīng)的邊界對應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ);數(shù)據(jù)主將所有劃分對應(yīng)的邊界、與所述加密算法對應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ);所述數(shù)據(jù)用戶確定真實(shí)查詢點(diǎn),根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引發(fā)送給服務(wù)器;所述服務(wù)器根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分;所述數(shù)據(jù)用戶根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真實(shí)查詢點(diǎn)的最近鄰的真實(shí)數(shù)據(jù)點(diǎn);所述數(shù)據(jù)用戶確定偽查詢點(diǎn),根據(jù)所述偽查詢點(diǎn)確定包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引,并將包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引發(fā)送給服務(wù)器;所述服務(wù)器根據(jù)接收到的包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包含所述偽查詢點(diǎn)的劃分。,能夠在數(shù)據(jù)用戶對服務(wù)器上存儲(chǔ)的外包數(shù)據(jù)庫中進(jìn)行最近鄰查詢時(shí),使服務(wù)器無法獲知外包數(shù) 據(jù)庫中的數(shù)據(jù)、數(shù)據(jù)用戶的查詢點(diǎn)及最近鄰的查詢結(jié)果,保證數(shù)據(jù)安全。本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對于實(shí)施例公開的系統(tǒng)而言,由于與實(shí)施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。專業(yè)人員還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。顯然,本領(lǐng)域的技術(shù)人員可以對發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包括這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種基于最小冗余劃分和隨機(jī)數(shù)的安全最近鄰查詢方法,其特征在于,包括 數(shù)據(jù)主生成包含外包數(shù)據(jù)庫的所有真實(shí)數(shù)據(jù)點(diǎn)的voronoi圖,其中,每個(gè)真實(shí)數(shù)據(jù)點(diǎn)的字節(jié)數(shù)相同,外包數(shù)據(jù)庫中的真實(shí)數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù),所述外包數(shù)據(jù)庫為一至三維外包數(shù)據(jù)庫; 數(shù)據(jù)用戶或數(shù)據(jù)主給定參數(shù)K,數(shù)據(jù)主根據(jù)所述參數(shù)k將所述VOTonoi圖分割成為k個(gè)劃分,記錄每個(gè)劃分對應(yīng)的邊界,每個(gè)劃分互不相交,不同劃分包含的數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k大于等于I且小于等于N,其中,當(dāng)所述外包數(shù)據(jù)庫為一維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為兩個(gè)相鄰真實(shí)數(shù)據(jù)點(diǎn)之間的垂直平分線,當(dāng)所述外包數(shù)據(jù)庫為二維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為由與所述voronoi圖的X坐標(biāo)軸和Y坐標(biāo)軸平行的直線圍成的格子,用平行于Y坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行Y坐標(biāo)軸的直線上的相鄰的劃分,或用平行X坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行X坐標(biāo)軸的直線上的相鄰的劃分以生成所述格子,直至voronoi圖中的劃分的個(gè)數(shù)大于或等于所述參數(shù),其中,每次分割時(shí),使平行于Y坐標(biāo)軸的直線或平行X坐標(biāo)軸的直線穿過voronoi圖中的多邊形的頂點(diǎn)最多,當(dāng)劃分的個(gè)數(shù)大于所 述參數(shù)k時(shí),通過逐步合并最小劃分的方式將voronoi圖中的劃分的個(gè)數(shù)減至所述參數(shù)k ;數(shù)據(jù)主在所述voronoi圖中隨機(jī)添加k’個(gè)劃分,并在k’個(gè)劃分中分別添加虛擬數(shù)據(jù)點(diǎn),記錄每個(gè)劃分對應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的虛擬數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k’為正整數(shù); 數(shù)據(jù)主獲取所有劃分中包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長字節(jié)數(shù),在除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長字節(jié)數(shù); 數(shù)據(jù)主根據(jù)預(yù)設(shè)的哈希函數(shù)對每個(gè)邊界建立對應(yīng)的索引,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有與相應(yīng)的邊界對應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ); 數(shù)據(jù)主將所有劃分對應(yīng)的邊界、與所述加密算法對應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ); 所述數(shù)據(jù)用戶確定真實(shí)查詢點(diǎn),根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引發(fā)送給服務(wù)器; 所述服務(wù)器根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分; 所述數(shù)據(jù)用戶根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真實(shí)查詢點(diǎn)的最近鄰的真實(shí)數(shù)據(jù)點(diǎn); 所述數(shù)據(jù)用戶確定偽查詢點(diǎn),根據(jù)所述偽查詢點(diǎn)確定包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索弓丨,并將包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引發(fā)送給服務(wù)器; 所述服務(wù)器根據(jù)接收到的包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包含所述偽查詢點(diǎn)的劃分。
2.一種基于最小冗余劃分和隨機(jī)數(shù)的安全最近鄰查詢系統(tǒng),其特征在于,包括 數(shù)據(jù)主,用于給定所述參數(shù)k,生成包含外包數(shù)據(jù)庫的所有真實(shí)數(shù)據(jù)點(diǎn)的VOTonoi圖,其中,每個(gè)真實(shí)數(shù)據(jù)點(diǎn)的字節(jié)數(shù)相同,外包數(shù)據(jù)庫中的真實(shí)數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù),所述外包數(shù)據(jù)庫為一至三維外包數(shù)據(jù)庫;根據(jù)參數(shù)k將所述VOTonoi圖分割成為k個(gè)劃分,記錄每個(gè)劃分對應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k大于等于I且小于等于N,當(dāng)所述外包數(shù)據(jù)庫為一維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為兩個(gè)相鄰真實(shí)數(shù)據(jù)點(diǎn)之間的垂直平分線,當(dāng)所述外包數(shù)據(jù)庫為二維外包數(shù)據(jù)庫時(shí),每個(gè)劃分的邊界為由與所述voronoi圖的X坐標(biāo)軸和Y坐標(biāo)軸平行的直線圍成的格子,所述數(shù)據(jù)主用平行于Y坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行Y坐標(biāo)軸的直線上的相鄰的劃分,或用平行X坐標(biāo)軸的直線不斷分割當(dāng)前的最大的劃分和與所述最大的劃分在同一條平行X坐標(biāo)軸的直線上的相鄰的劃分以生成所述格子,直至voronoi圖中的劃分的個(gè)數(shù)大于或等于所述參數(shù)k,其中,每次分割時(shí),使平行于Y坐標(biāo)軸的直線或平行X坐標(biāo)軸的直線穿過voronoi圖中的多邊形的頂點(diǎn)最多,當(dāng)劃分的個(gè)數(shù)大于所述參數(shù)k時(shí),通過逐步合并最小劃分的方式將voronoi圖中的劃分的個(gè)數(shù)減至所述參數(shù)k ;在所述voronoi圖中隨機(jī)添加k’個(gè)劃分,并在k’個(gè)劃分中分別添加虛擬數(shù)據(jù)點(diǎn),記錄每個(gè)劃分對應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的虛擬數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k’為正整數(shù);獲取所有劃分中包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長字節(jié)數(shù),在除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)真實(shí)數(shù)據(jù)點(diǎn)或虛擬數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長字節(jié)數(shù);根據(jù)預(yù)設(shè)的哈希函數(shù)對每個(gè)邊界建立對應(yīng)的索引,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有與相應(yīng)的邊界對應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ);將所有劃分對應(yīng)的邊界、與所述加密算法對應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ); 數(shù)據(jù)用戶,用于給定所述參數(shù)k,確定真實(shí)查詢點(diǎn),根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引發(fā)送給服務(wù)器;根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真實(shí)查詢點(diǎn)的最近鄰的數(shù)據(jù)點(diǎn);確定偽查詢點(diǎn),根據(jù)所述偽查詢點(diǎn)確定包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引,并將包含所述虛擬查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引發(fā)送給服務(wù)器; 服務(wù)器,用于根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分;根據(jù)接收到的包含所述偽查詢點(diǎn)的劃分的對應(yīng)的邊界的對應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對應(yīng)的加密后的包含所述偽查詢點(diǎn)的劃分。
全文摘要
本發(fā)明涉及一種基于最小冗余劃分和隨機(jī)數(shù)的安全最近鄰查詢方法及系統(tǒng),所述方法包括數(shù)據(jù)主將包含外包數(shù)據(jù)庫的voronoi圖分割成為k個(gè)劃分,記錄劃分的邊界,在劃分中添加隨機(jī)字節(jié),并根據(jù)預(yù)設(shè)的哈希函數(shù)對每個(gè)邊界建立對應(yīng)的索引,并將加密后的所有劃分及其對應(yīng)的索引發(fā)送給服務(wù)器,將所有劃分對應(yīng)的邊界發(fā)送給數(shù)據(jù)用戶;數(shù)據(jù)用戶將包含真實(shí)查詢點(diǎn)的劃分對應(yīng)的索引發(fā)送給服務(wù)器;服務(wù)器向數(shù)據(jù)用戶發(fā)送加密后的包含真實(shí)查詢點(diǎn)的劃分;數(shù)據(jù)用戶獲取加密后的包含所述真實(shí)查詢點(diǎn)的劃分,并解密后計(jì)算出最近鄰,在數(shù)據(jù)用戶對服務(wù)器上存儲(chǔ)的外包數(shù)據(jù)庫中進(jìn)行最近鄰查詢時(shí),使服務(wù)器無法獲知外包數(shù)據(jù)庫中的數(shù)據(jù)、查詢點(diǎn)及查詢結(jié)果,保證數(shù)據(jù)安全。
文檔編號(hào)G06F17/30GK102968477SQ20121046653
公開日2013年3月13日 申請日期2012年11月16日 優(yōu)先權(quán)日2012年11月16日
發(fā)明者姚斌, 李飛飛, 肖小奎 申請人:上海交通大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
原平市| 陈巴尔虎旗| 舞阳县| 化德县| 肥乡县| 吐鲁番市| 双流县| 容城县| 龙岩市| 伊春市| 邵武市| 祁连县| 贺兰县| 青岛市| 南溪县| 宣武区| 佳木斯市| 忻州市| 将乐县| 视频| 西丰县| 永靖县| 兖州市| 肥城市| 庄浪县| 霍林郭勒市| 濮阳市| 射阳县| 弋阳县| 宜丰县| 咸阳市| 沙雅县| 曲松县| 安庆市| 温泉县| 岗巴县| 嘉峪关市| 紫云| 和静县| 长寿区| 曲周县|