一種基于Merkle樹結(jié)構(gòu)的空間查詢完整性驗證方法
【專利說明】一種基于MerkIe樹結(jié)構(gòu)的空間查詢完整性驗證方法 【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于數(shù)據(jù)庫處理技術(shù)領(lǐng)域,具體涉及一種基于Merkle樹結(jié)構(gòu)的空間查詢 完整性驗證方法。 【【背景技術(shù)】】
[0002] 隨著智能設備與云存儲技術(shù)的發(fā)展,大量的位置相關(guān)數(shù)據(jù)需要迀移到云存儲平臺 上進行維護與管理,由此產(chǎn)生了數(shù)據(jù)擁有者隱私信息泄露的威脅,為此,眾多外包空間數(shù)據(jù) 隱私保護方法被提出,從而支持對外包空間數(shù)據(jù)坐標信息的空間轉(zhuǎn)換,并支持對授權(quán)用戶 的空間檢索處理,從而在保護數(shù)據(jù)擁有者隱私信息的條件下,使得外包的數(shù)據(jù)依然可用。然 而,在商業(yè)利益的驅(qū)使下,服務提供者可能返回不符合用戶需要的檢索結(jié)果,更有甚者,一 些惡意服務提供者可能對查詢結(jié)果進行篡改,從而嚴重影響查詢的服務質(zhì)量。因此,在該服 務模式下,亟需對查詢結(jié)果的完整性驗證方法進行研宄,使得授權(quán)用戶可以確認從服務提 供者獲得的查詢結(jié)果是否可信。
[0003]目前許多研宄者提出了支持對密文空間數(shù)據(jù)進行查詢的解決方案,保護了外包空 間數(shù)據(jù)的隱私,其中Hilbert曲線(Standard Hilbert Curve,SHC)被廣泛應用于空間數(shù)據(jù) 的轉(zhuǎn)換中,其支持外包空間數(shù)據(jù)的隱私保護與高效查詢。另一類研宄則集中于對查詢結(jié)果 的完整性驗證上,其中基于簽名的技術(shù)由數(shù)據(jù)擁有者為外包數(shù)據(jù)集中的每一個元素生成一 個簽名,從而作為進行完整性驗證的依據(jù)。為了提高驗證的效率,Merkle哈希樹(Merkle Hash Tree,MHT)被用于對查詢結(jié)果的驗證。然而,目前只有很少的工作同時解決外包空 間數(shù)據(jù)隱私保護與查詢結(jié)果完整性驗證的問題,基于Hilbert曲線的概率復制策略(SHC based probabilistically replicating scheme,SPR)在一定程度上解決了該問題,但是, SPR并不是一種確定性的完整性驗證方法,它提供的驗證結(jié)果具有一定的漏報率。 【
【發(fā)明內(nèi)容】
】
[0004] 針對現(xiàn)有的空間查詢完整性驗證方法所存在的問題,本發(fā)明提供一種基于Merkle 樹結(jié)構(gòu)的空間查詢完整性驗證方法,通過在自適應Hilbert曲線所生成的四分樹節(jié)點上 建立Merkle樹驗證結(jié)構(gòu),并設計了范圍查詢與KNN查詢的完整性驗證方法,使得本發(fā)明所 提供的驗證結(jié)果不存在誤報與漏報的情況,保證了授權(quán)用戶可以完全確認從服務提供者獲 得的查詢結(jié)果是否可信。
[0005] 為了實現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案:
[0006] 一種基于Merkle樹結(jié)構(gòu)的空間查詢完整性驗證方法,包括以下步驟:
[0007] 首先,數(shù)據(jù)擁有者使用自適應Hilbert曲線生成外包數(shù)據(jù)集中各興趣點的索引 值,并對各興趣點的內(nèi)容采用對稱加密方法處理獲得建立索引后的密文數(shù)據(jù)集In(〇'); 然后,數(shù)據(jù)擁有者在自適應Hilbert曲線生成的空間四分樹基礎上,繼續(xù)對該四分樹進行 處理,生成用于查詢完整性驗證的MQ-tree ;最后,授權(quán)用戶經(jīng)過基于自適應Hilbert曲線 的查詢處理,從服務提供者處獲得查詢結(jié)果與對應的信息摘要,使用對稱密鑰解密查詢結(jié) 果后,得到明文查詢結(jié)果,該用戶通過MQ-tree、明文查詢結(jié)果以及原始的查詢請求,對本次 查詢的完整性進行驗證。
[0008] 優(yōu)選的,MQ-tree的生成方法包括以下步驟:
[0009] 步驟1. 1 :將自適應Hilbert曲線生成的空間四分樹根節(jié)點T壓入存儲四分樹節(jié) 點的棧S中;
[0010] 步驟1. 2 :若棧S不為空,則執(zhí)行步驟1. 3,否則執(zhí)行步驟1. 7 ;
[0011] 步驟1. 3 :彈出棧頂元素至臨時節(jié)點Q中,若Q含有子節(jié)點,則執(zhí)行步驟1. 4,否則 執(zhí)行步驟1. 6 ;
[0012] 步驟1. 4 :若Q的所有子節(jié)點均被訪問,且這些子節(jié)點均具有信息摘要,則生成Q 的f目息摘要hQ= H (h咖| hQ(1) | hQ(2) | hQ(3)),并設走Q已被訪問,然后跳回步驟1. 2,否則執(zhí)燈 步驟1. 5 ;
[0013] 其中,H()表示哈希函數(shù),|表示字符串的連接操作,Q(i)表示節(jié)點Q的第i個子 節(jié)點,h QW表示Q第i個子節(jié)點的信息摘要;MQ-tree也是四分樹,中間節(jié)點Q的子節(jié)點順序 由子節(jié)點的索引值決定,索引值較小的子節(jié)點在前,滿足Q(〇).VA〈Q(1).VA〈Q(2).VA〈Q(3). VA,其中9(1).1表示節(jié)點Q(i)的AHC索引值;
[0014] 步驟1. 5 :先將節(jié)點Q壓入棧S中,再把Q的四個子節(jié)點倒序壓入棧S中,即依次 壓入Q(3)、Q⑵、Q(1)、Q(0),然后跳回步驟1. 2 ;
[0015] 步驟1. 6 :若節(jié)點Q不包含興趣點,則設定節(jié)點Q的信息摘要hQ= H($),否則設定Q 的信息摘要hQ= H(p i. d|Pj. d|pk. d|...),兩種情況均設定Q已被訪問,然后跳回步驟1. 2 ;
[0016]步驟1. 7 :數(shù)據(jù)擁有者對四分樹根節(jié)點T的摘要hT運行簽名算法SignO,并將簽 名結(jié)果Sign (hT)存儲于根節(jié)點中,即生成MQ-tree,其根節(jié)點為T。
[0017] 優(yōu)選的,對本次查詢的完整性進行驗證為范圍查詢結(jié)果完整性驗證;范圍查詢結(jié) 果完整性驗證方法具體包括:
[0018] 步驟2. 1 :將MQ-tree根節(jié)點T的引用賦值于臨時節(jié)點Q ;
[0019] 步驟2. 2 :若節(jié)點Q不含有子節(jié)點,則執(zhí)行步驟2. 3,否則執(zhí)行步驟2. 5 ;
[0020] 步驟2.3 :若節(jié)點Q的對應區(qū)域與范圍查詢窗口 W無交集,則設定輸出參數(shù)d = hQ, 并跳至步驟2. 7,否則執(zhí)行步驟2. 4 ;
[0021] 其中,hQ為節(jié)點Q的信息摘要,在MQ-tree的生成過程中獲得;
[0022] 步驟2. 4 :若范圍查詢結(jié)果集R的鍵值表R. keyset中包含節(jié)點Q的索引值Q. VA, 則設定輸出參數(shù)d = R. get (Q. VA),并跳至步驟2. 7,否則設定輸出參數(shù)d = H($),并跳至步 驟 2. 7 ;
[0023] 其中,R. keyset包含結(jié)果集R中所有的索引值,R. get (Q. VA)可從結(jié)果集R中獲得 匹配索引值Q. VA的記錄的信息摘要;
[0024] 步驟2.5 :若節(jié)點Q的對應區(qū)域與范圍查詢窗口 W無交集,則設定輸出參數(shù)d = hQ, 并跳至步驟2. 7,否則執(zhí)行步驟2. 6 ;
[0025] 步驟2. 6 :對節(jié)點Q的四個子節(jié)點,順序遞歸執(zhí)行步驟2. 1至2. 7 ;其輸入?yún)?shù)由節(jié) 點Q(i)、W(i)以及R組成,返回的信息摘要結(jié)果分別為d(0)、d(l)、d(2)、d(3),由此設定輸 出參數(shù) d = H(d(0) |d(l) |d(2) |d(3));
[0026]其中,W⑴表示范圍W的第i個子區(qū)域,與節(jié)點Q(i)的對應區(qū)域匹配;
[0027] 步驟2. 7:返回驗證信息摘要d,并由授權(quán)用戶使用MQ-tree的根節(jié)點與數(shù)據(jù)擁有 者的公鑰,比較d與Sigr^Og是否相同,若相同,則說明本次范圍查詢結(jié)果是完整的,否則 為非完整的;
[0028] 其中,Sign、)為與簽名算法Sign()對應的逆運算。
[0029] 優(yōu)選的,對本次查詢的完整性進行驗證為KNN查詢結(jié)果完整性驗證;KNN查詢結(jié)果 完整性驗證方法具體包括以下步驟:
[0030] 步驟3. 1 :使用查詢結(jié)果集R與KNN查詢點q,生成對應的范圍查詢W,為一個中心 為q,邊長為2|| p - q||的正方形,其中,p為結(jié)果集R中距離q最遠的興趣點,||p - q||表 示P與q之間的歐式距離;
[0031] 步驟3. 2 :使用基于AHC的范圍查詢轉(zhuǎn)換方法,獲得范圍查詢W的查詢結(jié)果R" ;
[0032] 步驟3. 3 :若7? G 7T ,且在R"_R中不存在與q的距離比p更近的興趣點,則通過 范圍查詢完整性驗證方法進行驗證,獲得驗證結(jié)果,否則結(jié)束驗證過程,返回查詢結(jié)果不完 整;
[0033] 其中,R"_R表示集合R"與R的差集;若迄iT,則證明服務提供商在結(jié)果集中插 入了額外的興趣點,若在R"-R中存在與q的距離比P更近的興趣點,則意味著服務提供商 用其他興趣點替換了正確結(jié)果集中的興趣點,以上兩種情況均會終止KNN查詢結(jié)果完整性 驗證過程。
[0034] 相對于現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:本發(fā)明提出的基于Merkle樹結(jié)構(gòu) 的空間查詢完整性驗證方法,在構(gòu)建外包空間數(shù)據(jù)的索引后即生成Merkle樹結(jié)構(gòu)的認證 信息,從而支持對空間查詢的完整性驗證,基于Hilbert曲線的概率復制策略(SHC based probabilistically replicating scheme,SPR),需要存儲額外的對象副本信息,增加了 數(shù)據(jù)的存儲與維護開銷,且SPR提供的驗證結(jié)果具有一定的漏報率,而本發(fā)明僅需維護 Merkle樹結(jié)構(gòu)的驗證信息,從而提高了存儲資源的利用率,且本發(fā)明的完整性驗證結(jié)果是 確定性的,不存在誤報與漏報的情況。
[0035] 本發(fā)明公開了一種基于Merkle樹結(jié)構(gòu)的空間查詢完整性驗證方法,在已有的自 適應Hilbert曲線所生成的四分樹