周由勝 陳律君
①(重慶郵電大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院 重慶 400065)
②(重慶郵電大學(xué)網(wǎng)絡(luò)空間安全與信息法學(xué)院 重慶 400065)
隨著大量的敏感數(shù)據(jù),如健康數(shù)據(jù)、金融數(shù)據(jù)、商業(yè)秘密、保密通信等都被外包到云端,數(shù)據(jù)安全問題引起了大量關(guān)注[1,2]。由于云服務(wù)器往往是半可信的,出于數(shù)據(jù)安全性考慮,數(shù)據(jù)所有者可能需要將某些存儲在云端敏感數(shù)據(jù)刪除,因而如何確保云服務(wù)運營商誠實地依照用戶要求刪除數(shù)據(jù)對數(shù)據(jù)擁有者而言至關(guān)重要[3–5]。除了保證云端數(shù)據(jù)的保密性和可用性外,數(shù)據(jù)擁有者如何實現(xiàn)安全刪除其外包數(shù)據(jù)是云存儲服務(wù)中需要解決的一個重要問題。
現(xiàn)有的數(shù)據(jù)刪除方法大多基于一比特返回協(xié)議進(jìn)行構(gòu)造,即在假定服務(wù)器可信的情況下,數(shù)據(jù)所有者發(fā)送一個請求讓云服務(wù)器從物理介質(zhì)中刪除數(shù)據(jù),然后接收一個表示刪除操作結(jié)果的位應(yīng)答(成功/失敗)[6]。如Garfinkel等人[7]提出通過刪除鏈接到數(shù)據(jù)的系統(tǒng)指針的方式,但它只是刪除了鏈接而內(nèi)容仍然保留在磁盤中。Gutmann[8]提出基于隨機(jī)數(shù)據(jù)覆蓋存儲介質(zhì)的方式實現(xiàn)數(shù)據(jù)刪除。Paul等人[9]提出了可擦除性證明(Proof of Erasability,PoE)概念,即用隨機(jī)模式覆蓋磁刪除數(shù)據(jù)。Perito等人[10]提出安全擦除證明(PoSE-s)的方案,通過備發(fā)送一串隨機(jī)模式將原始數(shù)據(jù)覆蓋。通過覆蓋存儲介質(zhì)的安全數(shù)據(jù)刪除大多不支持驗證而且效率較低。近年來,基于密碼技術(shù)的外包數(shù)據(jù)存儲與刪除方案受到關(guān)注[11–17]。Perlman[12]提出了一個有保證的刪除協(xié)議。張曙光等人[13]提出了一種使云服務(wù)器能夠?qū)崿F(xiàn)加密數(shù)據(jù)重復(fù)刪除的方法。為了實現(xiàn)刪除公開可驗證,Yang等人[14]提出一種基于私有鏈的刪除證據(jù)存儲方案。Yu等人[15]提出利用屬性基加密實現(xiàn)外包數(shù)據(jù)訪問控制,并通過交互驗證刪除。Xue等人[18]提出了支持細(xì)粒度訪問控制的安全刪除方案,但計算代價較大,并且需要可信第三方生成重加密密鑰。此外,還有部分學(xué)者考慮了基于樹狀存儲實現(xiàn)安全刪除[19–21]。
現(xiàn)有多數(shù)外包數(shù)據(jù)的安全刪除方案大都假設(shè)云服務(wù)器完全可信,或依賴可信第三方協(xié)作完成安全刪除,同時難以支持細(xì)粒度訪問控制與刪除,其安全性和效率有待于進(jìn)一步提升。為此,本文提出一種基于區(qū)塊鏈的細(xì)粒度云數(shù)據(jù)安全刪除方案。首先采用基于密文策略的屬性基對外包數(shù)據(jù)加密,實現(xiàn)數(shù)據(jù)所有者對數(shù)據(jù)的細(xì)粒度訪問控制和可公開驗證刪除。同時,將外包的數(shù)據(jù)與屬性策略相關(guān)聯(lián),通過撤銷用戶訪問文件必不可少的屬性從而確保數(shù)據(jù)刪除。其次,本文提出了基于區(qū)塊鏈的數(shù)據(jù)刪除證據(jù)驗證。數(shù)據(jù)所有者可以通過云服務(wù)器中已修改的密文重構(gòu)默克爾哈希樹(Measurement Hash Tree,MHT),并且對比哈希鏈上公開的證據(jù)來驗證目標(biāo)數(shù)據(jù)是否已被刪除。最后,本文方案基于橢圓曲線進(jìn)行構(gòu)造,相比傳統(tǒng)的基于雙線性映射的數(shù)據(jù)安全存儲與刪除方案,計算復(fù)雜度更小。在刪除和驗證階段,只需要數(shù)據(jù)所有者與云服務(wù)器兩方交互,不需要引入可信第三方,系統(tǒng)通信開銷和計算開銷進(jìn)一步降低。
在本文中,假設(shè)云服務(wù)器為不可信實體,即云服務(wù)器可能未經(jīng)數(shù)據(jù)擁有者授權(quán)刪除數(shù)據(jù)或者不按照數(shù)據(jù)擁有者刪除請求刪除數(shù)據(jù)。假設(shè)數(shù)據(jù)擁有者為非誠實實體,即數(shù)據(jù)擁有者可能會否認(rèn)自己曾經(jīng)發(fā)出的數(shù)據(jù)刪除請求,并誣陷云服務(wù)器未經(jīng)授權(quán)刪除數(shù)據(jù),從而向云服務(wù)器索要賠償。本方案允許被動攻擊存在,即敵手可以竊聽系統(tǒng)中的所有通信,未經(jīng)授權(quán)的用戶也可能相互勾結(jié)以獲取明文信息。考慮到本文所提方案的應(yīng)用環(huán)境,結(jié)合Ramokapane等人[22]提出的基于云的確定性刪除的安全目標(biāo),將本文方案的安全目標(biāo)設(shè)定為滿足正確性、完整性、確定性數(shù)據(jù)刪除、安全細(xì)粒度訪問控制與責(zé)任追蹤等要求。
本文提出的方案包含5個實體:云服務(wù)器(Cloud Security Provider, CSP)、屬性授權(quán)中心(Attribute Authorization center, AA)、數(shù)據(jù)擁有者(Data Owner, DO)、用戶(Users)、區(qū)塊鏈網(wǎng)絡(luò)(Block Chain network, BC)。本方案的基本框架如圖1所示。

