王子園,杜瑞忠
(1.河北大學管理學院,河北 保定 071002;2.河北省高可信信息系統重點實驗室,河北 保定 071002;3.河北大學網絡空間安全與計算機學院,河北 保定 071002)
外包數據的存儲安全一直是云環境下的重要安全問題。為保證遠程數據的安全與完整,Ateniese 等[1]首次提出了數據完整性審計(PDP,provable data possession)機制,將驗證外包數據完整性的解決方案系統化、規范化,在此基礎上許多行之有效的數據完整性審計方案被提出[2]。
隨著萬物互聯的飛速發展和廣泛應用[3],以及邊緣計算[4]的逐步成熟,越來越多的設備被接入邊緣環境中,現有的云計算集中式處理環境逐漸向邊緣與云計算協同處理的形勢發展,用戶側產生了邊緣節點這一新的實體。而邊緣用戶設備在計算能力和存儲能力等方面的局限性使用戶數據的計算和存儲安全等問題[5]變得更加嚴重。受以上因素的影響,傳統云環境下的安全性方案已經不適于新的邊緣環境。
此外,數據完整性審計方案通常會將審計工作交由可信的第三方處理,然而實際應用環境下第三方并不完全可信,再加上邊緣環境下數據存儲的形式越來越多樣化,實體間的信任模型越來越復雜。因此,如何有效利用邊緣節點的存儲與計算能力,設計一種面向邊緣環境的低復雜度的數據完整性驗證方案是本文研究的重點。
為了解決上述問題,本文在假定邊緣節點半可信的情況下,致力于在降低用戶計算開銷的同時保障外包數據的完整性與安全性。本文的貢獻總結如下。
1) 基于邊緣環境資源受限的特性,將無證書公鑰密碼思想與在線/離線標簽思想相結合,設計了一種適用于邊緣環境的完整性審計方案。
2) 利用邊緣節點的存儲與計算能力,在保證隱私的情況下使不同的邊緣節點分別執行審計者與存儲者的職能。
3) 針對數據的不同存儲狀態進行分析,保證邊緣環境下數據存儲的正確性以及確定性刪除。
4) 通過理論與實驗分析,基于計算性Diffie-Hellman(CDH,computational Diffie-Hellman)問題假設,證明本文方案在隨機預言模型下是安全的,且與其他低復雜度審計方案相比,本文方案效率更高。
自Ateniese 等[1]首次提出數據完整性驗證機制開始,之后的數據完整性驗證方案基本遵循該審計結構。近年來,諸多數據完整性審計方案被提出[6-9],且在安全性與計算開銷上有了很好的提升。
PDP 方案通常需花費計算成本和存儲成本來進行證書的管理,為設備帶來較高的負擔。為解決這一問題,有學者提出基于身份的數據完整性審計方案,其能夠避免傳統PDP 方案系統建立和管理密鑰生成中心(KGC,key generation center)的困難。在這類審計方案中,用戶的公鑰由用戶自身的身份信息產生,私鑰由KGC 生成。Tian 等[10]提出的方案能夠保證驗證者在驗證用戶完整性的同時不會獲取用戶信息。Shen 等[11]使用清理程序來清理與文件敏感信息相對應的數據塊,并將這些數據塊的簽名轉換為已清理文件的有效簽名。Li 等[12]提出了基于模糊身份的數據完整性審計方案,利用秘密共享技術,使用生物識別信息作為模糊身份。Wang 等[13]支持在多云環境下實現數據完整性審計,解決了分布式數據存儲審計困難。Yu 等[14]支持審計單個服務器中存儲的多個數據副本,同時支持部門級的動態操作。Wang 等[15]利用索引邏輯表為云存儲構建基于身份的不可否認的動態可證明數據占有方案,有效防止惡意用戶的攻擊。
基于身份的加密體制使KGC 可以獲取所有用戶的私鑰,若KGC 被攻破,則攻擊者能夠使用任意用戶的數據標簽,數據完整性驗證就失去意義。針對這一問題,無證書公鑰密碼機制被提出。在無證書公鑰密碼學中,用戶的私鑰由兩部分組成,一部分由KGC 產生,另一部分則由用戶自己生成。因此KGC 無法得到用戶的完整私鑰,即增強了密鑰托管的安全性。
He 等[16]提出了一個隱私保護的無證書數據完整性審計(PP-CLPDP,privacy-preserving certificateless PDP)方案,大大減少了用戶上傳數據時的計算開銷。在其基礎上,Ji 等[17]重新定義了安全性模型,提出了tHKWWC(twisted HKWWC)方案,該方案將CSP(cloud service provider)與KGC 實體分開,更接近真實的云環境。隨后Gao 等[18]提出了無證書公共審計方案(CL-PAS,certificateless public auditing scheme),在標簽生成階段對數據塊進行哈希處理,能夠確保惡意云服務器無法偽造審計證據,并防止半可信的第三方審計直接獲取用戶數據信息,加強了隱私保護。
邊緣環境下,也有一些數據完整性審計方案被提出。Wang 等[19]在可信的邊緣計算環境下,為給資源有限的終端提供計算能力,將數據預處理任務卸載到邊緣,降低了計算負荷,同時支持第三方驗證平臺進行數據完整性驗證。Liu 等[20]提出了針對企業多媒體數據邊緣環境下的數據完整性審計方案,采用同態驗證碼,交由完全可信的第三方進行數據審計,從而降低了用戶計算開銷。Li 等[21]允許應用程序供應商檢查其應用的緩存數據的完整性,并能高效地定位損壞數據的位置。由于邊緣計算設備位于網絡邊緣,缺少有效的審計措施,導致攻擊者可能修改或刪除用戶在邊緣節點上的數據來銷毀某些證據。又因為邊緣計算場景下參與的實體類型多、數量大,所以信任情況非常復雜。攻擊者可能將惡意邊緣節點偽裝成合法邊緣節點,使終端用戶連接到惡意邊緣節點,隱秘地收集用戶數據[22]。為此,如何在真實環境中進行數據完整性審計是本文要解決的問題之一。
綜上所述,傳統的數據完整性方案并不完全適于邊緣環境,因為邊緣環境對計算及存儲有很嚴格的資源限制,而已有的面向邊緣環境的完整性審計方案計算復雜度依然偏高,所以本文提出了邊緣環境下基于無證書公鑰密碼的完整性審計方案,在省去復雜的證書管理的同時,盡可能降低用戶側的計算開銷,審計時預先對數據區塊進行處理,不直接傳輸真實數據,從而保護用戶的數據隱私不被泄露。
設q是素數,GT和GV是階為q的乘法循環群,通常稱映射e:GT×GT→GV為一個雙線性對,e滿足以下3 個性質。
1) 雙線性:對于任意δ,ξ∈Zq和χ,γ∈GT,都有e(χδ,γξ) =e(χ,γ)δξ。
2) 非退化性:存在χ,γ∈GT,使e(χ,γ) ≠ 1GV。
3) 可計算性:對任意的χ∈GT,γ∈GV,存在有效的算法計算e(χ,γ)的值。
1) CDH 問題。給定三元組(P,aP,bP),對任意直接計算abp是困難的。
2) 離散對數困難性問題。給定P,Q∈G1,求滿足Q=xP的整數x是困難的,其中
本文方案允許簽名者在分離線階段和在線階段生成簽名。在給出要簽名的數據之前,執行離線階段,當用戶設備接通電源時,離線階段可以作為后臺計算持續執行。產生數據后,將執行在線階段,通常在線階段的執行時間很短,即使具有弱處理器的設備也可以有效執行。
本文方案采用邊云混合的方式,分為用戶、邊緣以及云三層,涉及終端、邊緣節點、密鑰生成中心、云端四類實體,各實體分別負責不同的功能,具體介紹如下。系統模型如圖1 所示。

