一種面向云存儲的密文搜索認(rèn)證方法
【專利摘要】本發(fā)明提供一種面向云存儲的密文搜索認(rèn)證方法,涉及計算機信息安全領(lǐng)域,包括以下步驟:選擇要上傳的文件并指定關(guān)鍵字,構(gòu)造倒排索引生成加密索引和搜索認(rèn)證符,發(fā)送至云服務(wù)器存儲;用戶針對某關(guān)鍵字生成對應(yīng)搜索令牌,云服務(wù)器進(jìn)行搜索操作返回搜索結(jié)果;用戶針對搜索結(jié)果生成挑戰(zhàn)信息,云服務(wù)器生成證明,用戶驗證證明值完成搜索結(jié)果驗證;用戶選擇要添加/刪除的文件,生成更新令牌,云服務(wù)器更新加密索引、搜索認(rèn)證符,返回更新信息。本發(fā)明不會向云服務(wù)器和攻擊者泄露用戶數(shù)據(jù)信息。用戶可使用關(guān)鍵字對存儲在云服務(wù)器的密文進(jìn)行搜索,并可對搜索結(jié)果正確性進(jìn)行認(rèn)證,支持用戶文件的動態(tài)更新,確保用戶數(shù)據(jù)的機密性以及搜索結(jié)果的正確性。
【專利說明】—種面向云存儲的密文搜索認(rèn)證方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機信息安全領(lǐng)域,具體是一種面向云存儲的密文搜索認(rèn)證方法?!颈尘凹夹g(shù)】
[0002]近幾年,伴隨著云計算的迅速發(fā)展,云存儲作為其中重要的組成部分也逐漸成為研究的熱點,越來越多的企業(yè)、個人使用云存儲服務(wù)在云服務(wù)器上存儲數(shù)據(jù)。然而由于云服務(wù)提供商可靠性難以評估、云存儲對數(shù)據(jù)的安全控制力度不足等原因,可能造成用戶數(shù)據(jù)的丟失與泄露。
[0003]在云存儲環(huán)境下,用戶為了保護自己的隱私數(shù)據(jù),通常會選擇將數(shù)據(jù)進(jìn)行加密,之后存儲在云端,使得云存儲服務(wù)器無法知道任何關(guān)于明文的信息。這樣雖然能夠確保數(shù)據(jù)的機密性,但是帶來了檢索上的困難。例如用戶希望搜索滿足特定條件的文件,在這種情況下用戶必須將存儲在云端的數(shù)據(jù)全部下載到用戶本地,解密之后才能夠進(jìn)行語義檢索操作。這種方式在通訊和效率上的開銷較大,帶來糟糕的用戶體驗。因此設(shè)計一種高效、安全的密文搜索方法具有重大意義。
[0004]由于云服務(wù)提供商可靠性難以評估、云存儲對數(shù)據(jù)安全性控制力度不足等因素,可能造成用戶數(shù)據(jù)被惡意篡改,造成對用戶數(shù)據(jù)檢索結(jié)果的錯誤,因此設(shè)計一種對搜索結(jié)果進(jìn)行認(rèn)證的方法極其必要。
【發(fā)明內(nèi)容】
[0005]針對現(xiàn)有技術(shù)存在的問題,本發(fā)明提供一種面向云存儲的密文搜索認(rèn)證方法,實現(xiàn)對密文數(shù)據(jù)的高效檢索并對搜索結(jié)果正確性驗證。
[0006]本發(fā)明的技術(shù)方案是按以下方式實現(xiàn)的:
[0007]一種面向云存儲的密文搜索認(rèn)證方法,包括以下步驟:
[0008]步驟1:用戶選擇要上傳的文件并指定關(guān)鍵字,利用以文件為目錄的文件索引構(gòu)造以關(guān)鍵字為目錄的倒排索引進(jìn)而生成加密索引和搜索認(rèn)證符,將加密后的密文、加密索引和搜索認(rèn)證符發(fā)送至云服務(wù)器進(jìn)行存儲;
[0009]利用倒排索引生成加密索引的過程如下:
[0010]步驟1.1:初始化搜索數(shù)組和刪除數(shù)組,用來存儲文件及關(guān)鍵字對,初始化搜索表和刪除表,用來存放關(guān)鍵字鏈表頭結(jié)點信息和文件鏈表頭結(jié)點信息;
[0011]步驟1.2:遍歷倒排索引,計算文件及關(guān)鍵字的MD5值,利用計算出的MD5值填充入搜索數(shù)組隨機位置,并在數(shù)組節(jié)點中存儲當(dāng)前節(jié)點及其前驅(qū)節(jié)點在搜索數(shù)組中的位置和后繼節(jié)點在搜索數(shù)組中的位置,存儲隨機字串并利用此字串對當(dāng)前節(jié)點進(jìn)行加密,將關(guān)鍵字鏈表頭結(jié)點在搜索數(shù)組中的位置存入搜索表中;
[0012]步驟1.3 ;遍歷文件鏈表,計算文件及關(guān)鍵字的MD5值,利用計算出的MD5值填充入刪除數(shù)組隨機位置,并在數(shù)組節(jié)點中存儲當(dāng)前節(jié)點及其前驅(qū)、后繼節(jié)點在刪除數(shù)組中的位置,存儲隨機字串并利用此字串對當(dāng)前節(jié)點進(jìn)行加密,將文件鏈表頭結(jié)點在刪除數(shù)組中的位置存入刪除表中;
[0013]步驟1.4:遍歷結(jié)束,構(gòu)造空閑鏈表并存儲在數(shù)組中;
[0014]步驟1.5:將生成的搜索數(shù)組、刪除數(shù)組、搜索表、刪除表作為加密索引寫入文件;
[0015]利用倒排索引生成搜索認(rèn)證符的過程如下:
[0016]步驟1.6:根據(jù)倒排索引中關(guān)鍵字的個數(shù)初始化MHT數(shù)組;
[0017]步驟1.7:遍歷倒排索引,針對倒排索引中的每一個關(guān)鍵字鏈表,利用關(guān)鍵字及對應(yīng)的所有文件信息計算MHT葉子節(jié)點的值,計算后寫入MHT數(shù)組對應(yīng)的葉子位置;
[0018]步驟1.8:遍歷完成后,根據(jù)葉子節(jié)點的值向上計算,得到整個MHT即搜索認(rèn)證符,用戶存儲MHT的根節(jié)點值;
[0019]步驟2:用戶針對某關(guān)鍵字計算其MD5值進(jìn)而生成對應(yīng)搜索令牌,發(fā)出搜索請求,云服務(wù)器利用搜索令牌在加密索引上進(jìn)行搜索操作,返回搜索結(jié)果;
[0020]云服務(wù)器利用搜索令牌在加密索引上進(jìn)行搜索操作的過程如下:
[0021]步驟2.1:接收搜索令牌,讀取加密索引及密文文件信息;
[0022]步驟2.2:加密索引中找到搜索令牌對應(yīng)的文件ID集合;
[0023]步驟2.3:從密文集合中找到對應(yīng)的文件并返回給用戶;
[0024]步驟3:用戶針對搜索結(jié)果生成挑戰(zhàn)信息并發(fā)出驗證請求,云服務(wù)器利用挑戰(zhàn)信息在MHT上進(jìn)行遍歷從而生成證明,用戶驗證證明值從而完成搜索結(jié)果驗證;
[0025]步驟3.1:用戶獲取關(guān)鍵字,計算關(guān)鍵字MD5值,生成挑戰(zhàn)信息,發(fā)往云服務(wù)器;
[0026]步驟3.2:云服務(wù)器接收挑戰(zhàn)信息,在MHT上找到挑戰(zhàn)信息對應(yīng)的葉子節(jié)點;
[0027]步驟3.3:從葉子節(jié)點遍歷至根節(jié)點,記錄遍歷路徑上各個節(jié)點的兄弟節(jié)點并作為關(guān)鍵路徑,整合關(guān)鍵路徑作為證明值,返回給用戶;
[0028]步驟3.4:用戶接收云服務(wù)器返回的證明信息,利用文件MD5值得到挑戰(zhàn)對應(yīng)的MHT葉子節(jié)點值;
[0029]步驟3.5:利用葉子節(jié)點值和證明值計算驗證值,該驗證值為計算得到的MHT的根節(jié)點值,與用戶存儲MHT的根節(jié)點值對比:若計算得到的MHT的根節(jié)點與用戶存儲MHT的根節(jié)點值相同,則驗證通過,搜索結(jié)果正確,否則,驗證不通過;
[0030]步驟4:用戶選擇要添加/刪除的文件,生成更新令牌,發(fā)出更新請求,云服務(wù)器添加/刪除文件,利用更新令牌更新加密索引、搜索認(rèn)證符,返回更新信息。
[0031]所述利用以文件為目錄的文件索引構(gòu)造以關(guān)鍵字為目錄的倒排索引,按如下步驟進(jìn)行:
[0032]第一步:遍歷文件列表,獲取每個文件對應(yīng)的關(guān)鍵字集合;
[0033]第二步:針對每個關(guān)鍵字,構(gòu)造關(guān)鍵字鏈表;
[0034]第三步:針對每個關(guān)鍵字,獲取其對應(yīng)的文件集合,存入相應(yīng)的關(guān)鍵字鏈表。
[0035]添加文件時,更新加密索引的步驟如下:
[0036]步驟4.1:利用要添加的文件產(chǎn)生新的文件及關(guān)鍵字對,將該字對存入搜索數(shù)組對應(yīng)的關(guān)鍵字鏈表中,更新新的文件及關(guān)鍵字對涉及的所有在搜索數(shù)組及刪除數(shù)組中的節(jié)點,若該關(guān)鍵字首次出現(xiàn),則將該關(guān)鍵字添加到搜索表中;
[0037]步驟4.2:將文件及關(guān)鍵字對存儲至刪除數(shù)組;
[0038]步驟4.3:將文件添加到刪除表;[0039]刪除文件時,更新加密索引的步驟如下:
[0040]步驟4.4:利用要刪除的文件找到其對應(yīng)的文件鏈表頭結(jié)點位置,進(jìn)而遍歷該文件鏈表,修改該文件鏈表中的所有節(jié)點;
[0041 ] 步驟4.5:從刪除表中刪除當(dāng)前文件對應(yīng)的節(jié)點。
[0042]所述步驟4中的更新搜索認(rèn)證符是對待更新文件的每一個關(guān)鍵字對應(yīng)的MHT葉子值都進(jìn)行更新,之后重新構(gòu)造MHT。
[0043]有益效果:
[0044]本發(fā)明提供的面向云存儲的密文搜索認(rèn)證方法,不會向云服務(wù)器和攻擊者泄露任何關(guān)于用戶數(shù)據(jù)的信息。用戶為上傳的文件制定關(guān)鍵字并進(jìn)行加密后將文件上傳至云服務(wù)器存儲,用戶可以使用關(guān)鍵字對存儲在云服務(wù)器的密文數(shù)據(jù)進(jìn)行搜索,并可以對搜索結(jié)果的正確性進(jìn)行認(rèn)證,同時支持用戶文件的動態(tài)更新,用戶可以根據(jù)自己需要隨時對數(shù)據(jù)文件進(jìn)行動態(tài)增加/刪除操作,在整個過程中,云服務(wù)器難以獲得有關(guān)用戶數(shù)據(jù)的任何信息,確保用戶數(shù)據(jù)的機密性以及搜索結(jié)果的正確性。
【專利附圖】
【附圖說明】
[0045]圖1是本發(fā)明【具體實施方式】的面向云存儲的密文搜索認(rèn)證方法流程示意圖;
[0046]圖2是本發(fā)明【具體實施方式】的利用倒排索引生成加密索引的流程圖;
[0047]圖3是本發(fā)明【具體實施方式】的利用倒排索引生成搜索認(rèn)證符的流程圖;
[0048]圖4是本發(fā)明【具體實施方式】的云服務(wù)器利用搜索令牌在加密索引上進(jìn)行搜索操作的流程圖;
[0049]圖5是本發(fā)明【具體實施方式】的用戶完成搜索結(jié)果驗證的流程圖;
[0050]圖6是本發(fā)明【具體實施方式】的MHT樹結(jié)構(gòu)示意圖;
[0051]圖7是本發(fā)明【具體實施方式】的關(guān)鍵路徑示意圖。
【具體實施方式】
[0052]下面結(jié)合附圖對本發(fā)明【具體實施方式】進(jìn)行詳細(xì)說明。
[0053]本實施方式的面向云存儲的密文搜索認(rèn)證方法,應(yīng)用于用戶與云服務(wù)器,經(jīng)過授權(quán)的用戶,可以合法使用密文搜索認(rèn)證方法,在云服務(wù)器存儲自身數(shù)據(jù),可以對云服務(wù)器上所存儲的用戶的自身數(shù)據(jù)進(jìn)行搜索,并對搜索結(jié)果正確性進(jìn)行驗證,以及對云服務(wù)器上存儲的用戶自身數(shù)據(jù)進(jìn)行動態(tài)增刪。云服務(wù)器存儲用戶數(shù)據(jù),并根據(jù)用戶的不同請求,完成相應(yīng)的存儲、搜索、認(rèn)證、更新操作。
[0054]如圖1所示,本實施方式的面向云存儲的密文搜索認(rèn)證方法,包括以下步驟:
[0055]步驟1:用戶選擇要上傳的文件(f1; f2, f3)并分別指定關(guān)鍵字(W1, w2)、(w2, W3)、(W3),利用文件及關(guān)鍵字構(gòu)造倒排索引(Inverted Index)進(jìn)而生成加密索引和搜索認(rèn)證符,將加密后的密文、加密索引和搜索認(rèn)證符發(fā)送至云服務(wù)器進(jìn)行存儲;
【權(quán)利要求】
1.一種面向云存儲的密文搜索認(rèn)證方法,其特征在于:包括以下步驟: 步驟1:用戶選擇要上傳的文件并指定關(guān)鍵字,利用以文件為目錄的文件索引構(gòu)造以關(guān)鍵字為目錄的倒排索引進(jìn)而生成加密索引和搜索認(rèn)證符,將加密后的密文、加密索引和搜索認(rèn)證符發(fā)送至云服務(wù)器進(jìn)行存儲; 利用倒排索引生成加密索引的過程如下: 步驟1.1:初始化搜索數(shù)組和刪除數(shù)組,用來存儲文件及關(guān)鍵字對,初始化搜索表和刪除表,用來存放關(guān)鍵字鏈表頭結(jié)點信息和文件鏈表頭結(jié)點信息; 步驟1.2:遍歷倒排索引,計算文件及關(guān)鍵字的MD5值,利用計算出的MD5值填充入搜索數(shù)組隨機位置,并在數(shù)組節(jié)點中存儲當(dāng)前節(jié)點及其前驅(qū)節(jié)點在搜索數(shù)組中的位置和后繼節(jié)點在搜索數(shù)組中的位置,存儲隨機字串并利用此字串對當(dāng)前節(jié)點進(jìn)行加密,將關(guān)鍵字鏈表頭結(jié)點在搜索數(shù)組中的位置存入搜索表中; 步驟1.3 ;遍歷文件鏈表,計算文件及關(guān)鍵字的MD5值,利用計算出的MD5值填充入刪除數(shù)組隨機位置,并在數(shù)組節(jié)點中存儲當(dāng)前節(jié)點及其前驅(qū)、后繼節(jié)點在刪除數(shù)組中的位置,存儲隨機字串并利用此字串對當(dāng)前節(jié)點進(jìn)行加密,將文件鏈表頭結(jié)點在刪除數(shù)組中的位置存入刪除表中; 步驟1.4:遍歷結(jié)束,構(gòu)造空閑鏈表并存儲在數(shù)組中; 步驟1.5:將生成的搜索數(shù)組、刪除數(shù)組、搜索表、刪除表作為加密索引寫入文件; 利用倒排索引生成搜索認(rèn)證符的過程如下: 步驟1.6:根據(jù)倒排索引中關(guān) 鍵字的個數(shù)初始化MHT數(shù)組; 步驟1.7:遍歷倒排索引,針對倒排索引中的每一個關(guān)鍵字鏈表,利用關(guān)鍵字及對應(yīng)的所有文件信息計算MHT葉子節(jié)點的值,計算后寫入MHT數(shù)組對應(yīng)的葉子位置; 步驟1.8:遍歷完成后,根據(jù)葉子節(jié)點的值向上計算,得到整個MHT即搜索認(rèn)證符,用戶存儲MHT的根節(jié)點值; 步驟2:用戶針對某關(guān)鍵字計算其MD5值進(jìn)而生成對應(yīng)搜索令牌,發(fā)出搜索請求,云服務(wù)器利用搜索令牌在加密索引上進(jìn)行搜索操作,返回搜索結(jié)果; 云服務(wù)器利用搜索令牌在加密索引上進(jìn)行搜索操作的過程如下: 步驟2.1:接收搜索令牌,讀取加密索引及密文文件信息; 步驟2.2:加密索引中找到搜索令牌對應(yīng)的文件ID集合; 步驟2.3:從密文集合中找到對應(yīng)的文件并返回給用戶; 步驟3:用戶針對搜索結(jié)果生成挑戰(zhàn)信息并發(fā)出驗證請求,云服務(wù)器利用挑戰(zhàn)信息在MHT上進(jìn)行遍歷從而生成證明,用戶驗證證明值從而完成搜索結(jié)果驗證; 步驟3.1:用戶獲取關(guān)鍵字,計算關(guān)鍵字MD5值,生成挑戰(zhàn)信息,發(fā)往云服務(wù)器; 步驟3.2:云服務(wù)器接收挑戰(zhàn)信息,在MHT上找到挑戰(zhàn)信息對應(yīng)的葉子節(jié)點; 步驟3.3:從葉子節(jié)點遍歷至根節(jié)點,記錄遍歷路徑上各個節(jié)點的兄弟節(jié)點并作為關(guān)鍵路徑, 整合關(guān)鍵路徑作為證明值,返回給用戶; 步驟3.4:用戶接收云服務(wù)器返回的證明信息,利用文件MD5值得到挑戰(zhàn)對應(yīng)的MHT葉子節(jié)點值; 步驟3.5:利用葉子節(jié)點值和證明值計算驗證值,該驗證值為計算得到的MHT的根節(jié)點值,與用戶存儲MHT的根節(jié)點值對比:若計算得到的MHT的根節(jié)點與用戶存儲MHT的根節(jié)點值相同,則驗證通過,搜索結(jié)果正確,否則,驗證不通過; 步驟4:用戶選擇要添加/刪除的文件,生成更新令牌,發(fā)出更新請求,云服務(wù)器添加/刪除文件,利用更新令牌更新加密索引、搜索認(rèn)證符,返回更新信息; 添加文件時,更新加密索引的步驟如下: 步驟4.1:利用要添加的文件產(chǎn)生新的文件及關(guān)鍵字對,將該字對存入搜索數(shù)組對應(yīng)的關(guān)鍵字鏈表中,更新新的文件及關(guān)鍵字對涉及的所有在搜索數(shù)組及刪除數(shù)組中的節(jié)點,若該關(guān)鍵字首次出現(xiàn),則將該關(guān)鍵字添加到搜索表中; 步驟4.2:將文件及關(guān)鍵字對存儲至刪除數(shù)組; 步驟4.3:將文件添加到刪除表; 刪除文件時,更新加密索引的步驟如下: 步驟4.4:利用要刪除的文件找到其對應(yīng)的文件鏈表頭結(jié)點位置,進(jìn)而遍歷該文件鏈表,修改該文件鏈表中的所有節(jié)點; 步驟4.5:從刪除表中刪除當(dāng)前文件對應(yīng)的節(jié)點。
2.根據(jù)權(quán)利要求1所述的面向云存儲的密文搜索認(rèn)證方法,其特征在于:所述利用以文件為目錄的文件索引構(gòu)造以關(guān)鍵字為目錄的倒排索引,按如下步驟進(jìn)行: 第一步:遍歷文件列表,獲取每個文件對應(yīng)的關(guān)鍵字集合; 第二步:針對每個關(guān)鍵字,構(gòu)造關(guān)鍵字鏈表; 第三步:針對每個關(guān)鍵字,獲取其對應(yīng)的文件集合,存入相應(yīng)的關(guān)鍵字鏈表。
3.根據(jù)權(quán)利要求1所述的面向云存儲的密文搜索認(rèn)證方法,其特征在于:所述步驟4中的更新搜索認(rèn)證符是對待更新文件的每一個關(guān)鍵字對應(yīng)的MHT葉子值都進(jìn)行更新,之后重新構(gòu)造MHT。
【文檔編號】H04L9/00GK103607405SQ201310616577
【公開日】2014年2月26日 申請日期:2013年11月27日 優(yōu)先權(quán)日:2013年11月27日
【發(fā)明者】周福才, 孟祥宇, 徐劍, 魏小淞, 張昕昊 申請人:東北大學(xué)