本發(fā)明屬于計(jì)算機(jī)數(shù)據(jù)隱私保護(hù)技術(shù)領(lǐng)域,更具體地,涉及一種基于隱私保護(hù)的隨機(jī)遍歷方法和系統(tǒng)。
背景技術(shù):
最近幾年云計(jì)算變得越來越流行,因?yàn)槭褂迷品?wù)器,開發(fā)者不再需要擔(dān)心硬件資源的浪費(fèi),并且可以按需購買服務(wù),公司也不需要花費(fèi)額外人力去管理自己的硬件平臺(tái)。云計(jì)算優(yōu)點(diǎn)眾多,所以越來越多的人和企業(yè)愿意將他們的數(shù)據(jù)存儲(chǔ)到云服務(wù)器。
但是當(dāng)用戶享受云計(jì)算帶來的方便的同時(shí),他們也必須考慮數(shù)據(jù)的隱私安全。因?yàn)樵品?wù)器提供商是不值得完全信賴的,所以上傳到云服務(wù)器上的敏感信息(比如電子郵件、醫(yī)療記錄、公司財(cái)務(wù)信息)就可能被這些云服務(wù)器提供商非法地訪問。為了保護(hù)數(shù)據(jù)的安全,現(xiàn)在最常用的方法就是先在本地將數(shù)據(jù)進(jìn)行加密然后再傳到云服務(wù)器,但是加密會(huì)使數(shù)據(jù)的可用性降低,而且傳統(tǒng)的數(shù)據(jù)處理方法也不能直接應(yīng)用于加密的數(shù)據(jù)。最簡單的方法就是將密文從云服務(wù)器下載到本地,然后在本地對數(shù)據(jù)進(jìn)行處理,但是這種方法會(huì)占用大量的帶寬而且效率底下,所以這種方法不切實(shí)際??伤阉骷用芸梢杂脕斫鉀Q上面的問題,它通過加密技術(shù)保護(hù)數(shù)據(jù)的隱私安全,同時(shí)建立安全索引使得云服務(wù)器能夠直接在加密的數(shù)據(jù)上進(jìn)行查詢處理。
隨著近年來大量的可搜索加密方法被提出用于支持不同的查詢(比如單關(guān)鍵詞查詢、多關(guān)鍵詞布隆查詢,多關(guān)鍵詞排序查詢),但是大多數(shù)方法都不能真正地保護(hù)數(shù)據(jù)的隱私安全,尤其是很多方法都存在一個(gè)缺陷——攻擊者可以通過比較和分析查詢結(jié)果和查詢處理時(shí)在索引上遍歷的路徑來判斷兩個(gè)查詢是否來自相同的查詢請求。
技術(shù)實(shí)現(xiàn)要素:
針對實(shí)際的應(yīng)用場景和現(xiàn)有技術(shù)存在的缺陷,本發(fā)明的目的是提供一種基于隱私保護(hù)的隨機(jī)遍歷方法和系統(tǒng),即能保證查詢高效性又同時(shí)保證查詢安全性。本發(fā)明通過放大數(shù)據(jù)集,使得云服務(wù)器在查詢處理時(shí),可以擁有多種遍歷路徑去訪問一個(gè)特定的文檔。同時(shí)本發(fā)明通過為數(shù)據(jù)集中的每個(gè)文檔副本分配一個(gè)巧妙設(shè)計(jì)的開關(guān),和為每一次查詢分配不同的鑰匙來隱藏云服務(wù)器在索引上的遍歷路徑和查詢結(jié)果泄露的隱私信息。
為了實(shí)現(xiàn)上述目的,按照本發(fā)明的一個(gè)方面,提供一種基于隱私保護(hù)的隨機(jī)遍歷方法,包括以下步驟:
(1)將數(shù)據(jù)集劃分為l個(gè)小組,每個(gè)小組生成e個(gè)文檔副本,隨機(jī)排列得到目標(biāo)數(shù)據(jù)集;
(2)將目標(biāo)數(shù)據(jù)集中的每個(gè)文檔副本作為葉子節(jié)點(diǎn),建立一個(gè)二叉樹作為查詢的安全索引,給二叉樹中的所有節(jié)點(diǎn)分配開關(guān);
(3)對每一次查詢分配一個(gè)鑰匙,在查詢處理時(shí),當(dāng)遍歷到一個(gè)節(jié)點(diǎn)且此節(jié)點(diǎn)開關(guān)和鑰匙完全匹配,則此節(jié)點(diǎn)的子節(jié)點(diǎn)將被訪問,否則不會(huì)被訪問。
進(jìn)一步的,步驟(1)包括以下子步驟:
(1-1)將數(shù)據(jù)集d平均劃分為l個(gè)小組,每個(gè)小組生成e個(gè)文檔副本,為每個(gè)文檔副本重新分配文檔標(biāo)識(shí)符,得到目標(biāo)數(shù)據(jù)集dgx;
(1-2)打亂目標(biāo)數(shù)據(jù)集dgx中每個(gè)小組中文檔副本的順序和每個(gè)小組之間的順序。
進(jìn)一步的,步驟(2)中的開關(guān)為一個(gè)長度為d的向量:
其中,
進(jìn)一步的,步驟(3)中鑰匙key為一個(gè)固定長度的向量:
其中,key[k]為鑰匙第k位上的值,rj是在區(qū)間[0,e-1]上的一個(gè)隨機(jī)整數(shù)。
進(jìn)一步的,開關(guān)和鑰匙完全匹配的具體實(shí)現(xiàn)方式為:開關(guān)和鑰匙的向量乘積等于0。
按照本發(fā)明的另一個(gè)方面,提供一種基于隱私保護(hù)的隨機(jī)遍歷系統(tǒng),包括:
生成目標(biāo)數(shù)據(jù)集模塊,用于將數(shù)據(jù)集劃分為l個(gè)小組,每個(gè)小組生成e個(gè)文檔副本,得到目標(biāo)數(shù)據(jù)集;
分配開關(guān)模塊,用于將目標(biāo)數(shù)據(jù)集中的每個(gè)文檔副本作為葉子節(jié)點(diǎn),建立一個(gè)加密的二叉樹作為查詢的安全索引,基于目標(biāo)數(shù)據(jù)集給二叉樹中的所有節(jié)點(diǎn)分配開關(guān);
查詢處理模塊,用于對每一次查詢分配一個(gè)鑰匙,在查詢處理時(shí),當(dāng)遍歷到一個(gè)節(jié)點(diǎn)且此節(jié)點(diǎn)開關(guān)和鑰匙的向量乘積等于零,則此節(jié)點(diǎn)的子節(jié)點(diǎn)將被訪問,否則不會(huì)被訪問。
進(jìn)一步的,生成目標(biāo)數(shù)據(jù)集模塊包括以下子模塊:
第一子模塊,用于將數(shù)據(jù)集d平均劃分為l個(gè)小組,每個(gè)小組生成e個(gè)文檔副本,為每個(gè)文檔副本重新分配文檔標(biāo)識(shí)符,得到目標(biāo)數(shù)據(jù)集dgx;
第二子模塊,用于打亂目標(biāo)數(shù)據(jù)集dgx中每個(gè)小組中文檔副本的順序和每個(gè)小組之間的順序。
進(jìn)一步的,分配開關(guān)模塊中的開關(guān)為一個(gè)長度為d的向量:
其中,
進(jìn)一步的,查詢處理模塊中鑰匙key為一個(gè)固定長度的向量:
其中,key[k]為鑰匙第k位上的值,rj是在區(qū)間[0,e-1]上的一個(gè)隨機(jī)整數(shù)。
進(jìn)一步的,開關(guān)和鑰匙完全匹配的具體實(shí)現(xiàn)方式為:開關(guān)和鑰匙的向量乘積等于0。
總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有的技術(shù)相比,具有以下有益效果:
(1)提升安全性:如前面所述,一個(gè)攻擊者可以通過比較兩個(gè)查詢的結(jié)果的相似度和在索引上遍歷的路徑來判斷這兩個(gè)查詢是否來至同一個(gè)查詢請求。本發(fā)明通過在數(shù)據(jù)集中添加文檔副本,并通過為每個(gè)文檔副本分配不同的開關(guān)來控制查詢結(jié)果和遍歷路徑,這使得即使對于相同的查詢,用戶也可以得到不同的查詢結(jié)果和訪問路徑。這增加了數(shù)據(jù)和查詢的安全性。
(2)不降低查詢的效率:當(dāng)現(xiàn)有的以樹為基礎(chǔ)的可搜索加密算法采用本發(fā)明提供的技術(shù)方案來增加查詢的安全性時(shí),查詢效率并不會(huì)受到影響。因?yàn)樵诜峙浣o查詢的鑰匙的控制下,服務(wù)器處理查詢時(shí)只需要訪問文檔的一個(gè)副本,而不需要訪問文檔的所有副本。
附圖說明
圖1為本發(fā)明一種基于隱私保護(hù)的隨機(jī)遍歷方法的流程圖;
圖2為本發(fā)明實(shí)施例中一種基于隱私保護(hù)的隨機(jī)遍歷方法第一種示范圖;
圖3為本發(fā)明實(shí)施例中一種基于隱私保護(hù)的隨機(jī)遍歷方法第二種示范圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,但并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
如圖1所示為本發(fā)明的一種基于隱私保護(hù)的隨機(jī)遍歷方法的流程圖,包括以下步驟:
(1)將數(shù)據(jù)集劃分為l個(gè)小組,每個(gè)小組生成e個(gè)文檔副本,得到目標(biāo)數(shù)據(jù)集;
(2)將目標(biāo)數(shù)據(jù)集中的每個(gè)文檔副本作為葉子節(jié)點(diǎn),建立一個(gè)加密的二叉樹作為查詢的安全索引,基于目標(biāo)數(shù)據(jù)集給二叉樹中的所有節(jié)點(diǎn)分配開關(guān);
(3)對每一次查詢分配一個(gè)鑰匙,在查詢處理時(shí),當(dāng)遍歷到一個(gè)節(jié)點(diǎn)且此節(jié)點(diǎn)開關(guān)和鑰匙的向量乘積等于零,則此節(jié)點(diǎn)的子節(jié)點(diǎn)將被訪問,否則不會(huì)被訪問。
進(jìn)一步的,步驟(1)包括以下子步驟:
(1-1)將數(shù)據(jù)集d平均劃分為l個(gè)小組,每個(gè)小組生成e個(gè)文檔副本,為每個(gè)文檔副本重新分配文檔標(biāo)識(shí)符,得到目標(biāo)數(shù)據(jù)集dgx;
(1-2)打亂目標(biāo)數(shù)據(jù)集dgx中每個(gè)小組中文檔副本的順序和每個(gè)小組之間的順序。
優(yōu)選的,步驟(1)的具體實(shí)現(xiàn)方式為:
(1-1)將數(shù)據(jù)集d劃分為l個(gè)小組,每個(gè)小組生成e個(gè)文檔副本,然后對文檔副本重新分配文檔標(biāo)識(shí)符形成目標(biāo)數(shù)據(jù)集dgx。比如對于數(shù)據(jù)集d={d1,d2,d3,d4},假設(shè)l=2和e=2,那么數(shù)據(jù)集d首先被分割成l個(gè)小組(即被分割成2個(gè)小組),分割后將得到小組dg1={d1,d2}和dg2={d3,d4}。然后為每個(gè)小組生成2個(gè)副本,因此對dg1復(fù)制后將得到它的兩副本
其中
(1-2)擾亂小組中文檔副本的順序,使得小組中文檔副本的順序不同。小組
進(jìn)一步的,步驟(2)的具體實(shí)現(xiàn)方式為:
(2-1)對目標(biāo)數(shù)據(jù)集dgx中的每個(gè)文檔分配一個(gè)開關(guān),開關(guān)為一個(gè)長度為d的向量(用switch表示),開關(guān)用于控制索引中各個(gè)節(jié)點(diǎn)是否被準(zhǔn)許訪問。
開關(guān)的向量由下面的公式確定:
其中,
如圖2所示,放大后的數(shù)據(jù)集中的每個(gè)文檔副本都被分配了一個(gè)開關(guān)(這些開關(guān)為一個(gè)長度為4的向量),其中,
(2-2)建立一個(gè)二叉樹作為查詢的安全索引,其中文檔副本相關(guān)的信息存儲(chǔ)在葉子節(jié)點(diǎn),并且樹中的每個(gè)中間節(jié)點(diǎn)都會(huì)被分配一個(gè)開關(guān)。如果一個(gè)節(jié)點(diǎn)中的兩個(gè)子節(jié)點(diǎn)來自于相同的文檔小組,那么他們的開關(guān)具有相同的形式,并且將這個(gè)節(jié)點(diǎn)加入它的子節(jié)點(diǎn)所在的組,否則此節(jié)點(diǎn)的開關(guān)的值全為零。如圖2所示,節(jié)點(diǎn)r1,r2,r3的子節(jié)點(diǎn)不是來自同一個(gè)文檔組,所以這些節(jié)點(diǎn)的開關(guān)的值全為零;而節(jié)點(diǎn)r4的子節(jié)點(diǎn)
進(jìn)一步的,步驟(3)的具體實(shí)現(xiàn)方式為:
(3-1)對每一次查詢q分配一個(gè)鑰匙key,鑰匙為一個(gè)固定長度的向量,并且長度與開關(guān)的長度相同。查詢的鑰匙由如下公式確定:
其中,key[k]為鑰匙第k位上的值,rj是在區(qū)間[0,e-1]上的一個(gè)隨機(jī)整數(shù)。
由于每個(gè)文檔都有e個(gè)副本,而且每個(gè)副本被分配了不同的文檔標(biāo)識(shí)符,所以在服務(wù)器在進(jìn)行查詢處理時(shí),只需要訪問一個(gè)文檔的一個(gè)副本。數(shù)據(jù)的使用者可以通過控制鑰匙的值來控制每次查詢時(shí)訪問的副本。
(3-2)服務(wù)器處理用戶提交的每個(gè)查詢,具體的查詢方法為:對于一個(gè)給定的查詢,服務(wù)器從索引的根節(jié)點(diǎn)向葉節(jié)點(diǎn)采用深度遍歷。當(dāng)遍歷到一個(gè)節(jié)點(diǎn)并且此節(jié)點(diǎn)開關(guān)和鑰匙的向量乘積等于零,那么此節(jié)點(diǎn)的子節(jié)點(diǎn)將被訪問,否則不會(huì)被訪問。
如圖2所示,如果一個(gè)查詢的鑰匙為[0,-6,0,-7],查詢從根節(jié)點(diǎn)r1開始向下深度遍歷,通過中間節(jié)點(diǎn)r2和r4首先到達(dá)葉子節(jié)點(diǎn)
如圖3所示,對于另外一個(gè)鑰匙[-8,0,-5,0]得到的結(jié)果為