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