圖1 系統模型
1) 終端(End)。每個用戶可以擁有一臺或多臺終端設備,其數量眾多,性能參差不齊,自身的存儲空間往往不能滿足所產生的數據量,所以選擇上傳數據到邊緣節點或云端,并將數據完整性驗證工作外包。
2) 邊緣節點(Edge)。接近用戶側的邊緣節點負責一定范圍內設備的數據交互,具有存儲與計算功能。本文假定邊緣節點是半可信的,擁有一定的用戶數據管理權限,不會違背用戶要求,但可能會對數據產生好奇。
為避免單一數據節點損壞或受到攻擊而產生數據損壞的問題,本文規定不同邊緣節點具有不同的職能。本文將進行存儲數據的邊緣節點命名為EdgeS,進行審計數據的邊緣節點命名為EdgeA。
3) 密鑰生成中心(KGC)。KGC 部署在邊緣層,被所有用戶信任,負責在初始化階段使用主密鑰為其他實體生成基于身份的部分私鑰。
4) 云端(CS)。云端為邊緣用戶提供云存儲服務。在本文中,云端不可信,且其需要接收邊緣節點發來的數據完整性驗證請求,以確認數據是否完整存儲在服務器上。
當終端接入網絡后,由KGC 利用用戶身份及設備身份生成部分私鑰,交由終端生成完整私鑰。傳輸數據時,用戶在離線階段預先處理計算量較大的運算,在線階段只需進行輕量級運算即可上傳數據至EdgeS,隨后根據用戶需求存儲在本地或選擇上傳至云端。音視頻等數據量較大的數據,經由邊緣節點上傳至云端;用戶密碼、智能家居配置信息等數據量小、隱私性強的數據,存儲在邊緣節點本地。審計階段,用戶委托EdgeA 代為審計,以減輕用戶計算壓力,最后得到審計結果。
系統包括6 個階段,下面對每個階段進行說明。具體符號說明如表1 所示。

