冷青松,羅王平
(中國電子科技集團公司第三十研究所,四川 成都 610041)
面對用戶日益增長的個人數(shù)據(jù)(如照片、文件等),移動設(shè)備有限的存儲空間難以滿足用戶的存儲需求。盡管將其備份在可以無限擴展的移動存儲介質(zhì)是一個較好的辦法,但并不方便用戶的使用。一方面是隨身攜帶移動存儲介質(zhì)會增加用戶的保管負擔,另一方面是在使用移動存儲介質(zhì)時需要用移動設(shè)備物理接入,極不方便。
云中極為豐富的存儲資源為資源受限的移動設(shè)備提供了極大便利,但對不受控的云端,數(shù)據(jù)的安全性極為重要[1-3]。加密是解決該問題的主要手段,然而數(shù)據(jù)以密文的形態(tài)呈現(xiàn)在云端會導(dǎo)致數(shù)據(jù)無法在用戶間共享。密文策略基于屬性加密(Ciphertext-Policy Attribute-Based Encryption,CPABE)[4]。因為類似基于角色的訪問控制方式,具有“一次加密、多人共享”的特點,所以它可以同時滿足上述問題的安全性和密文共享要求。
然而,CP-ABE 應(yīng)用于移動設(shè)備同樣存在缺陷,即移動設(shè)備有限的算力并不能高效計算包含耗時模指數(shù)運算的CP-ABE 加密算法,導(dǎo)致算法整體加密時間較長,不但耗時耗電,而且用戶的使用體驗較差。針對這一問題,提出一種支持加密外包的基于屬性加密方案。
該方案的主要貢獻如下。
(1)提出CP-ABE 的外包加密方法。根據(jù)文獻[5]的定理4 構(gòu)造共享訪問矩陣,并將共享訪問策略外包給云加密服務(wù)器加密,使得移動設(shè)備僅需針對云加密服務(wù)器的加密結(jié)果做進一步處理,并把最后生成的完整密文存儲在云存儲服務(wù)器中。
(2)證明方案的有效性。性能測試表明,該方案在移動設(shè)備上運算非外包部分的效率較高,降低了CP-ABE 對移動設(shè)備的計算性能要求。
密文策略基于屬性加密算法由Bethencourt 等在2007 年提出。它采用訪問樹結(jié)構(gòu)作為密文的訪問策略,而用戶密鑰則采用該用戶擁有的屬性集合進行定義。只有當用戶的屬性集合滿足訪問策略時,該用戶才有權(quán)限且正確解密該訪問策略對應(yīng)的密文[4]。為了實現(xiàn)該方案在隨機預(yù)言模型下是安全的,WATERS 利用線性秘密共享方案作為訪問策略提出標準模型下安全的CP-ABE 方案[6],但其只支持小屬性空間。
模指數(shù)運算作為CP-ABE 算法的核心,使得該算法的加密效率并不高。ZHOU 等[7]提出一種移動云計算環(huán)境下計算外包的基于屬性加密方案,將訪問結(jié)構(gòu)從根節(jié)點一分為二,在客戶端僅需完成計算量較少的部分,使得手機、平板等移動設(shè)備都能快速完成一次加密,但其外包過程暴露的參數(shù)容易被第三方竊取、利用而導(dǎo)致用戶數(shù)據(jù)泄露。李經(jīng)緯[8]在ZHOU[7]的基礎(chǔ)上,提出采用平凡屬性代替根節(jié)點的右子樹(即客戶端加密的子樹),根節(jié)點的左子樹為原訪問結(jié)構(gòu)樹,然后結(jié)合MapReduce 技術(shù)設(shè)計了一種外包加密方案。該方案將根節(jié)點分配給左子樹的秘密共享數(shù)分成N份,分別讓N個計算節(jié)點加密根左子樹,最后合并N個計算節(jié)點的加密結(jié)果得到完整根左子樹密文。但是,該方案假設(shè)主節(jié)點和至少一個計算節(jié)點是可信的,且沒有充分利用MapReduce 技術(shù)的計算能力。HUANG 等[9]考慮到物聯(lián)網(wǎng)環(huán)境下終端設(shè)備的計算性能較弱,面向物聯(lián)網(wǎng)環(huán)境提出了一種計算外包的細粒度訪問控制方案。該方案先將整個共享訪問結(jié)構(gòu)樹的計算工作外包給霧計算,然后客戶端僅需要對霧計算返回的結(jié)果做進一步處理。此處理過程計算量較少,但加密后的密文再次被霧計算節(jié)點獲取后,霧計算節(jié)點很容易解密出明文。王磊采用離線/在線加密思路提出了一種靈活高效的快速CP-ABE 方案[10]。在設(shè)備空閑時,根據(jù)輸入的訪問結(jié)構(gòu)樹對其進行離線加密。在有明文需要加密時,即刻執(zhí)行在線加密算法。盡管采用離線/在線加密技術(shù)加快了客戶端的加密響應(yīng)速度,但僅局限于訪問結(jié)構(gòu)樹不變化的情況。閆璽璽等[11]采用模指數(shù)安全外包算法提出一種可驗證的CP-ABE 安全外包方案,采用兩組不同參數(shù)外包CP-ABE 中模指數(shù)運算,驗證了外包加密結(jié)果的正確性,但存在安全性問題,且外包過程也比較復(fù)雜。相比云計算環(huán)境,霧計算更接近移動設(shè)備,具有響應(yīng)快等特點。因此,黃鳳鳴等[12]和曾萍等[13]分別提出兩種與HUANG 等人所提方案[9]類似的外包加密方案。兩種方案均將共享訪問策略外包給霧計算加密,而客戶端僅需要對共享訪問策略加密結(jié)果做簡單處理。不同之處在于,前者使用訪問結(jié)構(gòu)樹,后者使用線性秘密共享方案。
從分析可以看出,盡管部分方案能將CP-ABE的部分加密計算外包給第三方,但其外包過程比較復(fù)雜,且外包計算時的安全性仍存在問題。
如圖1 所示,該加密外包方案共有5 個實體,分別是授權(quán)中心、云加密服務(wù)器、云存儲服務(wù)器、數(shù)據(jù)所有者和數(shù)據(jù)使用者(圖1 中出現(xiàn)的數(shù)字和字母均在第2.2 章節(jié)中定義)。