圖1 系統(tǒng)模型
(1) 云服務(wù)器(CSP):提供存儲服務(wù)、數(shù)據(jù)訪問服務(wù)。此外,云服務(wù)器可根據(jù)數(shù)據(jù)擁有者請求刪除數(shù)據(jù),并將刪除證據(jù)存放于區(qū)塊鏈。
(2) 屬性授權(quán)中心(AA):為系統(tǒng)生成主密鑰,為每個屬性、合法用戶生成私鑰。
(3) 數(shù)據(jù)擁有者( DO):定義訪問控制策略,通過定義的策略加密文件并存儲到云上。此外,還可生成刪除請求以及驗證云服務(wù)器返回的刪除結(jié)果。
(4) 用戶(Users):在云上下載并解密密文,但只有授權(quán)用戶可以獲取相應(yīng)明文。
(5) 區(qū)塊鏈網(wǎng)絡(luò)( BC):本文方案中使用聯(lián)盟鏈以構(gòu)成數(shù)據(jù)刪除證據(jù)鏈,使用實用拜占庭算法(Practical Byzantine Fault Tolerance, PBFT)作為其共識機(jī)制。云服務(wù)器為普通節(jié)點,刪除證據(jù)生成后交給所屬機(jī)構(gòu)的超級節(jié)點,由超級節(jié)點進(jìn)行區(qū)塊模擬打包,當(dāng)交易記錄填充完一個區(qū)塊即提出出塊請求。只有超級節(jié)點共同維護(hù)一份統(tǒng)一的包含刪除證據(jù)的賬本并參與共識,其他節(jié)點通過授權(quán)向超級節(jié)點申請查閱相關(guān)信息,實現(xiàn)刪除證據(jù)公開驗證服務(wù)。
本方案包括7個算法:Setup, KeyGen, Encrypt,Decrypt, DelRequest,ReEncrypt,Verify,具體如下:
(1) Setup(1λ):由 AA運行的系統(tǒng)初始化算法,將安全參數(shù)λ作為輸入,輸出屬性公鑰PKi與系統(tǒng)主密鑰MSK, PKi公開而MSK由A A私密保存。
(2) KeyGen(MSK,ID,SID):由 AA運行的密鑰生成算法,輸入主密鑰MSK,用戶身份標(biāo)志 ID以及該用戶的一組屬性SID,輸出與用戶擁有屬性相關(guān)的私鑰S K。
(3) Encrypt(PKi,(A,ρ),M):由數(shù)據(jù)擁有者運行加密算法,該算法需要以屬性公鑰PKi,訪問策略(A,ρ)以及明文M為輸入,輸出與訪問策略(A,ρ)相關(guān)的密文CT以及簽名σSKD0(Rj)。這里的Rj為已建立的第j個MHT的根值,A為線性秘密共享矩陣,ρ為一個映射,表示將矩陣A的第x行匹配到屬性ρ(x)。
(4) Decrypt(CT,SKρ(x),ID):由用戶運行的解密算法。該算法將密文 CT和與該用戶擁有的屬性相關(guān)的私鑰SKρ(x),ID作為輸入,若私鑰中的屬性集滿足密文中的訪問架構(gòu),算法輸出明文M,否則,算法停止。
(5) DelRequest(fname,y):數(shù)據(jù)擁有者向云服務(wù)器申請刪除數(shù)據(jù)的算法。算法將文件名fname與要更改的屬性y作為算法輸入,輸出數(shù)據(jù)刪除請求DR。
(6) ReEncrypt(CT,DR):云服務(wù)器對密文進(jìn)行重加密算法。輸入密文 CT與刪除請求D R,輸出重加密后的密文項以及簽名σSKCSP(),這里的是更新后的MHT的根值。
(7) Verify(Resp,CT′):數(shù)據(jù)擁有者刪除驗證算法。數(shù)據(jù)擁有者輸入云服務(wù)器返回的刪除反饋Resp,更改后的密文CT′,再結(jié)合當(dāng)前哈希鏈的值進(jìn)行驗證,若驗證通過,輸出1,否則,輸出0。
本方案的安全模型為基于選擇性訪問架構(gòu)安全(selective access structure security),該模型由敵手 A 和挑戰(zhàn)者C 之間的游戲來定義。在游戲開始階段,敵手 A 先輸出一個挑戰(zhàn)訪問架構(gòu)A?,接著敵手A 可以發(fā)出與屬性S相關(guān)的私鑰查詢,但這些屬性不能滿足訪問架構(gòu)A?。
模型詳情如下所述:
Init: 敵手 A選擇一個挑戰(zhàn)訪問架構(gòu)(A?,ρ?),此架構(gòu)中屬性dummy已被撤銷,即用(A?, ρ?)加密的密文已被刪除。
Setup:挑戰(zhàn)者 C 執(zhí)行setup算法生成系統(tǒng)公共參數(shù),并為每個屬性生成公私鑰對。接著挑戰(zhàn)者C 將生成的公共參數(shù)發(fā)送給敵手A 。
Phase 1: 敵手 A向挑戰(zhàn)者C 發(fā)送與屬性組SID相關(guān)的私鑰查詢,但所有的屬性組SID不能滿足A?。因為屬性dummy已被撤銷,則屬性組SID不包括屬性dummy。
Challenge: 敵手 A任選兩個相同長度的消息M0,M1發(fā)送給挑戰(zhàn)者C ,挑戰(zhàn)者C 任選δ ∈{0,1},并基于訪問架構(gòu)(A?, ρ?)加密Mδ,并將加密后的密文CT?發(fā)送給敵手A 。
Phase 2:過程與phase 1類似,敵手 A 進(jìn)行更多的秘鑰詢問。
Guess:敵手 A輸出猜想,若δ′=δ,則敵手A贏得游戲。