表1 符號說明
3.2.1 初始化階段
初始化階段包括系統參數生成、部分密鑰提取和完整密鑰生成。
系統參數生成。KGC 執行以下操作,輸入安全參數k,生成大素數q、乘法循環群G1和G2、生成元P∈G1和雙線性對選擇隨機數作為KGC的主密鑰并保密,設置Ppub=zP為系統公鑰。定義 2 個安全的 Hash 函數隨后KGC 公開其系統參數{q,G1,G2,e,P,Ppub,H1,H2}。
部分密鑰提取。當用戶設備IDu要注冊到KGC時,計算該設備部分私鑰的步驟如下。
1) IDu選擇隨機數作為IDu的秘密值,計算Xu=xu P。
2) 用戶設備將發送(IDu,Xu)給KGC,KGC 計算Qu=H1(IDu,Xu)和Du=zQu,其中z是KGC的主密鑰。
3) 輸出Di為部分私鑰,并發送部分私鑰給用戶。
完整密鑰生成。當終端收到KGC 返回的部分私鑰后,執行以下步驟完成密鑰的生成。
每臺用戶設備在接入網絡后需執行初始化階段生成密鑰,考慮到密鑰有泄露風險,在懷疑密鑰泄露或一定周期后,應再次執行初始化階段產生新的密鑰。
3.2.2 標簽生成階段

當數據發生變化需要更新時,標簽集合φ與文件簽名TagF也會對應更新,隨后重新上傳。
3.2.3 數據傳輸階段
外包數據存在3 種狀態,即只保存在云端、只保存在邊緣節點以及既保存在云端又保存在邊緣節點,狀態分別用θ=(0,1)、(1,0)和(1,1)來表示,且狀態的選擇權交由用戶。

對式(1)進行證明,即

若驗證失敗,則返回失敗結果,拒絕存儲,以防惡意用戶偽造數據欺騙存儲數據者;若驗證成功,則說明設備上傳數據正確。然后依據用戶選擇θ對數據進行操作,數據上傳流程如圖2 所示。

