(1.山東師范大學(xué) 信息科學(xué)與工程學(xué)院,山東 濟(jì)南 250358; 2.山東師范大學(xué) 山東省分布式計(jì)算機(jī)軟件新技術(shù)重點(diǎn)實(shí)驗(yàn)室,山東 濟(jì)南 250014)
近年來(lái),云計(jì)算技術(shù)不斷發(fā)展形成的第三代信息技術(shù)深刻影響著人們的生產(chǎn)和生活方式,該技術(shù)的發(fā)展為學(xué)術(shù)界、互聯(lián)網(wǎng)行業(yè)和全球經(jīng)濟(jì)的發(fā)展提供了重要機(jī)會(huì)。在這個(gè)信息大爆炸的時(shí)代,用戶利用網(wǎng)絡(luò)進(jìn)行資源共享,在共享資源的過(guò)程中,用戶將數(shù)據(jù)資源上傳至云服務(wù)器,共享數(shù)據(jù)的安全性成為一大隱患,因此,對(duì)用戶上傳的數(shù)據(jù)進(jìn)行隱私保護(hù)性研究具有非常重要的意義。用戶將數(shù)據(jù)文件上傳至云服務(wù)器之前,對(duì)隱私數(shù)據(jù)進(jìn)行適當(dāng)加密,有助于保護(hù)合法訪問(wèn)和數(shù)據(jù)隱私,但是這種加密機(jī)制給數(shù)據(jù)高效利用和搜索帶來(lái)了挑戰(zhàn)。加密數(shù)據(jù)的另一個(gè)問(wèn)題是為合法數(shù)據(jù)用戶提供無(wú)障礙訪問(wèn)。大多數(shù)情況下,數(shù)據(jù)用戶只想檢索特定會(huì)話的幾個(gè)特定數(shù)據(jù)文件,為了確保用戶的需求,最常用的方法是提供基于關(guān)鍵詞的可搜索機(jī)制。到目前為止,為了實(shí)現(xiàn)對(duì)數(shù)據(jù)文件檢索的高效性、安全性以及低開銷,國(guó)內(nèi)外許多云計(jì)算數(shù)據(jù)安全領(lǐng)域的專家在可搜索加密方案中對(duì)模型和算法進(jìn)行了大量的研究和改進(jìn)[1-3]。當(dāng)用戶下載數(shù)據(jù)文件時(shí),為了迅速找到相關(guān)文件,系統(tǒng)就會(huì)使用關(guān)鍵詞搜索方式來(lái)尋找數(shù)據(jù)文件。
傳統(tǒng)的單一關(guān)鍵詞可搜索加密方案是建立一個(gè)加密的可搜索索引,使相關(guān)內(nèi)容被隱藏,當(dāng)用戶搜索文件時(shí),首先提交需要查詢的文件的關(guān)鍵詞,然后系統(tǒng)根據(jù)該關(guān)鍵詞形成相關(guān)的查詢門限,根據(jù)查詢門限來(lái)遍歷文檔,返回最佳結(jié)果。2000年,Song等[4]在可搜索加密方案中加入對(duì)稱密鑰思想,該方案利用單一關(guān)鍵詞進(jìn)行遍歷文檔,耗費(fèi)時(shí)間長(zhǎng),效率低。2003年,Goh[5]在搜索方案中加入布隆過(guò)濾器對(duì)數(shù)據(jù)文檔建立索引,攻擊者很難獲得已加密密文的具體內(nèi)容;但是,由于它對(duì)關(guān)鍵詞進(jìn)行檢索時(shí)需要對(duì)每個(gè)文件進(jìn)行計(jì)算與判斷,因此,在判斷過(guò)程中存在正向誤檢概率,導(dǎo)致檢索時(shí)間增加。2006年,Curtmola等[6]在可搜索加密方案建立索引過(guò)程中使用倒排索引的方式,該方案在搜索過(guò)程中能夠同時(shí)實(shí)現(xiàn)搜索的精確性和有效性,但也存在問(wèn)題,如系統(tǒng)無(wú)法對(duì)已經(jīng)搜索過(guò)的關(guān)鍵詞進(jìn)行相關(guān)性評(píng)估。2007年,Boneh等[7]在基于可搜索加密方案的基礎(chǔ)上加入了公鑰密碼系統(tǒng)(public key cryptosystems,PKC),在該方案中,擁有公鑰的用戶將加密數(shù)據(jù)文件上傳至云服務(wù)器,加密是為了保護(hù)數(shù)據(jù)文件的安全性,只有擁有私鑰授權(quán)的合法用戶才能夠訪問(wèn)服務(wù)器,使用數(shù)據(jù)資源。2009年,Zerr等[8]提出了基于秩序保留映射的相關(guān)性分?jǐn)?shù)的訓(xùn)練和預(yù)采樣,每當(dāng)需要插入不同的分?jǐn)?shù)時(shí),該映射面臨分?jǐn)?shù)變換函數(shù)的重建問(wèn)題。由于有助于加快查詢執(zhí)行速度,因此高效檢索與給定查詢最相關(guān)的前k個(gè)文檔(top-k)成為標(biāo)準(zhǔn)的信息檢索方法,即使對(duì)大型索引也是如此。信息過(guò)載是搜索方案帶來(lái)的一個(gè)主要問(wèn)題,而top-k方法就是通過(guò)處理僅限于高排名和最相關(guān)的文檔來(lái)減少信息過(guò)載。2010年,Pang等[9]提出了一種基于向量模型的安全搜索方案,該方案中加入了訪問(wèn)控制技術(shù)的思想,但是,該技術(shù)的加入使用戶在計(jì)算方面增加一定的開銷,同時(shí),用戶在使用查詢關(guān)鍵詞進(jìn)行遍歷文件時(shí),隱私信息也容易泄露。2011年,Cao等[10]提出一種云環(huán)境下對(duì)多關(guān)鍵詞進(jìn)行排序的密文排序檢索方案,該方案在計(jì)算關(guān)鍵詞與文檔相似性方面使用了“內(nèi)積相似性”的計(jì)算方法,該方法簡(jiǎn)化了計(jì)算過(guò)程,提高了計(jì)算效率,并使用基于安全k近鄰分類(k-nearest neighbor classification,KNN)查詢技術(shù)對(duì)關(guān)鍵詞進(jìn)行相關(guān)度排序。2012年,Chen等[11]使用雙線性配對(duì)思想對(duì)多關(guān)鍵詞檢索方案進(jìn)行改進(jìn),但是,該方案中配對(duì)的方式會(huì)導(dǎo)致服務(wù)器和用戶計(jì)算成本較高。2014年,Sun等[12]提出了基于關(guān)鍵詞分?jǐn)?shù)的多關(guān)鍵詞搜索方案,為了提高搜索效率,該方案將樹的索引結(jié)構(gòu)和多維算法相結(jié)合,使得實(shí)際搜索效率遠(yuǎn)優(yōu)于線性搜索。2015年,陸海虹等[13]提出了安全云環(huán)境中基于最小哈希函數(shù)的多關(guān)鍵詞檢索方案,該方案根據(jù)數(shù)據(jù)所有者生成并外包給云服務(wù)器的加密可檢索索引進(jìn)行加密云檢索。2017年,王愷璇等[14]在密文檢索方案中加入用布隆過(guò)濾器和位置敏感哈希函數(shù)技術(shù),提出一種針對(duì)模糊的多關(guān)鍵詞的密文搜索方案,能夠有效地實(shí)現(xiàn)多關(guān)鍵詞的密文模糊搜索。
基于以上對(duì)可搜索加密方法的研究,本文中對(duì)關(guān)鍵詞可搜索加密技術(shù)進(jìn)行改進(jìn),利用橢圓曲線加密(elliptic curve cryptography,ECC)的思想和多關(guān)鍵詞可搜索加密方案相結(jié)合的方法,將ECC算法用于可搜索的索引,對(duì)關(guān)鍵詞進(jìn)行加密、編碼以及解密處理。使用詞頻-逆文檔頻率計(jì)算公式對(duì)關(guān)鍵詞與數(shù)據(jù)文檔相關(guān)性進(jìn)行相關(guān)性分?jǐn)?shù)計(jì)算,系統(tǒng)根據(jù)相關(guān)性分?jǐn)?shù)可以選擇出最符合用戶查詢的數(shù)據(jù)文件。另外,索引結(jié)構(gòu)使用倒排序索引結(jié)構(gòu),用以提高數(shù)據(jù)文件關(guān)鍵詞的遍歷速度。
Diffie和Hellman于1973年引入的公鑰加密技術(shù)為密碼學(xué)領(lǐng)域帶來(lái)了一場(chǎng)動(dòng)態(tài)革命,這一巨大的發(fā)展緩解了對(duì)稱密鑰密碼的密鑰分配問(wèn)題,例如利用Rivest-Shamir-Adleman(RSA)公鑰加密算法定義整數(shù)分解問(wèn)題,將公鑰密碼體制和橢圓曲線思想相結(jié)合解決離散對(duì)數(shù)問(wèn)題。1985年,Koblitz和Miller在橢圓曲線和密碼學(xué)的基礎(chǔ)上,提出了將二者相結(jié)合的橢圓曲線密碼學(xué)模型,在此之前,專家Lenstra提出橢圓曲線大數(shù)分解模型,Goldwasser和Kilian提出素性檢驗(yàn)的思想。橢圓曲線密碼學(xué)模型的提出使得數(shù)學(xué)與密碼學(xué)相結(jié)合的理念得到巨大的發(fā)展。該模型的思想是由線域上的橢圓曲線構(gòu)成的群來(lái)代替公鑰密碼體制中有線域乘法群,從而獲得加入橢圓曲線思想的公鑰密碼體制。橢圓曲線密碼學(xué)的安全性基于陷門功能,其中假設(shè)找到關(guān)于公知基點(diǎn)的隨機(jī)橢圓曲線元素的離散對(duì)數(shù)是不可行的,這被稱為橢圓曲線離散對(duì)數(shù)問(wèn)題(elliptic curve discrete logarithm problem,ECDLP),其被認(rèn)為在計(jì)算上是不可行的。與其他方案相比,ECC機(jī)制具有更多動(dòng)態(tài)可用性,可用于消息加密、描述、密鑰交換以及數(shù)字簽名。與RSA算法相比,ECC算法的優(yōu)勢(shì)在于密鑰小,可以使用相當(dāng)小的密鑰來(lái)獲得相同的安全標(biāo)簽。橢圓曲線Diffie-Hellman(elliptic curve Diffie-Hellman,ECDH)算法是廣泛使用的密鑰協(xié)商算法,并且在許多國(guó)際標(biāo)準(zhǔn)中有詳細(xì)說(shuō)明。基于消息的ECC算法顯然涉及發(fā)送方執(zhí)行短暫靜態(tài)ECDH密鑰協(xié)議,然后使用生成的共享密鑰和對(duì)稱加密算法對(duì)數(shù)據(jù)加密,因此,橢圓曲線集成加密方案(elliptic curve integrated encryption scheme,ECIES)是目前加密方法中是最流行的方案。ECC算法能夠用于身份驗(yàn)證、數(shù)字簽名驗(yàn)證、安全密鑰交換和加密,在本文中僅用于關(guān)鍵詞的加密和解密。
同態(tài)加密是一種主要用來(lái)解決數(shù)學(xué)難題的計(jì)算復(fù)雜性理論的密碼學(xué)技術(shù)。輸入數(shù)據(jù)A,系統(tǒng)對(duì)數(shù)據(jù)A進(jìn)行同態(tài)加密處理,將處理完畢得到的數(shù)據(jù)輸出,得到A′,系統(tǒng)對(duì)加密的數(shù)據(jù)A′進(jìn)行解密操作,得到解密數(shù)據(jù),解密得到的數(shù)據(jù)結(jié)果與用同一方法處理未加密的原始數(shù)據(jù)得到的輸出結(jié)果是一樣的。同態(tài)性被廣泛地分類為多種類型,廣義上稱為加性同態(tài)、乘法同態(tài)、線性同態(tài)、指數(shù)同態(tài)、有針對(duì)性的同態(tài)和完全同態(tài)。定義1對(duì)加法同態(tài)做了簡(jiǎn)單的介紹。
定義1加性同態(tài)加密。
如果存在有效算法?,E(x+y)=E(x)?E(y)或者x+y=D(E(x)?E(y))成立,則該方案是加性同態(tài)加密。
本文中將加性同態(tài)加密屬性用于可搜索加密方案,對(duì)獲取每個(gè)文件關(guān)鍵詞進(jìn)行編碼以及加密處理,使其更加安全,數(shù)據(jù)用戶根據(jù)加性同態(tài)性質(zhì)能夠獲得真實(shí)值并選擇正確的文件。
倒排序索引結(jié)構(gòu)主要用于位置的定位。該索引結(jié)構(gòu)中保存著某一單詞在一組文檔中的位置信息,因此在文檔檢索系統(tǒng)中得到廣泛的應(yīng)用。在文檔檢索系統(tǒng)中,根據(jù)倒排序索引結(jié)構(gòu)能夠迅速找到包含所查詢關(guān)鍵詞的相關(guān)文檔列表。倒排索引結(jié)構(gòu)由“詞典”和“倒排文件”2個(gè)部分組成。文檔集合中出現(xiàn)過(guò)的所有單詞所形成的集合即“詞典”,“詞典”索引項(xiàng)中不僅僅包含單詞的相關(guān)信息,還包含指向“倒排列表”的指針。文檔中出現(xiàn)的所有單詞放在列表中,形成倒排列表,該表按一定的順序存放在某個(gè)文件中,形成倒排文件。倒排索引項(xiàng)主要由以下幾部分組成:某一個(gè)文檔的信息,例如文檔的編號(hào)(FiID);文檔中某一個(gè)單詞出現(xiàn)在該文檔中的頻率(TF);該單詞在文檔中的位置信息(Loc)等。倒排列表就是由這些包含相關(guān)信息的倒排項(xiàng)組成。在用戶下載文件過(guò)程遍歷索引結(jié)構(gòu)時(shí),首先查找到索引項(xiàng),根據(jù)索引項(xiàng)中的關(guān)鍵詞位置的信息找到相關(guān)文件中的記錄,倒排文件根據(jù)關(guān)鍵詞建立索引形成倒排表,利用倒排表進(jìn)行關(guān)鍵詞的搜索遍歷。在任何復(fù)雜的布爾詢問(wèn)過(guò)程中,倒排序索引結(jié)構(gòu)只需要訪問(wèn)一次,訪問(wèn)后即可得到肯定或否定的回答,因此,它的文檔檢索效率比較高。圖1所示為傳統(tǒng)的倒排索引結(jié)構(gòu)。
圖1 傳統(tǒng)的倒排序索引結(jié)構(gòu)
在可搜索加密過(guò)程中,用戶將數(shù)據(jù)文件上傳至云服務(wù)器便于其他用戶共享,其他用戶在下載資源的過(guò)程中容易造成數(shù)據(jù)泄露,受到非法用戶攻擊。為了更加安全地保護(hù)數(shù)據(jù)資源以及實(shí)現(xiàn)更加安全的高效密文檢索方案,本文中在傳統(tǒng)的倒排序索引結(jié)構(gòu)上進(jìn)行改進(jìn),利用ECC算法生成的關(guān)鍵詞點(diǎn)進(jìn)行加密后(加密曲線點(diǎn)-文件)作為倒排序索引結(jié)構(gòu)“關(guān)鍵詞-文件”的結(jié)構(gòu),用加密得到的密文邏輯指針、密態(tài)邏輯地址,替換原來(lái)索引結(jié)構(gòu)中的邏輯指針和邏輯地址,形成安全的倒排序索引結(jié)構(gòu),如圖2所示。
圖2 安全的倒排序索引結(jié)構(gòu)
系統(tǒng)參與者包括3個(gè)主體,即數(shù)據(jù)擁有者、數(shù)據(jù)用戶和云服務(wù)器,模型圖如圖3所示。
1)數(shù)據(jù)擁有者。數(shù)據(jù)擁有者被視為數(shù)據(jù)集的主要貢獻(xiàn)者和控制者,負(fù)責(zé)通過(guò)云服務(wù)器外包數(shù)據(jù),以方便使用相應(yīng)的合法數(shù)據(jù)。數(shù)據(jù)擁有者對(duì)關(guān)鍵詞進(jìn)行處理,利用橢圓曲線的思想,將關(guān)鍵詞集合加載在曲線上形成曲線點(diǎn),并對(duì)其進(jìn)行加密。在可搜索加密方案中,數(shù)據(jù)擁有者使用加密關(guān)鍵詞集合創(chuàng)建倒排序索引結(jié)構(gòu),并將加密的數(shù)據(jù)文件、索引結(jié)構(gòu)等相關(guān)信息上傳至云端服務(wù)器。
2)數(shù)據(jù)用戶。數(shù)據(jù)用戶接收數(shù)據(jù)擁有者共享的關(guān)鍵詞、對(duì)稱密鑰和其他參數(shù)。數(shù)據(jù)用戶生成對(duì)所需關(guān)鍵詞的請(qǐng)求,并將查詢向量發(fā)送給云服務(wù)器,在接收到返回值后對(duì)其進(jìn)行解碼并選擇所需文件,數(shù)據(jù)用戶用相應(yīng)的對(duì)稱密鑰解密。
3)云服務(wù)器。云服務(wù)器提供數(shù)據(jù)托管服務(wù),并存儲(chǔ)從數(shù)據(jù)擁有者外包的加密數(shù)據(jù)和索引,為數(shù)據(jù)用戶提供相應(yīng)關(guān)鍵詞陷門請(qǐng)求的搜索服務(wù)。本文中所提方案傾向于在云服務(wù)器端保持最大可能地處理和計(jì)算,以使其適合數(shù)據(jù)用戶,并希望保持最少的計(jì)算開銷。
圖3 方案模型
基本的可搜索加密過(guò)程主要有4個(gè)步驟,即參數(shù)生成、索引建立、陷門生成以及檢索查詢。
1)參數(shù)生成。在可搜索加密過(guò)程中,數(shù)據(jù)擁有者根據(jù)選擇的加密方案產(chǎn)生相關(guān)密鑰,該密鑰用于對(duì)文件、可搜索索引以及檢索請(qǐng)求的加解密。
2)索引建立。多個(gè)數(shù)據(jù)文件形成文件集合C,數(shù)據(jù)擁有者從中提取關(guān)鍵詞,形成關(guān)鍵詞集合W,利用關(guān)鍵詞集合生成可搜索索引I,選擇加密算法,將索引I加密形成更加安全的索引結(jié)構(gòu)I′,最后將安全索引I′與加密的數(shù)據(jù)文件集合上傳至云端服務(wù)器。
3)陷門生成。數(shù)據(jù)用戶在使用云端文件時(shí),首先獲得數(shù)據(jù)擁有者的授權(quán),根據(jù)查詢關(guān)鍵詞w生成檢索請(qǐng)求Q,并根據(jù)該檢索請(qǐng)求生成與安全索引兼容的陷門T進(jìn)行檢索。
4)檢索查詢。數(shù)據(jù)用戶將安全陷門T上傳至云服務(wù)器端,云服務(wù)器根據(jù)陷門遍歷,并返回給數(shù)據(jù)用戶相關(guān)度最高的文檔,數(shù)據(jù)用戶對(duì)文檔進(jìn)行解密并使用。
基于ECC算法的可搜索加密過(guò)程主要由7部分組成。
1)初始化階段。
①在所提出的方案中,數(shù)據(jù)擁有者與數(shù)據(jù)用戶共享關(guān)鍵詞、對(duì)稱密鑰、ECC密鑰和參數(shù)。ECC公鑰實(shí)際上是橢圓曲線上的點(diǎn)。
②數(shù)據(jù)擁有者從包含n個(gè)文件的數(shù)據(jù)集C中提取關(guān)鍵詞集合W=(w1,w2,…,wi),并且計(jì)算每個(gè)關(guān)鍵詞的詞頻F和逆文檔頻率F′,得到相關(guān)性分?jǐn)?shù)Sw,對(duì)每個(gè)數(shù)據(jù)文件設(shè)置標(biāo)識(shí)符,形成文件標(biāo)識(shí)符FidD=(fid1,fid2,…,fidn)。
2)對(duì)關(guān)鍵詞進(jìn)行預(yù)處理,將關(guān)鍵詞編碼在橢圓曲線上。
①曲線密鑰生成。數(shù)據(jù)所有者選擇ECC參數(shù),其中E是有限域GF(P)上的橢圓曲線,V是曲線E上的點(diǎn),生成隨機(jī)安全參數(shù)λ,λ∈GF(P)。公鑰Pλ=λV,輸出私鑰λ和公鑰Pλ。
②關(guān)鍵詞消息編碼。編碼(W,PW),將提取的關(guān)鍵詞集合W編碼到曲線E的生成點(diǎn)Vi上,輸出PW(PW為橢圓曲線E上的關(guān)鍵詞集合W的表示),PW=WVi,PW∈E。
③加密關(guān)鍵詞信息點(diǎn)。前面已經(jīng)對(duì)關(guān)鍵詞信息編碼到橢圓曲線上,為了更加安全,需要對(duì)其進(jìn)行加密處理,加密過(guò)后的關(guān)鍵詞信息點(diǎn)更加安全。利用公鑰Pλ對(duì)PW進(jìn)行加密,輸入(Pλ,PW),輸出PS(S1,S2),PS是加密關(guān)鍵詞信息對(duì),PS∈E。隨機(jī)選取整數(shù)d∈[1,h-1],h是曲線上的的E順序,其中S1=dV1,S2=Pwi+Pλ,處理完畢后,返回PS(S1,S2)的加密關(guān)鍵詞信息對(duì)。
④解密。在對(duì)關(guān)鍵詞進(jìn)行加密的同時(shí)還需要對(duì)關(guān)鍵詞進(jìn)行解密操作。具體的解密操作為:輸入密鑰λ,加密關(guān)鍵詞信息對(duì)PS(S1,S2),輸出PW,其中Pwi=-λS1+S2,S2=PW+dPλ,計(jì)算完畢后,返回PW。
3)索引建立。
將加密的關(guān)鍵詞信息對(duì)PS、加密得到的密文邏輯指針、密文邏輯地址以及密文倒排地址集建立倒排表,這樣加密的項(xiàng)保證索引結(jié)構(gòu)的加密性。系統(tǒng)輸出倒排索引結(jié)構(gòu)I,其中I=(I1,I2,…,In)。為了索引的安全性,利用公鑰Pλ對(duì)倒排序索引結(jié)構(gòu)進(jìn)行加密操作E(Pλ,I),形成加密索引結(jié)構(gòu)I′。
4)文件加密。
5)陷門生成。
6)檢索文件。
由云端服務(wù)器執(zhí)行檢索算法。服務(wù)器根據(jù)安全的加密索引結(jié)構(gòu)I′,密態(tài)關(guān)鍵詞信息對(duì)PS、密態(tài)邏輯指針、密態(tài)邏輯地址以及密態(tài)倒排地址集找到對(duì)應(yīng)的密文文檔M(Dwi),根據(jù)相關(guān)性分?jǐn)?shù)Sw返回合適的文檔,并將其返回給數(shù)據(jù)用戶。
7)文件解密。
由數(shù)據(jù)用戶執(zhí)行密文解密算法,即輸入密鑰Ky和得到的密文文件M(Dwi)進(jìn)行解密,輸出包含檢索關(guān)鍵詞wj的明文文檔Dw。
1)索引和查詢機(jī)密性。該方案利用ECC算法對(duì)關(guān)鍵詞進(jìn)行處理,并對(duì)其進(jìn)行加密,曲線上存在許多可能性,并且返回的加密結(jié)果值永遠(yuǎn)不會(huì)相同,該值總是出現(xiàn)在不同的點(diǎn)上,使得猜測(cè)或模式分析攻擊變得不可行,保證了其安全性。方案中使用倒排序索引結(jié)構(gòu),對(duì)倒排表中的項(xiàng)都進(jìn)行加密處理,建立安全的倒排序索引結(jié)構(gòu),保證可搜索加密方案實(shí)施過(guò)程中的安全性。
2)ECC算法的性質(zhì)決定了所有加密值都是以點(diǎn)對(duì)的形式出現(xiàn)的,這種非常隨機(jī)的點(diǎn)對(duì)使得它可以抵御統(tǒng)計(jì)分析攻擊。
3)對(duì)關(guān)鍵詞安全的加性進(jìn)行證明。有關(guān)鍵詞w1、w2,在橢圓曲線E上編碼為點(diǎn)PW1、PW2,利用Pλ對(duì)關(guān)鍵詞Pw1、Pw2加密,形成的密態(tài)關(guān)鍵詞對(duì)PS(S1,S2),PS(S1,S2)是編碼到橢圓曲線上的點(diǎn)。
(Pλ,PW1)=PS1(S1x,CS1y),
證明:加密時(shí),對(duì)關(guān)鍵詞PW1、PW2分別加密得到
(Pλ,PW2)=PS2(S2x,CS2y),
式中
S1x=d1V,CS1y=PW1+d1Pλ,
S2x=d2V,CS2y=PW2+d2Pλ,
其中d1、d2是對(duì)應(yīng)生成的隨機(jī)數(shù)。
有加性同態(tài)解密公式
(PS1+PS2)=PW1+PW2,
利用該公式可以證明關(guān)鍵詞解密的正確性,證明過(guò)程如下:
PS1+PS2=(S1x,CS1y)+(S2x,CS2y)=
(d1V,PW1+d1Pλ)+(d2V,PW2+d2Pλ)=
(d1V+d2V)+(PW1+d1Pλ+PW2+d2Pλ)=
(d1+d2)V+(PW1+PW2)+(d1+d2)Pλ。
解密時(shí),取加密后的關(guān)鍵詞對(duì)PS1+PS2、(d1+d2)V以及私鑰λ,得到(d1+d2)Vλ,其中Pλ=λV,有等式
-(d1+d2)Vλ+(PW1+PW2)+(d1+d2)Pλ=PW1+PW2,
因此,PS1+PS2=PW1+PW2。
以上分析過(guò)程證明了關(guān)鍵詞加、解密過(guò)程的正確性。
以下對(duì)所提出的方案進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)操作系統(tǒng)采用Linux操作系統(tǒng)(Ubuntu 14.04.1),語(yǔ)言采用Python 2.7.3,虛擬機(jī)工作站上使用Intel i5,2.20 GHz雙核處理器和1 GB存儲(chǔ)器。在可搜索加密過(guò)程中,計(jì)算關(guān)鍵詞相關(guān)性分?jǐn)?shù),采用的數(shù)據(jù)集通過(guò)社交網(wǎng)絡(luò)應(yīng)用程序接口(API)收集。數(shù)據(jù)集合有數(shù)據(jù)文件500個(gè),包含93 572個(gè)的單詞,選取10個(gè)單詞作為搜索索引的關(guān)鍵詞。同時(shí)對(duì)關(guān)鍵詞進(jìn)行加密操作,最多可以包含90個(gè)文件作為樣本。
1)ECC算法與RSA算法加密時(shí)間。計(jì)算性能是衡量一個(gè)密碼系統(tǒng)的重要指標(biāo)。圖4所示為相同的密鑰長(zhǎng)度下的ECC算法和RSA算法的加密時(shí)間的對(duì)比。從圖中可以看出,除了密鑰長(zhǎng)度為1 B時(shí)兩者加密時(shí)間差不多,其他相同密鑰長(zhǎng)度時(shí),基于ECC算法的加密時(shí)間都明顯小于RSA算法的。
2)陷門生成時(shí)間。用戶將數(shù)據(jù)文件上傳至云服務(wù)端,通過(guò)一系列加密操作,對(duì)數(shù)據(jù)文件進(jìn)行保護(hù)。
圖4 橢圓曲線加密機(jī)制與公鑰加密算法加密時(shí)間的對(duì)比
其他用戶在使用該文件時(shí)需要對(duì)數(shù)據(jù)文件進(jìn)行遍歷,需要獲得合法許可才能使用。用戶在搜索文件時(shí)需要產(chǎn)生陷門,圖5所示為橢圓曲線加密算法與文獻(xiàn)[15]中的算法陷門生成時(shí)間的對(duì)比。由圖可見(jiàn),隨著關(guān)鍵詞數(shù)量的增加,陷門產(chǎn)生的時(shí)間也隨之增加,ECC算法與文獻(xiàn)[15]中的算法相比較,二者陷門產(chǎn)生時(shí)間相差不是很大,但是也顯示出一定的優(yōu)勢(shì)。
圖5 橢圓曲線加密算法與文獻(xiàn)[15]中的算法陷門生成時(shí)間的對(duì)比
3)檢索時(shí)間。在數(shù)據(jù)文檔遍歷過(guò)程中,隨著關(guān)鍵詞數(shù)量的增加,檢索數(shù)據(jù)文檔的時(shí)間也會(huì)隨著增加。圖6所示為傳統(tǒng)的倒排序索引結(jié)構(gòu)與安全的倒排序索引結(jié)構(gòu)檢索時(shí)間的對(duì)比。從圖中可以看出,隨著關(guān)鍵詞數(shù)量的增加,兩者的檢索時(shí)間逐漸增加。在安全的索引結(jié)構(gòu)中,需要對(duì)關(guān)鍵詞進(jìn)行提取以及解密等一系列操作;因此,密文檢索的時(shí)間開銷必然會(huì)增大,但是增加的幅度不是很大,對(duì)各個(gè)檢索關(guān)鍵詞都是毫秒級(jí)的。
圖6 傳統(tǒng)的倒排序索引結(jié)構(gòu)與安全的倒排序索引結(jié)構(gòu)檢索時(shí)間的對(duì)比
為了提高數(shù)據(jù)的遍歷速度以及加強(qiáng)數(shù)據(jù)的安全性,本文中對(duì)關(guān)鍵詞可搜索加密技術(shù)進(jìn)行改進(jìn),將ECC的思想與多關(guān)鍵詞可搜索加密方案相結(jié)合。在可搜索加密過(guò)程中用ECC算法對(duì)關(guān)鍵詞進(jìn)行編碼、加密以及解密操作,使用詞頻-逆文檔頻率公式對(duì)關(guān)鍵詞進(jìn)行相關(guān)性分?jǐn)?shù)計(jì)算,用戶在遍歷文檔時(shí)可以根據(jù)分?jǐn)?shù)獲取最符合查詢要求的文檔,使用倒排序索引結(jié)構(gòu),提高遍歷文件的速度。在Linux系統(tǒng)中進(jìn)行實(shí)驗(yàn),并與其他算法進(jìn)行對(duì)比,本文中提出的方案在關(guān)鍵詞檢索以及陷門生成效率方面有所改善,因此,本文中提出的基于ECC算法的多關(guān)鍵字可搜索加密方案在檢索文件方面具有高效性和安全性。