本節(jié)給出數(shù)據(jù)存儲與安全刪除方案的具體構(gòu)造。為了提高算法整體性能,本文利用橢圓曲線進(jìn)行構(gòu)造。假設(shè)每個用戶都會預(yù)先加載公共參數(shù)PKi(1≤i ≤|U|)以及LSSS訪問矩陣。本方案的詳細(xì)結(jié)構(gòu)如下所示:
Setup(1λ):選擇GF(p)為階為P的有限域,設(shè)E是定義在GF(p)上的橢圓曲線,G為階為r的橢圓曲線E的基。H為單向抗碰撞哈希函數(shù)。
AA任選隨機(jī)數(shù)α ∈Zr,再為|U|個屬性選擇元素h1,h2,···,h|U|∈Zr,將MSK =(h1,h2,···,h|U|,α)作為系統(tǒng)主密鑰私密保存,計算αG,PKi=hiG(1≤i≤|U|),并公開αG以及屬性公鑰PKi。



圖2 證據(jù)鏈結(jié)構(gòu)




此外,本文方案在安全特性方面與現(xiàn)有同類方案相比具有一定優(yōu)勢,具體結(jié)果如表1所示。Yang等人[14]方案與Hao等人[23]方案不采用屬性加密方式,缺少細(xì)粒度訪問特性,且存入云端的密文數(shù)據(jù)只能自己訪問,不能分享數(shù)據(jù),且后者方案無法提供隱私保護(hù)。Xue等人[18]方案、Yu等人[15]方案與本文方案都使用屬性加密,均可提供細(xì)粒度訪問控制,但是前兩個方案不能進(jìn)行公開驗證及責(zé)任追蹤,且基于雙線性構(gòu)造方案開銷較大,綜上所述,本方案在性能評估中有較好的優(yōu)勢。