圖2 數據上傳流程
存儲數據時,建議將敏感、短期、數據量較小的數據存儲于邊緣節點,而長期、數據量較大的數據上傳至云端。
當數據不存儲于某些節點,或達到一定存儲期限需要進行刪除時,設備通過隨機生成臟數據f替換原有節點中的文件F,以確保原有數據正確刪除。
3.2.4 挑戰階段
數據上傳后,當用戶需要對數據完整性進行審計時,向EdgeA 發起驗證請求,EdgeA 收到請求后,根據狀態對相應存儲位置發起挑戰。首先存儲數據處的節點利用數據F與節點私鑰生成簽名并將其發送給EdgeA 進行驗證。若EdgeS 未存儲數據,則生成臟數據f的文件標簽驗證過程均同式(1)。若驗證不成立,則說明審計數據錯誤,需終止程序,向用戶返回結果;若驗證成立,則說明存儲數據正確,且不存儲于錯誤的存儲節點,繼續挑戰。數據審計流程如圖3 所示。

圖3 數據審計流程
1) EdgeA 從全集Ω={1,2,…,n}中隨機選擇i個不同元素,并為每一個i∈I生成隨機值vi。
由于存儲狀態θ不同,挑戰發送位置也不同,當θ=(0,1)時,數據只保存在云端,EdgeA 只需向CS 發送挑戰;當θ=(1,0)時,EdgeA 只需向EdgeS發送挑戰;當θ=(1,1)時,EdgeA 需向EdgeS和CS都發送挑戰,以驗證2 個副本的數據完整性。
3.2.5 證據生成階段
先對證據信息進行哈希處理后再發送Proof={δ,μ}給EdgeA,以免證據信息在傳輸過程中被惡意竊取,從而推導出用戶的數據信息。
3.2.6 證據驗證階段
EdgeA 收到存儲位置發來的證據信息后,執行下面步驟驗證數據完整性。

基于無證書公鑰密碼機制,本文提出了三類敵手攻擊:Type-Ⅰ類型敵手A1,一般用戶攻擊,不能獲取KGC 主密鑰但能替換任意用戶私鑰;Type-Ⅱ類型敵手A2,惡意KGC 攻擊,可以獲取KGC主密鑰但不能替換用戶私鑰;Type-Ⅲ類型敵手A3,惡意EdgeS/CS 攻擊,EdgeS/CS 可能會破壞數據并對審計者偽造證明。


Type-Ⅰ敵手。基于CDH 問題困難性假設,在隨機預言模型下,若本文方案對敵手A1是不可偽造的,則本文方案是安全的。
Proof。對于這類攻擊,A1可以隨意替換用戶公鑰(XU,YU),故挑戰者C 設YU=Q2=bP。在部分私鑰提取中,對兩次H1詢問設aP,j=1,2,其中sj是C 選擇的隨機數。因為CS在接收數據時已經收到所有的數據簽名,所以不再進行標簽生成詢問。在證據生成階段,挑戰者C 利用哈希重放向H2詢問同一個挑戰,從而生成2 個不同的證據 (δ1,μ1)和(δ2,μ2),那么式(5)和式(6)成立

如果A1能夠攻破,說明式(9)有解,與假設矛盾。
Type-Ⅱ敵手。基于CDH 問題困難性假設,在隨機預言模型下,若本文方案對敵手A2是不可偽造的,則該方案是安全的。
Proof。對于惡意KGC 攻擊,A2可以隨意替換用戶主密鑰,故設置系統公鑰為Ppub=Q1=aP,其中a為系統主密鑰。C 猜測Qu'=bP,用戶秘密值為si,計算在證據生成階段,挑戰者C 利用哈希重放向H2詢問同一個挑戰,從而生成2 個不同的證據 (δ1,μ1)和(δ2,μ2),那么式(10)和式(11)成立

如果A2能夠攻破,說明式(14)有解,與假設矛盾。
Type-Ⅲ敵手。基于CDH 問題困難性假設,在隨機預言模型下,若本文方案對敵手A3是不可偽造的,則本文方案是安全的。
Proof。對于這類攻擊,敵手A3根據挑戰者C發起的挑戰信息,返回偽造的證明

