尹龍瀟,伍忠東
蘭州交通大學(xué) 電子與信息工程學(xué)院,蘭州 730070
隨著云存儲(chǔ)的廣泛應(yīng)用,數(shù)據(jù)隱私和訪問權(quán)限控制[1]成為在云端儲(chǔ)存數(shù)據(jù)時(shí)的基本要求。加密機(jī)制可以被看作是在云環(huán)境[1-2]中提供數(shù)據(jù)隱私的有效手段。然而,傳統(tǒng)的對(duì)稱密鑰和公鑰加密機(jī)制并不適合在云環(huán)境[2-3]中提供對(duì)加密數(shù)據(jù)的訪問控制?;诿芪?策略屬性的加密(CP-ABE)[4]被認(rèn)為是實(shí)現(xiàn)數(shù)據(jù)隱私和細(xì)粒度訪問控制的一種合適的加密機(jī)制,因?yàn)樗鼮閿?shù)據(jù)所有者提供了對(duì)訪問策略[5]的直接控制。在CP-ABE 中,利用訪問策略對(duì)數(shù)據(jù)進(jìn)行加密,其中訪問策略由一些屬性來定義,滿足訪問策略中足夠?qū)傩缘挠脩艨梢越饷?。因此,它提供一?duì)多共享,其中數(shù)據(jù)所有者對(duì)數(shù)據(jù)進(jìn)行加密,任何具有足夠?qū)傩裕ɑ蚝细窠饷苊荑€)的用戶都可以訪問數(shù)據(jù)。通常,在CP-ABE 中,數(shù)據(jù)所有者將加密后的數(shù)據(jù)外包給云存儲(chǔ)服務(wù)器。云存儲(chǔ)服務(wù)器由稱為云服務(wù)提供者(Cloud Service Provider,CSP)的第三方實(shí)體維護(hù)。任何具有合格解密密鑰的用戶都可以訪問它。但是,一段時(shí)間之后,數(shù)據(jù)所有者可能希望只允許具有合格解密密鑰的用戶集中的一些用戶訪問數(shù)據(jù),同時(shí)防止或拒絕其他用戶訪問數(shù)據(jù),這就要求訪問控制方案中有相應(yīng)的撤銷機(jī)制。而在CP-ABE中,拒絕具有合格解密密鑰的用戶(即非預(yù)期用戶)訪問數(shù)據(jù),而只允許其中一些用戶(即預(yù)期用戶)訪問數(shù)據(jù)是一項(xiàng)具有挑戰(zhàn)性的任務(wù)。
傳統(tǒng)的基于屬性的用戶撤銷方案[5-9],可以通過撤銷非預(yù)期用戶的訪問權(quán)限來防止非預(yù)期用戶訪問數(shù)據(jù);它反過來只向預(yù)期用戶提供對(duì)數(shù)據(jù)的訪問。用戶的訪問權(quán)限通過從系統(tǒng)中完全撤銷其屬性或用戶合法性來實(shí)現(xiàn)。在文獻(xiàn)[5-6]中,用戶的屬性被撤銷,而文獻(xiàn)[8]則完全從系統(tǒng)中撤銷用戶。然而,文獻(xiàn)[5-6,8]方案需要執(zhí)行兩個(gè)操作,即密鑰重新分發(fā)和密文重新加密操作,以撤銷用戶或用戶所具有的屬性。密鑰重新分發(fā)操作更新未被撤銷的用戶的解密密鑰,而密文重新加密操作則對(duì)與被撤銷屬性或被撤銷用戶相關(guān)的所有密文重新加密。在云環(huán)境中,這兩種操作既昂貴又麻煩。在文獻(xiàn)[7]中,用戶的屬性僅通過執(zhí)行重新加密操作來撤銷,如果用戶的屬性被撤銷,CSP將為用戶更改屬性組的密鑰,并使用一組新的屬性組密鑰重新加密密文。但是,該方案需要重新加密整個(gè)密文(即密文的所有組件),這在計(jì)算上是昂貴的。在文獻(xiàn)[9]中,使用不受信任的服務(wù)器進(jìn)行用戶撤銷。服務(wù)器根據(jù)AA 發(fā)送的撤銷列表來撤銷用戶。但是,它需要服務(wù)器始終在線,因?yàn)橛脩魧⑺麄冋?qǐng)求的密文發(fā)送到服務(wù)器進(jìn)行部分解密,它還可能導(dǎo)致服務(wù)器瓶頸和潛在的單點(diǎn)故障。
近期,Horvath[10]和Zhang 等人[11]提出了兩種撤銷方案,在撤銷非預(yù)期用戶時(shí),不需要重新分發(fā)密鑰或讓所有密文重新加密。這兩種方案通過在密文本身中集成已撤銷(或非預(yù)期的)用戶的唯一身份來撤銷用戶。也就是說,如果用戶的標(biāo)識(shí)出現(xiàn)在密文中,即使他/她的屬性滿足訪問策略,用戶也不能解密。然而,隨著被撤銷用戶數(shù)量的增加,它們的性能會(huì)下降。此外,頻繁的用戶撤銷可能會(huì)進(jìn)一步降低性能。另一種拒絕非預(yù)期用戶訪問數(shù)據(jù)的方法是,在允許/授權(quán)預(yù)期用戶的同時(shí),為預(yù)期用戶分配新的屬性[12]。但是,為了達(dá)到同樣的目的,可能需要在預(yù)期用戶之間分發(fā)新的解密密鑰,這可能會(huì)增加系統(tǒng)上的通信開銷[13]。它還可能增加數(shù)據(jù)所有者的計(jì)算開銷,因?yàn)楫?dāng)使用新的訪問策略分配新的屬性時(shí),數(shù)據(jù)所有者需要重新加密數(shù)據(jù)(大多數(shù)基于CP-ABE的系統(tǒng)[14-16]都將關(guān)于訪問策略的秘密共享嵌入到密文中,這就要求更新訪問策略時(shí)重新加密密文),因此,數(shù)據(jù)所有者無(wú)法動(dòng)態(tài)更新密文的現(xiàn)有訪問策略以將新屬性集成到其中。
綜合考慮上述各種方案的優(yōu)點(diǎn)和不足,本文對(duì)傳統(tǒng)的CP-ABE方案進(jìn)行改進(jìn),提出了一種安全有效的可靈活撤銷的CP-ABE 方案。該方案可以從具有合格解密密鑰(即具有足夠?qū)傩裕┑挠脩艏杏羞x擇地授權(quán)部分用戶訪問CP-ABE中的數(shù)據(jù),通過在密文中嵌入特定的秘密信息來授權(quán)特定的用戶,以更新秘密信息的方式來執(zhí)行用戶權(quán)限的選擇與更新,而無(wú)需像傳統(tǒng)方案一樣進(jìn)行密文的重新加密或者用戶的整體權(quán)限撤銷,從而避免昂貴的用戶撤銷事件。
CP-ABE 是一種公鑰加密,它允許用戶根據(jù)用戶屬性對(duì)數(shù)據(jù)進(jìn)行加密和解密。用戶可以為其數(shù)據(jù)定義訪問策略,該訪問策略表示為屬性上的訪問樹。用戶可以在定義的訪問策略下對(duì)數(shù)據(jù)執(zhí)行加密。其中屬性滿足訪問策略的用戶,具有解密數(shù)據(jù)的資格。CP-ABE 由4種算法組成:設(shè)置、密鑰生成、加密、解密。
本方案使用雙線性對(duì)來實(shí)現(xiàn)文本加密。
定義1 雙線性映射:設(shè)素?cái)?shù)p是乘法循環(huán)循環(huán)群G0、G1和GT的階,設(shè)g0、g1分別是G0和G1之中的一個(gè)生成元,若映射e:G0×G1→GT是雙線性的,則雙線性映射滿足:
(2)非退化性,e(g0,g1)≠1;
(3)可計(jì)算性對(duì),與所有 ?u∈G0,v∈G1,都有有效的算法計(jì)算出e(u,v)的值。
另外,設(shè)u,v∈G0,m∈G1雙線性映射還有以下性質(zhì):
當(dāng)G0=G1時(shí),稱映射G0×G1→GT為對(duì)稱雙線性對(duì)。
本文方案使用樹訪問結(jié)構(gòu)的CP-ABE[17]來構(gòu)建。樹訪問結(jié)構(gòu)也稱訪問樹(AT),是訪問策略的表現(xiàn)形式之一。訪問樹由葉節(jié)點(diǎn)和非葉節(jié)點(diǎn)組成。節(jié)點(diǎn)x可以使用與門和或門來表示。訪問樹的非葉節(jié)點(diǎn),由兩個(gè)組件組成,即若干個(gè)子節(jié)點(diǎn)的集合totalx和一個(gè)閾值kx?;蜷T由kx=1 表示,與門由kx=totalx表示,其中 1 ≤kx≤totalx。此外,訪問樹的葉節(jié)屬性表示kx=1。parent(x)和index(x)表示節(jié)點(diǎn)x的父節(jié)點(diǎn)和子節(jié)點(diǎn)。
設(shè)AT 是根節(jié)點(diǎn)為r的訪問樹,與密文解密相關(guān)的秘密值存在r內(nèi),不同的用戶屬性可以解密不同的葉節(jié)點(diǎn)值,當(dāng)葉節(jié)點(diǎn)達(dá)到閾值時(shí)可以解密上層父節(jié)點(diǎn),以此類推得到根節(jié)點(diǎn)處秘密值。
本文方案采用的安全模型如下。下面的定義旨在使用熵函數(shù)提供無(wú)條件的安全性。
定義2 設(shè)t為正整數(shù)。為一個(gè)正數(shù)|u|在系統(tǒng)中表示的所有用戶的集合。是所有擁有合格的屬性集的用戶集合或訪問數(shù)據(jù)的合格解密密鑰,和為目標(biāo)用戶集。在本章用戶授權(quán)方案中,CSP試圖使用授權(quán)多項(xiàng)式對(duì)Au中的每個(gè)用戶共享一個(gè)隨機(jī)的秘密。
如果(u/Au)中的任何用戶不能使用其個(gè)人秘密從授權(quán)多項(xiàng)式PAUTH(x)中恢復(fù)隨機(jī)密鑰,而與此同時(shí)其中的任何用戶IDi都可以使用其個(gè)人秘密PSi從授權(quán)多項(xiàng)式PAUTH(x)來恢復(fù)隨機(jī)密鑰k,則說明本方案具有有效性,即:PAUTH(x),PSi)=0。
如果CSP 生成一個(gè)授權(quán)多項(xiàng)式PAUTH(x) ,使得(u/Au)中的用戶之間的共謀攻擊無(wú)法獲得任意關(guān)于k的信息,則本方案是抗共謀的,即:H(k|PAUTH(x),。
本文方案的目標(biāo)是提出一種能夠與任何基于CPABE的系統(tǒng)集成的方案,以實(shí)現(xiàn)高效的用戶可選擇授權(quán)性。為了實(shí)現(xiàn)這一點(diǎn),本章利用了Sun 等人[18]的技術(shù)。Sun等人的方案是一個(gè)密鑰分發(fā)方案,其中一個(gè)公共密鑰使用一個(gè)多項(xiàng)式在一組用戶之間共享,經(jīng)過授權(quán)的用戶可以從多項(xiàng)式中訪問密鑰,而未經(jīng)授權(quán)或被撤銷的用戶則不能。因此,可以認(rèn)為Sun等人方案的概念對(duì)于從一組具有限定屬性集(或限定解密密鑰)的用戶中去授權(quán)選定的用戶非常有用。
為了實(shí)現(xiàn)有選擇的用戶授權(quán),將預(yù)期或授權(quán)用戶的唯一秘密信息嵌入密文中,以便具有限定屬性集/限定解密密鑰的用戶可以解密密文中存在的秘密信息。另一方面,如果用戶的秘密信息沒有出現(xiàn)在密文中,或者他的屬性集不滿足訪問策略,則用戶無(wú)法解密。為此,使用預(yù)期或授權(quán)用戶的秘密信息構(gòu)造一個(gè)多項(xiàng)式,即授權(quán)多項(xiàng)式PAUTH(x),并將其作為附加組件添加到密文中。需要注意的是將相對(duì)昂貴的授權(quán)任務(wù)委托給CSP以減少開銷。
方案包括5個(gè)階段,即設(shè)置階段、加密階段、密鑰生成階段、用戶授權(quán)階段和解密階段,具體描述如下所示。
(1)設(shè)置:在此階段,授信機(jī)構(gòu)AA計(jì)算系統(tǒng)密匙SK和公開參數(shù)PK,保持SK機(jī)密,PK公開。選擇隨機(jī)數(shù)δ,,系統(tǒng)生成私鑰SK,公鑰PK,如下:
(2)加密:在此階段,數(shù)據(jù)所有者加密他的數(shù)據(jù)或文件,數(shù)據(jù)或文件表示為所有者使用訪問策略AT(即訪問樹)加密M,并為訪問樹AT中的每個(gè)節(jié)點(diǎn)x選擇dx=qx-1 次的多項(xiàng)式qx。之后選擇一個(gè)隨機(jī)數(shù),并為根節(jié)點(diǎn)計(jì)算qr(0)=s,然后選擇多項(xiàng)式qr中的dr個(gè)隨機(jī)點(diǎn)來完全定義它。對(duì)于根節(jié)點(diǎn)以外的節(jié)點(diǎn),計(jì)算qx(0)=qparent(x)(index(x)),并選擇其他dx個(gè)隨機(jī)點(diǎn)來完全定義多項(xiàng)式qx。密文CT如下:
其中Y是訪問樹中所有葉節(jié)點(diǎn)的集合。
(3)密鑰生成:在此階段,AA 和CSP 分別向用戶發(fā)布解密密鑰和個(gè)人秘密。它分為兩個(gè)子階段,即AA KeyGen 和 CSP KeyGen。在 AA KeyGen 中,當(dāng)用戶最初加入系統(tǒng)時(shí),AA 向用戶發(fā)出解密密鑰DK。另一方面,在CSP KeyGen 中,CSP 向注冊(cè)用戶發(fā)布個(gè)人機(jī)密。下面將描述這兩個(gè)子階段。
然后AA 使用一個(gè)安全通道向用戶IDi發(fā)送解密密鑰DK。
②CSP KeyGen:這個(gè)階段由CSP 發(fā)起。它隨機(jī)選擇個(gè)人秘密:
對(duì)于U中的每個(gè)用戶,當(dāng)他們最初向CSP注冊(cè)時(shí)。CSP在其數(shù)據(jù)庫(kù)中安全地保存隨機(jī)的個(gè)人秘密以及相應(yīng)的用戶身份。此外,CSP使用安全通道將個(gè)人秘密發(fā)送給用戶。用戶在收到個(gè)人秘密后,將其個(gè)人秘密保存在安全的地方。
(4)用戶授權(quán):在此階段,CSP根據(jù)從所有者處收到的授權(quán)用戶列表對(duì)用戶進(jìn)行授權(quán)。數(shù)據(jù)屬主首先需要向CSP發(fā)送一個(gè)授權(quán)用戶列表,比如Au={ID1,ID2,…,IDt},其中Au?u,CSP使用安全通道成功驗(yàn)證所有者之后,啟動(dòng)用戶授權(quán)階段,如下:
其中
從系統(tǒng)中去掉r1、r2和k。重新加密的密文CT是:
CSP可以動(dòng)態(tài)地阻止新用戶(即或允許非預(yù)期用戶訪問數(shù)據(jù)。為此,它使用更新的授權(quán)用戶列表重新計(jì)算授權(quán)多項(xiàng)式,并使用新的隨機(jī)密匙重新加密密文。
(5)解密:在此階段,用戶解密從CSP接收到的重新加密的密文CT'。令用戶IDi∈Au。用戶IDi使用其個(gè)人秘密PSi和解密密鑰DK 對(duì)重新加密的密文CT'進(jìn)行解密。設(shè)解密密鑰DK和重新加密的密文CT'為:
解密過程如下:
用戶IDi首先使用他的個(gè)人秘密PSi從授權(quán)多項(xiàng)式PAUTH(x)中恢復(fù)隨機(jī)秘密k。具體做法如下:
證明
需要注意的是,任何非預(yù)期用戶,比如,IDj∈(uAu)都會(huì)從PAUTH(PSj)得到一個(gè)隨機(jī)值。
現(xiàn)在用戶IDi恢復(fù)原始密文CT如下:
然后用戶IDi執(zhí)行其余的解密過程。解密過程由DecNode(CT,DK,x)的遞歸算法組成,其中x是訪問樹中的一個(gè)節(jié)點(diǎn)。解密過程分為兩個(gè)階段。
階段1 如果x是一個(gè)葉節(jié)點(diǎn),令A(yù)ttx表示葉子節(jié)點(diǎn)x,它一個(gè)屬性且j=Attx。解密按如下方式執(zhí)行:如果j∈ASi,有:
否則返回NULL。
階段2 如果x不是葉節(jié)點(diǎn),為x的所有子節(jié)點(diǎn)xchild遞歸調(diào)用,將結(jié)果存儲(chǔ)為Rxchild。設(shè)ASix是任意kx大小的子節(jié)點(diǎn)x集合,令Rx不為NULL。如果大小為kx的集合xchild?ASix,Rxchild不為NULL,否則,DecNode(CT,DK,xchild)返回NULL。Rx計(jì)算如下:
其中:
本章說明所提出的方案在第2 章描述的安全模型中是安全的。
定義3 所有授權(quán)用戶或預(yù)期用戶都可以從授權(quán)多項(xiàng)式PAUTH(x)中恢復(fù)隨機(jī)密鑰k,而非預(yù)期用戶則不能。
證明Au中的每個(gè)用戶都可以使用其個(gè)人秘密PSi從授權(quán)多項(xiàng)式PAUTH(x)中恢復(fù)隨機(jī)秘密k,因此,可以得出:
定義4 提出的方案是抗共謀的。
證明用戶可能勾結(jié)并試圖了解授權(quán)多項(xiàng)式PAUTH(x)的隨機(jī)秘密k。因?yàn)樗麄兊膫€(gè)人秘密不包含在授權(quán)多項(xiàng)式PAUTH(x)中,所以他們不能使用他們的個(gè)人秘密來恢復(fù)k。但是,他們可能會(huì)試圖合謀計(jì)算一個(gè)授權(quán)用戶的個(gè)人秘密PSi,比如IDi∈Au。但是,個(gè)人機(jī)密PSi是中的一個(gè)隨機(jī)數(shù),除了用戶IDi之外,只有CSP 知道它。因此任何數(shù)量的串通用戶都無(wú)法獲得關(guān)于個(gè)人秘密PSi的任何信息。因此,可以得到:
即本文提出的方案是抗共謀的。
與傳統(tǒng)的基于屬性的撤銷方案不同,本文方案不需要執(zhí)行用戶撤銷來選擇用戶。這避免了代價(jià)高昂的密鑰重新分發(fā)和密文重新加密操作,此外,本文方案不需要對(duì)整個(gè)密文進(jìn)行再加密。因此,該方案在CSP上的開銷更小。
將所提出的方案在密鑰大小、加解密成本、重授權(quán)成本方面與經(jīng)典CP-ABE方案[4]和最新具有撤銷控制的CP-ABE方案[10-11,19-20]進(jìn)行了比較。其中存儲(chǔ)開銷按組元素大小進(jìn)行比較,計(jì)算成本按G1或GT中的取冪操作數(shù)和配對(duì)操作進(jìn)行比較。本文還在訪問結(jié)構(gòu)與特點(diǎn)等方引入KP-ABE方案[21]以及不具撤銷功能的方案[22]進(jìn)行了參照對(duì)比。
RU,CT,1nc,nu,ni分別表示已吊銷用戶集、密文,元素的大小,與密文關(guān)聯(lián)的屬性數(shù)、與解密密鑰關(guān)聯(lián)的屬性數(shù)以及某個(gè)屬性中子屬性的個(gè)數(shù)。TmulG1和TmulGT分別表示G1和GT中進(jìn)行一次求冪運(yùn)算需要的時(shí)間,TP分別表示一次配對(duì)運(yùn)算需要的時(shí)間。
表1為密鑰儲(chǔ)存代價(jià)。從表中可以看出,所提出方案的密文、密鑰大小僅僅比經(jīng)典CP-ABE 方案[4]多出一個(gè)元素組的大小,而文獻(xiàn)[4]方案并不能實(shí)現(xiàn)用戶重授權(quán)。文獻(xiàn)[10]和[11]中密文的大小隨密文相關(guān)屬性的數(shù)量和被撤銷用戶的數(shù)量線性增加,文獻(xiàn)[19]中的密文密鑰大小隨用戶屬性中子屬性個(gè)數(shù)的增加而增加,文獻(xiàn)[20]中的存儲(chǔ)開銷在通常情況下也大于本文方案。
表1 儲(chǔ)存開銷比較分析表
表2 為加解密與重授權(quán)時(shí)的計(jì)算成本開銷對(duì)比。可以看到,本文方案和文獻(xiàn)[20]在加解密時(shí)的計(jì)算開銷僅與與密文關(guān)聯(lián)的屬性數(shù)和與解密密鑰關(guān)聯(lián)的屬性數(shù)有關(guān),而與文獻(xiàn)[4]和[11]中的被撤銷屬性數(shù)無(wú)關(guān)。與文獻(xiàn)[20]方案相比,本文方案在加解密計(jì)算開銷上均有一定優(yōu)勢(shì);另一方面,所提出方案在用戶重授權(quán)計(jì)算中只需要一次求冪運(yùn)算,性能大大優(yōu)于其他方案。
表3為幾種方案的特點(diǎn)對(duì)比,本文方案采用CP-ABE訪問策略,同時(shí)由CSP 執(zhí)行撤銷服務(wù),避免了傳統(tǒng)方案由AA 執(zhí)行撤銷時(shí)產(chǎn)生的較大計(jì)算成本和云服務(wù)器執(zhí)行撤銷時(shí)可能會(huì)產(chǎn)生的數(shù)據(jù)故障等問題。
如圖1 比較了當(dāng)發(fā)生一個(gè)用戶撤銷請(qǐng)求時(shí)本文方案與其他幾種方案[10-11,20]所需的計(jì)算時(shí)間成本(文獻(xiàn)[4,22]方案不具備撤銷功能,文獻(xiàn)[19]方案用到了引入了多重屬性個(gè)數(shù),計(jì)算開銷明顯增大,文獻(xiàn)[21]方案為KPABE方案,故未將上述作圖比較)。圖中將密文相關(guān)屬性數(shù)作為變量在1~20個(gè)取值,由圖可知,本文的重授權(quán)成本不隨相關(guān)屬性數(shù)的增加而增加,相比于其他幾種方案所需的計(jì)算成本更少。
表2 計(jì)算成本開銷對(duì)比表
表3 方案特點(diǎn)對(duì)比表
圖1 重授權(quán)過程計(jì)算成本對(duì)比圖
本文提出了一種安全有效的基于CP-ABE 的撤銷控制方案,用于從具有合格解密密鑰的用戶集中選擇性控制用戶訪問權(quán)限。選擇性用戶授權(quán)通過將被授權(quán)用戶的唯一秘密信息以多項(xiàng)式形式集成到密文中來實(shí)現(xiàn)。安全分析表明,本文方案具有無(wú)條件的安全性和抗共謀性。此外,該方案不需要為被授權(quán)的用戶分配新的屬性,因此,它避免了使用新的訪問策略對(duì)數(shù)據(jù)進(jìn)行重新加密,這進(jìn)而減少了數(shù)據(jù)所有者的開銷,而且CSP 和用戶的額外開銷也很小。另一方面,本文方案不需要任何額外的服務(wù)器進(jìn)行加解密的在線運(yùn)行,從而避免了潛在的瓶頸和單點(diǎn)故障。