專利名稱:基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及安全查詢處理領(lǐng)域,一種基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的方法及系統(tǒng)。
背景技術(shù):
安全查詢處理領(lǐng)域的現(xiàn)有研究涉及加密數(shù)據(jù)庫(kù)上的基本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—service model. 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 Symposiumon Security and Privacy,pages 350-364,2007)。正如諸多現(xiàn)有研究(參見文獻(xiàn) I :H. Huj J. Xuj C. Renj and B. Choi. Processing private queriesover untrusted data cloudthrough privacy homomorphism. In ICDEj pages 601-612,2011 和文獻(xiàn) 2 W. K. Wong, D.W. -L. Cheung, B. Kaoj and N. Mamoulis. Secureknn computation on encrypted databases.In SIGMOD, pages 139 - 152,2009和文獻(xiàn)6和文獻(xiàn)7)所證明的,為滿足一定的安全性要求和獲得更高的效率,較復(fù)雜的查詢類型往往需要一些特殊處理。特別的,針對(duì)SNN問題現(xiàn)在已有不少前人所做的研究工作(參見文獻(xiàn)I和文獻(xiàn)2),然而他們所提出的解決方案最后往往被證明是不安全的,可以被輕而易舉地攻擊成功。Hacigumus 等人首先提出了“外包數(shù)據(jù)庫(kù)”(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 preservingencryption for numeric data. In SIGMOD, 2002),對(duì)一序數(shù)域(ordinal domain)應(yīng)用函數(shù)E,使得對(duì)任一對(duì)滿足x<y的值x,y,都有E (x) <E (y) ο 另外,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. MehlOtrficiBft execution ofaggregation queries over encrypted relational databases. In DASFAAj pages125-136,2004)。然而,正如Mykletun等人所證明的那樣,實(shí)際上同態(tài)法連最低級(jí)別的安全都不能保證(參見文獻(xiàn)5)。概而言之,之前的ODB模型都僅僅考慮了簡(jiǎn)單的數(shù)值域和SQL操作,而沒有考慮以kNN (k nearest neighbor, k最近鄰)查詢等更復(fù)雜的操作為研究對(duì)象;另外,ODB模型研究總是假設(shè)單一類型的攻擊,而沒有綜合考慮不同層次的攻擊,不具有普適性。除了各種加密技術(shù),還有其他的數(shù)據(jù)保護(hù)方法來保證查詢計(jì)算的安全性。ODB模型上的SQL語句執(zhí)行就采用了“粗索引”(coarse index,亦稱“基于桶的索引”,bucket-basedindex)技術(shù)(參見文獻(xiàn)3)。元組通過諸如RSA的普通加密法加密;將各數(shù)據(jù)庫(kù)屬性域分割,分割后得到的每一部分(即一個(gè)“劃分”,partition)通過哈希函數(shù)賦以一 ID。數(shù)據(jù)主將加密元組連同其所在分割的ID送至服務(wù)器,充當(dāng)“粗索引”。查詢變?yōu)楂@取包含目標(biāo)元組的分害I]。服務(wù)器則返回一個(gè)查詢結(jié)果的超集。繼而,擁有密鑰的用戶便可以將結(jié)果解密,再通過一定的后處理篩選掉其中無用信息。高級(jí)查詢中無用信息的數(shù)量可能十分巨大,對(duì)用戶而言這會(huì)成為十分沉重的負(fù)擔(dān)。例如,kNN計(jì)算中所需的數(shù)據(jù)點(diǎn)與查詢點(diǎn)間距便難以通過分割的ID輕易獲得。因此,直接應(yīng)用這種“粗索引”技術(shù)會(huì)導(dǎo)致服務(wù)器將整個(gè)數(shù)據(jù)庫(kù)返回給用戶,讓用戶獨(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ù)對(duì)查詢中的任一方都是透明的。協(xié)處理器的使用很簡(jiǎn)單,只需要安裝上加密和解密密鑰,并直接部署應(yīng)用邏輯即可。然而另一方面,它的速度不如普通處理器,因此不適用于需要大量計(jì)算的復(fù)雜應(yīng)用。除此之外,協(xié)處理器必須靠用戶來維護(hù)。例如,如果處理器意外停機(jī),用戶必須重新對(duì)其進(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ù)中各元組與另外至少k-Ι個(gè)元組的“準(zhǔn)”標(biāo)示符(quasi-identifiers)是不可辨(indistinguishable)的?!発匿名”可以通過“準(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ì)方便潛在攻擊者對(duì)原始數(shù)據(jù)或一些寶貴的統(tǒng)計(jì)信息做出準(zhǔn)確估計(jì)。特別需要注意的是,數(shù)據(jù)發(fā)布時(shí)的隱私保護(hù)與ODB模型中的數(shù)據(jù)安全兩者的目標(biāo)是不同的前者力圖避免發(fā)布的信息暴露特定個(gè)體,后者注重針對(duì)非授權(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級(jí)攻擊和3級(jí)攻擊是不安全的[8]。對(duì)于一 3級(jí)攻擊,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,則此等式組可解。對(duì)于一 2級(jí)攻擊,攻擊者可見DB中的一組點(diǎn)P。由于DPT保留了各維間的相關(guān)性,Liu等使用PCA確定點(diǎn)集P中和轉(zhuǎn)換后所得數(shù)據(jù)庫(kù)中的主成分。通過匹配主成分,攻擊者可以對(duì)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. Privatequeriesin location based services:Anonymizers are not necessary. In SIGMOD, 2008),數(shù)據(jù)庫(kù)被假定為服務(wù)器所有,因此服務(wù)器能看到原始數(shù)據(jù);再次,在一些系統(tǒng)(諸如“粗索引”系統(tǒng))中,服務(wù)器通常返回查詢結(jié)果的超集以供用戶進(jìn)行后處理,這增添了用戶負(fù)擔(dān),對(duì)于一些“輕量級(jí)”(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曲線來對(duì)數(shù)據(jù)點(diǎn)和查詢進(jìn)行“加密”。各點(diǎn)的Hilbert值被送往服務(wù)器。然后在Hilbert轉(zhuǎn)換后所得的空間中計(jì)算kNN得出近似結(jié)果。這種方法除了返回的是近似結(jié)果,還存在DPT類似的問題,容易被攻擊成功。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的方法及系統(tǒng),能夠在數(shù)據(jù)用戶對(duì)服務(wù)器上存儲(chǔ)的外包數(shù)據(jù)庫(kù)中進(jìn)行最近鄰查詢時(shí),使服務(wù)器無法獲知外包數(shù)據(jù)庫(kù)中的數(shù)據(jù)、數(shù)據(jù)用戶的查詢點(diǎn)及最近鄰的查詢結(jié)果,保證數(shù)據(jù)安全。為解決上述問題,本發(fā)明提供一種基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的方法,包括數(shù)據(jù)主生成包含外包數(shù)據(jù)庫(kù)的所有數(shù)據(jù)點(diǎn)的voronoi圖,其中,每個(gè)數(shù)據(jù)點(diǎn)的字節(jié)數(shù)相同,外包數(shù)據(jù)庫(kù)中的數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù);數(shù)據(jù)用戶或數(shù)據(jù)主給定參數(shù)K,數(shù)據(jù)主根據(jù)所述參數(shù)k將所述VOTonoi圖分割成為k個(gè)劃分,記錄每個(gè)劃分對(duì)應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k大于等于I且小于等于N ;數(shù)據(jù)主獲取所有劃分中包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長(zhǎng)字節(jié)數(shù),在除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長(zhǎng)字節(jié)數(shù);數(shù)據(jù)主根據(jù)預(yù)設(shè)的哈希函數(shù)對(duì)每個(gè)邊界建立對(duì)應(yīng)的索引,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有與相應(yīng)的邊界對(duì)應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ);數(shù)據(jù)主將所有劃分對(duì)應(yīng)的邊界、與所述加密算法對(duì)應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ);所述數(shù)據(jù)用戶確定真實(shí)查詢點(diǎn),根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的 對(duì)應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引發(fā)送給服務(wù)器;所述服務(wù)器根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對(duì)應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分;所述數(shù)據(jù)用戶根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真實(shí)查詢點(diǎn)的最近鄰的數(shù)據(jù)點(diǎn)。進(jìn)一步的,在上述方法中,所述外包數(shù)據(jù)庫(kù)為一至三維外包數(shù)據(jù)庫(kù)。進(jìn)一步的,在上述方法中,當(dāng)所述外包數(shù)據(jù)庫(kù)為一維外包數(shù)據(jù)庫(kù)時(shí),每個(gè)劃分的邊界為兩個(gè)相鄰數(shù)據(jù)點(diǎn)之間的垂直平分線。進(jìn)一步的,在上述方法中,當(dāng)所述外包數(shù)據(jù)庫(kù)為二維外包數(shù)據(jù)庫(kù)時(shí),每個(gè)劃分的邊界為由與所述voronoi圖的X坐標(biāo)軸和Y坐標(biāo)軸平行的直線圍成的格子。進(jìn)一步的,在上述方法中,數(shù)據(jù)主根據(jù)所述參數(shù)k將所述VOTonoi圖分割成為k個(gè)劃分的步驟中,將所述voronoi圖分割成為k個(gè)等大小的正方形的格子,其中,k為一平方數(shù)。根據(jù)本發(fā)明的另一面,提供一種基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的系統(tǒng),包括數(shù)據(jù)主,用于給定所述參數(shù)k,生成包含外包數(shù)據(jù)庫(kù)的所有數(shù)據(jù)點(diǎn)的VOTonoi圖,其中,每個(gè)數(shù)據(jù)點(diǎn)的字節(jié)數(shù)相同,外包數(shù)據(jù)庫(kù)中的數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù);根據(jù)參數(shù)k將所述VOTonoi圖分割成為k個(gè)劃分,記錄每個(gè)劃分對(duì)應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k大于等于I且小于等于N;獲取所有劃分中包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長(zhǎng)字節(jié)數(shù),在除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長(zhǎng)字節(jié)數(shù);根據(jù)預(yù)設(shè)的哈希函數(shù)對(duì)每個(gè)邊界建立對(duì)應(yīng)的索引,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有對(duì)應(yīng)的邊界對(duì)應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ)及其所有與相應(yīng)的邊界對(duì)應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ);將所有劃分對(duì)應(yīng)的邊界、與所述加密算法對(duì)應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ);數(shù)據(jù)用戶,用于給定所述參數(shù)k,確定真實(shí)查詢點(diǎn),根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引發(fā)送給服務(wù)器;根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真實(shí)查詢點(diǎn)的最近鄰的數(shù)據(jù)點(diǎn);服務(wù)器,用于根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對(duì)應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分。根據(jù)預(yù)設(shè)的哈希函數(shù)對(duì)每個(gè)邊界建立對(duì)應(yīng)的索引,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有對(duì)應(yīng)的邊界對(duì)應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ)及其所有與相應(yīng)的邊界對(duì)應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ)。進(jìn)一步的,在上述系統(tǒng)中,所述外包數(shù)據(jù)庫(kù)為一至三維外包數(shù)據(jù)庫(kù)。進(jìn)一步的,在上述系統(tǒng)中,當(dāng)所述外包數(shù)據(jù)庫(kù)為一維外包數(shù)據(jù)庫(kù)時(shí),每個(gè)劃分的邊界為兩個(gè)相鄰數(shù)據(jù)點(diǎn)之間的垂直平分線。進(jìn)一步的,在上述系統(tǒng)中,當(dāng)所述外包數(shù)據(jù)庫(kù)為二維外包數(shù)據(jù)庫(kù)時(shí),每個(gè)劃分的邊界為由與所述voronoi圖的X坐標(biāo)軸和Y坐標(biāo)軸平行的直線圍成的格子。進(jìn)一步的,在上述系統(tǒng)中,所述數(shù)據(jù)主將所述voronoi圖分割成為k個(gè)等大小的正方形的格子,其中,k為一平方數(shù)。與現(xiàn)有技術(shù)相比,本發(fā)明通過數(shù)據(jù)主生成包含外包數(shù)據(jù)庫(kù)的所有數(shù)據(jù)點(diǎn)的voronoi圖,其中,每個(gè)數(shù)據(jù)點(diǎn)的字節(jié)數(shù)相同,外包數(shù)據(jù)庫(kù)中的數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù);數(shù)據(jù)用戶或數(shù)據(jù)主給定參數(shù)K,數(shù)據(jù)主根據(jù)所述參數(shù)k將所述VOTonoi圖分割成為k個(gè)劃分,記錄每個(gè)劃分對(duì)應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k大于等于I且小于等于N ;數(shù)據(jù)主獲取所有劃分中包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長(zhǎng)字節(jié)數(shù),在除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長(zhǎng)字節(jié)數(shù);數(shù)據(jù)主根據(jù)預(yù)設(shè)的哈希函數(shù)對(duì)每個(gè)邊界建立對(duì)應(yīng)的索引,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有與相應(yīng)的邊界對(duì)應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ);數(shù)據(jù)主將所有劃分對(duì)應(yīng)的邊界、與所述加密算法對(duì)應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ);所述數(shù)據(jù)用戶確定真實(shí)查詢點(diǎn),根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引發(fā)送給服務(wù)器;所述服務(wù)器根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對(duì)應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分;將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密所述數(shù)據(jù)用戶根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真實(shí)查詢點(diǎn)的最近鄰的數(shù)據(jù)點(diǎn),能夠在數(shù)據(jù)用戶對(duì)服務(wù)器上存儲(chǔ)的外包數(shù)據(jù)庫(kù)中進(jìn)行最近鄰查詢時(shí),使服務(wù)器無法獲知外包數(shù)據(jù)庫(kù)中的數(shù)據(jù)、數(shù)據(jù)用戶的查詢點(diǎn)及最近鄰的查詢結(jié)果,保證數(shù)據(jù)安全。
圖I是本發(fā)明一實(shí)施例的基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的方法的流程圖2是本發(fā)明一實(shí)施例的基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的方法的劃分示意圖;圖3是本發(fā)明一實(shí)施例的一維空間下劃分示意圖;圖4是本發(fā)明一實(shí)施例的MinCs方法的劃分示意圖;圖5a是本發(fā)明一實(shí)施例的MinCs劃分方法下k對(duì)劃分時(shí)間代價(jià)的影響圖;圖5b是本發(fā)明一實(shí)施例的MinCs劃分方法下| D |對(duì)劃分時(shí)間代價(jià)的影響圖;圖6a是本發(fā)明一實(shí)施例的劃分大小的平均值、最大值和最小值隨參數(shù)k變化情況圖;圖6b是本發(fā)明一實(shí)施例的劃分大小的平均值、最大值和最小值隨|d|變化情況圖·
圖7a是本發(fā)明一實(shí)施例的MinCs劃分方法的總運(yùn)行時(shí)間隨參數(shù)k變化情況圖;圖7b是本發(fā)明一實(shí)施例的MinCs劃分方法的總運(yùn)行時(shí)間隨ID |變化情況圖;圖8a是本發(fā)明一實(shí)施例的MinCs劃分方法下| E⑶|隨k變化情況圖;圖8b是本發(fā)明一實(shí)施例的MinCs劃分方法下| E⑶|隨| D |變化情況圖;圖9a是本發(fā)明一實(shí)施例的MinCs劃分方法下查詢通信代價(jià)隨k變化情況圖;圖9b是本發(fā)明一實(shí)施例的MinCs劃分方法下查詢通信代價(jià)隨ID |變化情況圖;圖IOa是本發(fā)明一實(shí)施例的MinCs劃分方法下查詢時(shí)間隨ID |變化情況圖;圖IOb是本發(fā)明一實(shí)施例的MinCs劃分方法下查詢時(shí)間隨k變化情況圖;圖11是本發(fā)明一實(shí)施例的基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的系統(tǒng)的功能模塊不意圖。
具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。隨著“云計(jì)算”概念及其應(yīng)用的日益普及,針對(duì)“云”上的加密數(shù)據(jù)集E⑶的“安全查詢問題”得到了越來越多的關(guān)注。本發(fā)明即對(duì)其中的“安全最近鄰”(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ù)庫(kù)D,并會(huì)將D外包給不完全可靠的服務(wù)器。(2)數(shù)據(jù)用戶需要對(duì)所述外包數(shù)據(jù)庫(kù)D進(jìn)行查詢。(3)服務(wù)器不完全可靠,會(huì)因?yàn)樽陨碓蚧虻谌皆蚨Q探來自數(shù)據(jù)主的數(shù)據(jù)內(nèi)容和來自數(shù)據(jù)用戶的查詢內(nèi)容。為了讓數(shù)據(jù)用戶能在外包數(shù)據(jù)庫(kù)D上進(jìn)行最近鄰(NN, nearest neighbor),查詢,卻不會(huì)讓服務(wù)器獲知數(shù)據(jù)主的外包數(shù)據(jù)庫(kù)D中的數(shù)據(jù)、數(shù)據(jù)用戶的真實(shí)查詢及查詢結(jié)果的具體信息,數(shù)據(jù)主須對(duì)外包數(shù)據(jù)庫(kù)D應(yīng)用某種加密算法E進(jìn)行加密,可以用E(D)代表D的密文,用E-I代表相應(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è)非常簡(jiǎn)單直接的查詢處理方法數(shù)據(jù)主將外包數(shù)據(jù)庫(kù)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ā)明提供的一種基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的方法(secure voronoi diagram, SVD),包括預(yù)處理階段步驟SI S5,查詢階段包括步驟S6 S8,查詢階段的步驟S6 S8可以根據(jù)實(shí)際查詢需 要不斷重復(fù),其中,步驟SI,數(shù)據(jù)主生成包含外包數(shù)據(jù)庫(kù)D的所有數(shù)據(jù)點(diǎn)Pi的voronoi圖,其中,每數(shù)據(jù)點(diǎn)字節(jié)數(shù)相同,外包數(shù)據(jù)庫(kù)中的數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù)。由于在后續(xù)步驟S2中要產(chǎn)生外包數(shù)據(jù)庫(kù)D的k個(gè)劃分,這里一個(gè)關(guān)鍵問題就是如何產(chǎn)生外包數(shù)據(jù)庫(kù)D的(可能存在重疊的)“劃分”G (D) = (G1,. . . , GJ ,考慮到的目標(biāo)是有兩個(gè)(I) SNN查詢結(jié)果(查詢點(diǎn)的最近鄰)至少應(yīng)被包含于某一劃分中,且(2)數(shù)據(jù)用戶能夠用盡可能小的信息量確定出匕以降低查詢代價(jià),因此一個(gè)自然的選擇就是用基于外包數(shù)據(jù)庫(kù)D圖來構(gòu)建G(D),其中每個(gè)數(shù)據(jù)點(diǎn)Pi用一個(gè)voronoi cell表示。本發(fā)明需要針對(duì)以下四個(gè)問題問題一邊界P (D)用voronoi cell來描述空間代價(jià)太大。例如,當(dāng)所述外包數(shù)據(jù)庫(kù)D為二維即d=2時(shí),每個(gè)voronoi cell是一個(gè)任意形狀的凸多邊形,并且這些多邊形平均會(huì)有6個(gè)頂點(diǎn)。因此,如此表示邊界P(D)所占的存儲(chǔ)空間將比存儲(chǔ)外包數(shù)據(jù)庫(kù)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),因此需對(duì)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è)劃分對(duì)應(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è)過程中,還需對(duì)各劃分的“幾何邊界”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為Vci (Pi為Vci所包含),那么給定任意查詢點(diǎn)q,數(shù)據(jù)用戶需查找包含q的voronoi cell ;假定VC11則數(shù)據(jù)用戶需向服務(wù)器請(qǐng)求獲取E(Gi);這里顯然有 nn(q, D) =Pi 以及 Gi=(Pi),而算法返回 nn(q, E—1 (E (Gi))) =nn (q, {pj) =Pi,可見為正確結(jié)果??梢钥紤]把上述思想推廣應(yīng)用到k〈〈N的一般情形。步驟S3,數(shù)據(jù)主獲取所有劃分中包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長(zhǎng)字節(jié)數(shù),在除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長(zhǎng)字節(jié)數(shù)。具體的,假設(shè)數(shù)據(jù)主已經(jīng)生成了 G(D)及P(D)為了上述解決問題三,數(shù)據(jù)主需保證IGiI = IGjI (i關(guān)j)。設(shè)&為G(D)中具有最多個(gè)數(shù)據(jù)點(diǎn)(下稱為“大小”,size)的劃分,即對(duì)于任意i e [l,k],都有IGiI ( IgxU對(duì)于各個(gè)劃分Gi (i關(guān)X),對(duì)其添加(|Gx|b-|G丄)個(gè)隨機(jī)字節(jié),這里可用字符*代表任意隨機(jī)字節(jié)以與Gi中的實(shí)際數(shù)據(jù)點(diǎn)進(jìn)行區(qū)分(*代表的這些隨機(jī)字符都不會(huì)在Gi中實(shí)際出現(xiàn)),可稱此過程為“隨機(jī)填補(bǔ)操作”。顯然,經(jīng)此“隨機(jī)填補(bǔ)操作”,對(duì)于任意劃
,都有I Gx Ib= I GiIbt5這樣,在后續(xù)步驟S4中,無論數(shù)據(jù)主使用何種安全加密算法生成{E (G1) ,...,E (Gk)},都有IE (Gi) I b= IE (Gj) I b (i關(guān)j ),從而保證服務(wù)器無法在G⑶中區(qū)分出任意某個(gè)劃分,從而了解到劃分情況。步驟S4,數(shù)據(jù)主根據(jù)預(yù)設(shè)的哈希函數(shù)對(duì)每個(gè)邊界建立對(duì)應(yīng)的索引,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有與相應(yīng)的邊界對(duì)應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ)。具體的,為了解決上述問題四,數(shù)據(jù)主應(yīng)用一秘密隨機(jī)哈希函數(shù)g: [I, N] — Z+,最終將E(D) ={(E (g⑴),E (Gl) ),...,(E (g (k) ),E (Gk))}發(fā)布給服務(wù)器,將P (D)、E-1和g發(fā)布給數(shù)據(jù)用戶。步驟S5,數(shù)據(jù)主將所有劃分對(duì)應(yīng)的邊界P(D)、與所述加密算法對(duì)應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ)。將P (D)存儲(chǔ)在數(shù)據(jù)用戶端,這樣對(duì)于任意查詢點(diǎn)q,數(shù)據(jù)用戶能夠高效地確定出邊界P(D)的原始索引值i滿足nn(q,D) e Gi,然后根據(jù)哈希函數(shù)劃分對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引向服務(wù)器提出請(qǐng)求獲取到E(Gi),這個(gè)過程完全可以在服務(wù)器不知道具體原始i值的情況下進(jìn)行,如此可以保證服務(wù)器不會(huì)在答復(fù)查詢的過程中了解到劃分情況;最后,數(shù)據(jù)用戶自然能夠輕松得出rm (q, D) =nn (q, E—1 (E (Gi)))。步驟S6,所述數(shù)據(jù)用戶確定真實(shí)查詢點(diǎn)q,根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引E(g(j))發(fā)送給服務(wù)器,即數(shù)據(jù)用戶將 E0)) = {(E(g⑴),Ε%)),···,(E(g(k)),E(Gk))}傳送給服務(wù)器。
步驟S7,所述服務(wù)器根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對(duì)應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分。具體的,當(dāng)所述服務(wù)器接收到加密后的所有劃分及其所有對(duì)應(yīng)的邊界對(duì)應(yīng)的索引后,會(huì)直接將加密后的所有劃分及對(duì)就的索引建立對(duì)應(yīng)關(guān)系。步驟S8,所述數(shù)據(jù)用戶根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真實(shí)查詢點(diǎn)的最近鄰的數(shù)據(jù)點(diǎn)。上述查詢階段的步驟S6 S8可以根據(jù)實(shí)際查詢需要不斷重復(fù),直至沒的查詢點(diǎn)輸入。較佳的,所述外包數(shù)據(jù)庫(kù)為一至三維外包數(shù)據(jù)庫(kù)。優(yōu)選的,當(dāng)所述外包數(shù)據(jù)庫(kù)為一維外包數(shù)據(jù)庫(kù)時(shí),每個(gè)劃分的邊界為兩個(gè)相鄰數(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_l)/k分位點(diǎn),然后用它們產(chǎn)生G(D),這些分位點(diǎn)所對(duì)應(yīng)voronoi cell的邊界以及土確定了 P (D) = (B1,. . .,Bj。上述查找(k-Ι)個(gè)分位點(diǎn)并通過它們對(duì)D的VOTonoi圖進(jìn)行劃分的過的程可通過對(duì)D的一次線性掃描完成。因此,該算法在外存模型中的10 (輸入/輸出)代價(jià)為0(Nlog N) ο由于每個(gè)劃分大小均為0|/1^/1^,因此&大小均為E (N/k),故而E (D)大小為k|E(N/k) I ;并且顯然P(D)的大小是O(k)的。優(yōu)選的,當(dāng)所述外包數(shù)據(jù)庫(kù)為二維外包數(shù)據(jù)庫(kù)時(shí),每個(gè)劃分的邊界為由與所述voronoi圖的X坐標(biāo)軸和Y坐標(biāo)軸平行的直線圍成的格子。具體的,為了解決上述問題一和問題二,規(guī)定G(D)中的各個(gè)劃分必須具有規(guī)則形狀,具體來說就是,每個(gè)劃分必須被限定在一個(gè)由與X坐標(biāo)軸和Y坐標(biāo)軸(X軸或Y軸)平行的邊圍成的“格子”(box)中。然而,這意味著劃分Gi的邊界Bi可能包含或貫穿多個(gè)voronoi cell,如圖2所示,其中虛線為劃分的邊界B1和B2,代表不同數(shù)據(jù)點(diǎn)P1^P16的凸多邊形為voronoi cell。為了解決上述問題二,設(shè)D中點(diǎn)Pi對(duì)應(yīng)的voronoi cell為Vci,為保證數(shù)據(jù)用戶能夠?yàn)镻(D)編制索引以及輕松高效地確定出滿足nn(q,D) e Gi的索引值i,可以確定如下劃分原則設(shè)Gi的幾何邊界由Bi表示,那么原則一 Bi是一個(gè)由與X坐標(biāo)軸和Y坐標(biāo)軸平行的邊圍成的“格子”;原則二 =Bp Bj = 0 ( I^j ),即G(D)中不同的劃分其對(duì)應(yīng)的邊界是互不相交的;原則三如果Bi完全包含或相交于一個(gè)voronoi cell集\^,那么Gi= {p」| V?!筫 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中(貝U有nn(q, D) =Pi),由上可知,vci e Vj,繼而Pi e G」。
由上述引理I可知,步驟S6中,對(duì)于任意查詢點(diǎn)q,數(shù)據(jù)用戶端的工作就是找到滿足q e Bj的Bj e P(D),即在P(D)中找到一個(gè)包含q的格子,這實(shí)際上是一個(gè)“點(diǎn)位置查詢”(point location query)的過程。由于P(D)中的格子都是不相交的,但會(huì)覆蓋整個(gè)外包數(shù)據(jù)庫(kù)D的VOTonoi圖的空間,因此有且只有一個(gè)格子包含點(diǎn)q ;另外,由于這些格子的邊都是與X坐標(biāo)軸和Y坐標(biāo)軸平行的,因此數(shù)據(jù)用戶能夠方便地為P(D)編制索引i。之后,數(shù)據(jù)用戶便可以向服務(wù)器請(qǐng)求獲取E (Gj),這是因?yàn)橛伤鲆鞩告,只要q被包含在Bj中,那么就有nn(q,D) e Gjo通過步驟S7,一旦E(Gj)被服務(wù)器返回,步驟S8中數(shù)據(jù)用戶便可以由E—1對(duì)E(Gj)解密得到Gy之后,數(shù)據(jù)用戶通過識(shí)別隨機(jī)字符*,可以輕松地將之前數(shù)據(jù)主通過“隨機(jī)填補(bǔ)操作”添加在中的隨機(jī)字節(jié)序列去除;最后,數(shù)據(jù)用戶可得nn(q,D)=nn(q, Gj)。然而別忘了,數(shù)據(jù)用戶在向服務(wù)器請(qǐng)求獲取E (Gj)時(shí)需要解決問題四,通過步驟S4 數(shù)據(jù)主根據(jù)預(yù)設(shè)的哈希函數(shù)對(duì)每個(gè)邊界建立對(duì)應(yīng)的索引,并將加密后的所有劃分及其對(duì)應(yīng)的所有索引發(fā)送給服務(wù)器存儲(chǔ)之后,在步驟S6中,讓數(shù)據(jù)用戶向服務(wù)器發(fā)送E (g (j))。步驟S7中在服務(wù)器端,數(shù)據(jù)主發(fā)送來的E(g(i))與E(Gi)存在配對(duì)關(guān)系,服務(wù)器在接收到數(shù)據(jù)主發(fā)送來的E(D)后,便會(huì)建立一個(gè)含k個(gè)記錄的哈希表T,將E(g(i))映射到E(Gi)。如此,數(shù)據(jù)用戶給定一個(gè)請(qǐng)求E (g (i)),服務(wù)器便可以通過在T中查找,最終找到E (Gi),這個(gè)過程的時(shí)間復(fù)雜度僅為0(1),因此服務(wù)器可以通過上述過程由E(g(j))高效地查找到E(Gj)。進(jìn)一步的,本實(shí)施例中提供一種MinCs劃分方法,遵循了上述提出的劃分原則一至三,由于加入了 “隨機(jī)填補(bǔ)操作”,因此很顯然,本實(shí)施例的通信代價(jià)以及服務(wù)器端的存儲(chǔ)代價(jià)是由最大劃分與各劃分的大小之差,即IGxl-IGil,或更準(zhǔn)確地,IE(Gx) I-IE(Gi) I)決定的,也就是說,為了降低通信代價(jià)以及服務(wù)器端的存儲(chǔ)代價(jià),在設(shè)計(jì)劃分方法時(shí)還應(yīng)盡可能地遵循原則四盡可能生成大小“平衡”(相等或接近)的劃分。MinCs方法為數(shù)據(jù)主根據(jù)所述參數(shù)K將所述VOTonoi圖分割成為K個(gè)劃分的步驟中,將所述voronoi圖分割成為K個(gè)等大小的正方形的格子,其中,k為一平方數(shù)。MinCs方法是最簡(jiǎn)單的一種劃分方法,它將D及其voronoi圖劃分為網(wǎng)格(grid)狀,這里“網(wǎng)格”中的每個(gè)格子的幾何大小是相同的。這樣的劃分決定了 P(D)中元素為所有邊都與X坐標(biāo)軸和Y坐標(biāo)軸平行的正方形格子。一旦給定P(D),便可按照?qǐng)D2所示的思路產(chǎn)生G(D)。如圖4所示,其中k=4 ;請(qǐng)注意這里k必須為一平方數(shù)。在MinCs方法中,只需一個(gè)數(shù)值——小正方形的邊長(zhǎng)I——便可表示出P(D)(假設(shè)D邊界值為已知參數(shù))。為簡(jiǎn)化討論,可按由左至右、由下至上的順序用一對(duì)參數(shù)值{x,y}來表示一個(gè)格子。例如,在圖4中,最左下端的格子標(biāo)為Cu,最右上端的格子標(biāo)為C2,2。根據(jù)每個(gè)格子Ci,
j與每個(gè)劃分的幾何邊界Bx的對(duì)應(yīng)關(guān)系,此例中我們可得C / = 5C-D-Vk+.,
O易證得只需知道I和k (k可由I和D邊界值算得)和q點(diǎn)坐標(biāo),數(shù)據(jù)用戶便可以以0(1)的時(shí)間代價(jià)找出q所在的格子。因此,在所有的劃分方法中,這種方法在數(shù)據(jù)用戶端的存儲(chǔ)代價(jià)最低,因?yàn)镻(D)只需一個(gè)數(shù)值I便可表示,故而稱之為“MinCs (MinimumClient Storage)方法,,。更詳細(xì)的,可用C++語言對(duì)上述MinCs劃分方法進(jìn)行實(shí)現(xiàn)。本實(shí)現(xiàn)的實(shí)驗(yàn)中,使用Qhull庫(kù)對(duì)數(shù)據(jù)集D進(jìn)行了 voronoi劃分;使用最新的Crypto++庫(kù)進(jìn)行了加密。隨后實(shí)驗(yàn)的進(jìn)行是在一臺(tái)配置為Intel Xeon 3.07GHz CPU、8GB內(nèi)存的Linux機(jī)上。
針對(duì)二維外包數(shù)據(jù)庫(kù)D,實(shí)驗(yàn)時(shí)具體數(shù)據(jù)集使用了取樣自美國(guó)加利福尼亞州(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ù)集大小以測(cè)試本實(shí)施例的劃分方法的可擴(kuò)展性時(shí),會(huì)確保小數(shù)據(jù)集總是大數(shù)據(jù)集的子集,這樣是為了避免D中具體數(shù)據(jù)點(diǎn)變化帶來的影響,從而單單體現(xiàn)出|D|的影響。對(duì)實(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)不同加密算法對(duì)本實(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ù)集大小IDl的影響。圖5a、5b所示分別為MinCs方法下k和|D|對(duì)運(yùn)行時(shí)間的影響。在圖5a中,很明顯MinCs的時(shí)間代價(jià)幾乎是一個(gè)與k無關(guān)的常數(shù),這是因?yàn)镸inCs的劃分過程簡(jiǎn)繁程度本身與k大小無關(guān)。MinCs實(shí)際上是最簡(jiǎn)單直接的一種劃分方法;特別值得一提的,它將1,000,000個(gè)點(diǎn)分割為1,225個(gè)劃分只需22秒。圖5b顯示的是數(shù)據(jù)大小|D I變化(從250,000到2,000, 000)對(duì)劃分時(shí)間代價(jià)的影響。顯然,MinCs的處理時(shí)間同N=IdI呈線性關(guān)系。下面來看MinCs方法下產(chǎn)生的劃分G(D) = {Gl,. . .,Gk}的大小(進(jìn)行“隨機(jī)填補(bǔ)操作”前)。由于“隨機(jī)填補(bǔ)操作”會(huì)通過填補(bǔ)隨機(jī)字節(jié)將所有劃分的大小增至與最大劃分一樣大,因此以下兩個(gè)數(shù)值對(duì)于評(píng)估本實(shí)施例的劃分方法的性能至關(guān)重要最大劃分的大小IgJ和(IgxI-IgJ)的方差(i e [i,k])。IGx決定了服務(wù)器端的存儲(chǔ)代價(jià)和每次查詢的通信代價(jià);(IGxI-IGiI)的方差決定了填補(bǔ)操作本身的代價(jià)。為了將這些數(shù)值在一個(gè)圖中簡(jiǎn)
單直觀地呈現(xiàn),圖6a、6b分別顯示了劃分大小的平均值Dl Gi|/l (avg partition size)、最
i=l
大值IGx I = maXi e [ljk] IGi和最小值IGyI=IninietuldIGiI隨參數(shù)k和|D|的變化情況。如圖6a、6b所示,MinCs劃分方法中,其劃分大小的平均值和最大值隨k增加都是遞減的。下面通過圖7a、7b來看在預(yù)處理階段MinCs方法的總運(yùn)行時(shí)間(totalrunningtime)。所謂總運(yùn)行時(shí)間,具體含劃分和加密兩個(gè)步驟的時(shí)間(voronoi劃分時(shí)間和“隨機(jī)填補(bǔ)操作”時(shí)間也包含在內(nèi),不過它們相對(duì)劃分和加密時(shí)間來說要小一些)。在圖7a、7b中,還加入了所述Send-D方法的預(yù)處理時(shí)間以作參照,Send-D方法的預(yù)處理時(shí)間就是將D看做一個(gè)整體進(jìn)行加密的時(shí)間。另外,從圖7a、7b中可見,MinCs方法預(yù)處理階段的總時(shí)間隨k或|D|增加都是線性增長(zhǎng)的。
再來看最終產(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分別顯示了 MinCs方法下E(D) (size of E(D))隨k或D變化的情況。類似于針對(duì)圖7a、7b的討論,也把D的大小和將D作為一個(gè)整體進(jìn)行加密得到的E (D)的大小(即Send-D的代價(jià))加入圖8a、8b中以作參照。顯然,MinCs方法中E(D)的大小隨k或|D|增加都是線性增長(zhǎng)的。Send-D對(duì)應(yīng)的E(D)大小也是隨|D|線性增長(zhǎng)的,但卻與k無關(guān)。自然,相對(duì)直接傳送外包數(shù)據(jù)庫(kù)D的明文本身,MinCs方法會(huì)引入數(shù)據(jù)主至服務(wù)器的通信代價(jià)和服務(wù)器端的存儲(chǔ)代價(jià)。數(shù)據(jù)用戶端的存儲(chǔ)代價(jià)是取決于P (D)的大小的,并且這一代價(jià)在MinCs方法中是O(I)0
最后需聲明的是,在實(shí)驗(yàn)中觀察到使用哪種數(shù)據(jù)集(CA數(shù)據(jù)集或TX數(shù)據(jù)集)對(duì)實(shí)驗(yàn)結(jié)果幾乎沒有什么明顯的差別,因此為簡(jiǎn)便起見,這里沒有討論TX數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果O2.查詢處理代價(jià)首先,對(duì)任意查詢點(diǎn)q,采用本實(shí)施例的方法,服務(wù)器至數(shù)據(jù)用戶端的通信代價(jià)僅僅取決于IE(Gj)U然而,正如上述對(duì)圖8a、8b結(jié)果的分析,由于進(jìn)行了隨機(jī)填補(bǔ)操作,因此每個(gè)劃分有了相同的大小,并且IE(Gi) | = |E(D) |/k (i e [l,k])。相反,在Send-D方法中,服務(wù)器至數(shù)據(jù)用戶端的通信代價(jià)就是對(duì)數(shù)據(jù)集D整體加密的大小,S卩|E(D as onemessage)!。因此,雖然|E(D as one message)比MinCs方法生成的|E(D)|小得多(如圖8a、8b所示),如圖9a、9b所示,本實(shí)施例的方法中服務(wù)器至數(shù)據(jù)用戶端的查詢通信代價(jià)(query communication)仍然比 Send-D 的小得多。下面,再來看數(shù)據(jù)用戶端的查詢處理代價(jià)。每次實(shí)驗(yàn),都隨機(jī)進(jìn)行了 100次查詢,然后得到如圖10a、10b所示的MinCs方法的平均處理時(shí)間。圖IOa顯示MinCs方法的查詢時(shí)間(query time)是隨k增大而遞減的,這顯然是因?yàn)閗增大導(dǎo)致了劃分變小。相比Send-D,MinCs方法的性能要好得多。圖IOb所示,而當(dāng)|D|增加時(shí),MinCs方法的查詢時(shí)間都隨之線性增長(zhǎng)。本實(shí)施例的算法效率包括預(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)對(duì)D進(jìn)行劃分;(3)生成 E(D)。針對(duì)一維和二維的外包數(shù)據(jù)庫(kù),階段(I)的代價(jià)是O(NlogN)的。而在第(2)階段(對(duì)D進(jìn)行劃分),一維情形下,很顯然可以在對(duì)數(shù)據(jù)進(jìn)行排序后通過一次遍歷得到所需的分位點(diǎn),因此階段2的代價(jià)也是O(NlogN)的;二維情形下,該階段的代價(jià)取決于我們所選用的劃分方法。MinCs方法的代價(jià)為O(N)。階段(3)的代價(jià)同加密代價(jià)呈線性關(guān)系。假設(shè)通過加密算法E對(duì)信息m進(jìn)行加密的代價(jià)為e(m);由于“隨機(jī)填補(bǔ)操作”將每個(gè)劃分的大小都增至最大,因此可得生成E (D)的時(shí)間復(fù)雜度是 O (ke( I Gx |b))的,其中G、- arg maX(,>(;(/)) I Gi I
ο2.預(yù)處理階段的存儲(chǔ)代價(jià)服務(wù)器端的存儲(chǔ)代價(jià)為IE(D) I,是0(k|E(Gx) I)的。數(shù)據(jù)用戶端的存儲(chǔ)代價(jià)為P(D)和索引i所占的空間。對(duì)于同類型的大部分的索引結(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由所選用的劃分方法所決定。MinCs方法的Ip(D) I是ο(ι)。
3.查詢階段的查詢代價(jià)查詢階段的時(shí)間代價(jià)主要體現(xiàn)在兩端數(shù)據(jù)用戶端和服務(wù)器端。其中,數(shù)據(jù)用戶需通過P(D)的索引查找包含查詢點(diǎn)q的Bi e P(D),其中任意Bi都是由平行于X坐標(biāo)軸和Y坐標(biāo)軸的邊圍成的d維(一至三維)格子;由于已保證P(D)中的任意兩個(gè)格子不會(huì)相交,且必有一個(gè)格子包含q,因此這種查找實(shí)際是一個(gè)輸出大小為I (結(jié)果有且只有一個(gè))的典型“點(diǎn)位置查詢”過程;在一二維情形下,以上過程的代價(jià)僅是O(Iogk)的。在服務(wù)器端,數(shù)據(jù)用戶給定一個(gè)請(qǐng)求E (g(j)),服務(wù)器便通過查詢哈希表T來找到E(Gj),這個(gè)過程是O (I)的。系統(tǒng)中的單次通信代價(jià)為|e(d)|和Ip⑶|,這可由我們上面對(duì)存儲(chǔ)代價(jià)的討論自然得出。查詢的通信代價(jià)為|E(g(j)) +IE(Gj) I,或|E(g(j)) +IE(Gx) I,或
E(g(j)) | + |E(Gj) |/k。在本實(shí)施例的安全性方面,由于本實(shí)施例中數(shù)據(jù)用戶僅僅是把E (D) = { (E (g(l)),E(GD), ···,(E(g(k)),E(Gk))}傳送給服務(wù)器,并且在查詢處理過程中,只有E (g(j))是對(duì)服務(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))對(duì)的原始索引值i。綜上,本實(shí)施例能夠在數(shù)據(jù)用戶對(duì)服務(wù)器上存儲(chǔ)的外包數(shù)據(jù)庫(kù)中進(jìn)行最近鄰查詢時(shí),使服務(wù)器無法獲知外包數(shù)據(jù)庫(kù)中的數(shù)據(jù)、數(shù)據(jù)用戶的查詢點(diǎn)及最近鄰的查詢結(jié)果,保證數(shù)據(jù)安全。如圖11所示,本發(fā)明還提供另一種基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的系統(tǒng),包括數(shù)據(jù)主I、數(shù)據(jù)用戶2和服務(wù)器3。數(shù)據(jù)主1,用于給定所述參數(shù)k,生成包含外包數(shù)據(jù)庫(kù)的所有數(shù)據(jù)點(diǎn)的VOTonoi圖,其中,每個(gè)數(shù)據(jù)點(diǎn)的字節(jié)數(shù)相同,外包數(shù)據(jù)庫(kù)中的數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù);根據(jù)參數(shù)k將所述VOTonoi圖分割成為k個(gè)劃分,記錄每個(gè)劃分對(duì)應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k大于等于I且小于等于N ;獲取所有劃分中包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長(zhǎng)字節(jié)數(shù),在除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長(zhǎng)字節(jié)數(shù);根據(jù)預(yù)設(shè)的哈希函數(shù)對(duì)每個(gè)邊界建立對(duì)應(yīng)的索引,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有對(duì)應(yīng)的邊界對(duì)應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ)及其所有與相應(yīng)的邊界對(duì)應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ);將所有劃分對(duì)應(yīng)的邊界、與所述加密算法對(duì)應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ)。其中,所述參數(shù)k由數(shù)據(jù)主I或數(shù)據(jù)用戶2給定。數(shù)據(jù)用戶2,用于給定所述參數(shù)k,確定真實(shí)查詢點(diǎn),根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引發(fā)送給服務(wù)器;根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真 實(shí)查詢點(diǎn)的最近鄰的數(shù)據(jù)點(diǎn)。服務(wù)器3,用于根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對(duì)應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分。較佳的,所述外包數(shù)據(jù)庫(kù)為一至三維外包數(shù)據(jù)庫(kù)。優(yōu)選的,當(dāng)所述外包數(shù)據(jù)庫(kù)為一維外包數(shù)據(jù)庫(kù)時(shí),每個(gè)劃分的邊界為兩個(gè)相鄰數(shù)據(jù)點(diǎn)之間的垂直平分線。優(yōu)選的,當(dāng)所述外包數(shù)據(jù)庫(kù)為二維外包數(shù)據(jù)庫(kù)時(shí),每個(gè)劃分的邊界為由與所述voronoi圖的X坐標(biāo)軸和Y坐標(biāo)軸平行的直線圍成的格子。其中,所述數(shù)據(jù)主將所述voronoi圖分割成為k個(gè)等大小的正方形的格子,其中,k為一平方數(shù)。綜上所述,本發(fā)明通過數(shù)據(jù)主生成包含外包數(shù)據(jù)庫(kù)的所有數(shù)據(jù)點(diǎn)的voronoi圖,其中,每個(gè)數(shù)據(jù)點(diǎn)的字節(jié)數(shù)相同,外包數(shù)據(jù)庫(kù)中的數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù);數(shù)據(jù)用戶或數(shù)據(jù)主給定參數(shù)K,數(shù)據(jù)主根據(jù)所述參數(shù)k將所述VOTonoi圖分割成為k個(gè)劃分,記錄每個(gè)劃分對(duì)應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k大于等于I且小于等于N ;數(shù)據(jù)主獲取所有劃分中包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長(zhǎng)字節(jié)數(shù),在除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長(zhǎng)字節(jié)數(shù);數(shù)據(jù)主根據(jù)預(yù)設(shè)的哈希函數(shù)對(duì)每個(gè)邊界建立對(duì)應(yīng)的索引,并將加密后的所有劃分及其對(duì)應(yīng)的所有索引發(fā)送給服務(wù)器存儲(chǔ);數(shù)據(jù)主將所有劃分對(duì)應(yīng)的邊界、與所述加密算法對(duì)應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ);所述數(shù)據(jù)用戶確定真實(shí)查詢點(diǎn),根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引發(fā)送給服務(wù)器;所述服務(wù)器根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對(duì)應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分;所述數(shù)據(jù)用戶根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真實(shí)查詢點(diǎn)的最近鄰的數(shù)據(jù)點(diǎn),能夠在數(shù)據(jù)用戶對(duì)服務(wù)器上存儲(chǔ)的外包數(shù)據(jù)庫(kù)中進(jìn)行最近鄰查詢時(shí),使服務(wù)器無法獲知外包數(shù)據(jù)庫(kù)中的數(shù)據(jù)、數(shù)據(jù)用戶的查詢點(diǎn)及最近鄰的查詢結(jié)果,保證數(shù)據(jù)安全。本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對(duì)于實(shí)施例公開的系統(tǒng)而言,由于與實(shí)施例公開的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法部分說明即可。專業(yè)人員還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。 顯然,本領(lǐng)域的技術(shù)人員可以對(duì)發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包括這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的方法,其特征在于,包括 數(shù)據(jù)主生成包含外包數(shù)據(jù)庫(kù)的所有數(shù)據(jù)點(diǎn)的voronoi圖,其中,每個(gè)數(shù)據(jù)點(diǎn)的字節(jié)數(shù)相同,外包數(shù)據(jù)庫(kù)中的數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù); 數(shù)據(jù)用戶或數(shù)據(jù)主給定參數(shù)K,數(shù)據(jù)主根據(jù)所述參數(shù)k將所述VOTonoi圖分割成為k個(gè)劃分,記錄每個(gè)劃分對(duì)應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k大于等于I且小于等于N ; 數(shù)據(jù)主獲取所有劃分中包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長(zhǎng)字節(jié)數(shù),在除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長(zhǎng)字節(jié)數(shù); 數(shù)據(jù)主根據(jù)預(yù)設(shè)的哈希函數(shù)對(duì)每個(gè)邊界建立對(duì)應(yīng)的索引,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有與相應(yīng)的邊界對(duì)應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ); 數(shù)據(jù)主將所有劃分對(duì)應(yīng)的邊界、與所述加密算法對(duì)應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ); 所述數(shù)據(jù)用戶確定真實(shí)查詢點(diǎn),根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引發(fā)送給服務(wù)器; 所述服務(wù)器根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對(duì)應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分; 所述數(shù)據(jù)用戶根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真實(shí)查詢點(diǎn)的最近鄰的數(shù)據(jù)點(diǎn)。
2.如權(quán)利要求I所述的基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的方法,其特征在于,所述外包數(shù)據(jù)庫(kù)為一至三維外包數(shù)據(jù)庫(kù)。
3.如權(quán)利要求2所述的基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的方法,其特征在于,當(dāng)所述外包數(shù)據(jù)庫(kù)為一維外包數(shù)據(jù)庫(kù)時(shí),每個(gè)劃分的邊界為兩個(gè)相鄰數(shù)據(jù)點(diǎn)之間的垂直平分線。
4.如權(quán)利要求2所述的基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的方法,其特征在于,當(dāng)所述外包數(shù)據(jù)庫(kù)為二維外包數(shù)據(jù)庫(kù)時(shí),每個(gè)劃分的邊界為由與所述voronoi圖的X坐標(biāo)軸和Y坐標(biāo)軸平行的直線圍成的格子。
5.如權(quán)利要求4所述的基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的方法,其特征在于,數(shù)據(jù)主根據(jù)所述參數(shù)k將所述voronoi圖分割成為k個(gè)劃分的步驟中,將所述voronoi圖分割成為k個(gè)等大小的正方形的格子,其中,k為一平方數(shù)。
6.一種基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的系統(tǒng),其特征在于,包括 數(shù)據(jù)主,用于給定所述參數(shù)k,生成包含外包數(shù)據(jù)庫(kù)的所有數(shù)據(jù)點(diǎn)的VOTonoi圖,其中,每個(gè)數(shù)據(jù)點(diǎn)的字節(jié)數(shù)相同,外包數(shù)據(jù)庫(kù)中的數(shù)據(jù)點(diǎn)的個(gè)數(shù)為N,N為正整數(shù);根據(jù)參數(shù)k將所述voronoi圖分割成為k個(gè)劃分,記錄每個(gè)劃分對(duì)應(yīng)的邊界,其中,每個(gè)劃分互不相交,不同劃分包含的數(shù)據(jù)點(diǎn)部分重復(fù)或完全不重復(fù),k大于等于I且小于等于N ;獲取所有劃分中包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分的字節(jié)數(shù)作為最長(zhǎng)字節(jié)數(shù),在除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分中添加隨機(jī)字節(jié),使除包含最多個(gè)數(shù)據(jù)點(diǎn)的劃分之外的每個(gè)其它劃分的字節(jié)數(shù)等于所述最長(zhǎng)字節(jié)數(shù);根據(jù)預(yù)設(shè)的哈希函數(shù)對(duì)每個(gè)邊界建立對(duì)應(yīng)的索引,并根據(jù)一預(yù)設(shè)的加密算法將加密后的所有劃分及其所有對(duì)應(yīng)的邊界對(duì)應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ)及其所有與相應(yīng)的邊界對(duì)應(yīng)的索引發(fā)送給服務(wù)器存儲(chǔ);將所有劃分對(duì)應(yīng)的邊界、與所述加密算法對(duì)應(yīng)的解密算法和所述哈希函數(shù)發(fā)送給所述數(shù)據(jù)用戶存儲(chǔ); 數(shù)據(jù)用戶,用于給定所述參數(shù)k,確定真實(shí)查詢點(diǎn),根據(jù)所述真實(shí)查詢點(diǎn)確定包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界,根據(jù)所述哈希函數(shù)獲取與包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引,并將包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引發(fā)送給服務(wù)器;根據(jù)所述解密算法將接收到的加密后的包含所述真實(shí)查詢點(diǎn)的劃分進(jìn)行解密,獲取包含所述真實(shí)查詢點(diǎn)的劃分,并從包含所述真實(shí)查詢點(diǎn)的劃分中獲取所述真實(shí)查詢點(diǎn)的最近鄰的數(shù)據(jù)點(diǎn); 服務(wù)器,用于根據(jù)接收到的包含所述真實(shí)查詢點(diǎn)的劃分的對(duì)應(yīng)的邊界的對(duì)應(yīng)的索引向所述數(shù)據(jù)用戶發(fā)送對(duì)應(yīng)的加密后的包含所述真實(shí)查詢點(diǎn)的劃分。
7.如權(quán)利要求6所述的基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的系統(tǒng),其特征在于,所述外包數(shù)據(jù)庫(kù)為一至三維外包數(shù)據(jù)庫(kù)。
8.如權(quán)利要求7所述的基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的系統(tǒng),其特征在于,當(dāng)所述外包數(shù)據(jù)庫(kù)為一維外包數(shù)據(jù)庫(kù)時(shí),每個(gè)劃分的邊界為兩個(gè)相鄰數(shù)據(jù)點(diǎn)之間的垂直平分線。
9.如權(quán)利要求7所述的基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的系統(tǒng),其特征在于,當(dāng)所述外包數(shù)據(jù)庫(kù)為二維外包數(shù)據(jù)庫(kù)時(shí),每個(gè)劃分的邊界為由與所述voronoi圖的X坐標(biāo)軸和Y坐標(biāo)軸平行的直線圍成的格子。
10.如權(quán)利要求9所述的基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的系統(tǒng),其特征在于,所述數(shù)據(jù)主將所述voronoi圖分割成為k個(gè)等大小的正方形的格子,其中,k為一平方數(shù)。
全文摘要
本發(fā)明涉及一種基于等長(zhǎng)數(shù)據(jù)劃分的安全最近鄰查詢的方法及系統(tǒng),所述方法包括數(shù)據(jù)主將包含外包數(shù)據(jù)庫(kù)的voronoi圖分割成為k個(gè)劃分,記錄劃分的邊界,在劃分中添加隨機(jī)字節(jié),并根據(jù)預(yù)設(shè)的哈希函數(shù)對(duì)每個(gè)邊界建立對(duì)應(yīng)的索引,并將加密后的所有劃分及其對(duì)應(yīng)的索引發(fā)送給服務(wù)器,將所有劃分對(duì)應(yīng)的邊界發(fā)送給數(shù)據(jù)用戶;數(shù)據(jù)用戶將包含真實(shí)查詢點(diǎn)的劃分對(duì)應(yīng)的索引發(fā)送給服務(wù)器;服務(wù)器向數(shù)據(jù)用戶發(fā)送加密后的包含真實(shí)查詢點(diǎn)的劃分;數(shù)據(jù)用戶獲取加密后的包含所述真實(shí)查詢點(diǎn)的劃分,并解密后計(jì)算出最近鄰,在數(shù)據(jù)用戶對(duì)服務(wù)器上存儲(chǔ)的外包數(shù)據(jù)庫(kù)中進(jìn)行最近鄰查詢時(shí),使服務(wù)器無法獲知外包數(shù)據(jù)庫(kù)中的數(shù)據(jù)、查詢點(diǎn)及查詢結(jié)果,保證數(shù)據(jù)安全。
文檔編號(hào)G06F17/30GK102945282SQ20121046569
公開日2013年2月27日 申請(qǐng)日期2012年11月16日 優(yōu)先權(quán)日2012年11月16日
發(fā)明者姚斌, 李飛飛, 肖小奎 申請(qǐng)人:上海交通大學(xué)