整理式(15)和式(16),可得μ*=μ,與假設矛盾。綜上所述,本文方案能夠抵抗三類敵手攻擊,因此本文方案是安全的。
本文方案滿足以下幾個性質。
1) 公開可驗證。通過證據生成和證據驗證階段,審計者EdgeA 可以使用公共參數來驗證數據的完整性,而不需要終端提供秘密值。
2) 存儲正確性。只有當數據正確時,產生的證明才能通過三類敵手游戲模型。
3) 隱私保護性。驗證邊緣節點EdgeA 無法從挑戰證明中獲取數據信息。審計過程中,EdgeA 接收到 CS 或 EdgeS 發送的證明,(IDu,IDEdge,IDCS,TagF,Tagf)部分不包含具體的數據信息,下面對μ進行分析。EdgeA 能夠忠實地完成用戶審計任務,但會對數據產生好奇,CS 或 EdgeS 發送給EdgeA,EdgeA 可以通過多次挑戰求解線性方程組,從而獲取H2(mi)。根據哈希函數的不可逆性質,EdgeA 無法推導出數據塊mi的值,從而有效對數據進行了隱私保護。
本文方案共涉及4 種類型的實體,在本文的實驗中,4 種實體由4 種具有不同功能和配置的機器模擬。具體來說,云端采用阿里云服務器ECS 部署,擁有2 GHz 處理器、2 GB 內存,邊緣節點采用阿里云邊緣節點服務ENS 部署,擁有2 GHz 處理器、1 GB 內存,終端與KGC 部署在本地計算機上,采用Intel i7-8086K 4 GHz 處理器、16 GB 內存。以上均基于Ubuntu14.04 版本系統搭建,openssl1.0.1 版本。
在實驗中,本文使用C++和Python 進行代碼編寫,GMP 庫和PBC 庫實現密碼操作。采用類型A的配對曲線,參數類型A 提供在所有默認設置中具有最快速度的對稱配對參數,哈希函數為SHA1(160 bit)。所得實驗結果均為多次計算后的平均值。
在邊緣環境中,對于資源有限的邊緣設備用戶來說,計算復雜度越小越好。如何在有限的資源限制下合理分配資源、縮短數據傳輸時的計算時間、提高計算效率是本文亟須解決的問題。本節將本文方案與另外5 種審計方案進行對比,并將審計算法放在相同的實驗條件下,因此具有一定的可比性。
表2給出了數據上傳時的時間復雜度分析。在用戶層,CLPDP 與tHKWWC 方案需n次哈希運算(H)與2n次點乘運算(Mul),CL-PAS 方案需2n次哈希運算與2n次點乘運算,以上3 種方案屬于輕量級審計方案。邊緣環境下,文獻[19]方案將用戶側計算任務全部卸載到邊緣,因此用戶側有較低時延,邊緣側進行了n次哈希運算、n次點乘運算以及2n次指數運算(Exp);文獻[20]方案將邊緣側視為半可信,因此計算均在本地進行,時間復雜度同樣為n次哈希運算、n次點乘運算以及2n次指數運算;本文方案由于將部分計算移至離線階段,在線階段只需進行n次哈希運算與n次點乘運算即可,時間復雜度最低,顯著提高了數據上傳時的計算效率。

表2 數據上傳時的時間復雜度分析
表3為初始化階段生成操作用時。每臺用戶設備在接入網絡后需執行初始化階段生成密鑰,考慮到密鑰有泄露風險,在懷疑密鑰泄露或一定周期后,應再次執行初始化階段產生新的密鑰,但每次執行的時間開銷與標簽生成的時間開銷相比可以忽略不計。

表3 初始化階段生成操作用時
生成標簽步驟分為離線標簽生成與在線標簽生成2 個階段,為保證用戶設備能夠以最低的開銷進行計算,本文首先對上傳文件塊大小進行了評估。以本文方案與CLPDP、tHKWWC、CL-PAS 作為評估方案,對其在文件數據總量分別為200 MB、400 MB、600 MB、800 MB和1 000 MB的在線標簽生成實驗進行了模擬,對比了文件塊大小對標簽生成時間的影響,結果如圖4 所示。
從圖4 可以看出,隨著文件塊大小的增長,標簽生成時間呈指數形式遞減。

