溫琳雅,儀張倩,劉 行
(長安大學 信息工程學院,西安 710064)
云存儲服務在個人和組織環境中,隨著云用戶數的增加,冗余數據量也隨之增加.眾所周知,云服務提供商通常利用跨用戶數據去重復來盡量減少存儲開銷,允許云服務器檢測兩個或多個用戶上傳同一文件的副本,并且只存儲該文件的一個副本.
云服務提供商自由訪問用戶數據,這就要求云用戶充分信任云服務提供商做正確的事情.傳統的加密算法將文件的相同副本加密成完全獨立的密文,這使得重復刪除的工作復雜化.Douceur 等人[1]提出的收斂加密(CE)的技術,CE是一種確定性加密方案,使得文件的相同副本被加密成相同的密文.
雖然CE 提供了一種簡單而有效的方法來在數據隱私和加密重復數據消除的功能要求之間取得平衡,但它有安全性和性能限制.利用CE的概念,Bellare 等人[2–4]構建了一個名為消息鎖定加密(MLE)的新加密原語,以方便在加密數據上的重復數據消除,他們還為MLE 定義了兩個安全要求:隱私性和標簽一致性.
在本文中,我們提出了一種隨機、安全、跨用戶重復數據消除方案,請求上傳文件的用戶需要與云服務器進行交互,以確保同一文件的副本被加密到同一密文中,同時實現抵抗暴力攻擊.具體地說,擁有相同文件副本的不同用戶通過共享相同的隨機值生成文件加密密鑰,因此只有具有該文件相同副本的用戶才能獲得隨機值并計算正確的加密密鑰.
Millier[5]基于橢圓曲線提出了橢圓曲線密碼體制,Fp被設定為階為q有限域,有限域Fp上的橢圓曲線E被定義為滿足等式y2=x3+ax+bmodp上所有點(x,y) 集合;其中a,b∈Fp且 4a3+27b2≠0.無窮遠點O和橢圓曲線E上其他點形成一個循環加法群 G,則橢圓曲線上的標量乘是kP=P+P+···+P(k times),這里k∈Z*q.
Fan 等人在2014年提出布谷過濾器(Cuckoo filter),這是一種用于近似集合查詢的新型數據結構[6].
本文提出了動態布谷鳥濾波器(DCF),以支持可靠的刪除操作和彈性容量的動態集.影響DCF 設計的效率有兩個因素,首先,DCF 數據結構是可擴展的,使動態集空間的表示更有效.其次,DCF 使用壟斷指紋來表示一個項,并保證可靠的刪除操作.實驗結果表明,與現有的先進設計相比,DCF的內存成本降低了75%,構建速度提高了50%,會員查詢速度提高了80%.
布谷鳥濾波器一般是成對的哈希函數,一個是記錄的位置,另一個是備用位置,這個備用位置是處理碰撞時用的.
HA:G→{0,1}L HB:G→{0,1}L L
使用和(一般為64 bits)計算文件對應的位置.
此外,在遷移過程中,存儲的是原始數據的哈希值ξx而不是原始數據x帶來了挑戰.為了解決這個問題,利用了一種新的散列方法,稱為部分密鑰布谷鳥散列,它通過根據當第一個陣列地址和要踢出的哈希值進行異或操作來計算替代位置的地址.具體來說,兩個陣列的地址可計算為:

如果在添加新元素時,兩個哈希列表均被偶然的占據,則會導致假陽性的結果.可計算假陽性概率的上限為:

橢圓曲線離散對數問題(ECDLP):給定P,Q∈G為橢圓曲線上E的點,P是G的生成元,這里a∈Z*q且未知,滿足Q=aP,ECDL 問題是計算a∈Z*q.
該系統模型圖如圖1所示,參與者包括3 個實體:云服務器(CSP),域服務器(KS),用戶(U).

