基于文件名的第三方密文檢索方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于數(shù)字信息處理技術(shù)領(lǐng)域,特別涉及文件名密文檢索方法,可用于信息處理系統(tǒng)的存儲(chǔ)管理以及文件的檢索。
【背景技術(shù)】
[0002]伴隨著云計(jì)算的發(fā)展,云存儲(chǔ)也隨之發(fā)展起來。云存貯實(shí)際上就是將數(shù)據(jù)存放到第三方,然而第三方的對(duì)數(shù)據(jù)的安全控制力度不足,容易造成用戶數(shù)據(jù)的丟失與泄露。為了保護(hù)數(shù)據(jù)的安全,在存儲(chǔ)在第三方之前,通常會(huì)對(duì)數(shù)據(jù)進(jìn)行加密處理,使得除用戶自己以外的所有用戶以及第三方都無法得知用戶明文數(shù)據(jù)信息,然而這就對(duì)數(shù)據(jù)的檢索帶來了困難。
[0003]與明文檢索不同,存儲(chǔ)在第三方文件的搜索是基于密文進(jìn)行檢索。對(duì)于第三方中的密文文件,如果將所有文件下載解密后再進(jìn)行明文搜索,效率將非常低下。因此,對(duì)于加密數(shù)據(jù)的隱私保護(hù)以及檢索在基于第三方存儲(chǔ)中非常重要。對(duì)密文進(jìn)行檢索,通常的做法是在加密內(nèi)容前需要提取關(guān)鍵詞構(gòu)建索引表,然后對(duì)索引表加密,通過對(duì)索引表的搜索來搜索文件內(nèi)容。然而對(duì)文件內(nèi)容的檢索涉及關(guān)鍵字的提取,索引表的建立,過程復(fù)雜,效率低;其次由于沒有對(duì)文件名進(jìn)行加密處理,容易泄露用戶的隱私,影響數(shù)據(jù)的安全性;并且隨著對(duì)文件的增刪操作都需要變更索引表,難以適應(yīng)文件變更頻繁的應(yīng)用場(chǎng)景。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提出一種基于文件名的第三方密文檢索方法,以將對(duì)文件內(nèi)容的檢索轉(zhuǎn)移到對(duì)文件名的檢索,提高檢索效率和文件之間的相互獨(dú)性,增強(qiáng)對(duì)用戶隱私和數(shù)據(jù)安全性的保護(hù)。
[0005]為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案包括如下步驟:
[0006](I)密鑰生成
[0007]隨機(jī)生成四個(gè)不同的密鑰:文件內(nèi)容對(duì)稱密鑰Kc,文件名對(duì)稱密鑰k,摘要運(yùn)算密鑰k’,偽隨機(jī)序列密鑰Ks;
[0008](2)文件內(nèi)容加密
[0009]用文件內(nèi)容對(duì)稱密鑰K。對(duì)文件內(nèi)容加密,得到文件內(nèi)容密文,將文件內(nèi)容密文上傳到第三方;
[0010](3)文件名加密
[0011]3a)按照文件名明文P的字?jǐn)?shù)將其分割成s個(gè)單元:Ρρ P2...P1...Ps,I彡i彡s ;
[0012]3b)對(duì)每個(gè)分割單元的長度進(jìn)行固定比特填充,使其滿足加密要求的η比特長度,得到填充之后的分割單元-.V1,W2...V1...Ws;
[0013]3c)對(duì)填充之后的每一單元Wi用文件名對(duì)稱密鑰K加密,得到文件名加密單元Xi;
[0014]3d)將文件名加密單元Xi分為前后兩個(gè)文件名加密模塊,分別記為L jP R i,其中前文件名加密模塊1^的長度為n-m比特,后文件名加密模塊R郝長度為m比特,m為隨機(jī)選取的比特長度,n-m為需要做摘要運(yùn)算的長度,用摘要運(yùn)算密鑰1^’對(duì)Li進(jìn)行摘要運(yùn)算,得到文件名摘要運(yùn)算密鑰Ki;
[0015]3e)用偽隨機(jī)序列密鑰Ks生成長度為n-m比特的偽隨機(jī)序列S i,用文件名摘要運(yùn)算密鑰Ki對(duì)該S i做摘要運(yùn)算,得到長度為m比特的摘要V i;
[0016]3f)將偽隨機(jī)序列Si和摘要Vi拼接后與加密單元Xi進(jìn)行異或運(yùn)算,得到文件名密文單元Ci;
[0017]3g)對(duì)文件名密文單元(^進(jìn)行拼接,得到文件名密文C ;
[0018]3h)對(duì)該文件名密文C進(jìn)行雜湊運(yùn)算及編碼,并將編碼作為存儲(chǔ)的文件名F,記錄文件名密文C與存儲(chǔ)的文件名F之間的雜湊運(yùn)算映射關(guān)系L ;
[0019](4)用文件內(nèi)容對(duì)稱密鑰K。對(duì)文件內(nèi)容密文解密,得到文件內(nèi)容明文,用文件名對(duì)稱密鑰K對(duì)文件名密文解密,得到文件名明文P ;
[0020](5)關(guān)鍵字搜索
[0021]5a)按照搜索關(guān)鍵字的字?jǐn)?shù)將其分割成I個(gè)檢索單元A Z2...Zj...Z1,KjSl;
[0022]5b)對(duì)每個(gè)檢索單元Zj進(jìn)行固定比特填充,使其滿足加密要求的η比特長度,得到填充之后的檢索單元:Υ” Y2-..Y」...Y1;
[0023]5c)對(duì)填充之后的每一檢索單元Yj用文件名對(duì)稱密鑰k加密,得到檢索加密單元
Gj;
[0024]5d)將每一檢索加密單元分為前后兩個(gè)檢索加密模塊,分別記為L R r設(shè)前檢索加密模塊Lj的長度為n-m比特,后檢索加密模塊R」的長度為m比特,并用摘要運(yùn)算密鑰k’對(duì)h做摘要運(yùn)算,得到每個(gè)檢索加密單元摘要運(yùn)算密鑰Mj;
[0025]5e)將步驟5d)得到的每一檢索單元的前后兩個(gè)檢索加密模塊Lp &和其摘要運(yùn)算密鑰Mj提交給第三方,第三方將其中的L」、Rj分別與每一文件名密文單元C ,做異或運(yùn)算得到長度為n-m比特的前檢驗(yàn)值s和長度為m比特的后檢驗(yàn)值v ;
[0026]5f)用檢索加密單元摘要運(yùn)算密鑰Mj對(duì)前校驗(yàn)值s做摘要運(yùn)算,得到長度為m比特的前校驗(yàn)值摘要V’ ;
[0027]5g)將前校驗(yàn)值摘要V’與后校驗(yàn)值V進(jìn)行比較,判斷文件名密文C中是否含有目標(biāo)檢索單元:若V’ = V,則表明該文件名密文C含有目標(biāo)檢索單元Zf否則,不含有目標(biāo)檢索單元Zj;
[0028]5h)對(duì)含有目標(biāo)檢索單元的文件名密文C做雜湊運(yùn)算及編碼,查找文件名密文C與存儲(chǔ)的文件名F之間的雜湊運(yùn)算映射關(guān)系L,即可找到目標(biāo)文件。
[0029]本發(fā)明與現(xiàn)有技術(shù)相比具有如下優(yōu)點(diǎn):
[0030]1、本發(fā)明對(duì)文件名加密搜索,由于文件名字?jǐn)?shù)較少,不需要提取關(guān)鍵字、建立索引表,操作簡(jiǎn)單,效率高;
[0031]2、本發(fā)明除對(duì)文件內(nèi)容加密外,還對(duì)文件名加密,進(jìn)一步保護(hù)了用戶數(shù)據(jù),提高了安全性;
[0032]3、本發(fā)明整個(gè)過程由于只涉及對(duì)稱密碼算法,不涉及復(fù)雜的非對(duì)稱密碼算法,因而運(yùn)算快速高效;
[0033]4、本發(fā)明由于其的文件變更不涉及索引表,即修改文件之間相互獨(dú)立,故能夠適應(yīng)文件變更頻繁的場(chǎng)合
【附圖說明】
[0034]圖1是密文檢索系統(tǒng)網(wǎng)絡(luò)模型圖;
[0035]圖2是本發(fā)明的實(shí)現(xiàn)總流程圖;
[0036]圖3是本發(fā)明中的文件名加密示意圖;
[0037]圖4是本發(fā)明中的文件名加密子流程圖;
[0038]圖5是本發(fā)明中的文件名解密示意圖;
[0039]圖6是本發(fā)明中的文件名解密子流程圖;
[0040]圖7是本發(fā)明中的關(guān)鍵字搜索示意圖;
[0041]圖8是本發(fā)明中的關(guān)鍵字搜索子流程圖。
【具體實(shí)施方式】
[0042]下面結(jié)合附圖及具體實(shí)例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述:
[0043]如圖1所示,密文檢索系統(tǒng)網(wǎng)絡(luò)包括數(shù)據(jù)擁有者和第三方,第三方用來存儲(chǔ)用戶數(shù)據(jù),用戶與第三方直接進(jìn)行交互。數(shù)據(jù)擁有者將自己的文件及文件名加密之后上傳到第三方服務(wù)器存儲(chǔ),需要查詢時(shí),對(duì)查詢關(guān)鍵字進(jìn)行加密后傳到服務(wù)器進(jìn)行查詢,服務(wù)器返回查詢結(jié)果。整個(gè)查詢過程的數(shù)據(jù)都是以密文形態(tài)存在,能夠保護(hù)用戶數(shù)據(jù)的安全。
[0044]參照?qǐng)D2,本發(fā)明基于文件名的第三方密文檢索方法的具體步驟包括如下:
[0045]步驟1.用戶產(chǎn)生密鑰
[0046]用戶隨機(jī)生成四個(gè)不同的密鑰:第一個(gè)是加密文件內(nèi)容的文件內(nèi)容對(duì)稱密鑰K。,第二個(gè)是加密文件名的文件名對(duì)稱密鑰k,第三個(gè)是進(jìn)行摘要運(yùn)算所需要的摘要運(yùn)算密鑰k’,第四個(gè)是產(chǎn)生偽隨機(jī)序列所需要的偽隨機(jī)序列密鑰Ks。
[0047]步驟2.文件內(nèi)容加密
[0048]為了保證用戶數(shù)據(jù)的安全性,需要在文件上傳之前對(duì)文件內(nèi)容加密,用步驟I生成的文件內(nèi)容對(duì)稱密鑰K。,采用對(duì)稱加密算法對(duì)文件內(nèi)容加密,得到文件內(nèi)容密文,將文件內(nèi)容密文上傳到第三方服務(wù)器。
[0049]步驟3.文件名加密
[0050]將文件內(nèi)容加密后,需要對(duì)文件名進(jìn)行加密處理,以進(jìn)一步提高用戶數(shù)據(jù)的安全性,得到文件名密文,然后將文件名密文上傳至第三方服務(wù)器。
[0051]參照?qǐng)D3和圖4,文件名加密的具體實(shí)現(xiàn)步驟如下:
[0052]3a)按照文件名的字?jǐn)?shù)將其分割成s個(gè)單元-P1, P2...P1...Ps,I彡i彡S,對(duì)于中文文件名是將每個(gè)漢字作為一個(gè)分割單元,對(duì)于英文文件名是將每個(gè)單詞作為一個(gè)分割單元;
[0053]3b)對(duì)每個(gè)分割單元的用固定比特序列進(jìn)行長度填充,使其滿足加密要求的η比特長度,得到填充之后的分割單元-.V1,W2...V1...Ws;
[0054]3c)用步驟I生成文件名對(duì)稱密鑰k,對(duì)每一填充后的分割單元Wi采用電碼本模式加密,生成文件名加密單元Xi;
[0055]3d)將文件名加密單元Xi分為前、后兩個(gè)文件名加密模塊,分別記為L jP R i,其中前文件名加密模塊1^的長度為n-m比特,后加文件名加密模塊R郝長度為m比特,用步驟I生成的摘要運(yùn)算密鑰k’對(duì)前文件名加密模塊Li進(jìn)行摘要運(yùn)算,得到文件名摘要密鑰K i;
[0056]3e)用步驟I生成偽隨機(jī)序列密鑰Ks生成長度為n_m比特偽隨機(jī)序列S 用生成的文件名摘要密鑰Ki對(duì)偽隨機(jī)序列S ^故摘要運(yùn)算得到長度為m比特的摘要V i;
[0057]3f)將偽隨機(jī)序列Si和摘要V i拼接后與文件名加密單元X i進(jìn)行異或運(yùn)算,得到文件名密文單元Ci;
[0058]3g)對(duì)文件名密文單元(^進(jìn)行拼接,得到文件名密文C ;
[0059]3h)對(duì)文件名密文C進(jìn)行雜湊運(yùn)算及編碼得到作為存儲(chǔ)的文件名F,并記錄文件名密文C與存儲(chǔ)的文件名F之間的雜湊運(yùn)算映射關(guān)系L。
[0060]步驟4.文件內(nèi)容解密
[0061]從第三方服務(wù)器下載得到的是文件內(nèi)容密