呂世濤,柳毅
(廣東工業(yè)大學(xué),廣州510006)
隨著電子設(shè)備和5G技術(shù)的不斷普及,數(shù)據(jù)總量將以指數(shù)級(jí)的趨勢增長。世界互聯(lián)網(wǎng)數(shù)據(jù)中心發(fā)布的數(shù)據(jù)顯示,2020年全球的數(shù)據(jù)總量達(dá)到44 ZB,根據(jù)他們的研究顯示表明,這些數(shù)據(jù)中重復(fù)的數(shù)據(jù)超過35 ZB,重復(fù)率在80%以上[1]。Microsoft[2]和EMC[3]的報(bào)道也指出在他們的主要存儲(chǔ)系統(tǒng)和二級(jí)存儲(chǔ)系統(tǒng)中數(shù)據(jù)重復(fù)率分別達(dá)到50%和85%。因?yàn)橹貜?fù)數(shù)據(jù)的比例較大,數(shù)據(jù)去重技術(shù)的研究也變地及其重要。云環(huán)境下數(shù)據(jù)去重技術(shù)[4]是指在云存儲(chǔ)環(huán)境下只存儲(chǔ)重復(fù)數(shù)據(jù)的一個(gè)副本,減少其相同文件的存儲(chǔ),可以有效減少物理存儲(chǔ)設(shè)備的使用,降低網(wǎng)絡(luò)消耗,但云環(huán)境下的安全問題一直存在爭議,特別是當(dāng)數(shù)據(jù)是多用戶共享時(shí),會(huì)給數(shù)據(jù)的安全問題帶來極大的挑戰(zhàn)。
因?yàn)閷?shù)據(jù)上傳至云存儲(chǔ)服務(wù)器之后,會(huì)導(dǎo)致用戶對(duì)數(shù)據(jù)的所有權(quán)分離,一般在上傳數(shù)據(jù)之前,用戶會(huì)在客戶端對(duì)數(shù)據(jù)先進(jìn)行加密,確保在上傳的過程中數(shù)據(jù)明文不會(huì)直接被暴露,但因?yàn)椴煌蛻舳耸沁x擇的數(shù)據(jù)加密方式不同,導(dǎo)致在數(shù)據(jù)到云存儲(chǔ)服務(wù)器之后云存儲(chǔ)服務(wù)器不能通過密文來判斷原始上傳數(shù)據(jù)是否相同,這樣就不能做到對(duì)重復(fù)數(shù)據(jù)的對(duì)比。為了解決此問題,Douceur等人[5]提出了一種收斂加密(Convergent Encryption,CE)的思想,該方案使用的是對(duì)稱加密思想,可以保證相同的明文M經(jīng)過加密以后會(huì)得到相同的密文C,云服務(wù)器可以直接通過對(duì)密文的比較來判斷明文是否存在重復(fù)。Bellare等人[6]提出了消息鎖收斂加密方案(Message-Locked En?cryption,MLE),在收斂加密的基礎(chǔ)上,對(duì)其安全模型和形式化模型進(jìn)行嚴(yán)格規(guī)范。
許多研究者分別提出了基于消息鎖收斂加密的改進(jìn)的云存儲(chǔ)安全去重方案。這些方案主要針對(duì)消息鎖收斂加密存在的3個(gè)不足進(jìn)行改進(jìn):①消息鎖收斂加密的塊標(biāo)簽完全由數(shù)據(jù)本身決定,塊標(biāo)簽的安全性存在問題。Abadi等人提出了一種采用了完全隨機(jī)化的標(biāo)簽,使數(shù)據(jù)塊的標(biāo)簽不完全由數(shù)據(jù)塊本身決定,提高了原有消息鎖加密的安全性[7]。之后,Bellare等人對(duì)他們提出的MLE方案的基礎(chǔ)上進(jìn)行改進(jìn),提出了一種數(shù)據(jù)塊標(biāo)簽由系統(tǒng)參數(shù)和文件內(nèi)容共同決定的安全性更高的交互式消息鎖加密方案(interac?tive Message-Locked Encryption,iMLE)[8]。②消息鎖收斂加密的密鑰是根據(jù)數(shù)據(jù)產(chǎn)生的,密鑰容易遭受暴力破解,而且密鑰的數(shù)量很多,帶來管理上的不方便。針對(duì)密鑰的安全問題,文獻(xiàn)[9-10]提出了一種基于可信第三方服務(wù)器的保護(hù)密鑰的思想,用來保證密鑰不能被暴力破解,提高了密鑰的安全性。針對(duì)密鑰的數(shù)量較多,存在管理上的問題,文獻(xiàn)[11]提出了一種基于Shamir秘密共享機(jī)制的密鑰管理方案,文獻(xiàn)[12]提出update-MLE方案,引進(jìn)樹結(jié)構(gòu)構(gòu)建密鑰樹來管理密鑰。③消息鎖收斂加密的所有權(quán)問題一直沒有得到足夠的重視,在所有權(quán)問題上,文獻(xiàn)[13]提出對(duì)數(shù)據(jù)擁有者的所有權(quán)撤銷引進(jìn)樹形結(jié)構(gòu)來進(jìn)行管理,文獻(xiàn)[14]提出了一種基于布隆過濾器(Bloom Filter)的所有權(quán)證明方案,對(duì)所有權(quán)問題進(jìn)行處理。
Chen等人提出了一種BL-MLE方案[15],該方案將收斂加密的密鑰保存在數(shù)據(jù)塊標(biāo)簽中,既能保證塊標(biāo)簽的安全性問題,又解決了密鑰容易遭受破解攻擊的風(fēng)險(xiǎn),而且該方案還可以使用數(shù)據(jù)塊標(biāo)簽來進(jìn)行去重時(shí)的所有權(quán)證明問題。該方案同時(shí)解決了傳統(tǒng)MLE方案3個(gè)方面的不足,節(jié)約了密鑰的生成和計(jì)算成本,同時(shí)節(jié)約了很大的存儲(chǔ)開銷。
雖然BL-MLE方案同時(shí)解決了傳統(tǒng)MLE方案存在的3個(gè)方面的不足,但因?yàn)锽L-MLE方案使用的是固定長度分塊技術(shù),所有在原始數(shù)據(jù)上進(jìn)行很小的改動(dòng)都會(huì)使得數(shù)據(jù)塊的劃分產(chǎn)生較大的改變;在使用數(shù)據(jù)塊標(biāo)簽進(jìn)行所有權(quán)證明時(shí)會(huì)存在很大的計(jì)算成本。本文提出一種新的數(shù)據(jù)安全去重方案,改進(jìn)了數(shù)據(jù)分塊的技術(shù)和用戶的所有權(quán)驗(yàn)證,在保證原方案的優(yōu)點(diǎn)的同時(shí),可以對(duì)數(shù)據(jù)進(jìn)行細(xì)粒度的去重,使得去重率更高,引入了一種樹形結(jié)構(gòu)對(duì)所有權(quán)進(jìn)行管理,使得所有權(quán)更加明確。
通過使用加密哈希函數(shù)從文件本身生成主密鑰,并通過該主密鑰對(duì)塊密鑰進(jìn)行加密。因此,僅要求用戶記住單個(gè)主密鑰。但是,以前的方案不支持有效的文件更新。為了更新云中的文件,用戶應(yīng)下載整個(gè)文件,對(duì)其進(jìn)行解密和修改,然后重新加密并將其重新上傳到云中。因此,用于更新的計(jì)算和通信開銷隨文件大小線性增加,這阻礙了這些方法對(duì)實(shí)際應(yīng)用的適應(yīng)性,特別是對(duì)于大文件。
在數(shù)據(jù)去重技術(shù)中,數(shù)據(jù)分塊[16]是數(shù)據(jù)去重技術(shù)的前提,一個(gè)數(shù)據(jù)分塊技術(shù)的好壞,將直接決定數(shù)據(jù)去重技術(shù)的去重率和去重效率。數(shù)據(jù)分塊技術(shù)一般按照數(shù)據(jù)劃分之后數(shù)據(jù)塊的每個(gè)大小可以分為固定長度分(Fixed-Sized Partition,F(xiàn)SP)[17]和可變長度分塊,現(xiàn)有的可變長度分塊技術(shù)主要使用的是基于內(nèi)容的可變長分塊技術(shù)(Content-Defined Chunking,CDC)[18]。由于重復(fù)數(shù)據(jù)的每個(gè)擁有者均可能對(duì)重復(fù)數(shù)據(jù)進(jìn)行過簡單操作,固定長度分塊技術(shù)的思想是按固定的數(shù)據(jù)塊長度對(duì)數(shù)據(jù)進(jìn)行分塊,這種算法在重復(fù)數(shù)據(jù)發(fā)生細(xì)微改變時(shí)塊的劃分會(huì)發(fā)生很大的變化,顯然不適合當(dāng)前的數(shù)據(jù)去重技術(shù)??勺冮L度分塊技術(shù)解決了這種對(duì)細(xì)微改變較為敏感的缺陷,它利用數(shù)據(jù)指紋將數(shù)據(jù)分給成長度大小不一的數(shù)據(jù)塊,是基于數(shù)據(jù)內(nèi)容來對(duì)數(shù)據(jù)進(jìn)行切分。但基于內(nèi)容的可變長度分塊技術(shù)(CDC)因?yàn)槠浠瑒?dòng)窗口大小難以選擇,需要人工設(shè)定參數(shù),且參數(shù)的設(shè)置會(huì)對(duì)結(jié)果的好壞產(chǎn)生較大的影響,計(jì)算開銷大等問題,逐漸不被使用。CDC算法的底層實(shí)現(xiàn)原理是字符串匹配,本文結(jié)合數(shù)據(jù)指紋算法和字符串匹配算法,引入了一種計(jì)算開銷較小,且分塊方式更為靈活的分塊算法。
所有權(quán)驗(yàn)證技術(shù)是指云存儲(chǔ)服務(wù)器端與用戶客戶端的交互協(xié)議,用于解決通過蠻力攻擊擊穿云存儲(chǔ)服務(wù)器從而獲得數(shù)據(jù),Haleve等人[15,20]提出了所有權(quán)證明(Proof of Ownership,PoW),在數(shù)據(jù)去重方案中所有權(quán)的驗(yàn)證主要用于客戶在向云存儲(chǔ)服務(wù)器端發(fā)起上傳請(qǐng)求時(shí),服務(wù)器會(huì)在對(duì)應(yīng)的數(shù)據(jù)庫中對(duì)用戶將要上傳的數(shù)據(jù)進(jìn)行檢索,如果數(shù)據(jù)不存在,則要求用戶將數(shù)據(jù)上傳,并將該數(shù)據(jù)與其用戶的所有權(quán)進(jìn)行存儲(chǔ),如果該數(shù)據(jù)存在,則要求用戶在客戶端證明是該數(shù)據(jù)的擁有者,具體的步驟為:云存儲(chǔ)服務(wù)器端會(huì)對(duì)用戶上傳的數(shù)據(jù)進(jìn)行檢索找到相關(guān)數(shù)據(jù)信息,在對(duì)已存在的數(shù)據(jù)和獨(dú)特的算法產(chǎn)生一個(gè)挑戰(zhàn)發(fā)送給客戶端。用戶客戶端在收到云存儲(chǔ)服務(wù)器端發(fā)起的挑戰(zhàn)之后,會(huì)對(duì)發(fā)出的挑戰(zhàn)與擁有的數(shù)據(jù)信息給出自己的應(yīng)答。云存儲(chǔ)服務(wù)器端會(huì)對(duì)用戶客戶端給出的應(yīng)答與預(yù)設(shè)的結(jié)果進(jìn)行匹配,如果能匹配上,則說明該用戶有此數(shù)據(jù)的所有權(quán),否則表明用戶不是數(shù)據(jù)的擁有者。
Tire數(shù)是一種高效的索引方法,一般常用于對(duì)數(shù)據(jù)的統(tǒng)計(jì),現(xiàn)有的數(shù)據(jù)中,可能數(shù)據(jù)擁有這對(duì)同一個(gè)數(shù)據(jù)擁有的大小不一致,如果對(duì)存在大部分相同的數(shù)據(jù)判斷為不相同的數(shù)據(jù)則存儲(chǔ)開銷較大。本文引入雙數(shù)組Tire樹,用雙數(shù)組Tire樹的兩個(gè)不同數(shù)組分別存儲(chǔ)數(shù)據(jù)和用戶信息,可以做到對(duì)數(shù)據(jù)細(xì)粒度去重的同時(shí),減少了對(duì)數(shù)據(jù)擁有者信息的存儲(chǔ)開銷。
系統(tǒng)模型如圖1所示。
圖1 系統(tǒng)模型
云用戶(Users):將數(shù)據(jù)存儲(chǔ)在云中,并可以對(duì)云中數(shù)據(jù)進(jìn)行操作的用戶。用戶將明文數(shù)據(jù)加密,并將加密后的文件分別生成文件標(biāo)簽和文件塊標(biāo)簽,一起打包存入云存儲(chǔ)系統(tǒng)。如果經(jīng)過云服務(wù)器對(duì)比,云存儲(chǔ)系統(tǒng)中不存在相同的文件,則稱該文件上傳用戶為初始上傳用戶,如果云存儲(chǔ)系統(tǒng)中已經(jīng)存在與該文件完全相同的文件,則稱該用戶為后續(xù)上傳者,如果將要上傳的數(shù)據(jù)在云存儲(chǔ)服務(wù)器中已經(jīng)存在且云存儲(chǔ)服務(wù)器中的數(shù)據(jù)包含即將要上傳的數(shù)據(jù),則稱該上傳者為后續(xù)部分上傳者,如果新上傳的文件包含云存儲(chǔ)系統(tǒng)中已經(jīng)存在的文件,則將新上傳該文件的用戶變成文件初始上傳者,將原有云存儲(chǔ)系統(tǒng)中的用戶變成后續(xù)部分上傳者。云存儲(chǔ)系統(tǒng)中擁有相同文件的用戶稱為該文件的所有權(quán)組用戶。
云服務(wù)提供商(Cloud Server Provider,CSP):提供云環(huán)境下數(shù)據(jù)存儲(chǔ)和對(duì)數(shù)據(jù)所有權(quán)進(jìn)行驗(yàn)證的商家稱為云服務(wù)提供商。云服務(wù)提供商負(fù)責(zé)對(duì)用戶上傳的文件是否重復(fù)進(jìn)行判斷,同時(shí)根據(jù)判斷的結(jié)果實(shí)時(shí)更新文件的所有權(quán)組用戶的信息。
按照攻擊者來源不同來進(jìn)行分類,可以將本方案的攻擊者分為兩類:
(1)內(nèi)部攻擊者。云存儲(chǔ)服務(wù)器認(rèn)為是誠實(shí)的執(zhí)行系統(tǒng)分配的任務(wù)的同時(shí),又想更多的了解加密數(shù)據(jù)背后的信息。而內(nèi)部攻擊者是可能借助一定手段更改數(shù)據(jù)擁有者信息,或拿到數(shù)據(jù)擁有者提供的權(quán)限,對(duì)數(shù)據(jù)擁有者造成損害的攻擊者。
(2)外部攻擊者。外部攻擊者主要是來自CSP外部的攻擊者。他們?cè)噲D通過各種方法獲得數(shù)據(jù)信息或數(shù)據(jù)擁有者擁有的數(shù)據(jù)的信息,冒充數(shù)據(jù)擁有者身份對(duì)數(shù)據(jù)進(jìn)行更改、刪除等不法操作。
本文提出的方案是在原有BL-MLE方案的基礎(chǔ)上進(jìn)行改進(jìn),主要針對(duì)兩個(gè)方面的問題進(jìn)行改進(jìn):①原有BL-MLE方案的數(shù)據(jù)分塊技術(shù)的改進(jìn),改進(jìn)因原有數(shù)據(jù)去重技術(shù)的缺陷而帶來的去重效率不足和去重計(jì)算開銷大的問題。②在原有BL-MLE方案的基礎(chǔ)上引進(jìn)了雙數(shù)組Tire樹,用于對(duì)數(shù)據(jù)的所有權(quán)進(jìn)行認(rèn)證。
開始執(zhí)行:輸入1λ,算法生成一個(gè)素?cái)?shù)p,構(gòu)造兩個(gè)滿足雙線性映射e的p階循環(huán)乘法群G、GT,并且滿足G×G->GT,選擇一個(gè)G的生成元g,并構(gòu)造3個(gè)函數(shù)哈希函數(shù),H1:{0,1}*->Zp,H2:{Zp}->G,H3:G->{Zp},系統(tǒng)參數(shù)P={p,g,G,GT,e,H1,H2,H3}。
KeyGen(F):將文件F上傳至云存儲(chǔ)系統(tǒng),上傳之前先將文件F進(jìn)行分塊,F(xiàn)=F[1]||F[2]||...||F[n],本方案采用的是變長分塊技術(shù),變長分塊技術(shù)的使用可以對(duì)上傳的文件F進(jìn)行更細(xì)粒度的去重。本方案使用下面兩個(gè)子算法分別對(duì)文件F和文件塊F[i]進(jìn)行收斂加密得到主密鑰Kmas和塊密鑰Ki。
File-KeyGen(F):將參數(shù)P和待上傳的文件F作為輸入,通過哈希函數(shù)H1進(jìn)行文件的主密鑰計(jì)算,得到文件的主密鑰Kmas=H1(F)。
Block-KeyGen(Fi):將參數(shù)P和待上傳文件F已分塊的文件塊F[i]作為輸入,通過哈希函數(shù)H2進(jìn)行每個(gè)文件塊的塊密鑰計(jì)算,得到文件塊的塊密鑰Ki=H2(F[i])。
Enc(Ki,F(xiàn)[i]):在上傳到云存儲(chǔ)服務(wù)器之前將已經(jīng)分塊后的文件塊F[i]和已經(jīng)加密后的塊密鑰作為輸入,對(duì)文件塊F[i]分別進(jìn)行加密,得到每一個(gè)文件塊的密文C[i],C[i]=H3(Ki)⊕F[i]。
Dec(Ki,C[i]):如果有用戶需要在云存儲(chǔ)服務(wù)器中取出某個(gè)文件或文件塊F[i],則需要將相應(yīng)的文件塊F[i]的密鑰Ki和文件塊F[i]密文C[i]作為輸入,通過解密算法計(jì)算F[i]=H3(Ki)⊕C[i]。將計(jì)算得出的F[i]'與用戶想要獲得的F[i]對(duì)比,如果F[i]'=F[i],則說明該用戶擁有下載該文件塊的權(quán)利,否則,拒絕為用戶提供服務(wù)。
TagGen:在用戶將文件上傳到云存儲(chǔ)服務(wù)器之前,先將文件F和分塊過后的文件塊F[i]進(jìn)行文件和文件塊標(biāo)簽的計(jì)算。
-F-TagGen:將參數(shù)P和明文M作為輸入,返回一個(gè)明文標(biāo)簽T0。
-B-TagGen:將參數(shù)P和明文M以及索引為i的明文塊作為輸入,返回一個(gè)明文塊標(biāo)簽。
ConTest:將塊標(biāo)簽T[i]和對(duì)用的密文C[i]作為輸入,返回兩個(gè)是否對(duì)應(yīng)的結(jié)果True或False。
EqTest:以兩個(gè)塊標(biāo)記T、T'和相應(yīng)的文件標(biāo)記T0、T0'作為輸入,返回True或False。
B-KeyRet:以主密鑰Kmas、塊標(biāo)記Ti和塊密文C[i]作為輸入,返回塊密鑰Ki/⊥。
PowPrf:以挑戰(zhàn)Q和文件M作為輸入,返回響應(yīng)P。
PoWVer:以挑戰(zhàn)Q,明文標(biāo)簽T0,和塊標(biāo)簽T[i]作為輸入,返回所有權(quán)的判定結(jié)果True或False。
針對(duì)原有BL-MLE方案中存在的計(jì)算開銷較大和去重效率不夠穩(wěn)定這個(gè)問題,本文引進(jìn)了一種新的數(shù)據(jù)分塊技術(shù)。通過分析可以知道,在我們將數(shù)據(jù)上傳到云存儲(chǔ)服務(wù)器之前我們可能會(huì)對(duì)文件進(jìn)行一些較小的或者較大的改變,傳統(tǒng)的定長數(shù)據(jù)分塊技術(shù),在對(duì)文件進(jìn)行的改動(dòng),都會(huì)對(duì)改動(dòng)部分以后的數(shù)據(jù)分塊產(chǎn)生較大的影響,所以本方案不使用BL-MLE方案中的定長分塊技術(shù)。本方案采用一種非定長數(shù)據(jù)分塊技術(shù),在文件內(nèi)容存在改動(dòng)時(shí)對(duì)改動(dòng)后的文件內(nèi)容分塊差異最小化。
針對(duì)Chen等人提出的BL-MLE方案中不存在用戶所有權(quán)驗(yàn)證算法,本文提出了一種新的所有權(quán)驗(yàn)證算法。在云存儲(chǔ)系統(tǒng)中所有權(quán)的驗(yàn)證是有效保護(hù)用戶數(shù)據(jù)安全的方式,本文提出了一種在數(shù)據(jù)塊級(jí)去重的基礎(chǔ)上的基于雙數(shù)組Tire樹的所有權(quán)驗(yàn)證算法。
通過引入雙數(shù)組Tire樹對(duì)文件塊進(jìn)行存儲(chǔ)的同時(shí)對(duì)用戶的所有權(quán)進(jìn)行驗(yàn)證,使原本需要大量計(jì)算開銷的所有權(quán)驗(yàn)證算法直接與數(shù)據(jù)塊的存儲(chǔ)進(jìn)行融合,可以在減少計(jì)算開銷的同時(shí)使得整個(gè)去重方案更加完善與整體。其具體算法如下:
算法1基于雙數(shù)組Tire樹的所有權(quán)驗(yàn)證算法(Pow-Ver-Tire)
(1)文件上傳:云存儲(chǔ)服務(wù)器收到客戶端發(fā)送的上傳文件請(qǐng)求,請(qǐng)求將文件上傳到云中,在云存儲(chǔ)服務(wù)器在接收到上傳請(qǐng)求并給與客戶端反饋以后,客戶端對(duì)將要上傳的文件備份,同時(shí),客戶端對(duì)將要上傳的文件進(jìn)行數(shù)據(jù)分塊,并對(duì)要上傳的文件及該文件分塊過后的文件塊分別進(jìn)行文件標(biāo)簽計(jì)算和文件塊標(biāo)簽計(jì)算。在客戶端的上傳請(qǐng)求到達(dá)云存儲(chǔ)服務(wù)器以后,云存儲(chǔ)服務(wù)器會(huì)建立兩個(gè)臨時(shí)數(shù)組,分別為文件塊信息base數(shù)組和用戶信息check數(shù)組。
(2)用戶信息上傳:當(dāng)客戶端的文件上傳完成以后,云存儲(chǔ)服務(wù)器將會(huì)通知客戶端收集該文件擁有者的用戶信息,并將該文件用戶擁有者的用戶信息上傳到云存儲(chǔ)服務(wù)器,保存在臨時(shí)的check數(shù)組中。
(3)重復(fù)檢測:文件在存儲(chǔ)到云中之前,云存儲(chǔ)服務(wù)器會(huì)通過本文提出的方案對(duì)上傳的文件和文件塊進(jìn)行重復(fù)檢測。如果文件標(biāo)簽匹配成功,則說明已經(jīng)存在完全相同的文件在云中,此時(shí),云存儲(chǔ)服務(wù)器會(huì)找到相應(yīng)的文件標(biāo)簽并找到該文件的用戶信息check數(shù)組,將新上傳的文件擁有者的用戶信息更新到check數(shù)組中,并銷毀該文件生成的臨時(shí)數(shù)組check。如果文件塊標(biāo)簽匹配成功,則說明云中已經(jīng)存在與上傳的文件塊相似的文件或相同的文件塊,此時(shí)需要通過云存儲(chǔ)服務(wù)器找到云中存儲(chǔ)的文件塊,如果云中存儲(chǔ)的文件塊包含新上傳的文件塊,則將新上傳的文件塊的用戶信息更新到已存在的文件塊的用戶信息數(shù)組check中,并銷毀該文件臨時(shí)生成的用戶信息數(shù)組check;如果新上傳的文件塊包含云中原有的文件塊,則將云中存儲(chǔ)的文件塊的個(gè)人信息數(shù)組check轉(zhuǎn)為臨時(shí)個(gè)人信息數(shù)組,將該文件塊的個(gè)人信息check數(shù)組全部添加到臨時(shí)生成的個(gè)人信息check數(shù)組中,同時(shí)銷毀云中原始文件塊的個(gè)人信息check數(shù)組。如果新上傳的文件未能匹配,則說明將要上傳的文件在云中不存在,此時(shí)云存儲(chǔ)服務(wù)器將會(huì)在云中存儲(chǔ)該文件的base數(shù)組,同時(shí)將文件的個(gè)人信息臨時(shí)數(shù)組check數(shù)組轉(zhuǎn)為永久數(shù)組。
(4)文件下載:在客戶端向云存儲(chǔ)服務(wù)器發(fā)送文件下載指令,云存儲(chǔ)服務(wù)器在其內(nèi)部將需要下載的數(shù)據(jù)進(jìn)行檢索然后將用戶信息和要下載的文件信息下載到客戶端,在客戶端對(duì)要下載的文件信息進(jìn)行文件標(biāo)簽計(jì)算和文件塊標(biāo)簽計(jì)算,將計(jì)算結(jié)果發(fā)送給云存儲(chǔ)服務(wù)器,云存儲(chǔ)服務(wù)器查找文件標(biāo)簽,如果存在該文件標(biāo)簽,則打開該文件標(biāo)簽下的個(gè)人信息check數(shù)組,查找用戶信息是否存在,如果存在,則可以對(duì)文件進(jìn)行下載,否則,給與客戶端不能下載的提示。
(5)文件刪除:與文件下載步驟相同,如果可以找到要?jiǎng)h除的文件個(gè)人信息數(shù)組check中存在請(qǐng)求刪除的個(gè)人信息,則執(zhí)行文件刪除操作。
在云存儲(chǔ)環(huán)境下,數(shù)據(jù)隱私安全分為兩個(gè)部分:①客戶端數(shù)據(jù)隱私安全:客戶端數(shù)據(jù)隱私安全主要是指在用戶個(gè)人設(shè)備對(duì)數(shù)據(jù)隱私的保護(hù),客戶端數(shù)據(jù)隱私安全較為容易保障,現(xiàn)有的許多產(chǎn)品均能保障客戶端數(shù)據(jù)隱私的安全。②云存儲(chǔ)服務(wù)器端數(shù)據(jù)隱私安全:當(dāng)用戶將數(shù)據(jù)上傳到云存儲(chǔ)服務(wù)器之后也要保證數(shù)據(jù)的隱私安全,但是云存儲(chǔ)服務(wù)器也是好奇的,可能會(huì)非法訪問云中的數(shù)據(jù)。在本方案中,我們對(duì)數(shù)據(jù)進(jìn)行兩方面的加密操作,不僅對(duì)數(shù)據(jù)明文、明文塊進(jìn)行加密,而且對(duì)數(shù)據(jù)標(biāo)簽、數(shù)據(jù)塊標(biāo)簽也進(jìn)行加密。云存儲(chǔ)服務(wù)器即使非法訪問數(shù)據(jù),因?yàn)槭褂檬諗考用芊桨笇?duì)數(shù)據(jù)進(jìn)行加密,云存儲(chǔ)服務(wù)器端即使獲得數(shù)據(jù)的密文,在沒有通過收斂加密獲得數(shù)據(jù)、數(shù)據(jù)塊密鑰的條件下,服務(wù)器端也不能獲得數(shù)據(jù)的明文。
在云存儲(chǔ)環(huán)境下,因?yàn)閿?shù)據(jù)全部存儲(chǔ)在云中,可能存在未授權(quán)的用戶對(duì)云中數(shù)據(jù)進(jìn)行訪問,造成數(shù)據(jù)隱私安全的問題隱患。在本方案中,在數(shù)據(jù)存儲(chǔ)到云中之后會(huì)對(duì)數(shù)據(jù)生成一個(gè)的所有權(quán)數(shù)組,只有在所有權(quán)數(shù)組中的用戶才能對(duì)數(shù)據(jù)進(jìn)行訪問,未經(jīng)授權(quán)的用戶無法通過數(shù)據(jù)所有權(quán)數(shù)組的驗(yàn)證,從而不能訪問數(shù)據(jù),保證了數(shù)據(jù)隱私安全。
在云存儲(chǔ)環(huán)境下,一種常見且有效的攻擊手段為側(cè)信道攻擊。側(cè)信道攻擊是指通過對(duì)加密設(shè)備的時(shí)間消耗、功率消耗和電磁輻射消耗等的監(jiān)聽,通過分析,得到加密設(shè)備中的信息。
在云存儲(chǔ)環(huán)境下,側(cè)信道攻擊可能發(fā)生在用戶將加密后的數(shù)據(jù)上傳到云存儲(chǔ)服務(wù)器的過程中通過對(duì)傳輸通道的功耗監(jiān)聽,來判斷在云中是否已經(jīng)存在客戶端將要上傳的數(shù)據(jù)。在傳統(tǒng)方案中,如果云中已經(jīng)存在客戶端將要上傳的數(shù)據(jù),則用戶不需要將數(shù)據(jù)上傳到云中,此時(shí)側(cè)信道攻擊者通過對(duì)通信信道上的功耗進(jìn)行監(jiān)聽,因?yàn)椴恍枭蟼鲾?shù)據(jù)到云中,功耗消耗較少,則可以判定客戶端將要上傳的文件在云中已經(jīng)存在,這種情況下,結(jié)合其他因素,攻擊者可能會(huì)推斷出用戶上傳的數(shù)據(jù)內(nèi)容。
本文方案中,在進(jìn)行去重的同時(shí)對(duì)所有權(quán)信息進(jìn)行驗(yàn)證,且實(shí)現(xiàn)了數(shù)據(jù)的細(xì)粒度去重,在數(shù)據(jù)上傳到云中時(shí),側(cè)信道攻擊者通過功耗分析無法分析出將要上傳的數(shù)據(jù)在云中是否存在。
在云存儲(chǔ)環(huán)境下,前向加密安全是指已經(jīng)撤銷所有權(quán)的用戶,不能訪問在其撤銷所有權(quán)之后存儲(chǔ)的文件,后向加密安全是指新增加的擁有所有權(quán)的用戶,不能訪問在其加入之前的已經(jīng)存儲(chǔ)的文件。
本文方案中,因?yàn)殡p數(shù)組Tire樹的引入,可以有效的解決前向后向加密安全問題。對(duì)于前向加密安全,當(dāng)用戶的所有權(quán)撤銷以后,在存入新的數(shù)據(jù)的同時(shí),會(huì)對(duì)用戶的所有權(quán)進(jìn)行驗(yàn)證,已經(jīng)撤銷所有權(quán)的用戶,無法通過雙數(shù)組Tire樹的用戶信息數(shù)組check數(shù)組的驗(yàn)證,所以對(duì)后存入的數(shù)據(jù)不能進(jìn)行破解,從而保證了方案的前向加密安全。對(duì)于后向加密安全,當(dāng)新用戶信息添加到用戶信息check數(shù)組以后,對(duì)于已經(jīng)存在的數(shù)據(jù),因?yàn)槠溆脩粜畔heck數(shù)組中不存在新用戶的信息,在試圖訪問已經(jīng)存在的數(shù)據(jù)的時(shí)候,因?yàn)樾掠脩粜畔o法通過已存在數(shù)據(jù)的用戶信息check數(shù)組的檢驗(yàn),不能對(duì)已經(jīng)存在的數(shù)據(jù)進(jìn)行破解,從而保證了方案的后向加密安全。
在云存儲(chǔ)環(huán)境下去重方案性能的分析,可以從以下兩個(gè)角度對(duì)方案的性能進(jìn)行分析,分別是方案的去重率和去重效率。
(1)去重率。減少重復(fù)數(shù)據(jù)的存儲(chǔ),降低存儲(chǔ)開銷,傳輸開銷等因素是我們?cè)O(shè)計(jì)數(shù)據(jù)去重方案的原因,所以去重率是評(píng)價(jià)一個(gè)數(shù)據(jù)去重方案優(yōu)劣的重要標(biāo)準(zhǔn)。在BL-MLE方案中,對(duì)數(shù)據(jù)分塊采用的是固定長度分塊技術(shù),當(dāng)數(shù)據(jù)出現(xiàn)較小變動(dòng),就會(huì)對(duì)出現(xiàn)變動(dòng)以后的數(shù)據(jù)產(chǎn)生較大的影響,因?yàn)檫@種分塊技術(shù)的使用,所以BL-MLE方案的去重率不是很理想。在文獻(xiàn)[21]中針對(duì)BL-MLE方案中使用的固定長度分塊技術(shù)去重率低,計(jì)算開銷大的情況,提出了一種基于內(nèi)容的可變長度數(shù)據(jù)分塊技術(shù),這種數(shù)據(jù)分塊技術(shù)很大程度上解決了去重效率低的問題,但因?yàn)閿?shù)據(jù)類型的不同,數(shù)據(jù)中存在的重復(fù)數(shù)據(jù)比例不同等因素,使其分塊效果也不是很好,從而影響整個(gè)方案的去重率。本文方案提出的數(shù)據(jù)分塊技術(shù)能夠很好解決上述問題,從而提高了方案整體的去重率。
(2)去重效率。隨著現(xiàn)在數(shù)據(jù)指數(shù)式的增長現(xiàn)狀,去重方案的去重效率是一個(gè)方案可行性的重要標(biāo)準(zhǔn)。本方案對(duì)去重效率采用兩個(gè)方面的評(píng)價(jià):①整體去重方案的計(jì)算開銷,②整體去重方案的存儲(chǔ)開銷。
在方案整體的計(jì)算開銷上,本方案是在BL-MLE方案的基礎(chǔ)上進(jìn)行改進(jìn),提出的新的數(shù)據(jù)分塊技術(shù)可以在很大程度上減少在數(shù)據(jù)分塊環(huán)節(jié)的計(jì)算開銷,在其他環(huán)節(jié)的計(jì)算開銷變化不大的情況下,可以有效減少方案的計(jì)算開銷。在方案整體的存儲(chǔ)開銷上,本文方案在引進(jìn)所有權(quán)驗(yàn)證和管理的情況下,不需要特地開辟新的存儲(chǔ)空間來存儲(chǔ)用戶的個(gè)人信息,將用戶個(gè)人信息的存儲(chǔ)與驗(yàn)證放在一起進(jìn)行,極大減少了存儲(chǔ)開銷。
(1)實(shí)驗(yàn)環(huán)境。方案使用的是NTL庫實(shí)現(xiàn)橢圓曲線上的計(jì)算操作,使用Java語言分別實(shí)現(xiàn)3種數(shù)據(jù)分塊技術(shù)的實(shí)現(xiàn),最終使用C++語言在Window 10操作系統(tǒng)下Visual Studio 2019上模擬了BL-MLE方案,文獻(xiàn)[21]提出的改進(jìn)的BL-MLE方案,以及本文提出的方案。實(shí)驗(yàn)設(shè)備處理器為Intel Core i5-8300H,CPU主頻為2.30 GHz,內(nèi)存為8 GB。
(2)去重率對(duì)比。本文提出方案是在BL-MLE方案的基礎(chǔ)上進(jìn)行改進(jìn)的,3種方案的其他步驟均不會(huì)對(duì)方案的去重率產(chǎn)生影響,所以在對(duì)3種方案的去重率對(duì)比上,主要是通過3種數(shù)據(jù)分塊技術(shù)對(duì)數(shù)據(jù)的去重率作為3種方案的去重率的對(duì)比。圖2可以看出,在數(shù)據(jù)量較小時(shí)3種方案的去重率相差不大,隨著數(shù)據(jù)數(shù)量的增長,3種方案的去重率都處于下降趨勢,固定長度分塊技術(shù)因?yàn)槠浞謮K的固定,去重率急劇下降。因?yàn)楸疚姆桨甘褂玫幕谧址ヅ涞姆謮K技術(shù),所以隨著數(shù)據(jù)數(shù)量的增長,去重率存在一定的上漲趨勢。
圖2 不同分塊算法下的去重率對(duì)比
(3)去重效率對(duì)比。去重方案能夠?qū)嵤┑目尚行灾饕Q于去重效率,本文方案在去重方案的計(jì)算開銷和存儲(chǔ)開銷兩個(gè)方面對(duì)去重效率進(jìn)行評(píng)價(jià)。
表1是對(duì)3種去重方案計(jì)算開銷的分析,Mul代表在算法循環(huán)群G上的乘法操作,Exp代表在G上的指數(shù)操作,Hash代表Hash映射操作,XOR代表異或操作,AES表示一次AES加密。由表中我們可以看出在客戶端,即數(shù)據(jù)進(jìn)行去重部分的計(jì)算開銷為方案的主要計(jì)算開銷,因?yàn)锽L-MLE方案使用的是固定長度分塊技術(shù),所以在對(duì)數(shù)據(jù)進(jìn)行去重時(shí)會(huì)進(jìn)行s次Mul操作和s+1次Exp操作,因?yàn)槭窃诔朔ㄑh(huán)群上進(jìn)行這些操作,所以方案的整個(gè)計(jì)算開銷很大,文獻(xiàn)[21]采用的是數(shù)據(jù)可變長度分塊技術(shù),但因?yàn)檫@種分塊技術(shù)存在滑動(dòng)窗口大小難以選擇,指紋計(jì)算和對(duì)比開銷較大,雖說對(duì)數(shù)據(jù)塊操作的計(jì)算開銷變小,但在分塊時(shí)計(jì)算開銷的增大影響更大,整體的計(jì)算開銷相較于固定長度分塊技術(shù)沒有太大的改進(jìn)。本文方案中,對(duì)數(shù)據(jù)的分塊采用的是字符串匹配,增加了一定的計(jì)算開銷,但隨著數(shù)據(jù)數(shù)量的增長,重復(fù)數(shù)據(jù)的檢測率不斷提高,所要進(jìn)行的對(duì)比次數(shù)不斷減少,整體的計(jì)算開銷要遠(yuǎn)遠(yuǎn)小于上面兩種方案。在服務(wù)器端,本文方案增加了對(duì)數(shù)據(jù)所有權(quán)的管理和驗(yàn)證,計(jì)算開銷不做比較。
表1 3種方案的整體去重計(jì)算開銷對(duì)比
圖3是使用3種方案對(duì)一定大小的數(shù)據(jù)進(jìn)行去重之后所需要消耗的存儲(chǔ)空間的比較。因?yàn)榍皟煞N去重方案在設(shè)計(jì)時(shí)沒有考慮到用戶所有權(quán)的問題,在圖3中默認(rèn)對(duì)用戶信息建表,用來保存用戶信息。從圖3中我們可以看出,因?yàn)槿ブ芈实奶岣?,存?chǔ)空間的消耗不斷減小,本文方案引入了雙數(shù)組Tire對(duì)數(shù)據(jù)所有權(quán)的管理和驗(yàn)證,在這種存儲(chǔ)結(jié)構(gòu)下,數(shù)據(jù)所有者的信息存儲(chǔ)在數(shù)組中,并不用開辟新的存儲(chǔ)空間用來存放數(shù)據(jù)擁有者信息,所以本文方案的整體存儲(chǔ)消耗也是大大低于前兩種方案的。
圖3 3種方案的整體存儲(chǔ)開銷對(duì)比
綜合上面3個(gè)實(shí)驗(yàn)結(jié)果,我們可以看出,本文方案在原始BL-MLE的基礎(chǔ)上,對(duì)重復(fù)數(shù)據(jù)的檢測有更好效果的同時(shí),也大大減小了去重方案的計(jì)算開銷和存儲(chǔ)開銷。但本文方案主要針對(duì)的是純文本數(shù)據(jù),現(xiàn)實(shí)生活中視頻、音頻類數(shù)據(jù)已經(jīng)成為主要的數(shù)據(jù),接下來在純文本數(shù)據(jù)去重的基礎(chǔ)上,研究各種數(shù)據(jù)類型的去重方案。