圖1 系統(tǒng)模型
(1)授權(quán)中心是所有實體的可信區(qū)域,負責初始化整個系統(tǒng)(即執(zhí)行初始化算法),并為所有用戶生成私鑰;
(2)云加密服務(wù)器是一個具有強大計算能力的云計算集群,加密數(shù)據(jù)所有者外包的共享訪問策略;
(3)云存儲服務(wù)器是一個具有強大存儲能力的云存儲集群,存儲數(shù)據(jù)所有者外包的數(shù)據(jù)密文,并為數(shù)據(jù)使用者提供數(shù)據(jù)密文的訪問服務(wù)(該方案假設(shè)云存儲服務(wù)器不能與云加密服務(wù)器共謀);
(4)數(shù)據(jù)所有者也是數(shù)據(jù)使用者,是整個系統(tǒng)的數(shù)據(jù)提供者,負責執(zhí)行加密算法,并將最終密文上傳至云存儲服務(wù)器存儲;
(5)數(shù)據(jù)使用者可以訪問數(shù)據(jù)所有者存儲在云加密服務(wù)器的數(shù)據(jù)密文,當該數(shù)據(jù)使用者的屬性集合滿足數(shù)據(jù)密文的訪問策略時,可以使用解密算法解密出對應(yīng)的明文。
定義1 支持加密外包的基于屬性加密方案包含以下5 個算法。
(1)(PK,MSK)←Setup(U):初始化算法由授權(quán)中心執(zhí)行,輸入系統(tǒng)屬性空間U,輸出系統(tǒng)的公鑰PK和主密鑰MSK;
(2)SK←KeyGen(PK,MSK,S):私鑰生成算法由授權(quán)中心執(zhí)行,輸入系統(tǒng)公鑰PK、系統(tǒng)主密鑰MSK和用戶屬性集合S,輸出用戶私鑰SK;
(3)CTOUT←OutEncrypt[PK(M,ρ)]:外包加密算法由云加密服務(wù)器執(zhí)行,輸入系統(tǒng)公鑰PK、共享訪問策略(M,ρ),輸出LSSS 共享訪問策略(M,ρ)的密文CTOUT;
(4)CT←Encrypt[PK,(M,ρ),m]:加密算 法由用戶客戶端執(zhí)行,輸入系統(tǒng)公鑰PK、共享訪問策略(M,ρ)和數(shù)據(jù)明文m,調(diào)用外包加密算法OutEncrypt獲取LSSS 共享訪問策略密文CTOUT,輸出數(shù)據(jù)密文CT;
(5)m←Decrypt[CT,SK]:解密算法由用戶客戶端執(zhí)行,輸入數(shù)據(jù)密文CT、用戶私鑰SK,輸出數(shù)據(jù)明文m。
根據(jù)文獻[5]的定理4,使用訪問結(jié)構(gòu)樹轉(zhuǎn)換后的共享訪問矩陣M如下:


式中:{i1,i2,…,ini}為訪問結(jié)構(gòu)樹從葉子節(jié)點i到根節(jié)點路徑上的所有非葉子節(jié)點;suc(j)為節(jié)點j在路徑上的后繼節(jié)點。
定理1 使用上述矩陣作為共享訪問矩陣時,將采用0 作為秘密共享數(shù)計算的屬性秘密共享數(shù)加上s與采用s作為秘密共享數(shù)計算的屬性秘密共享數(shù)相等。
證明:當采用0 作為秘密共享數(shù)時,選取隨機向量v=(0,s2,…,sn)計算屬性秘密共享數(shù)λi''=Miv=0+…+bijcijsj+…+bincinsn,再加上s得λi=λi''+s=s+…+bijcijsj+…+bincinsn。
當采用s作為秘密共享數(shù)時,隨機向量v'=(s,s2,…,sn)計算屬性秘密共享數(shù)λi'=Miv=s+…+bijcijsj+…+bincinsn。
由于λi=λi',故命題成立。
該方案包含初始化、私鑰生成、外包加密、加密和解密5 個部分。
選擇兩個階為大素數(shù)p的乘法循環(huán)群G和GT,參數(shù)g∈G為群G的生成元,定義雙線性映射e∶G×G→GT。從群G中隨機選擇一組元素h1,…,hU∈G,依次表示屬性空間U中的屬性,并選擇兩個隨機數(shù)α和a。
系統(tǒng)公鑰PK為:

