小東,,, ,
(西北師范大學 計算機科學與工程學院,蘭州 730070)
近年來,云服務器依靠其強大的計算能力和巨大的存儲空間等優(yōu)勢得到了業(yè)界的廣泛使用。基于密文策略的屬性加密(Ciphertext policy Attribute-based Encryption,CP-ABE)作為實現(xiàn)云存儲數(shù)據(jù)訪問控制的關鍵技術之一[1-3],已經(jīng)成為云計算安全領域的研究熱點。
傳統(tǒng)的CP-ABE系統(tǒng)都是基于單授權機構(gòu)[4-5],存在安全和性能上的瓶頸問題。為了解決單授權機構(gòu)存在的密鑰托管問題,文獻[6]提出一種基于屬性加密的云存儲方案,用戶密鑰生成的過程中使用兩方計算協(xié)議解決了密鑰托管問題,但卻增加了額外的計算開銷。隨著數(shù)據(jù)發(fā)送方和數(shù)據(jù)用戶需求的動態(tài)變化,云環(huán)境下的屬性變更也成為云計算領域內(nèi)的研究熱點和難點問題之一。文獻[7]基于CP-ABE提出了一種資源共享方案,在該方案中屬性變更時需要同時更新系統(tǒng)公共參數(shù)和用戶私鑰,因此,該方案計算開銷較大且訪問控制不靈活。文獻[8]提出一種多云服務提供者環(huán)境下用戶密鑰撤銷方法,利用單調(diào)張成矩陣和CP-ABE訪問控制機制撤銷部分屬性失效的用戶解密密鑰,但該方案僅僅支持用戶的整體變更,無法實現(xiàn)局部屬性變更,缺乏靈活性,并且用戶密鑰由單一的授權機構(gòu)生成,適用范圍具有一定的局限性。文獻[9]提出一個基于多授權機構(gòu)的屬性變更方案,解決了單授權機存在的安全隱患和權限過大等問題[10-12],但該方案要求授權機構(gòu)和用戶進行協(xié)商,造成的延時不適合即時管理。文獻[13]提出一種基于二叉樹的屬性密鑰更新方案,但密鑰維護效率低且無法實現(xiàn)抗串謀攻擊。文獻[14]提出一種抗串謀攻擊的屬性變更方案,但存在密文的長度過長等缺陷。
針對上述方案存在安全和性能上的問題,本文引入邏輯二叉樹和代理重加密技術,提出一種新的云訪問控制方案。該方案使用固定密文加密算法,將密文長度固定為常數(shù),以節(jié)省密文的存儲空間;將用戶解密任務部分外包,減少用戶計算開銷;同時用戶利用線性秘密共享方案自由設定訪問控制策略,以達到資源靈活訪問的目的。
設G和GT是階為素數(shù)p的循環(huán)群,G的一個生成元為g,e:G×G→GT是一個滿足以下性質(zhì)的雙線性映射[15]:
2)非退化性:e(g,g)≠1,其中1為GT中的單位元;
3)可計算性:對任意g1,g2∈G,存在有效的算法計算e(g,g)。
設參與者的集合為P={P1,P2,…,Pk},訪問結(jié)構(gòu)表示為(M,ρ),其中,M是一個l行m列的矩陣,ρ是一個將矩陣中行元素{1,2,…,l}到參與者P的函數(shù),一個線性秘密共享方案[16](Linear Secret Sharing Scheme,LSS)包含以下2個算法。
設G和GT是階為素數(shù)p的循環(huán)群,生成元g∈G,隨機選取元素a,s,b1,…,bq∈Zp,判定性q-parallel BDHE (Bilinear Diffie-Hellman Exponent)問題[15],給定一個多元組:
(g,gs,ga,…,g(aq),g(aq+2),…,g(a2q)),
?1≤j≤q:(gs·bj,ga/bj,…,g(aq/bj),g(aq+2/bj),…,
g(a2q/bj)),
?1≤j,k≤q,j≠k:(gasbk/bj,…,g(aqsbk/bj))
如果不存在一個多項式時間算法能以一個不可忽略的概率,判斷T的輸出是T=e(g,g)aq+1s還是GT中的隨機元素,則稱判定性q-parallel BDHE假設成立。
在本文方案中,中央認證機構(gòu)(Central Authority,CA)負責產(chǎn)生公共參數(shù),并向注冊用戶發(fā)送與身份標識gid相關的密鑰。不同屬性授權機構(gòu)(Attribute Authoritiy,AA)管理不相交的屬性子集,根據(jù)用戶的屬性為用戶生成私鑰組件,同時生成所管轄區(qū)域內(nèi)包含所有用戶的二叉樹,并對未撤消的用戶執(zhí)行密鑰更新操作。數(shù)據(jù)屬主(Data Owner,DO)根據(jù)其設定的訪問結(jié)構(gòu)對數(shù)據(jù)文件進行加密,加密后上傳密文保存在云服務器上。云服務器(Cloud Servers Provider,CSP)對收到的數(shù)據(jù)文件進行存儲及更新等操作,同時幫助符合訪問結(jié)構(gòu)的用戶解密密文。
一個支持多授權中心與屬性變更的云訪問控制方案包含以下算法:
1)初始化算法:輸入安全參數(shù),輸出系統(tǒng)主密鑰MSK和系統(tǒng)公開參數(shù)GPRA。
2)CA的密鑰生成算法:輸入系統(tǒng)公開參數(shù)GPRA,輸出CA的私鑰rpskgid和公鑰rppkgid。
3)屬性密鑰生成算法:輸入系統(tǒng)公開參數(shù)GPRA和CA公鑰rppkgid,輸出屬性私鑰raskgid和公鑰rapkgid。
4)組密鑰生成算法:AA生成所管轄區(qū)域內(nèi)包含所有用戶的二叉樹,并選擇隨機數(shù)AKk作為葉子節(jié)點密鑰,用戶利用哈希函數(shù)和葉節(jié)點密鑰計算整條路徑上的節(jié)點密鑰,尋找能將屬性att對應用戶全部覆蓋的最小子樹,并根據(jù)最小子樹計算出組密鑰Ei。
5)加密算法:輸入系統(tǒng)公開參數(shù)GPRA、CA公鑰rppkgid、AA公鑰rapkgid、訪問結(jié)構(gòu)(M,ρ)、數(shù)據(jù)文件mprofile、對稱密鑰Kprofile,輸出相應數(shù)據(jù)密文CTprofile和密鑰密文CM,ρ。
6)解密算法:輸入用戶屬性私鑰raskgid,輸出數(shù)據(jù)文件mprofile。
3.2.1 CA的密鑰生成
3.2.2 屬性密鑰生成
3.2.3 組密鑰生成
結(jié)合KEK算法[14]在AAk和用戶之間構(gòu)造一棵包含所有用戶的邏輯二叉樹,如圖1所示,二叉樹的葉子節(jié)點代表用戶成員。
2)屬性組密鑰生成:AAk隨機選擇一個參數(shù)μi并公布。在圖1中,若屬性att1對應的用戶集為{u1,u2,u4},在二叉樹中尋找能將用戶集{u1,u2,u4}覆蓋的最小子樹,并將根節(jié)點{c4,c11}的節(jié)點密鑰作為組密鑰,即屬性att1的組密鑰E1={c4‖c11‖μ1},同理能夠計算出其他屬性的組密鑰Ei(1≤i≤n)。
圖1 邏輯二叉樹示意圖
文件創(chuàng)建方法如下:
1)DO為數(shù)據(jù)文件選擇唯一的編號fid,利用對稱加密算法E(如AES等)對數(shù)據(jù)文件mprofile進行加密,得到數(shù)據(jù)密文CTprofile=EKprofile(mprofile)。
3)DO上傳{fid,CTprofile,CM,ρ}保存在云服務器CSP上。
CSP收到用戶對編號為fid文件的訪問請求時,若用戶的屬性集合滿足訪問策略,這意味著存在常數(shù)ωi∈ZN,滿足Σρ(i)∈ASgidωiλi=s。CSP對密鑰密文進行預解密:
將{PDKEY,CTKprofile,CTprofile}發(fā)送給訪問用戶。
當用戶加入系統(tǒng)、離開系統(tǒng)或撤銷某些屬性時,屬性授權機構(gòu)AAk根據(jù)用戶葉子節(jié)點所在的位置情況,重新尋找能將用戶集覆蓋的最小子樹的根節(jié)點,利用重加密算法更新用戶的屬性私鑰和重加密文件。下文以圖1為例,闡述AAk實現(xiàn)屬性的撤銷與加入以及完成用戶的加入與撤銷。
3.5.1 屬性變更
屬性變更過程如下:
1)屬性撤銷
2)屬性加入
3.5.2 用戶變更
用戶變更分為用戶加入和用戶撤銷2種情況,其中用戶加入可以歸納為屬性加入,用戶撤銷可以歸納為屬性撤銷。同樣以圖1為例,進一步說明節(jié)點密鑰的更新過程。
如圖1所示,當用戶u8離開系統(tǒng)時,需要修改u8所在路徑上的節(jié)點c7、c3、c1的節(jié)點密鑰,過程如下:
3)AAk完成更新的節(jié)點通過廣播加密的方式將其節(jié)點密鑰發(fā)送給其所在子樹的葉節(jié)點。例如,能將葉節(jié)點u5、u6覆蓋的最小子樹的根節(jié)點為c6,那么將更新后的節(jié)點密鑰AAk通過廣播的方式將消息發(fā)送給這2個用戶。同理,其他最小子樹按上述方法完成節(jié)點更新。
4.1.1 多授權機構(gòu)的安全性
在單授權機構(gòu)中,屬性密鑰的生成交由單一的第三方機構(gòu)管理。但是第三方機構(gòu)一旦被攻破,則用戶的所有密鑰被泄露,整個系統(tǒng)將崩潰。本文新方案中屬性密鑰交由多個授權機構(gòu)聯(lián)合分發(fā),用戶使用來自多個授權機構(gòu)的私鑰組件對密文進行解密。若某個授權機構(gòu)被攻破,非法用戶只能獲取該授權機構(gòu)管理的所有屬性私鑰,但仍然無法解密密文,并且合法用戶對密文的解密不受影響。因此,與單授權機構(gòu)相比,多授權機構(gòu)具有更高的安全性。
4.1.2 前后向安全性
在新方案屬性變更管理機制中,當撤銷用戶一個或多個屬性時,屬性授權機構(gòu)依據(jù)組密鑰更新的方法計算出新的組密鑰,并利用新的組密鑰更新未被撤銷屬性的用戶的私鑰。根據(jù)哈希函數(shù)的不可逆性,即使在知道父節(jié)點密鑰的情況下也無法推出孩子節(jié)點密鑰。因此,撤銷屬性的用戶無法得到更新后的組密鑰。同理,在為用戶加入一個或多個屬性時,用戶無法通過更新后的組密鑰推算出更新前的組密鑰。因此,新方案滿足前向后向安全性。
4.1.3 抗串謀攻擊安全性
數(shù)據(jù)屬主設定訪問結(jié)構(gòu),并根據(jù)訪問結(jié)構(gòu)對數(shù)據(jù)文件進行加密,因此,只有滿足訪問結(jié)構(gòu)的用戶才能計算出e(g,g)αs。假設多個未授權用戶的屬性集合并在一起才能滿足訪問結(jié)構(gòu),因此不同用戶的身份標識gid不同,生成屬性私鑰組件不相同,所以無法計算出e(g,g)αs,從而無法恢復出明文。因此,新方案具有抗串謀攻擊性。
定理如果判定性ε假設成立,則新方案在隨機預言模型下滿足選擇明文攻擊安全。
證明:由4.1.1節(jié)的多授權機構(gòu)的安全性分析可知,如果單授權機構(gòu)滿足選擇明文攻擊安全,那么多授權機構(gòu)也能夠滿足。因此,多授權機構(gòu)系統(tǒng)的安全模型可看作單授權機構(gòu)系統(tǒng)的安全模型來證明[9-10]。假設敵手A存在不可忽略的優(yōu)勢ε攻破本文方案,那么存在一個挑戰(zhàn)者C利用A求解(M*,ρ*)假設。 C和A進行如下游戲:
1)初始化。A將挑戰(zhàn)的訪問結(jié)構(gòu)(M*,ρ*)發(fā)送給C,M*是l*×n*的矩陣,其中l(wèi)*,n*≤q。
下面描述C如何執(zhí)行隨機預言機H,H是由C控制。如果H被A詢問,則C按如下方式應答。
3)詢問階段1。C對A發(fā)起的一系列詢問進行如下的響應:
gα′·gaq+1·g-aq+1·ga·rS·
于是有:
(3)C將raskgid*添加到列表中并發(fā)送給A。
4)挑戰(zhàn)。A將2個等長的消息m1、m2發(fā)送給C,C隨機選取b∈{0,1},并進行如下回答:
5)查詢階段2。類似于階段1。
6)猜測。A最后輸出對b的猜測b′。若b′=b,那么C輸出1,表明T=e(g,g)aq+1·s;否則,C輸出0,表明T是GT的隨機值。
將文獻[6,8-9]方案與本文提出的新方案進行對比,結(jié)果如表1所示。其中,3+2Sc表示加密文件時選取的相關屬性集,3+2Sc表示與私鑰相關的屬性集,3+2Sc表示用戶屬性集,3+2Sc表示一次指數(shù)運算操作,3+2Sc表示一次雙線性對運算操作,3+2Sc表示3+2Sc群中單個元素的大小,n表示每個屬性所擁有的用戶數(shù)量。為了能夠直觀對比這里指定所應用二叉樹的方案均為滿二叉樹。
表1 不同方案之間的性能比較
由表1可知,本文方案與文獻[6,8]均采用線性秘密共享的訪問結(jié)構(gòu),支持任意靈活的訪問控制策略,但文獻[6,8]2個方案都是單授權機構(gòu)系統(tǒng),適用范圍有一定的局限性。與大部分的CP-ABE方案類似,文獻[6,8-9]的密文長度與屬性集合線性相關,而新方案將密文長度固定為常數(shù),與屬性個數(shù)無關。新方案與文獻[6]均采用外包解密技術,將文件解密計算任務部分委托給云服務器執(zhí)行,大大降低了用戶的解密計算開銷,但文獻[6]并未涉及屬性變更機制。與文獻[8-9]相比,在本文方案中當用戶加入或撤出系統(tǒng)時,用戶僅需要完成一次更新密鑰的操作,故用戶變更計算復雜度為O(1);當發(fā)生屬性變更時,用戶只需計算最小子樹的根節(jié)點密鑰,則屬性變更計算復雜度為O(lbn)。由此得出,本文方案在文件加/解密和用戶/屬性變更方面具有較高的性能。
本文結(jié)合線性秘密共享方案和固定密文加密等技術,提出一個支持多授權中心與屬性變更的云訪問控制方案。將哈希函數(shù)加入到邏輯二叉樹中,用戶只需依據(jù)組密鑰完成密鑰更新,即可實現(xiàn)屬性變更的細粒度化,確保其權限的及時更新。采用解密外包服務技術,將用戶解密的部分計算任務委托給社交網(wǎng)絡平臺執(zhí)行,大幅提升了用戶的解密效率。但是本文方案僅在隨機預言模型下可證安全的,因此,下一步將設計在標準模型下安全的支持屬性變更的云訪問控制方案。