童 潛,何 亨,聶 雷,張攀峰
1.武漢科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,武漢 430065
2.湖北省智能信息處理與實(shí)時(shí)工業(yè)系統(tǒng)重點(diǎn)實(shí)驗(yàn)室,武漢 430065
3.桂林理工大學(xué) 信息科學(xué)與工程學(xué)院,廣西 桂林 541004
云存儲(chǔ)作為一種新興的數(shù)據(jù)存儲(chǔ)解決方案,為個(gè)人和企業(yè)的數(shù)據(jù)存儲(chǔ)提供了一種快捷和高效的選擇。隨著云存儲(chǔ)的廣泛應(yīng)用,而云服務(wù)商是半可信的[1],如何實(shí)現(xiàn)云環(huán)境中數(shù)據(jù)的隱私性和細(xì)粒度訪(fǎng)問(wèn)控制成為了一個(gè)重要的問(wèn)題。由Sahai 和Waters 于2005 年所提出的屬性基加密(attribute-based encryption,ABE)[2]非常適合解決上述問(wèn)題。ABE可分為兩種形式:密鑰策略屬性基加密(key-policy ABE,KP-ABE)和密文策略屬性基加密(ciphertext-policy ABE,CP-ABE)。Goyal等人[3]于2006 年提出了第一個(gè)KP-ABE,在KP-ABE 中訪(fǎng)問(wèn)策略被嵌入密鑰,屬性集合被嵌入密文,這很適合日志加密管理和付費(fèi)視頻網(wǎng)站等,但不能保障數(shù)據(jù)分享者(data sharer,DS)對(duì)數(shù)據(jù)訪(fǎng)問(wèn)權(quán)限的絕對(duì)控制。為解決此問(wèn)題,Bethencourt等人[4]于2007年提出了第一個(gè)CP-ABE,在CP-ABE中訪(fǎng)問(wèn)策略被嵌入密文,屬性集合被嵌入密鑰,支持DS直接控制數(shù)據(jù)的訪(fǎng)問(wèn)權(quán)限,但存在合謀攻擊等安全性問(wèn)題。此外,加解密時(shí)大量的復(fù)雜計(jì)算使得ABE的效率并不高。隨后大量提高現(xiàn)有ABE安全性和效率的算法被提出,如文獻(xiàn)[5-8]等。其中文獻(xiàn)[6]是線(xiàn)性秘密分享方案(linear secret sharing scheme,LSSS)的典型,其指出訪(fǎng)問(wèn)策略可用LSSS正確表達(dá),且在達(dá)到d-parallel BDHE 安全的前提下比樹(shù)型的訪(fǎng)問(wèn)控制結(jié)構(gòu)效率更高。為了防止用戶(hù)密鑰泄露,文獻(xiàn)[9-12]實(shí)現(xiàn)了可追溯和撤銷(xiāo)的CP-ABE。密鑰分發(fā)也是一個(gè)重要的研究方向,單授權(quán)機(jī)構(gòu)系統(tǒng)可能存在單點(diǎn)瓶頸和安全問(wèn)題,Wu等人[13]構(gòu)建了具有多授權(quán)機(jī)構(gòu)的CP-ABE。雖然在一般的訪(fǎng)問(wèn)控制中都需應(yīng)對(duì)合謀攻擊,但在一些場(chǎng)景中又需要允許擁有不同屬性的用戶(hù)協(xié)作以獲得密鑰,Xue等人[14]提出了一種允許用戶(hù)協(xié)同訪(fǎng)問(wèn)的ABE,其將未授權(quán)的協(xié)作視為合謀。
由于物聯(lián)網(wǎng)和移動(dòng)設(shè)備的蓬勃發(fā)展,非PC 端對(duì)數(shù)據(jù)的細(xì)粒度訪(fǎng)問(wèn)控制同樣具有巨大需求,但沉重的加解密計(jì)算嚴(yán)重阻礙了ABE 的廣泛應(yīng)用。Green 等人[5]于2011年首次提出將ABE中解密的大部分計(jì)算轉(zhuǎn)移到云服務(wù)器上進(jìn)行,此思想適用于誠(chéng)實(shí)但好奇的云環(huán)境。為了驗(yàn)證云服務(wù)器是否誠(chéng)實(shí)地完成計(jì)算任務(wù),文獻(xiàn)[15-18]提出了可驗(yàn)證的解密計(jì)算轉(zhuǎn)移方案,其中Ning等人[17]的方案還支持在某時(shí)間段內(nèi)限制用戶(hù)的訪(fǎng)問(wèn)次數(shù)。以上方案雖然減少了用戶(hù)在解密階段的計(jì)算開(kāi)銷(xiāo),但用戶(hù)在加密階段的計(jì)算開(kāi)銷(xiāo)仍然很大。Ma等人[19]提出了一種加解密計(jì)算都轉(zhuǎn)移至云服務(wù)器的計(jì)算轉(zhuǎn)移方案,但隨后被Xiong 等人[20]證明其加密計(jì)算轉(zhuǎn)移并不安全。Li 等人[21]提出了半可信云環(huán)境中加解密計(jì)算轉(zhuǎn)移都安全的方案。此方案使用了虛擬屬性的思想,采用樹(shù)型訪(fǎng)問(wèn)結(jié)構(gòu),其用戶(hù)端的加解密效率較高,但云端的加解密效率并不高,且在處理訪(fǎng)問(wèn)結(jié)構(gòu)具有層次關(guān)系的大量數(shù)據(jù)時(shí)計(jì)算開(kāi)銷(xiāo)依舊很大。使用層次化的思想對(duì)訪(fǎng)問(wèn)結(jié)構(gòu)進(jìn)行優(yōu)化也是一個(gè)提高效率和節(jié)省存儲(chǔ)開(kāi)銷(xiāo)的重要方向。Li等人[22]結(jié)合了CP-ABE和層次化的基于身份的加密(hierarchical ID-based encryption,HIBE)[23],提出了樹(shù)型訪(fǎng)問(wèn)結(jié)構(gòu)的層次化屬性基加密方案。此方案較為實(shí)用,但對(duì)訪(fǎng)問(wèn)控制的描述不夠充分且效率并不高。Wang等人[24]實(shí)現(xiàn)了層次化的CP-ABE,該方案組合多個(gè)數(shù)據(jù)具有層次關(guān)系的訪(fǎng)問(wèn)結(jié)構(gòu),取得了較好的效果,但加解密效率有待進(jìn)一步提升。Li等人[25]在文獻(xiàn)[24]的基礎(chǔ)上,在效率沒(méi)有明顯降低的前提下對(duì)其功能進(jìn)行了擴(kuò)展,使得其能夠更加適用于具有大量分層組織結(jié)構(gòu)的機(jī)構(gòu)或公司。He 等人[26]對(duì)文獻(xiàn)[24]的訪(fǎng)問(wèn)結(jié)構(gòu)進(jìn)行了一定的優(yōu)化,使得其加解密效率沒(méi)有降低的同時(shí)私鑰的生成時(shí)間有所降低,私鑰存儲(chǔ)空間也有所降低。但文獻(xiàn)[22-26]的加解密計(jì)算全部由用戶(hù)完成,并不適用于計(jì)算能力受限的設(shè)備。
總體而言,當(dāng)前仍然缺少一種云環(huán)境中在云端和用戶(hù)端都高效且安全,同時(shí)能夠適用于計(jì)算能力受限設(shè)備的輕量級(jí)數(shù)據(jù)訪(fǎng)問(wèn)控制方案。針對(duì)現(xiàn)有研究存在的問(wèn)題,本文的貢獻(xiàn)如下:結(jié)合層次化和虛擬屬性的思想,提出了一種云環(huán)境中層次化的輕量級(jí)訪(fǎng)問(wèn)控制方案(hierarchical lightweight access control scheme in cloud environment,HLAC)。在HLAC 中,設(shè)計(jì)了一種基于LSSS 的層次化計(jì)算轉(zhuǎn)移的CP-ABE 算法(HLAC-CPABE)。該算法對(duì)具有層次關(guān)系的LSSS 訪(fǎng)問(wèn)結(jié)構(gòu)進(jìn)行整合優(yōu)化,從而對(duì)相關(guān)的多份數(shù)據(jù)僅需加密一次,存儲(chǔ)一份密文,然后根據(jù)屬性滿(mǎn)足訪(fǎng)問(wèn)結(jié)構(gòu)的情況可以解密部分或全部密文,大幅降低了加解密運(yùn)算和密文存儲(chǔ)開(kāi)銷(xiāo);同時(shí)引入了虛擬屬性和雙密鑰使得大部分耗時(shí)的加解密計(jì)算工作被安全地轉(zhuǎn)移至云服務(wù)器,且云端和用戶(hù)端的效率都較高。HLAC 基于HLAC-CP-ABE 實(shí)現(xiàn),能夠?qū)υ骗h(huán)境中的大量密文數(shù)據(jù)高效地完成細(xì)粒度的訪(fǎng)問(wèn)控制,且用戶(hù)端計(jì)算開(kāi)銷(xiāo)顯著降低,與此同時(shí),在整個(gè)執(zhí)行過(guò)程中能夠保證數(shù)據(jù)機(jī)密性并可以抵抗任意多個(gè)用戶(hù)的串謀攻擊。
設(shè)G0和G1是兩個(gè)以素?cái)?shù)p為階的乘法循環(huán)群,g是G0的一個(gè)生成元,當(dāng)映射:e:G0×G0→G1滿(mǎn)足如下條件時(shí),e是一個(gè)雙線(xiàn)性映射:(1)雙線(xiàn)性,?a,b∈Z*p,?u,v∈G0可得e(ua,vb)=e(u,v)ab;(2)非退化性,e(g,g)≠1;(3)可計(jì)算性,?a,b∈Z*p,?u,v∈G0可在多項(xiàng)式時(shí)間內(nèi)計(jì)算出e(ua,vb)。
LSSS[6]定義如下:對(duì)于系統(tǒng)屬性全集為U的秘密共享方案Π,若它滿(mǎn)足以下兩個(gè)條件,則它是線(xiàn)性的:(1)每個(gè)屬性都可以用Zp(p為素?cái)?shù))中的一個(gè)向量表示;(2)秘密共享方案Π 中存在一個(gè)l×n的矩陣M,令Mi表示M的第i行(i=1,2,…,l),函數(shù)ρ(i)表示Mi所對(duì)應(yīng)的屬性。取列向量v=(s,r2,r3,…,rn)T∈Znp,其中s為被分享的秘密,r2,r3,…,rn為隨機(jī)選取。由Π 可知λi=(Mv)i是s的l個(gè)子秘密。
決策性q-parallel BDHE(decisionalq-parallel bilinear Diffie-Hellman exponent)假設(shè)[5]定義如下:令G0和G1是階為素?cái)?shù)p,生成元為g的雙線(xiàn)性群,同時(shí)隨機(jī)選擇β,s,b1,b2,…,bq∈Zp。若敵手僅獲得:
對(duì)稱(chēng)加密主要由如下三個(gè)多項(xiàng)式時(shí)間函數(shù)構(gòu)成:
(1)SKE.KeyGen(1k)→PT:密鑰生成函數(shù)以安全參數(shù)k為輸入,輸出對(duì)稱(chēng)密鑰集PT。
(2)SKE.Enc(PT,Data)→Enc-Data:對(duì)稱(chēng)加密函數(shù)以PT和數(shù)據(jù)明文集Data為輸入,使用PT中的每個(gè)對(duì)稱(chēng)密鑰分別加密Data中的每個(gè)明文,輸出數(shù)據(jù)密文集Enc-Data。
(3)SKE.Dec(PT,Enc-Data)→Data:對(duì)稱(chēng)解密函數(shù)以PT和Enc-Data為輸入,使用PT中的每個(gè)對(duì)稱(chēng)密鑰分別解密Enc-Data中的每個(gè)密文,輸出數(shù)據(jù)明文集Data。
HLAC涉及五個(gè)實(shí)體,分別為:授權(quán)機(jī)構(gòu)(authorized agency,AA)、云存儲(chǔ)服務(wù)器(cloud storage servers,CSS)、云計(jì)算服務(wù)器(cloud computing servers,CCS)、數(shù)據(jù)分享者(data sharer,DS)和數(shù)據(jù)請(qǐng)求者(data requester,DR)。
HLAC 的系統(tǒng)框架如圖1 所示,首先,AA 執(zhí)行初始化操作生成對(duì)外公開(kāi)的系統(tǒng)公鑰PK和不對(duì)外公開(kāi)的系統(tǒng)主密鑰MK;DS 生成對(duì)稱(chēng)密鑰集PT并使用對(duì)稱(chēng)加密算法(如AES)加密其需要分享的數(shù)據(jù)集Data,得到數(shù)據(jù)密文集Enc-Data后將其上傳至CSS保存;然后,DS 先通過(guò)HLAC-CP-ABE 算法加密對(duì)稱(chēng)密鑰集PT得到中間密文集CTDS,再由CCS 加密得到最終密文集CT,并將CT上傳至CSS保存;當(dāng)DR有數(shù)據(jù)請(qǐng)求需要時(shí),CCS和DR分別從AA處獲得和該DR屬性有關(guān)的計(jì)算轉(zhuǎn)移密鑰CTK和用戶(hù)請(qǐng)求者密鑰DRK,然后CCS先對(duì)從CSS 處下載的密文集CT進(jìn)行HLAC-CP-ABE算法解密操作得到中間明文集PTCT,再由DR 最終解得對(duì)稱(chēng)密鑰集PT′。根據(jù)DR 的屬性,DR 可以解得部分或全部對(duì)稱(chēng)密鑰集PT,從而可以在CCS處下載數(shù)據(jù)密文集Enc-Data后通過(guò)執(zhí)行對(duì)稱(chēng)解密算法得到部分或全部Data。方案具體實(shí)現(xiàn)過(guò)程見(jiàn)2.3節(jié)。
HLAC 中各實(shí)體的安全性假設(shè)如下:AA 是完全可信的,AA與DR間存在安全通道用以傳輸密鑰。AA的具體部署可以采用多AA分布式的方式,相關(guān)研究如文獻(xiàn)[13]等,此問(wèn)題不在本文討論范圍。CSS和CCS都是半可信的,這意味著云服務(wù)器會(huì)堅(jiān)定不移地執(zhí)行用戶(hù)(用戶(hù)包括DS 和DR)的請(qǐng)求,但可能試圖獲取用戶(hù)數(shù)據(jù)。此外,DR 可能是不誠(chéng)實(shí)的,DR 間存在串謀以試圖解密不屬于他們的。
2.2.1 算法思想
ABE算法對(duì)于計(jì)算能力有限的設(shè)備而言并不輕松,且計(jì)算開(kāi)銷(xiāo)會(huì)隨著訪(fǎng)問(wèn)結(jié)構(gòu)復(fù)雜度增加而增加,這一問(wèn)題嚴(yán)重阻礙了ABE在移動(dòng)設(shè)備上的廣泛應(yīng)用;此外,數(shù)據(jù)的訪(fǎng)問(wèn)結(jié)構(gòu)可能存在層次關(guān)系。以電子病歷為例,病歷一般可分為兩部分?jǐn)?shù)據(jù):具有敏感性的個(gè)人信息,如住址和電話(huà)等;不具有敏感性的病情分析與診斷等,這部分可用于醫(yī)學(xué)研究。其中主治醫(yī)師可以訪(fǎng)問(wèn)到所有數(shù)據(jù),而其他醫(yī)學(xué)研究人員只被允許訪(fǎng)問(wèn)到非敏感的數(shù)據(jù)。若不利用多個(gè)數(shù)據(jù)的訪(fǎng)問(wèn)結(jié)構(gòu)具有層次關(guān)系這一特性,則需要對(duì)每份數(shù)據(jù)分別加密,這會(huì)產(chǎn)生較大的加密計(jì)算和密文存儲(chǔ)開(kāi)銷(xiāo)。
基于上述問(wèn)題,結(jié)合了層次化和虛擬屬性的思想,在HLAC中設(shè)計(jì)了如圖2所示的訪(fǎng)問(wèn)結(jié)構(gòu)A=Apol∧Attvir,并基于A設(shè)計(jì)了HLAC-CP-ABE 算法,其中Apol為DS所定義的訪(fǎng)問(wèn)策略對(duì)應(yīng)的層次化訪(fǎng)問(wèn)結(jié)構(gòu),Attvir為引入的虛擬屬性,每個(gè)DR都具有一個(gè)Attvir。
Attvir不代表任何具體的屬性,由本算法自動(dòng)生成,且Attvir對(duì)于DR和DS而言都是透明。設(shè)DR的屬性集合為S′ ,則實(shí)際參與本算法計(jì)算的屬性集合S=S′?{Attvir}。在加密過(guò)程中,DS只需進(jìn)行與虛擬屬性Attvir相關(guān)的少量計(jì)算,大部分計(jì)算開(kāi)銷(xiāo)可轉(zhuǎn)移至CCS。虛擬屬性Attvir有關(guān)的具體操作過(guò)程見(jiàn)2.2.2 小節(jié)。在解密過(guò)程中,DR也只需要進(jìn)行少量計(jì)算,大部分計(jì)算開(kāi)銷(xiāo)也可轉(zhuǎn)移至CCS。上述過(guò)程不會(huì)造成任何數(shù)據(jù)泄露。
同時(shí),對(duì)層次化訪(fǎng)問(wèn)結(jié)構(gòu)Apol按如下方式來(lái)整合生成,如圖3所示。兩份數(shù)據(jù)Data_1和Data_2的樹(shù)型訪(fǎng)問(wèn)結(jié)構(gòu)為A-1 和A-2,A-1 和A-2 具有層次關(guān)系,在HLACCP-ABE中其被整合為Apol。DS使用Apol對(duì)Data_1和Data_2只需進(jìn)行一次加密,存儲(chǔ)一份密文。屬性集合為{Psychiatrist,Researcher}的DR-1滿(mǎn)足部分Apol,解得明文Data_1;屬性集合為{Psychiatrist,Professor,Attending Doctor}的DR-2滿(mǎn)足整個(gè)Apol,解得所有明文Data_1和Data_2;屬性集合為{Psychiatrist,Associate Professor}的DR-3完全不滿(mǎn)足Apol,故解密失敗。
HLAC-CP-ABE 將原本需要用戶(hù)執(zhí)行的大量計(jì)算安全地轉(zhuǎn)移到了CCS,并對(duì)訪(fǎng)問(wèn)結(jié)構(gòu)進(jìn)行優(yōu)化從而顯著提高了方案的整體計(jì)算效率,降低了用戶(hù)的計(jì)算開(kāi)銷(xiāo),同時(shí)密文存儲(chǔ)開(kāi)銷(xiāo)也有所減少。
2.2.2 HLAC-CP-ABE設(shè)計(jì)
對(duì)于系統(tǒng)屬性全集為U的HLAC-CP-ABE算法,其主要由如下六個(gè)多項(xiàng)式時(shí)間函數(shù)構(gòu)成:
(1)Setup(1k,U)→(PK,MK):系統(tǒng)初始化函數(shù)以安全參數(shù)k和系統(tǒng)中的屬性全集U為輸入,輸出系統(tǒng)公鑰PK和系統(tǒng)主密鑰MK。
(2)KeyGen(PK,MK,S)→(CTK,DRK):密鑰生成函數(shù)以系統(tǒng)公鑰PK,系統(tǒng)主密鑰MK和用戶(hù)屬性集合S為輸入,輸出和S相關(guān)的密鑰SK。SK由計(jì)算轉(zhuǎn)移密鑰CTK和數(shù)據(jù)請(qǐng)求者密鑰DRK組成。
(4)Enc.CT(CTDS,PK)→CT:計(jì)算轉(zhuǎn)移加密函數(shù)以DS加密函數(shù)處理得到的中間密文集CTDS和系統(tǒng)公鑰PK為輸入,輸出最終密文集CT。
HLAC 具體實(shí)現(xiàn)過(guò)程如圖4 所示,該過(guò)程包括如下9個(gè)步驟:
(1)AA執(zhí)行Setup()生成系統(tǒng)公鑰PK和系統(tǒng)主密鑰MK(考慮到簡(jiǎn)潔性,圖4 及以下過(guò)程均省略PK和MK的使用描述)。
(2)DS 通過(guò)SKE.KeyGen() 生成對(duì)稱(chēng)加密密鑰集PT={m1,m2,…,mn}。
(3)DS將需要分享的數(shù)據(jù)集Data={Data1,Data2,…,Datan},使用PT執(zhí)行SKE.Enc()加密后得到密文數(shù)據(jù)集Enc-Data={Enc-Data1,Enc-Data2,…,Enc-Datan},并將Enc-Data上傳至CSS保存。
(4)DS 指定訪(fǎng)問(wèn)策略,使用計(jì)算開(kāi)銷(xiāo)較小的Enc.DS()對(duì)PT進(jìn)行初次加密得到中間密文CTDS,并將其發(fā)送至CCS。
(5)CCS將CTDS經(jīng)過(guò)計(jì)算轉(zhuǎn)移加密Enc.CT()后得到最終密文集CT,并將CT上傳至CSS保存。
(6)當(dāng)DR對(duì)某個(gè)數(shù)據(jù)有訪(fǎng)問(wèn)需要時(shí),先通過(guò)AA執(zhí)行KeyGen()獲得與自身屬性相關(guān)的密鑰SK,SK由計(jì)算轉(zhuǎn)移密鑰CTK和數(shù)據(jù)請(qǐng)求者密鑰DRK組成,然后向CSS 發(fā)起數(shù)據(jù)請(qǐng)求,CSS 將該數(shù)據(jù)的CT發(fā)送至CCS,同時(shí)AA將相應(yīng)的CTK發(fā)送至CCS。
(7)CCS 得到CT和CTK后執(zhí)行計(jì)算轉(zhuǎn)移解密Dec.CT()獲得中間明文集PTCT,并將PTCT發(fā)送至DR。
(8)DR 使用DRK對(duì)PTCT進(jìn)行計(jì)算開(kāi)銷(xiāo)極小的Dec.DR()操作后得到最終的對(duì)稱(chēng)密鑰集PT′。若DR的屬性完全不滿(mǎn)足DS 指定的訪(fǎng)問(wèn)策略,則解密失敗得PT′=⊥;若DR的屬性滿(mǎn)足DS指定的部分訪(fǎng)問(wèn)策略,則解得部分PT,即PT′={…,mj,…},j∈(1,n);若DR 的屬性完全滿(mǎn)足DS 指定的訪(fǎng)問(wèn)策略,則解得整個(gè)PT,即
PT′=PT={m1,m2,…,mn}。
(9)DR從CSS處得到相應(yīng)的Enc-Data后,使用PT′執(zhí)行SKE.Dec()解密獲得對(duì)應(yīng)的數(shù)據(jù)明文集Data′。
在HLAC 中,AA、CSS、CCS 和DR 的安全性在2.1節(jié)中已給出說(shuō)明,本節(jié)通過(guò)挑戰(zhàn)者C 與敵手A 的選擇明文攻擊(chosen plaintext attack,CPA)博弈游戲描述安全模型,以證實(shí)屬性不滿(mǎn)足訪(fǎng)問(wèn)控制條件的用戶(hù)無(wú)法獲得與明文相關(guān)的任何信息。在本節(jié)中挑戰(zhàn)者C 為AA,敵手A 為惡意DR、CSS或CCS。
Init:敵手A 將挑戰(zhàn)的訪(fǎng)問(wèn)策略(M*,ρ*)發(fā)送給挑戰(zhàn)者C 。
Setup:挑戰(zhàn)者C 執(zhí)行Setup()算法,并將公共密鑰PK發(fā)送給敵手A ,主密鑰MK保留。
Phase 1:在該階段,允許敵手A 向挑戰(zhàn)者C 申請(qǐng)獲得與屬性集合Atts(Atts?{S1,S2,…,Sq1})相關(guān)的密鑰SK={CTK,DRK}(該屬性集合Atts不滿(mǎn)足Init 階段的訪(fǎng)問(wèn)策略),且該申請(qǐng)可以重復(fù)提交有限次,敵手A 每次申請(qǐng)后挑戰(zhàn)者C 通過(guò)求得SK,并將其返回至敵手A。
Challenge:敵手A 提交兩個(gè)等長(zhǎng)的數(shù)據(jù)明文m0和m1,挑戰(zhàn)者C 隨機(jī)選擇b∈{0,1}并使用訪(fǎng)問(wèn)策略(M*,ρ*)加密mb,最后將密文CT*返回至敵手A。
Phase 2:該階段與Phase 1 類(lèi)似,敵手A可以繼續(xù)用不同的屬性集合向挑戰(zhàn)者C 發(fā)起密鑰申請(qǐng)。
定義1 若不存在多項(xiàng)式時(shí)間算法以不可忽略的優(yōu)勢(shì)攻破上述安全模型,那么認(rèn)為本文方案是選擇性安全的。
本節(jié)基于2.4節(jié)給出的安全模型證明定理1。
定理1 若決策性q-Parallel BDHE 假設(shè)在群G0和G1中成立,那么不存在敵手能以大小為l*×n*(l*,n*≤q)的挑戰(zhàn)訪(fǎng)問(wèn)策略(M*,ρ*)在多項(xiàng)式時(shí)間內(nèi)選擇性地攻破本方案。
證明 假設(shè)存在敵手A 在本文的選擇性安全游戲中有不可忽略的優(yōu)勢(shì)AdvA=ε,那么可以構(gòu)建挑戰(zhàn)者C以不可忽略的優(yōu)勢(shì)AdvC解決決策性q-Parallel BDHE問(wèn)題。
Init:挑 戰(zhàn) 者C 以 挑 戰(zhàn) 元 組(y,T) 為 輸 入,T∈{e(g,g)βq+1s,R},敵手A 選擇一個(gè)訪(fǎng)問(wèn)策略(M*,ρ*)。
Phase 1:挑戰(zhàn)者C 回應(yīng)敵手A 的密鑰申請(qǐng),其中
Phase 2:與Phase 1 類(lèi)似,敵手A可繼續(xù)提交密鑰申請(qǐng),限制條件與Phase 1相同。
Guess:敵手A 給出猜測(cè)值b′∈{0,1},若b′=b,則挑戰(zhàn)者C 輸出0,代表T=e(g,g)βq+1s;若b′≠b,則挑戰(zhàn)者C 輸出1,代表T=R,R∈G1。當(dāng)T=e(g,g)βq+1s時(shí)挑戰(zhàn)者C 可以輸出一個(gè)有效的仿真,由2.4節(jié)的安全模型能得到敵手A 的優(yōu)勢(shì)為:
在數(shù)據(jù)存儲(chǔ)和計(jì)算轉(zhuǎn)移加解密過(guò)程中CSS 和CCS能夠知曉用戶(hù)的中間密文數(shù)據(jù)并可能試圖解密獲得明文,此外DR間可能存在串謀問(wèn)題。
對(duì)于CSS:在HLAC中CSS的主要作用是存儲(chǔ)真實(shí)數(shù)據(jù)集Data經(jīng)過(guò)對(duì)稱(chēng)加密后的密文集Enc-Data和存儲(chǔ)對(duì)稱(chēng)密鑰集PT經(jīng)過(guò)HLAC-CP-ABE 加密后的密文集CT。常用的對(duì)稱(chēng)加密算法普遍認(rèn)為是安全的,從3.1 節(jié)可知HLAC 是CPA 安全的,CSS 無(wú)法從CT中得到任何有效信息,只有當(dāng)DR 的屬性滿(mǎn)足DS 加密時(shí)設(shè)定的訪(fǎng)問(wèn)策略時(shí)才能解得明文集PT。
對(duì)于CCS:在HLAC中CCS的主要作用是將中間密文集CTDS二次加密Enc.CT()得到最終密文集CT以及將密文集CT初次解密Dec.CT() 得到中間明文集PTCT。CCS執(zhí)行Enc.CT()時(shí)其只有CTDS和公鑰PK的信息,涉及私密性的v,(r1,r2,…,rl-1)和rvir由DS隨機(jī)選擇;λvir和(λ1,λ2,…,λl-1) 由DS 計(jì)算;核心組件C*j,Cj,Cvir,Dvir的計(jì)算也在DS 處進(jìn)行;且與虛擬屬性Attvir有關(guān)的rvir和λvir不會(huì)發(fā)送給CCS,因此CCS無(wú)法根據(jù)CTDS反推出mj,j∈(1,n)。初次解密Dec.CT()時(shí)CCS 通過(guò)計(jì)算轉(zhuǎn)移密鑰CTK解得PTCT,若CCS 想解得明文集PT,那么必須先通過(guò)數(shù)據(jù)請(qǐng)求者密鑰DRK求得到Φ=e(g,g)αsj然后才能由C*j/Φ解得mj,但DRK只有AA 和滿(mǎn)足訪(fǎng)問(wèn)策略的DR 知曉且AA 是完全可信的,故只有該DR 可以解得mj,若DR 的屬性完全不滿(mǎn)足其請(qǐng)求數(shù)據(jù)的訪(fǎng)問(wèn)策略,則PTCT=⊥從而PT′=⊥;若滿(mǎn)足部分訪(fǎng)問(wèn)策略則解得部分PT;若完全滿(mǎn)足則解得完整的PT。
對(duì)于串謀攻擊:若DRw與DRu想通過(guò)組合它們的屬性Sw和Su偽造合法屬性S,那么必須使K、L、Kvir完全一致。但KeyGen()時(shí)AA 隨機(jī)選擇t,δ∈Zp,對(duì)于DRw與DRu而言tw≠tu,δw≠δu,從而Kw≠Ku,Lw≠Lu,Kvirw≠Kviru;若DR 想自我計(jì)算密鑰,那么必須獲得主密鑰MK=gα,但MK由AA 創(chuàng)建保管,并不對(duì)外公布,所以DR 無(wú)法自我有效計(jì)算。綜上可知HLAC 可以有效防止串謀攻擊。
總的計(jì)算開(kāi)銷(xiāo)由CCS 計(jì)算開(kāi)銷(xiāo)和用戶(hù)計(jì)算開(kāi)銷(xiāo)組成。由表1可知當(dāng)屬性數(shù)量固定時(shí),四種方案的各計(jì)算開(kāi)銷(xiāo)大多與訪(fǎng)問(wèn)結(jié)構(gòu)層次數(shù)n正相關(guān),但由于LDSS并未考慮到訪(fǎng)問(wèn)結(jié)構(gòu)可能具有層次,其加解密的理論總開(kāi)銷(xiāo)大于FH、EFH 和HLAC。具體而言,隨著n的增加,LDSS方案的加密總開(kāi)銷(xiāo)增量為((2|Apol|+3)EG0+EG1)Δn,其他三種方案都為(EG0+EG1)Δn。但在FH和EFH中所有的加解密操作都由用戶(hù)執(zhí)行,故用戶(hù)設(shè)備的計(jì)算能力越弱,計(jì)算的總時(shí)間越長(zhǎng)。當(dāng)n固定時(shí),用戶(hù)承擔(dān)的計(jì)算量與屬性成正比,但在LDSS 和HLAC 中用戶(hù)都只需執(zhí)行少量計(jì)算,大部分計(jì)算都轉(zhuǎn)移至CCS處進(jìn)行,故即使用戶(hù)設(shè)備的計(jì)算能力較弱,但總的計(jì)算時(shí)間仍然較短。以加密操作為例,LDSS和HLAC方案的DS加密開(kāi)銷(xiāo)分別為3nEG0+nEG1和(3+n)EG0+nEG1,而FH和EFH的DS 加密開(kāi)銷(xiāo)分別達(dá)到了(2|Apol|+n)EG0+(2|AT|+n)EG1和(2|Apol|+|AT|+n)EG0+(2|AT|+n)EG1,這遠(yuǎn)大于其他兩種方案,且此開(kāi)銷(xiāo)隨著屬性數(shù)量和n的增加而增加。由表2 可知LDSS 較其他三種方案,CT存儲(chǔ)開(kāi)銷(xiāo)存在較大差異。這是由于LDSS 未考慮到訪(fǎng)問(wèn)結(jié)構(gòu)可能具有層次,訪(fǎng)問(wèn)結(jié)構(gòu)每增加一層,相應(yīng)的CT需要再存儲(chǔ)一次,當(dāng)屬性數(shù)量固定時(shí),LDSS比其他三種方案多O(n)次LG0的存儲(chǔ)開(kāi)銷(xiāo),且該存儲(chǔ)開(kāi)銷(xiāo)增量隨著屬性數(shù)量的增加而增加。
表1 理論計(jì)算開(kāi)銷(xiāo)對(duì)比Table 1 Comparison of theoretical calculation cost
表2 理論存儲(chǔ)開(kāi)銷(xiāo)對(duì)比Table 2 Comparison of theoretical storage cost
實(shí)驗(yàn)仿真PC 配置為Windows 10,Intel Xeon E3-1220V2 @3.1 GHz,8 GB RAM;移動(dòng)端配置為Android 4.1,Qualcomm Snapdragon APQ8064 @1.5 GHz,2 GB RAM。實(shí)驗(yàn)算法基于Java Pairing-Based Cryptography library(JPBC-1.2.1)[27]和libfenc ABE library[28]編寫(xiě),并使用基于512 位有限域上的超奇異曲線(xiàn)y2=x3+x的160 位Type A 橢圓曲線(xiàn)群,所有的實(shí)驗(yàn)結(jié)果為30 次實(shí)驗(yàn)的平均值,表3為各設(shè)備中的基礎(chǔ)運(yùn)算和存儲(chǔ)開(kāi)銷(xiāo)。
表3 基礎(chǔ)運(yùn)算和存儲(chǔ)開(kāi)銷(xiāo)Table 3 Cost of basic calculation and storage cost
圖5為四種方案在不同情況下的加解密開(kāi)銷(xiāo)對(duì)比,圖5(a)、圖5(b)訪(fǎng)問(wèn)結(jié)構(gòu)層次固定為2,圖5(c)、圖5(d)屬性數(shù)量固定為30。從圖5(a)可知,各方案的加解密總開(kāi)銷(xiāo)都隨著屬性數(shù)量的增加而增加(加密總開(kāi)銷(xiāo)為CCS 加密開(kāi)銷(xiāo)與DS 加密開(kāi)銷(xiāo)之和,解密總開(kāi)銷(xiāo)為CCS解密開(kāi)銷(xiāo)與DR 解密開(kāi)銷(xiāo)之和)。但LDSS 和HLAC 都將大部分計(jì)算轉(zhuǎn)移到了CCS進(jìn)行,計(jì)算能力有限的移動(dòng)設(shè)備只需執(zhí)行少量計(jì)算,F(xiàn)H 和EFH 中所有加解密計(jì)算都由移動(dòng)設(shè)備執(zhí)行,故隨著屬性數(shù)量的增長(zhǎng),F(xiàn)H和EFH的加解密總開(kāi)銷(xiāo)大幅增加,LDSS 和HLAC 加解密總開(kāi)銷(xiāo)小幅增加。此外HLAC 的訪(fǎng)問(wèn)策略基于LSSS 構(gòu)建,加密時(shí)較LDSS 少了(|Apol|+1)EG0的計(jì)算開(kāi)銷(xiāo),解密時(shí)較LDSS少了2|Apol|PG0的計(jì)算開(kāi)銷(xiāo),故HLAC較LDSS所需加解密總時(shí)間更短。當(dāng)屬性數(shù)量為30時(shí),HLAC加密總開(kāi)銷(xiāo)僅為1 342 ms,解密總開(kāi)銷(xiāo)僅為486 ms。由圖5(b)可知,用戶(hù)加解密時(shí)LDSS 和HLAC 方案的計(jì)算開(kāi)銷(xiāo)都不隨屬性數(shù)量的變化而變化,且相差不大。這是因?yàn)樵贚DSS和HLAC中用戶(hù)加解密時(shí)都只需要執(zhí)行常數(shù)次Gi(i∈{0,1})上的冪運(yùn)算,但在FH 和EFH 中,所有的計(jì)算都由用戶(hù)完成,故FH和EFH的用戶(hù)加解密開(kāi)銷(xiāo)遠(yuǎn)大于其他兩種方案。由圖5(c)可知,F(xiàn)H、EFH和HLAC的加解密總開(kāi)銷(xiāo)隨著訪(fǎng)問(wèn)結(jié)構(gòu)層次的增加而小幅增加,但LDSS并未考慮訪(fǎng)問(wèn)結(jié)構(gòu)具有層次的問(wèn)題,訪(fǎng)問(wèn)結(jié)構(gòu)層次每增加一層,CCS加密開(kāi)銷(xiāo)增加了2|Apol|EG0,CCS解密開(kāi)銷(xiāo)增加了|Apol|EG1+(2|Apol|+1)PG0,故其加解密總開(kāi)銷(xiāo)隨著訪(fǎng)問(wèn)結(jié)構(gòu)層次的增加而大幅增加,且在訪(fǎng)問(wèn)結(jié)構(gòu)層次為6 時(shí)其加密總開(kāi)銷(xiāo)已經(jīng)超過(guò)FH 和EFH,達(dá)到了10 056 ms。由圖5(d)可知,隨著訪(fǎng)問(wèn)結(jié)構(gòu)層次的增加,LDSS 的用戶(hù)加解密開(kāi)銷(xiāo)大幅增加,這是因?yàn)樵贚DSS 中用戶(hù)需要進(jìn)行冗余的計(jì)算,訪(fǎng)問(wèn)結(jié)構(gòu)層次每增加一層,DS加密開(kāi)銷(xiāo)增加了3EG0+EG1,DR解密開(kāi)銷(xiāo)增加了|Ao|EG1,當(dāng)訪(fǎng)問(wèn)結(jié)構(gòu)層次為8 時(shí)其用戶(hù)加密和解密開(kāi)銷(xiāo)分別達(dá)到了3 976 ms 和3 812 ms,而HLAC 僅為795 ms和98 ms。雖然FH、EFH和HLAC的用戶(hù)加解密開(kāi)銷(xiāo)都隨著訪(fǎng)問(wèn)結(jié)構(gòu)層數(shù)的增加而緩慢增加,但由于HLAC 的用戶(hù)只需要承擔(dān)少部分計(jì)算任務(wù),而FH 和EFH的用戶(hù)承擔(dān)了全部計(jì)算任務(wù),故FH和EFH的用戶(hù)加解密開(kāi)銷(xiāo)遠(yuǎn)大于HLAC。
各方案密文存儲(chǔ)開(kāi)銷(xiāo)隨屬性數(shù)量和訪(fǎng)問(wèn)結(jié)構(gòu)層次的變化如圖6 所示,圖6(a)訪(fǎng)問(wèn)結(jié)構(gòu)層次固定為2,圖6(b)屬性數(shù)量固定為30。由圖6(a)可知,各方案密文存儲(chǔ)開(kāi)銷(xiāo)都與屬性數(shù)量成正比,在LDSS中存儲(chǔ)開(kāi)銷(xiāo)隨屬性數(shù)量變化的增量為4| ΔApol|LG0,其增長(zhǎng)系數(shù)為4,而FH、EFH和HLAC的增量都為2| ΔApol|LG0,增長(zhǎng)系數(shù)都為2,故LDSS的增幅較大,每增加5個(gè)屬性,其密文增加8 KB 左右,此項(xiàng)數(shù)據(jù)FH、EFH 和HLAC 都僅為4 KB 左右。由圖6(b)可知,各方案密文存儲(chǔ)開(kāi)銷(xiāo)都與訪(fǎng)問(wèn)結(jié)構(gòu)層次數(shù)成正比,但LDSS未考慮訪(fǎng)問(wèn)結(jié)構(gòu)具有層次的問(wèn)題,其需要存儲(chǔ)冗余的密文,每增加一層訪(fǎng)問(wèn)結(jié)構(gòu),密文增加了(2|Apol|+3)LG0+LG1,達(dá)到了22.5 KB 左右,而FH、EFH和HLAC對(duì)具有層次的訪(fǎng)問(wèn)結(jié)構(gòu)進(jìn)行了優(yōu)化,每增加一層訪(fǎng)問(wèn)結(jié)構(gòu),密文都僅增加了1 KB左右。
綜上可知HLAC 的加解密開(kāi)銷(xiāo)和密文存儲(chǔ)開(kāi)銷(xiāo)在屬性數(shù)量和訪(fǎng)問(wèn)結(jié)構(gòu)層次增加時(shí)都具有一定優(yōu)勢(shì),并且在云端和用戶(hù)端都具有較高的效率。
本文提出了一種適用于計(jì)算能力受限設(shè)備的層次化輕量級(jí)訪(fǎng)問(wèn)控制方案HLAC,HLAC 基于HLAC-CPABE實(shí)現(xiàn)。HLAC引入了虛擬屬性和雙密鑰,使得用戶(hù)在加密和解密階段都只需要執(zhí)行少量計(jì)算,大部分計(jì)算被安全地轉(zhuǎn)移至云端執(zhí)行;且HLAC對(duì)具有層次關(guān)系的多個(gè)LSSS 訪(fǎng)問(wèn)結(jié)構(gòu)進(jìn)行整合優(yōu)化,避免了冗余的加解密計(jì)算和密文存儲(chǔ),更進(jìn)一步提高了效率。此外,本文基于決策性q-Parallel BDHE假設(shè)對(duì)HLAC進(jìn)行了選擇明文攻擊的安全性證明,同時(shí)機(jī)密性分析表明HLAC能夠保證數(shù)據(jù)機(jī)密性并可以有效抵抗串謀攻擊。最后,性能評(píng)估顯示HLAC 在用戶(hù)設(shè)備計(jì)算能力有限和訪(fǎng)問(wèn)結(jié)構(gòu)具有層次時(shí),云端和用戶(hù)端都具有較高的計(jì)算效率,且顯著降低了用戶(hù)端的計(jì)算開(kāi)銷(xiāo),同時(shí)密文存儲(chǔ)開(kāi)銷(xiāo)也較小。因此HLAC 尤其適用于當(dāng)前移動(dòng)互聯(lián)網(wǎng)環(huán)境中基于云存儲(chǔ)的大量數(shù)據(jù)安全訪(fǎng)問(wèn)的場(chǎng)景。