圖1 網絡模型
云服務提供商CSP:表示誠實又好奇的實體機構,負責系統參數的生成.
區域服務器KSi:表示誠實又好奇的實體機構,負責生成用戶的文件標識和區域內部去重.
用戶Ui:生成文件標識進行去重.
我們的目標是在所提方案中實現以下安全目標.
(1)數據機密性:任何對手,包括未經授權的用戶U、CSP或KS,都不能獲得加密數據的明文信息,除非他們獲得加密數據的密鑰[7].
(2)數據完整性[8]:所提方案應保護數據完整性免受對手的影響.也就是說,它應該允許U驗證從云存儲器下載的數據是否沒有被更改.
(3)可擴展性:所有的密鑰服務器都不應參與收斂的密鑰生成過程,這會導致系統的性能下降.
所提方案包含6 個階段:系統初始化階段、用戶注冊階段、用戶文件標簽產生階段、去重階段、數據完整性校驗、用戶動態更新.
系統初始化:該算法由CSP執行.
(1)給定一個安全參數 λ,基于定義在有限域Fp上的橢圓曲線E,選擇一個階為q的循環加法群 G,P是群 G的生成元.
(2)CSP隨機選取3 個單向哈希函數H1:{0,1}*→Z*q,H2:G→Z*q,H3:G→Z*q.公開系統參數params={q,G,P,H1,H2,H3}.
區域服務器參數生成:區域服務器KSi(i∈(1,N),共有N個區域) 隨機選擇si∈Z*q作為私鑰,計算公鑰pki=siP,并將公鑰公開.
用戶注冊:用戶選擇xi∈Z*q作為用戶的密鑰,并計算公鑰 Xi=xiP,并將公鑰公開.
給定系統參數params,區域公鑰pki、用戶的數據mi,執行以下步驟生成文件標簽.
(1)用戶Ui隨 機選擇ai∈Z*q,計算M1=aisiP+H1(mi)P,Ai=ai·P.用戶Ui將(M1,Ai,Xi) 發送給所在區域的服務器KSi.
(2)區域服務器KSi隨機選擇ri∈Z*q,計算M2=M1-siAi=H1(mi)P.在用戶區域內去重過程中,區域服務器KSi限制規定時間內進行有限次詢問,例如十分鐘內進行20 次詢問.為了防止區域服務器發生單點故障,我們在一個區域內部署3 個服務器.
(3)生成標簽:區域服務器KSi計算:H3(M2),哈希值H3(M2) 將用于去重工作.
去重工作包含兩個階段,區域內部去重、跨區域去重.區域內部去重由區域服務器執行,跨區域去重由CSP執行.
(1)區域內去重階段區域服務器KSi將H3(Tagi) 與本區域保存的哈希列表進行對比.區域內去重工作存在兩種情況:
第1 類,本區域內存在重復,即本區域內存在Tagi滿足Tagi=Tagj,意味著在之前已經有處在同一個區域的用戶上傳了與用戶Ui相同的文件,則用戶Ui為后續上傳者,因此,用戶Ui不需要上傳密文.
區域服務器KSi向用戶Ui發送‘同區域重復文件存在||不需要上傳文件’的指令,區域服務器KSi計算:Ti=H3(M2).區域服務器KSi將用戶公鑰、用戶文件標識:‘ (Xi,Ti)||重復’提交給CSP,CSP將用戶Ui的公
鑰Xi添加到文件第一個上傳者的密文列表中.
第2 類,如果本區域內文件不存在重復,意味著在同一個區域的用戶沒有上傳過與用戶Ui相同的文件,區域服務器KSi將H3(Tagi) 保存在本域的哈希列表中,區域服務器KSi將‘ (i,Xi,Ti)||去重’提交給CSP進行跨區域去重.
(2)區域間去重階段,CSP收到來自區域服務器KSi的‘ (Xi,Ti)||去重’指令,CSP計算哈希值HA(Ti)、HB(Ti),CSP利用布谷鳥服務器進行對比查詢這兩個哈希值在濾波器列表中映射的位置是否為空,如果映射位置為空則該文件屬于無重復文件,任選一個位置插入Ti,如果映射的位置不都為空則與Ti進行對比,存在與Ti相同數值,則該文件在云上已有重復存在.去重后存在兩種情況:
第1 類,跨區域不存在重復文件,則表示用戶Ui為其文件的第一上傳者,用戶需要加密文件并上傳.云向區域服務器發送‘Ti||上傳文件’指令,由區域服務器KSi轉發給用戶.
第2 類,跨區域存在重復文件,意味著在之前已經有處在不同區域的用戶上傳了與用戶Ui相同的文件,則用戶Ui為后續上傳者,不需要上傳加密文件.
CSP向區域服務器KSi發送‘Ti||文件重復’,CSP添加用戶Ui的公鑰Xi添加進第一上傳者的密文條目.用戶去重工作完成后,CSP向發生重復的用戶發送‘不需要上傳文件’指令時,并向用戶發送文件第一上傳者的密鑰輔助參數Ci2.
用戶Ui在完整性校驗過程中利用已保存的H1(mi) 計算:ai=DecH1(mi)(Ci2),cki′=H2(ai).用戶Ui保存對稱密鑰cki′.用戶Ui保存對稱密鑰cki′,形如:
用戶Ui收到上傳文件指令后,計算對稱加密密鑰、文件密文、輔助密文:

其中,cki用于加密文件mi,Ci2用于輔助后續去重工作中與用戶Ui具有重復文件的用戶生成解密的對稱密鑰.用戶Ui將密文 (Ci1,Ci2,Ti) 發送給區域服務器KSi,服務器KSi將(Ci1,Ci2,Ti) 轉發給CSP.云將(Ci1,Ci2)添加到去重階段已保存的條目 (i,Ti,Xi)中,保存為(i,Ci1,Ci2,Ti,Xi).
用戶Ui向云服務器提交‘下載||Ti’,云檢查Ti相對應的密文列表是否具有用戶的公鑰Xi,云隨機選擇r∈Z*a計算EncXi(r),發送給用戶Ui.用戶收到EncXi(r)后利用自己的進行解密得到r,用戶將r發送給云,云收到r后進行檢驗,相等的情況下云將密文發送給用戶.云服務器向用戶發送相應的(Ci1,Ci2).
用戶在下載請求后將收到密文 (Ci1,Ci2),用戶Ui可以利用已保存的私鑰cki,下載文件進行解密:mi=Deccki(Ci1).
當有用戶想要刪除文件時,需要進行密鑰的更新,CSP從Tj對應的密文條目中刪除用戶公鑰Xj.
數據的保密性和完整性是對加密數據的重復數據消除研究中重要的安全問題.因此,在這部分,我們討論如何實現更高層次的安全性,且比其他方案的設置更簡單.
內部攻擊通常被定義為服務器試圖獲得明文[9–11],在我們的方案中,由于服務器和云是半信任的,它們將按指定的方式執行數據的去重復,但出于好奇,他們試圖獲得明文.具體地,區域服務器為每個數據存儲哈希值H3(Tagi),云服務器存儲密文 (Ci1,Ci2).基于橢圓曲線離散對數難題,服務器無法通過M2=M1-siAi=H1(mi)P,Ai=ai·P獲得文件的哈希值H1(mi)和加密密鑰ai,從而服務器無法解密文件密文.
本節與以前的去重方案的安全屬性和計算成本方面的比較.
(1)安全屬性比較
方案的安全屬性比較如表1.

表1 安全屬性比較
(2)計算代價比較
本節將比較所提方案與現有去重方案的計算代價和通信代價.
基于MIRACL Crypto SDK,仿真實驗在CPU為英特爾i7 (2.53 GHz),內存為8 GB的64 位Window 7 操作系統下進行.平均運行時間如表2所示.表3和表4給出了文獻[12–16]和本文提出的方案計算代價比較.

表2 基本操作的執行時間

表3 該方案與其他方案用戶計算代價比較

表4 通信代價比較 (bits)
由表3可知,在文件標簽上傳階段,所提方案計算代價為1.16 ms,與已有的數據去重方案[12–16]相比,計算代價最小,分別降低了59.15%,95.70%,95.70%,95.97%和72.76%.
在文件加密階段中,所提方案加密文件計算代價為0.004 8 ms,與已有的數據去重方案[12–14,16]相比,分別降低了99.91%,99.96%,99.96%和99.96%,與方案[15]相比,計算代價近乎相同,但方案[15]不能滿足訪問控制和用戶的動態更新.
密文解密階段,在非上傳者解密2 KB 文件過程中,所提方案解密文件計算代價為0.39 ms,與已有的數據去重方案[12–14,16]相比,分別降低了86.26%,96.31%,98.33%和99.96%,盡管方案[15]的非上傳者在文件解密階段具有更低的計算代價,但所提方案在功能方面優于方案[15].
由圖2可知,在文件標簽上傳階段,所提方案通信代價為320 bits,與已有的數據去重方案[12–16]相比,通信代價最小,分別降低了68.75%,79.17%,79.17%,68.75%和68.75%.

圖2 通代價比較
文件密文上傳階段,在密文大小相同的情況下,對輔助參數的通信代價進行比較.由圖2所知,與已有的數據去重方案[12–16]相比,所提方案在密文上傳階段的通信代價最小,所提方案分別降低了89.58%,84.38%,87.50%,68.75%和72.97%.
文件密文下載階段,與已有的數據去重方案[12–16]相比,所提方案的通信代價最小,所提方案分別降低了84.38%,84.38%,87.50%,68.75%和72.97%.
由以上分析表明,所提方案在實際應用中具有更好的適用性.
本文提出了一種隨機、安全、服務器端去重方案.通過共享用于為持有相同文件副本的用戶生成加密密鑰的隨機值,可以抵抗來自惡意云服務器和用戶的暴力攻擊.在所提方案中,昂貴和復雜的計算由云服務器處理,因此在客戶端發生的計算開銷較少.安全性分析表明,該方案提供了一個更簡單的去重復框架,具有更高的安全性.性能評估的結果表明,本文方案在客戶端產生最小的計算開銷,這是足夠輕量級的.