系統(tǒng)主密鑰MSK=gα。
選擇隨機數(shù)t∈Zp(系統(tǒng)中每個用戶對應(yīng)該隨機數(shù)具有唯一性),構(gòu)造的用戶私鑰SK為:

令M為l×n規(guī)模的矩陣,云加密服務(wù)器根據(jù)文獻[5]的定理4 構(gòu)造共享訪問矩陣。從群Zp中選擇一組隨機元素,即v=(0,s2,…,sn)因此秘密共享數(shù)為0。定義矩陣M的第i行的行向量為Mi,計算λi'=Miv。針對所有行向量選擇一組隨機數(shù)r1,…,rl∈Zp,計算LSSS 共享訪問策略(M,ρ)的密文如下:

將LSSS 訪問策略CTOUT發(fā)送至云加密服務(wù)器,調(diào)用OutEncrypt算法計算LSSS 共享訪問策略的密文CTOUT并將計算結(jié)果返回客戶端。客戶端選擇隨機的秘密共享數(shù)s∈Zp,令λi=s+λi',因此生成的密文CT如下:

假設(shè)用戶屬性集合S滿足密文的訪問策略,即解密屬性集合I?{1,2,…,l}且I={i∶ρ(i)∈S},計算一組常數(shù){wi∈Zp}i∈I使得∑i∈Iwiλi=s,其中參數(shù)λi是解密屬性在加密時的秘密共享數(shù))。
先計算:

后計算數(shù)據(jù)明文m=C/e(g,g)αs。
該方案在WATERS 方案[6]的基礎(chǔ)上構(gòu)造,其生成的用戶私鑰和數(shù)據(jù)密文所包含的結(jié)構(gòu)均與WATERS 方案相同。在外包加密過程中,云加密服務(wù)器只能獲得共享訪問策略及其加密該共享訪問策略后的密文,而經(jīng)用戶客戶端進一步處理后的完整密文只能由云存儲服務(wù)器保存,云加密服務(wù)器無法獲取。因此,云加密服務(wù)器并不會獲取到其他可以利用的數(shù)據(jù),而云存儲服務(wù)器僅能獲取到完整的密文。可見,該方案與WATERS 方案的安全性一致,在標準模型下可達到選擇明文安全的要求。
為了驗證該方案的性能,從理論和實驗兩種方式出發(fā),對比分析該方案與WATERS 方案[6]。
在理論方面,由于這兩種方案主要的耗時運算是指數(shù)運算和雙線性對運算,因此采用這兩個指標來衡量兩個方案的性能。本文方案與WATERS 方案[6]的計算性能對比,如表1 所示。其中,EG表示群G的一次指數(shù)運算所消耗的時間;ET表示群GT的一次指數(shù)運算所消耗的時間;B表示一次雙線性對運算所消耗的時間。由于本文方案重點對加密進行優(yōu)化,因此私鑰生成和解密的計算性能與WATERS 方案一致,而客戶端加密僅需要恒定且較少的計算量。

表1 方案的計算開銷對比
在實驗方面,采用Android 模擬器進行模擬實驗。Android 模擬器是Pixel 2 XL,配置x86 處理器、4 GB 內(nèi)存和Android 7.1.1。該實驗所構(gòu)建的群均從y2=x3+x中選擇,其元素長度為512 位。該實驗采用的屬性數(shù)量依次是1,10,20,…,100,每項實驗結(jié)果取50 次運算結(jié)果的均值。兩種方案的客戶端加密時間對比如圖2 所示。WATERS 方案的加密時間隨著屬性數(shù)量的遞增呈線性增長,而本文方案的客戶端的加密時間比較恒定,在0.07 s 左右。

圖2 客戶端加密時間
該方案的關(guān)注點是對加密進行外包,沒有設(shè)計對解密進行外包。若需要實現(xiàn)解密外包,參考GREEN 等[14]所提出的方案改造即可。
面對基于屬性加密高耗時的運算量,移動設(shè)備極難快速響應(yīng)用戶的加密請求。針對這一問題,提出一種支持加密外包的基于屬性加密方案,采用外包方式將共享訪問策略的加密工作交由云加密服務(wù)器完成,減輕了移動設(shè)備的計算壓力。理論分析和實驗分析都表明,該方案具有有效性。