表1 安全特性對比
本節(jié)就時間復(fù)雜度將本文方案與現(xiàn)有同類方案進(jìn)行分析對比,由于Setup, KeyGen等階段由具有充足計算資源的屬性中心(AA)執(zhí)行的離線一次性操作,對系統(tǒng)運行性能影響較小,所以本節(jié)主要考慮執(zhí)行較為頻繁的加密、解密、刪除、驗證等4個階段的計算開銷,具體結(jié)果如表2 所示。表2中的加密對應(yīng)前文算法Encrypt,解密對應(yīng)算法Decrypt,刪除對應(yīng)算法DelRequest和ReEncrypt,驗證對應(yīng)算法Verify,其中Tp_mul,Tp_add,Tbp,Texp,Tmul,Tsig,Tver,Tε,TD,Th分別表示單次橢圓曲線倍點運算,橢圓曲線點加運算,雙線性映射運算,冪運算,乘法運算,ECDSA簽名運算及ECDSA驗簽運算,AES加密運算及解密運算,哈希運算等運算時間。為便于描述,l代表共享生成矩陣A的行數(shù),|γ|為密文中屬性個數(shù),Ma表示滿足訪問策略的最少屬性個數(shù),m為當(dāng)前區(qū)塊鏈節(jié)點個數(shù)。由于Xue等人[18]方案、Yu等人[15]方案與本文方案均基于屬性加密,故本節(jié)仿真實驗只針對后3個方案比較,對比結(jié)果如圖3(a),圖3(b),圖4(a)與圖4(b)所示,分別表示加密階段、解密階段、刪除階段與驗證階段。本實驗在Intel(R) Core(TM) i7-6700 CPU@3.40 GHz平臺上使用JPBC庫實現(xiàn)。橢圓曲線加密的密鑰大小為160 bit, AES加密密鑰大小為128 bit,安全參數(shù)設(shè)置為80,圖3(a)為設(shè)置不同的訪問矩陣行數(shù)或密文屬性個數(shù)的加密時間對比,圖3(b)為設(shè)置不同的用戶私鑰或密文中屬性個數(shù)的解密時間對比,圖4(a)為設(shè)置不同的訪問矩陣行數(shù)或密文中屬性個數(shù)的刪除時間對比,圖4(b)為設(shè)置不同用戶私鑰或密文中屬性個數(shù)的驗證時間對比。圖中時間為重復(fù)50次得到的平均值。本文方案和Yu等人[15]方案是基于CP-ABE的,而Xue等人[18]方案是基于KP-ABE的。因此在加解密階段和刪除驗證階段的時間消耗受訪問矩陣行數(shù)、私鑰中屬性個數(shù)以及密文中屬性個數(shù)等不同類型參數(shù)影響,本文實驗中將這些參數(shù)值都設(shè)置4~16的相同值。

圖3 不同訪問矩陣行數(shù)或密文中屬性個數(shù)下的加解密時間變化

圖4 不同訪問矩陣行數(shù)或密文中屬性個數(shù)下的刪除與驗證時間變化

表2 時間復(fù)雜度對比
為了解決云存儲環(huán)境中數(shù)據(jù)可信刪除問題,本文提出一種基于區(qū)塊鏈的云數(shù)據(jù)安全存儲與刪除方案。本文方案不僅比同類方案更為輕量化,還實現(xiàn)了存儲數(shù)據(jù)的細(xì)粒度訪問控制,同時基于區(qū)塊鏈的刪除證據(jù)管理方式使其具有公開可驗證特性。最后,對本文方案進(jìn)行了安全性分析和實驗分析,結(jié)果表明所提方案能更好地滿足云數(shù)據(jù)安全共享與刪除需求。