丁 勇, 趙 萌, 唐士杰,2, 梁 海, 王會勇, 王玉玨
(1.桂林電子科技大學(xué) 廣西密碼學(xué)與信息安全重點實驗室,廣西 桂林 541004;2.桂林電子科技大學(xué) 電子工程與自動化學(xué)院,廣西 桂林 541004;3.桂林電子科技大學(xué) 數(shù)學(xué)與計算科學(xué)學(xué)院,廣西 桂林 541004)
云計算可以為用戶提供強大的數(shù)據(jù)存儲服務(wù),能夠極大降低用戶本地存儲數(shù)據(jù)的負擔(dān)[1]。在多用戶模式下,云計算可以提供靈活的數(shù)據(jù)訪問和分享功能,如公司可將大規(guī)模數(shù)據(jù)外包至云端,所有員工使用相關(guān)賬號登陸云服務(wù)器即可獲得該數(shù)據(jù),實現(xiàn)公司數(shù)據(jù)的有效分享。然而,云存儲數(shù)據(jù)面臨著各種安全風(fēng)險,如用戶數(shù)據(jù)可能在云端遭到惡意篡改、刪除、偽造等[2],由此極有可能對用戶造成經(jīng)濟等方面的損失。
在多用戶環(huán)境下采用云平臺存儲數(shù)據(jù)時,需要確保外包數(shù)據(jù)的完整性,并為合法的數(shù)據(jù)使用者頒發(fā)完整性驗證的權(quán)限?,F(xiàn)有的云數(shù)據(jù)完整性驗證方案分為兩大類,即私有驗證方案和公開驗證方案[3]。前者要求數(shù)據(jù)使用者持有與數(shù)據(jù)擁有者相同的密鑰,以執(zhí)行外包數(shù)據(jù)完整性驗證協(xié)議;而后者允許任意用戶驗證外包數(shù)據(jù)當(dāng)前在云端的完整性。較為典型的云數(shù)據(jù)完整性驗證技術(shù)包括數(shù)據(jù)持有證明(provable data possession)[4]和數(shù)據(jù)恢復(fù)證明(proofs of retrievability)[5],目前大量相關(guān)的擴展方案得到廣泛研究,用戶在外包數(shù)據(jù)前先對其進行處理,生成可驗證的元數(shù)據(jù)以支持對外包數(shù)據(jù)的完整性驗證。
Shacham等[6]基于偽隨機函數(shù)(pseudo-random function)構(gòu)造了私有驗證的數(shù)據(jù)恢復(fù)證明方案,同時使用BLS數(shù)字簽名方案[7]設(shè)計了公開驗證的數(shù)據(jù)恢復(fù)證明方案,并首次給出了嚴格的安全模型和證明。文獻[8]研究了重復(fù)數(shù)據(jù)外包情形下如何降低用戶計算和通信的問題,提出的數(shù)據(jù)恢復(fù)證明方案允許云服務(wù)器協(xié)助用戶對重復(fù)數(shù)據(jù)進行處理。文獻[9]針對代理數(shù)據(jù)外包帶來的安全問題進行了研究,允許數(shù)據(jù)擁有者授權(quán)其他用戶處理數(shù)據(jù),同時支持數(shù)據(jù)使用者對數(shù)據(jù)的來源和完整性進行驗證。文獻[10]構(gòu)造的密碼方案也支持數(shù)據(jù)擁有者授權(quán)其他實體處理數(shù)據(jù),適用于代理數(shù)據(jù)外包的情形。文獻[11]基于RSA算法提出了外包數(shù)據(jù)代理完整性驗證方案,能夠確保第三方在執(zhí)行代理完整性驗證時無法獲得數(shù)據(jù)的真實內(nèi)容。文獻[12]發(fā)現(xiàn)現(xiàn)有云數(shù)據(jù)完整性驗證方案存在相關(guān)密鑰攻擊問題,敵手利用相關(guān)密鑰攻擊技術(shù)能夠獲得用戶保存在硬件中的私鑰,并計算出相關(guān)密鑰,使得惡意的云服務(wù)器可以在執(zhí)行完整性驗證協(xié)議時欺騙用戶。文獻[13]提出了支持指定審計員執(zhí)行外包數(shù)據(jù)完整性驗證的方案,允許數(shù)據(jù)擁有者在數(shù)據(jù)處理階段指定一個或兩個用戶作為合法的數(shù)據(jù)使用者,能夠和云服務(wù)器交互協(xié)議以驗證外包數(shù)據(jù)的完整性。該方案允許2個或3個用戶實現(xiàn)可驗證的數(shù)據(jù)分享,且數(shù)據(jù)擁有者無需為數(shù)據(jù)使用者另外生成授權(quán),但無法解決多用戶環(huán)境下的可驗證數(shù)據(jù)分享問題。為解決該問題,提出一種基于云平臺的可驗證外包數(shù)據(jù)分享方法。在處理數(shù)據(jù)階段,數(shù)據(jù)擁有者可指定一組數(shù)據(jù)使用者,使得僅有指定的一組使用者可以與云服務(wù)器交互以驗證其完整性,實現(xiàn)可驗證的云數(shù)據(jù)分享機制。安全分析和性能分析表明,所提出的方案是安全高效的。
本方案的安全性依賴于計算diffie-hellman難題(computational diffie-hellman,簡稱CDH)。
如圖1所示,可驗證的云數(shù)據(jù)分享系統(tǒng)由4類實體構(gòu)成,即可信機構(gòu)(trusted authority,簡稱TA)、云服務(wù)器(cloud server,簡稱CS)、數(shù)據(jù)擁有者(data owner,簡稱DO)和數(shù)據(jù)使用者(data user,簡稱DU)。TA作為系統(tǒng)可信實體,主要負責(zé)生成系統(tǒng)公開參數(shù)。CS具有強大的數(shù)據(jù)存儲和計算能力,能夠為用戶提供數(shù)據(jù)存儲服務(wù),并響應(yīng)用戶的請求,但不是可信實體。DO和DU均是CS的用戶,可根據(jù)TA生成的系統(tǒng)公開參數(shù)計算自己的密鑰對。DO將自己的外包數(shù)據(jù)分享給一組DU,可根據(jù)自己的私鑰以及相關(guān)DU的公鑰對數(shù)據(jù)進行處理,所生成的元數(shù)據(jù)和數(shù)據(jù)標(biāo)簽被上傳到CS存儲。DU可從CS讀取分享數(shù)據(jù)的內(nèi)容以及數(shù)據(jù)標(biāo)簽,并和CS執(zhí)行交互協(xié)議驗證該數(shù)據(jù)的完整性。DO無需專門為DU生成授權(quán),使得相關(guān)的DU能夠驗證分享數(shù)據(jù)的完整性。
可驗證的云數(shù)據(jù)分享系統(tǒng)需滿足如下安全目標(biāo):對于DO外包至CS的任何數(shù)據(jù),如果其完整性遭到破壞,如被篡改、替換、或部分刪除等,均可由一組合法的DU執(zhí)行完整性驗證協(xié)議來發(fā)現(xiàn)。任一合法DU在驗證該數(shù)據(jù)的完整性時,均可獨立和CS執(zhí)行驗證協(xié)議,不需要DO以及其他合法DU的協(xié)助。任何未被DO指定為合法使用者的用戶均無法驗證該數(shù)據(jù)完整性。
可驗證的云數(shù)據(jù)分享方案包括系統(tǒng)初始化、密鑰生成、數(shù)據(jù)處理、可驗證分享等4個模塊。系統(tǒng)初始化模塊由TA執(zhí)行,根據(jù)選取的安全參數(shù)生成系統(tǒng)公開參數(shù)。密鑰生成模塊由每個用戶(包括DO和DU)單獨執(zhí)行,根據(jù)系統(tǒng)公開參數(shù)生成各自的公鑰及私鑰。數(shù)據(jù)處理模塊由DO執(zhí)行,根據(jù)自己的私鑰和一組合法DU的公鑰生成處理后的數(shù)據(jù)和對應(yīng)的數(shù)據(jù)標(biāo)簽,并上傳至CS保存??沈炞C分享模塊由任一合法的DU和CS交互執(zhí)行,DU首先驗證數(shù)據(jù)標(biāo)簽的正確性,若正確,則向CS生成一個挑戰(zhàn),CS根據(jù)挑戰(zhàn)生成一個響應(yīng),使得DU能夠通過該響應(yīng)驗證所分享數(shù)據(jù)的完整性。
圖1 系統(tǒng)模型圖
基于雙線性群構(gòu)造一個可驗證的云數(shù)據(jù)分享方案,具體包含如下步驟。
(ui,vi)←Φ.N(1λ)。
(1)
因此,用戶Pi的公鑰為ci=(yi,ui),私鑰為di=(ai,vi)。
φ(x)=(x-H1(gα‖y1α))(x-H1(gα‖y2α))…
(x-H1(gα‖ynα))+βmodp。
(2)
對函數(shù)φ(x)重組得到:
φ(x)=snxn+sn-1xn-1+…+s1x+s0modp。
(3)
根據(jù)函數(shù)φ(x)的系數(shù)計算:
(4)
隨機選取一個唯一的標(biāo)識符D,隨機選取元素ω∈G1,將數(shù)據(jù)M劃分為個數(shù)據(jù)塊mi,即M=m1‖m2‖…‖m,并構(gòu)造字符串Γ:
?!鸇‖c0‖c1‖…‖cn‖‖ω‖gα‖
η0‖η1‖…‖ηn,
(5)
計算
δ←Φ.S(v0,Γ),
(6)
得到數(shù)據(jù)M對應(yīng)的標(biāo)簽τ←?!?。對每個數(shù)據(jù)塊mj(1≤j≤),計算生成元數(shù)據(jù)σj:
σj=(H2(D‖gβ‖‖j)·ωmj)a0。
(7)
4)可驗證分享:每個數(shù)據(jù)使用者Pi(1≤i≤n)可從CS讀取數(shù)據(jù)標(biāo)簽τ,分解得到Γ和δ,并驗證式(8)是否成立:
(8)
若不成立,則終止執(zhí)行后續(xù)步驟。Pi從[1,]中隨機選取一個子集Α,對每個元素j∈Α,隨機選取元素將生成的挑戰(zhàn)Δ={(j,?j):j∈Α}發(fā)送給CS。
(9)
ρ=H1(gα‖(gα)ai)
(10)
以及
(11)
進一步驗證等式:
(12)
若等式(12)成立,則表明Pi獲得的分享數(shù)據(jù)M是完整的;否則,表明該數(shù)據(jù)已遭到破壞。
定理1提出的可驗證云數(shù)據(jù)分享方案是正確的。
證明數(shù)據(jù)標(biāo)簽τ的正確性由安全的數(shù)字簽名方案Φ保證,因此,證明本方案的正確性僅需驗證式(12)是否成立。由于
ρ=H1(gα‖(gα)ai)=H1(gα‖(gai)α)=
H1(gα‖yiα),
(13)
根據(jù)式(2)易得φ(ρ)=β,于是根據(jù)式(11),結(jié)合式(3)和(4)可得
…·(gs1)ρ·gs0=gsnρn+sn-1ρn-1+…+s1ρ+s0=
gφ(ρ)=gβ。
(14)
因此,每個合法的DU均可根據(jù)自己的私有獲得保密參數(shù)gβ。由
可得
因此,完整性驗證等式(12)成立。
定理2若CDH假設(shè)成立,且數(shù)字簽名方案Φ是安全的,則提出的可驗證云數(shù)據(jù)分享方案是安全的,即僅有合法的DU可以驗證外包數(shù)據(jù)的完整性,且對于已經(jīng)損壞的外包數(shù)據(jù),CS無法偽造滿足完整性驗證條件的有效響應(yīng)。
證明首先,從式(13)和(14)可看出,數(shù)據(jù)使用者Pi在計算保密參數(shù)gβ時必須使用自己的私鑰ai。對于非法DU而言,根據(jù)其私鑰計算式(10)所得的參數(shù)ρ無法滿足式(11),即非法DU無法獲得保密參數(shù)gβ,因此無法和CS執(zhí)行外包數(shù)據(jù)完整性驗證協(xié)議。
其次,從式(6)可看出,本方案和文獻[6]的公開驗證方案生成的元數(shù)據(jù)具有相似的結(jié)構(gòu),區(qū)別在于本方案要求DO在每個數(shù)據(jù)塊對應(yīng)的元數(shù)據(jù)中嵌入保密參數(shù)gβ,使得只有指定的DU才可獲得保密參數(shù)gβ并進一步驗證數(shù)據(jù)的完整性。因此,基于文獻[6]定理4.2的結(jié)論,本方案可確保CS不能偽造有效的響應(yīng)。
對于密鑰生成算法,表1考慮了一個用戶計算生成一對公鑰和私鑰的時間開銷,每個方案均要求用戶執(zhí)行1次循環(huán)群G1上的指數(shù)運算并調(diào)用一次算法Φ.N,因此所有方案在本階段具有相同的效率。在處理相同的數(shù)據(jù)M={mj:1≤j≤}時,假設(shè)每個數(shù)據(jù)塊mj僅包含一個數(shù)據(jù)段,數(shù)據(jù)處理算法需要計算參數(shù)η0,η1,…,ηn,以支持n個DU驗證外包數(shù)據(jù)的完整性。因此與文獻[6]方案相比,需要多執(zhí)行2n+3次G1上的指數(shù)運算;而文獻[13]的2個方案也需要根據(jù)指定審計員的公鑰計算相關(guān)參數(shù),因此與文獻[6]方案相比,分別需要多執(zhí)行2次G1上的指數(shù)運算、2次G1上的指數(shù)運算和1次雙線性對運算
表1 效率比較
為實現(xiàn)云數(shù)據(jù)在指定用戶范圍內(nèi)的可驗證分享,提出了基于云平臺的數(shù)據(jù)外包方案,數(shù)據(jù)擁有者在數(shù)據(jù)處理階段可以指定外包數(shù)據(jù)的分享范圍,使得只有被指定的合法用戶才可和云服務(wù)器執(zhí)行完整性驗證協(xié)議,以發(fā)現(xiàn)外包的分享數(shù)據(jù)完整性是否遭到破壞。安全分析表明,本方案能夠確保外包數(shù)據(jù)的安全性,云服務(wù)器無法破壞或偽造用戶數(shù)據(jù)。效率分析表明,本方案在用戶端的計算開銷和指定的數(shù)據(jù)使用者數(shù)量呈線性關(guān)系。后續(xù)工作將進一步研究外包數(shù)據(jù)可驗證分享過程中的數(shù)據(jù)隱私問題。