基于訪問模式保護(hù)的空間數(shù)據(jù)安全系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及的是一種信息安全領(lǐng)域的技術(shù),具體是一種基于訪問模式保護(hù)的空間 數(shù)據(jù)安全系統(tǒng)。
【背景技術(shù)】
[0002] 自從誕生以來,數(shù)據(jù)安全問題就一直是云存儲服務(wù)所面臨的最重大的挑戰(zhàn)之一。 因?yàn)閿?shù)據(jù)存儲于云端,并且通過網(wǎng)絡(luò)進(jìn)行存取,所以難免會遭到攻擊者的利用。盡管數(shù)據(jù)的 內(nèi)容本身可以進(jìn)行加密,但是攻擊者仍然能夠從用戶的訪問模式中得到有用的信息。如何 設(shè)計(jì)一種合理的結(jié)構(gòu),盡量減小云存儲中的信息泄露,把受到攻擊的風(fēng)險(xiǎn)降到最低,一直是 一個(gè)重要的課題。在這個(gè)領(lǐng)域,目前比較有代表性的工作如下:
[0003]Goldreich等人最早研宄了如何隱藏訪問模式以避免消息泄露的問題。他們的想 法是使用一個(gè)帶有密鑰的物理隔離的CPU來處理指令。CPU接收加密指令,并且使用它的內(nèi) 部寄存器將其解密。他們最初設(shè)計(jì)了一種"平方根"方案,來將主存劃分為主存儲空間和保 護(hù)空間。這種方案雖然簡單,但是性能并不理想。隨后他們又提出了將保護(hù)空間結(jié)構(gòu)化的 思路。Pinkas等人在其基礎(chǔ)上進(jìn)行了改進(jìn),使其性能得到了進(jìn)一步的提升。Boneh等人提 出了遺忘存儲(ObliviousStorage)的方案,在性能上又有了進(jìn)一步的提升。然而這些解決 方案都只針對一維的數(shù)據(jù),對于二維以上的數(shù)據(jù)并沒有很好的辦法。
[0004] 另一方面,空間數(shù)據(jù)對象是地理位置查詢中常見的對象。它通常出現(xiàn)在多維(例 如二維)空間中,僅僅用點(diǎn)是不能很好地描述的。對于空間對象,例如城市,街道等等,在二 維空間中都不能用一個(gè)孤立點(diǎn)來簡單描述。而在數(shù)據(jù)對象的使用上,范圍查詢是一個(gè)很常 見的操作。例如,想要找到一個(gè)用戶所在位置附近5公里內(nèi)的街道。如何根據(jù)他們的空間 位置快速有效地返回相應(yīng)的數(shù)據(jù)對象是非常重要的。
[0005]R-tree是由伯克利大學(xué)的AntomnGuttman等人在1984年最先提出的一種針對多 維數(shù)據(jù)的動態(tài)索引結(jié)構(gòu),是目前使用最為廣泛的多維數(shù)據(jù)索引結(jié)構(gòu)之一。它采用一種類似 于B+樹的結(jié)構(gòu)來存儲多維數(shù)據(jù),使得用戶可以進(jìn)行快速的查詢和修改。WangPeng等人在其 基礎(chǔ)上,結(jié)合非對稱標(biāo)量積保存加密(ASPE),進(jìn)一步提出了rhat-trees,用于在加密的情 況下向服務(wù)器進(jìn)行查詢操作。盡管如此,以上方法對于如何應(yīng)對由訪問模式猜測用戶信息 的攻擊者都沒有很好的解決方案。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明針對現(xiàn)有技術(shù)存在的上述不足,提出一種基于訪問模式保護(hù)的空間數(shù)據(jù)安 全系統(tǒng),在保證查詢效率的同時(shí),不但實(shí)現(xiàn)數(shù)據(jù)的加密,同時(shí)對數(shù)據(jù)的訪問模式也進(jìn)行隱藏 和保護(hù),從而大大降低信息泄漏的風(fēng)險(xiǎn)。
[0007] 本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的:
[0008] 本發(fā)明涉及一種基于訪問模式保護(hù)的空間數(shù)據(jù)安全系統(tǒng),包括:服務(wù)端和與之相 連的用戶端,其中:用戶端向服務(wù)端發(fā)出數(shù)據(jù)項(xiàng)查詢指令,并接收服務(wù)端反饋的數(shù)據(jù)查詢結(jié) 果;
[0009] 用戶端包括:地址翻譯單元、置亂處理單元和執(zhí)行單元,其中:地址翻譯單元根據(jù) 用戶指令翻譯得到查詢請求,通過執(zhí)行單元發(fā)送至向服務(wù)端進(jìn)行查詢;
[0010] 服務(wù)端包括:數(shù)據(jù)存儲單元和查詢請求響應(yīng)單元,其中:數(shù)據(jù)存儲單元與硬盤或 數(shù)據(jù)庫相連并存儲數(shù)據(jù)信息,其中包括用戶的數(shù)據(jù)以及用于加密算法的隱藏存儲區(qū)。查詢 請求響應(yīng)單元與數(shù)據(jù)存儲相連,響應(yīng)用戶端的查詢請求并傳輸數(shù)據(jù)信息。
[0011] 所述的地址翻譯單元中包含一個(gè)動態(tài)索引結(jié)構(gòu)R-tree,將其命名為R;
[0012] 所述的執(zhí)行單元中包含一個(gè)層級列表L,該層級列表L中存儲著服務(wù)器上隱蔽存 儲區(qū)的結(jié)構(gòu)信息;當(dāng)收到地址翻譯模塊的請求后,執(zhí)行端向服務(wù)器執(zhí)行查詢請求,并將得 到結(jié)果并返回給用戶;為了數(shù)據(jù)安全考慮,當(dāng)系統(tǒng)開始運(yùn)行的時(shí)候,必須輸入一個(gè)密鑰SK, SK| =k,用于數(shù)據(jù)加密。
[0013] 所述的置亂處理單元包括:局部置亂處理模塊、移層操作模塊、全局置亂處理模塊 和并發(fā)置亂模塊,其中:局部置亂處理模塊負(fù)責(zé)進(jìn)行隱藏存儲區(qū)中某個(gè)層級內(nèi)部或是主存 儲區(qū)內(nèi)部的置亂操作,移層操作模塊負(fù)責(zé)進(jìn)行隱藏存儲區(qū)中不同層級之間的置亂操作,全 局置亂處理模塊負(fù)責(zé)進(jìn)行隱藏存儲區(qū)和主存儲區(qū)之間的置亂操作,并發(fā)置亂模塊負(fù)責(zé)保證 用戶在置亂處理的過程中仍然能對數(shù)據(jù)進(jìn)行正常訪問。 技術(shù)效果
[0014] 與現(xiàn)有技術(shù)相比,本發(fā)明的技術(shù)效果包括:
[0015] 首先,在服務(wù)器端采用了簡單的一維id,使得服務(wù)器上不需要存儲復(fù)雜的多位數(shù) 據(jù),從而使得服務(wù)器數(shù)據(jù)結(jié)構(gòu)的復(fù)雜度大大降低。
[0016] 其次,避免將地址信息a直接存儲在服務(wù)器,可以避免泄密的風(fēng)險(xiǎn)。潛在的攻擊者 只能獲取到一維id的信息,而無法獲知用戶查詢的真實(shí)范圍。
[0017] 此外,本方法當(dāng)服務(wù)器的存儲空間M固定時(shí),用戶端的存儲空間m越大,算法的運(yùn) 行速度越快。實(shí)驗(yàn)結(jié)果表明,在保證數(shù)據(jù)安全的前提下,對二維空間數(shù)據(jù)的處理速度達(dá)到了 接近一維速度的效果。
【附圖說明】
[0018] 圖1為本發(fā)明系統(tǒng)結(jié)構(gòu)示意圖;
[0019] 圖2為實(shí)施例中動態(tài)索引結(jié)構(gòu)R-tree規(guī)模測試效果示意圖;
[0020] 圖3為實(shí)施例執(zhí)行時(shí)間效果示意圖;
[0021] 圖4為實(shí)施例中置亂等待時(shí)長示意圖;
[0022] 圖5為實(shí)施例系統(tǒng)結(jié)構(gòu)示意圖;
[0023] 圖6為實(shí)施例置亂處理示意圖。
【具體實(shí)施方式】
[0024] 下面對本發(fā)明的實(shí)施例作詳細(xì)說明,本實(shí)施例在以本發(fā)明技術(shù)方案為前提下進(jìn)行 實(shí)施,給出了詳細(xì)的實(shí)施方式和具體的操作過程,但本發(fā)明的保護(hù)范圍不限于下述的實(shí)施 例。
[0025] 以下實(shí)施例的應(yīng)用環(huán)境包括:
[0026] 服務(wù)器端S,包括:局部置亂處理模塊、移層操作模塊、全局置亂處理模塊和并發(fā) 置亂模塊,其中:局部置亂處理模塊負(fù)責(zé)進(jìn)行隱藏存儲區(qū)中某個(gè)層級內(nèi)部或是主存儲區(qū)內(nèi) 部的置亂操作,移層操作模塊負(fù)責(zé)進(jìn)行隱藏存儲區(qū)中不同層級之間的置亂操作,全局置亂 處理模塊負(fù)責(zé)進(jìn)行隱藏存儲區(qū)和主存儲區(qū)之間的置亂操作,并發(fā)置亂模塊負(fù)責(zé)保證用戶在 置亂處理的過程中仍然能對數(shù)據(jù)進(jìn)行正常訪問。
[0027] 該服務(wù)器端S上的數(shù)據(jù)形式為(v,b),其中:v表示數(shù)據(jù)標(biāo)識(id),b表示數(shù)據(jù)內(nèi) 容;
[0028] 所述的用戶端包括:地址翻譯單元和執(zhí)行單元,其中:地址翻譯單元根據(jù)用戶指 令翻譯得到查詢請求,通過執(zhí)行單元發(fā)送至向服務(wù)端進(jìn)行查詢;
[0029] 所述的服務(wù)器端S響應(yīng)以下指令:
[0030] 數(shù)據(jù)項(xiàng)查詢指令Get(v):當(dāng)id為v的項(xiàng)存在于服務(wù)器端S,則返回(v,b),否則返 回空值。
[0031] 數(shù)據(jù)項(xiàng)更新指令Put(v):服務(wù)器端S將(v,b)加入到存儲空間中,且當(dāng)v已經(jīng)存 在時(shí)覆蓋原數(shù)據(jù)。
[0032] 數(shù)據(jù)項(xiàng)批量查詢指令GetRange(vl,v2):服務(wù)器端S返回所有滿足vl<v<v2 的(v,b)值。
[0033] 數(shù)據(jù)項(xiàng)批量刪除指令DelRange(Vl,v2):服務(wù)器端S刪除所有滿足vl<v彡v2 的(V,b)值。
[0034] 所述的用戶端C響應(yīng)以下指令:
[0035] 數(shù)據(jù)獲取指令Get_o(a):獲取范圍a內(nèi)的所有數(shù)據(jù)。
[0036] 數(shù)據(jù)更新指令Put_o(a,b):將范圍a內(nèi)的數(shù)據(jù)覆蓋為b。
[0037] 其中:a=(屯,d2-)為查詢的范圍,扎七…分別代表不同維度內(nèi)的范圍信息。例 如,對于二維的地理坐標(biāo),屯和(1 2分別表示經(jīng)度和煒度的范圍。
[0038] 所述的用戶U向用戶端C發(fā)送Get_o(a)或是Put_o(a,b)的指令,且只有在接到 前一條指令的結(jié)果之后,U才會發(fā)送下一條指令。
[0039] 所述的地址翻譯模塊中包含一個(gè)動態(tài)索引結(jié)構(gòu)R-tree,將其命名為R。當(dāng)接到用 戶的請求時(shí),地址翻譯模塊負(fù)責(zé)將形如(a,b)的數(shù)據(jù)轉(zhuǎn)換為形如(v,b)的數(shù)據(jù),S卩:將a轉(zhuǎn) 換為V。
[0040] 與傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)不同,地址翻譯模塊中的R-tree的葉子節(jié)點(diǎn)不需要存儲節(jié)點(diǎn)的 具體信息b,取而代之的是存儲這條信息在服務(wù)器上對應(yīng)的idv,即地址翻譯模塊中的R-tree存儲的是(a,v)的信息。這樣就大大減小了R-tree的體積,使得可以將存儲了所有 節(jié)點(diǎn)信息的整個(gè)R_tree都放置在用戶端C。
[0041] 當(dāng)?shù)刂贩g模塊收到獲取范圍a內(nèi)的所有數(shù)據(jù)的指令Get_o(a)時(shí),在R中尋找a 范圍內(nèi)的節(jié)點(diǎn),令結(jié)果為v,v= (VpVf)。對于每一個(gè)vnGv,發(fā)送一個(gè)Get(v)請求到執(zhí) 行端。收到結(jié)果后,將結(jié)果輸出給用戶。
[0042] 當(dāng)?shù)刂贩g模塊收到將范圍a內(nèi)的數(shù)據(jù)覆蓋為b的指令Put_o(a,b)時(shí),在R中尋 找a范圍內(nèi)的節(jié)點(diǎn),令結(jié)果為v,v=(Vpv2~)。對于每一個(gè)vnGv,發(fā)送一個(gè)Put(V,b)請 求到執(zhí)行端。收到結(jié)果后,將結(jié)果輸出給用戶。
[0043] 所述的執(zhí)行端中包含一個(gè)層級列表L,該層級列表L中存儲著服務(wù)器上隱蔽存儲 區(qū)的結(jié)構(gòu)信息。當(dāng)收到地址翻譯模塊的請求后,執(zhí)行端向服務(wù)器執(zhí)行查詢請求,并將得到結(jié) 果并返回給用戶。為了數(shù)據(jù)安全考慮,當(dāng)系統(tǒng)開始運(yùn)行的時(shí)候,必須輸入一個(gè)密鑰SK,|SK| =k,用于數(shù)據(jù)加密。
[0044] 置亂函數(shù)PRPsS-個(gè)定長偽隨機(jī)置換,對應(yīng)服務(wù)器端S上所有包括主存儲區(qū)以及 隱蔽存儲區(qū)的數(shù)據(jù)的id,都用該P(yáng)RPS進(jìn)行加密。 實(shí)施例1
[0045] 如圖4所示,本實(shí)施例中,當(dāng)用戶端C從服務(wù)器端S獲取一個(gè)id的時(shí)候,要對其進(jìn) 行解密,并在用戶端返回服務(wù)器數(shù)據(jù)時(shí)進(jìn)行重加密,具體為:
[0046] 步驟1、執(zhí)行端判斷v是否存在于層級列表L中
[0047] 步驟2、當(dāng)v存在于L中時(shí):
[0048] 2. 1)對于L中的每一層,用戶端C向服務(wù)器端S發(fā)出一個(gè)數(shù)據(jù)項(xiàng)查詢指令 Cet(P/?Ps?))?以獲取一個(gè)偽裝數(shù)據(jù)編號對應(yīng)的數(shù)據(jù)值,并在接收到后忽略該數(shù)據(jù) 值。
[0049] 2. 2)向服務(wù)器發(fā)送數(shù)據(jù)項(xiàng)查詢指令Get(PRPS (v)),并在接收到服務(wù)器端S返回的 結(jié)果b。
[0050] 2. 3)執(zhí)行加密傳輸處理shelterlnsert(V,b)。
[0051] 2. 4)將decryptSK(b)作為結(jié)果返回給用戶。
[0052] 步驟3、當(dāng)v不存在于L中時(shí):
[0053] 3. 1)設(shè)1為L中id為v的項(xiàng)目所在的層中最高的一層。
[0054] 3. 2)對于L中的每一個(gè)i辛1的層,用戶端向服務(wù)器端發(fā)出一個(gè)種))的 請求,以獲取一個(gè)偽裝數(shù)據(jù)。接收并忽略該數(shù)據(jù);發(fā)送,設(shè)b為服務(wù)器返回的結(jié) 果。
[0055] 3.3)向服務(wù)器端S發(fā)送一個(gè)數(shù)據(jù)項(xiàng)查詢指令Get(PRPs(d))以獲取一個(gè)偽裝數(shù)據(jù) 編號對應(yīng)的數(shù)據(jù)值,并在接收到后忽略該數(shù)據(jù)值。
[0056] 3. 4)執(zhí)行加密傳輸處理shelterlnsert(V,b)。
[0057] 3. 5)將decryptSK(b)作為結(jié)果返回給用戶。
[0058] 所述的加密傳輸處理shelterlnsert(V,b),包括以下步驟:
[0059]i?