圖4 文件塊大小對標簽生成時間的影響
考慮到文件傳輸以及安全性,文件塊越大,給數據傳輸帶來的困難就越大,完整性驗證就越不能達到預期效果,因此并不能無限制增大傳輸文件塊的大小,分析實驗結果后,以文件塊大小等于4 096 bit為基準進行后續的對比實驗。
由于標簽生成階段計算開銷在總計算開銷中占比較大,執行步驟較多,下面將對標簽生成階段總執行時間和數據上傳時用戶執行時間分別進行說明。
標簽生成階段總執行時間對比如圖5 所示。從圖5 中可以看出,隨著文件塊數量的增加,生成在線標簽的時間呈線性增長,其中 CLPDP 與tHKWWC 方案需n次哈希運算與2n次點乘運算;CL-PAS 方案與本文方案需2n次哈希運算與2n次點乘運算,用時相對較高,這是因為CL-PAS 方案與本文方案對數據進行了哈希處理,以防審計者從中獲取數據信息;文獻[19]方案與文獻[20]方案均進行了n次哈希運算、n次點乘運算以及2 次指數運算,雖然計算位置不同,但時間開銷最高。

圖5 標簽生成階段總執行時間對比
數據上傳時用戶執行時間如圖6 所示。從圖6中可以看出,隨著文件塊數量的增加,生成離線標簽的時間呈線性增長。本文方案效率最高,其中文獻[19]方案是在上傳數據后再進行的數據預處理,因此時間開銷最低。

圖6 數據上傳時用戶執行時間
隨著文件數據總量的增加,標簽生成的計算時間呈線性增長。另外,在相同大小的文件數據總量下,文件塊數量越多,文件塊大小越小,需要計算的標簽數相應增加,因此計算時間相應增長。雖然文件數據總量以及計算時間相對較大,但是只需要進行單次計算即可生成標簽,并且可以在挑戰驗證過程中重復使用,因此實驗結果可以接受。
在挑戰和驗證階段,EdgeA 在接收到用戶的審計請求后,向CS 或EdgeS 發起挑戰,CS 或EdgeS生成證明并將之返回給EdgeA,然后EdgeA 根據持有的公鑰對證明進行驗證。
根據Ateniese 等[1]提出的方案,假設模擬的數據塊數量為100 000,如果云服務器污染了1%,驗證者可以挑戰460 個區塊使檢測服務器錯誤的概率達到99%。當驗證的區塊越小時,驗證所花費的時間就越短,同時驗證檢測率也會下降,當驗證區塊數為300 時,檢測率在95%以上。接下來,給出挑戰階段取樣300 與460 個區塊時各審計方案的時間對比。
對于不同的文件數據總量,在固定了文件塊大小的情況下,挑戰與驗證時間不變,說明證據生成與證明驗證的計算時間與文件數據總量無關。用戶選擇的存儲狀態不同,審計的目標與大小也不同,當數據在EdgeS 與CS 中均進行存儲時,證據生成與證明驗證時間也會成倍增長,為表示統一,實驗階段均以θ=(0,1)狀態進行比較。
證據生成階段時間如表4 所示。證明驗證階段時間如表5 所示。各方案生成證據時間相差不大,均進行了雙線性對運算。與整體時間開銷相比,證據生成、證明驗證用時占比并不大,因此實驗結果是可以接受的。

表4 證據生成階段時間

表5 證明驗證階段時間
本文方案的額外存儲開銷集中在EdgeS 與CS,主要是上傳文件時伴隨的文件塊標簽集合,而用戶自身上傳數據后只需保留文件哈希值。
本文提出的邊緣環境下基于無證書公鑰密碼學的在線/離線數據完整性審計方案具備保證用戶安全、復雜度低的特點。基于無公鑰密碼學思想,在離線階段進行部分簽名的生成操作,使用戶設備上傳數據時的效率有了顯著提升。針對數據不同存儲狀態,本文方案能夠合理審計數據的正確性和完整性。在隨機預言模型下,基于CDH 問題證明了本文方案的安全性。模擬分析審計方案中各階段的主要運算開銷,結果表明本文方案在邊緣環境下的用戶設備上傳數據時間開銷最低。