譚躍生,,
(內(nèi)蒙古科技大學(xué) 信息工程學(xué)院,內(nèi)蒙古 包頭 014010)
近年來,隨著計(jì)算機(jī)網(wǎng)絡(luò)快速發(fā)展與更新,云計(jì)算技術(shù)在人們?nèi)粘I詈凸ぷ髦械牡匚蝗找嬷匾?。如何對開放式云環(huán)境進(jìn)行有效的管理是當(dāng)前研究中一個熱門的話題。目前大多數(shù)云訪問控制主要在屬性基加密(Attribute-based Encryption,ABE)[1]技術(shù)上進(jìn)行研究,核心思想是為用戶分配不同的屬性從而決定不同的訪問權(quán)限。然而,屬性的頻繁更換不僅會造成系統(tǒng)的巨大開銷,在變更的過程中也會對數(shù)據(jù)安全產(chǎn)生威脅。如何在保障云數(shù)據(jù)安全的前提下靈活高效地改變用戶訪問權(quán)限,成為當(dāng)前云計(jì)算領(lǐng)域最受關(guān)注的難題之一。
在屬性變更的研究中,根據(jù)變更執(zhí)行者的不同提出了ABE的兩種變更模式:直接變更[2]和間接變更[3]。在屬性直接變更中,發(fā)送方通過生成用戶的變更列表來確定系統(tǒng)用戶密鑰的變化;文獻(xiàn)[3]在ABE基礎(chǔ)上,以低開銷、影響范圍小等優(yōu)勢實(shí)現(xiàn)了直接變更,但此方案無法實(shí)現(xiàn)局部的屬性變更,局限性大;文獻(xiàn)[4]利用合數(shù)階雙線性映射群實(shí)現(xiàn)了屬性的部分變更,然而公鑰參數(shù)與用戶數(shù)量進(jìn)行關(guān)聯(lián)造成公鑰過長。在間接變更算法[5]中;文獻(xiàn)[6]在用戶屬性和數(shù)據(jù)密文中設(shè)置終止時間,若用戶解密請求晚于終止時間則無效,但該方案必須在規(guī)定的時間內(nèi)進(jìn)行重加密,不僅影響系統(tǒng)的整體工作效率,還需要第三方保持在線;文獻(xiàn)[7]在CP-ABE基本框架中加入完全可信的授權(quán)機(jī)構(gòu),使用戶和授權(quán)機(jī)構(gòu)共享密鑰,但在正常運(yùn)行的情況下方案要求授權(quán)機(jī)構(gòu)和用戶進(jìn)行協(xié)商,不適合即時管理;文獻(xiàn)[8]提出二叉樹(KEK)關(guān)聯(lián)用戶的基本構(gòu)想,為樹中每個節(jié)點(diǎn)分配節(jié)點(diǎn)密鑰,每個用戶掌握與自己對應(yīng)的節(jié)點(diǎn)鏈上的密鑰,從而實(shí)現(xiàn)屬性組密鑰的生成運(yùn)算,但是該方案密鑰維護(hù)效率低且無法實(shí)現(xiàn)抗串謀攻擊;文獻(xiàn)[9]根據(jù)KEK樹提出了一種屬性變更方案,達(dá)到了抗串謀攻擊的目的,然而此方案在解密時密文過長;文獻(xiàn)[10]提出一種基于LKH++樹的細(xì)粒度屬性撤銷算法ALKH,通過針對屬性建立一個樹形結(jié)構(gòu),根據(jù)關(guān)聯(lián)屬性密鑰的更新完成屬性的變更,此方法需要對系統(tǒng)域內(nèi)所有屬性建立樹,增加用戶存儲量。
在現(xiàn)有的屬性變更方案中,普遍存在靈活性差、粒度較粗等問題。為此,本文在文獻(xiàn)[11]提出的CP-ABE模型基礎(chǔ)上,借鑒文獻(xiàn)[12-13]屬性撤銷方案的設(shè)計(jì)思想,并結(jié)合KEK樹架構(gòu)和文獻(xiàn)[14]對ALKH算法的改進(jìn)方法,提出一種靈活的屬性變更方案(ALKEK-CPABE),通過引入邏輯二叉樹改變組密鑰來實(shí)現(xiàn)屬性的即時撤銷。
選擇隨機(jī)大素?cái)?shù)p,給出2個階為p,生成元為g的乘法循環(huán)群G0和G1。定義映射e:G0×G0→G1,有如下性質(zhì):
2)非退化性:?g∈G0,使e(g·g)≠1。
3)可計(jì)算性:存在有效的方法計(jì)算e(g·g)。
設(shè)P={P1,P2,…,Pn}是系統(tǒng)所有屬性的集合,A是包含在P的非空集合,那么將表達(dá)式定義為A∈2{P1,P2,…,Pn}/{φ}。訪問結(jié)構(gòu)A作為一個判斷條件:假設(shè)A是單調(diào)的,若?B,當(dāng)B∈A,B?C同時滿足時,則C∈A。
將Shamir門限方案定義為(s,t),其主要思想是將共享的秘密k隨機(jī)分割成s份,其中任意不少于t(1≤t≤s)份可以通過Lagrange插值重構(gòu)出k,而任何不大于t-1份分割的數(shù)據(jù)都不能重構(gòu)出k。根據(jù)Lagrange插值的原理,即秘密分享中心生成階為t-1的多項(xiàng)式y(tǒng)=f(x),并由其中t個節(jié)點(diǎn)(x1,y1),(x2,y2),…,(xt,yt)唯一確定。
1)秘密分割
(1)秘密分享中心將被分享的秘密k>0分割成s份并發(fā)送給t個參與方qi(1≤i≤t),隨機(jī)選擇s-1個系數(shù)a1,a2,…,as-1,定義隨機(jī)多項(xiàng)式:f(x)=as-1xs-1+as-2xs-2+…+a1x+a0。
(2)隨機(jī)選取t個互不相等且非零的元素x1,x2,…,xt,令yi=f(xi),其中1≤i≤t。
(3)將產(chǎn)生的多項(xiàng)式節(jié)點(diǎn)(xi,yi)(1≤i≤t)發(fā)送給t個參與方,公開xi并保留yi。
2)秘密重構(gòu)
ALKEK-CPABE方案模型主要由系統(tǒng)管理員(Manager)、數(shù)據(jù)的擁有者(Data Owner,DO)、云存儲提供商(Cloud Service Provider,CSP)、系統(tǒng)用戶(User)和可信屬性權(quán)威機(jī)構(gòu)(Trusted Authority,TA)5個實(shí)體組成。
ALKEK-CPABE的基本定義由初始化(Setup)、數(shù)據(jù)加密(Encypt)、密鑰生成(KeyGen)、組密鑰生成(GKeyGen)、密文重加密(reEncrypt)、私鑰更新(upGKeyGen)、數(shù)據(jù)解密(Decrypt)7個算法所組成:
1)初始化Setup(1k):TA利用安全參數(shù)k初始化運(yùn)算獲得系統(tǒng)的公鑰pk和主密鑰mk。
2)私鑰生成KeyGen(pk,mk,ω):TA輸入公鑰pk、主密鑰mk以及各User所擁有的屬性集合ω,計(jì)算得出私鑰sk并發(fā)送給系統(tǒng)用戶。
3)明文加密Encrypt(pk,m,T):DO以公鑰pk、明文消息m以及訪問控制策略T作為算法輸入項(xiàng),進(jìn)行加密運(yùn)算生成密文CT發(fā)送給Manager。
4)屬性組密鑰生成GKeyGen(ω1,ω2,…,ωn):Manager輸入屬性集合ω={ω1,ω2,…,ωn},根據(jù)邏輯二叉樹τ推算出組密鑰Ei(1≤i≤n),并將其發(fā)送給User。
5)密文重加密reEncrypt(Ei,CT):Manager利用第4步所得的Ei(1≤i≤n)和密文CT,運(yùn)算得出重加密密文CT′并存儲到CSP中。
6)私鑰的更新upGKeyGen(Ei,sk):User將得到的Ei和與之對應(yīng)的私鑰sk進(jìn)行更新運(yùn)算得出相應(yīng)的新私鑰sk′。
7)密文解密Decrypt(sk′,CT′):由提出訪問請求的User將更新后的私鑰sk′和重加密密文CT′作為算法輸入項(xiàng),當(dāng)屬性集合與訪問控制策略相符時,即滿足ω∈T,解出明文消息m。
在ALKEK-CPABE方案中定義選擇明文攻擊(Indistinguishablity under Chosen Plaintext Attack,IND-CPA)安全模型,在此模型中分?jǐn)呈諥與挑戰(zhàn)者B兩個角色。
準(zhǔn)備階段:敵手A向挑戰(zhàn)者B發(fā)布所要挑戰(zhàn)的訪問控制策略T*。
系統(tǒng)初始化:B運(yùn)行Setup(1k),輸出公鑰pk和主密鑰mk并將pk發(fā)送給A,保留mk。
階段2同階段1,A繼續(xù)向B發(fā)送詢問報文。
若是在某個概率多項(xiàng)式時間內(nèi)敵手贏得游戲的優(yōu)勢是可以被忽略的,則稱ALKEK-CPABE方案滿足IND-CPA安全。
本節(jié)在CP-ABE基礎(chǔ)上,結(jié)合一種基于LKH++樹的細(xì)粒度屬性變更算法和KEK樹的屬性靈活撤銷思想,在TA和User之間構(gòu)建一個邏輯二叉樹τ并隨機(jī)生成樹中的葉節(jié)點(diǎn)密鑰,左孩子節(jié)點(diǎn)通過Hash函數(shù)運(yùn)算得到父節(jié)點(diǎn)的密鑰并將其發(fā)送給右孩子節(jié)點(diǎn),從而使User能夠推算出從葉節(jié)點(diǎn)到根節(jié)點(diǎn)路徑上的所有節(jié)點(diǎn)密鑰。針對于每一個屬性組,當(dāng)有用戶加入或撤銷時,僅需通過改變加密節(jié)點(diǎn)的密鑰就可以完成,在高效的前提下實(shí)現(xiàn)屬性細(xì)粒度靈活變更。ALKEK-CPABE方案流程如圖1所示。
圖1 ALKEK-CPABE方案流程
ALKEK-CPABE方案過程如下:
1)系統(tǒng)初始化Setup:
(1)定義一個階為p,以g為生成元的雙線性映射群:e:G0×G0→G1。
(3)TA發(fā)布公鑰pk={G1,g,h,Φ},保留系統(tǒng)主密鑰mk={h,gα}。
2)私鑰生成KeyGen:
3)數(shù)據(jù)加密Encrypt:
(1)從根節(jié)點(diǎn)R自上向下的順序?yàn)樵L問控制策略T中的每一個節(jié)點(diǎn)x產(chǎn)生一個多項(xiàng)式qx。
4)組密鑰生成GKeyGen:
V8=hash(P1),V4=hash(V8)
V2=hash(V4),V1=hash(V2)
圖2 邏輯二叉樹
5)密文重加密reEncrypt:
6)密鑰更新upGKeyGen:
7)密文解密Decrypt:
利用User對DO所定義的T進(jìn)行遞歸運(yùn)算,輸入sk′和CT′,若滿足ω∈T,即T(ω)=1時,則能夠解密m,否則,解密失敗返回⊥。定義遞歸運(yùn)算DecryptNode(CT,sk,x)。若x是T的葉子節(jié)點(diǎn),則有:
e(g,g)r·qx(0)
計(jì)算:
e(g,g)r·qx(0)
當(dāng)ω滿足T時,即TR(ω)=1時,則計(jì)算:
A=Decrypt(CT,sk,R)=
e(g,g)r·qR(0)=e(g,g)r·s
解出明文消息,即m=C′/(e(C,D′)/A)。
當(dāng)用戶加入或撤銷某些屬性時,Manager根據(jù)用戶所有葉子節(jié)點(diǎn)的位置情況,重新尋找其最大子樹的根節(jié)點(diǎn)運(yùn)行GKeyGen和upGKeyGen算法完成組密鑰的更新。
1)屬性加入:
設(shè)某屬性ωi用戶組為{P1,P2,P3,P4,P7},如圖3所示,通過結(jié)合三部分?jǐn)?shù)據(jù)即V2、V14、Ui得出ωi的組密鑰Ei={V2‖V14‖Ui}。
圖3 屬性加入示意圖
2)屬性撤銷:
圖4 屬性撤銷示意圖
3)用戶整體變更:
用戶的整體變更分為2種情況:用戶加入和用戶撤銷。對于情況1可以看做是為一個新用戶分配部分屬性;情況2則是將老用戶的所有屬性全部撤銷。因此,用戶的整體變更從微觀上講也可以歸納為屬性變更。然而,這里涉及到系統(tǒng)向前向后安全性問題,需要對此進(jìn)行重新定義。
圖5 用戶撤銷示意圖
2)利用更新后的葉子節(jié)點(diǎn)密鑰,通過Hash運(yùn)算重新對其所在路徑上的節(jié)點(diǎn)生成新的密鑰鏈。
Pr [Q(g,ga,gb,gc,e(g,g)abc)=1]-
Pr[Q(g,ga,gb,gc,e(g,g)θ)=1]≥ε。
定理1假設(shè)DBDH成立,如果有敵手能夠在多項(xiàng)式的時間內(nèi)以可以被忽略優(yōu)勢ε的情況下求解DBDH問題,那么該方案滿足選擇明文攻擊安全的。
證明:若存在敵手A能夠用算法Q可以贏得這次游戲過程,即輸入(g,ga,gb,gc,Z=e(g,g)θ),算法Q決定等式Z=e(g,g)abc是否成立。
A和B執(zhí)行IND-CPA游戲如下:
初始化:敵手A向挑戰(zhàn)者B發(fā)布所要攻擊的訪問控制策略樹T*。
階段1:
D=g(α′+r)/β′=g(ab+br′-ab)/β′
Dj=gr·H(ω(j))rj=gbr′-ab·H(ω(j))rj
2)運(yùn)行upGKeyGen得到ω*的組密鑰Eω*。
挑戰(zhàn)階段:
C′=mu·e(g,g)α′·s1;C=gβ′·s1
階段2:同階段1,A繼續(xù)向B發(fā)送詢問報文。
猜測:A輸出u′∈{0,1}。
1)若u=u′,那么Z=e(g,g)abc,即A獲得真實(shí)的密文,則A的優(yōu)勢定義為:
Pr[u=u′|Z=e(g,g)abc]=1/2+ε
2)若u≠u′,那么Z=e(g,g)θ,即A無法獲得任何明文信息,則Pr[u≠u′|Z=e(g,g)θ]=1/2。因此:Pr[Q(g,ga,gb,gc,e(g,g)abc)=1]-Pr[Q(g,ga,gb,gc,e(g,g)θ)=1]≥ε成立。
在以上的挑戰(zhàn)過程中,如果沒有敵手能夠以不可忽略的優(yōu)勢在多項(xiàng)式時間內(nèi)完成,那么本文所提出的ALKEK-CPABE方案符合選擇明文攻擊安全。
定理2方案具有向前向后安全性。
定理3方案具有抗串謀攻擊性。
本節(jié)在計(jì)算復(fù)雜性和用戶存儲量2個方面進(jìn)行分析。為了能夠直觀對比,在這里指定所應(yīng)用的二叉樹的方案均為滿二叉樹。假設(shè)n為每個屬性組中所擁有的用戶數(shù)量,文獻(xiàn)[15]所提出的IKE方案使用(n,t)門限秘密共享方案分發(fā)組密鑰。計(jì)算復(fù)雜性對比如表1所示。
表1 計(jì)算復(fù)雜性對比
從表1可以看出,本文方案通過引入邏輯二叉樹τ使其屬性初始化、屬性變更和用戶存儲量呈對數(shù)增長,減少了這3個方面的開銷。
1)由于構(gòu)建了邏輯二叉樹,在初始化時用戶僅需通過解密節(jié)點(diǎn)密鑰,因此本文方案計(jì)算復(fù)雜度為O(lbn)。
2)新用戶的加入或撤出系統(tǒng)時,僅由Manager為User產(chǎn)生一個新的更新密鑰Vtmp,而User也僅是完成一次更新密鑰的解密,故用戶變更計(jì)算的復(fù)雜度為O(1)。
3)當(dāng)發(fā)生屬性變更時,User只需推出解密時用到的節(jié)點(diǎn)密鑰,所以,屬性更換的復(fù)雜度為O(lbn)。
4)根據(jù)τ的構(gòu)建原理可知,父節(jié)點(diǎn)的密鑰是由左孩子節(jié)點(diǎn)進(jìn)行Hash函數(shù)運(yùn)算所得,因此對于左孩子節(jié)點(diǎn)上用戶的存儲量為1;對于右孩子節(jié)點(diǎn),它還需保存父節(jié)點(diǎn)密鑰。整體來說,用戶存儲量在?1,lbn」范圍內(nèi)不等,總體小于lbn。由此可以看出,本文所提出的方案在屬性變更用戶的計(jì)算復(fù)雜性和存儲壓力要小于其他方案。
在現(xiàn)有的屬性撤銷機(jī)制中,根據(jù)訪問控制策略的不同主要分為線性秘密共享(LSSS)和訪問樹兩類。本節(jié)給出了ALKEK-CPABE方案與文獻(xiàn)[4]方案的參數(shù)對比,如表2所示。其中,l表示整體的系統(tǒng)屬性域中的屬性個數(shù),r表示需要參與屬性變更的用戶數(shù)量,t表示在Encrypt和reEncrypt算法中出現(xiàn)的屬性個數(shù),k表示用戶的屬性域大小。
表2 屬性撤銷機(jī)制
本節(jié)通過仿真實(shí)驗(yàn)與文獻(xiàn)[4,17]所提出的屬性變更方案在系統(tǒng)初始化、屬性變更和密文解密3個方面的效率進(jìn)行綜合分析。實(shí)驗(yàn)環(huán)境搭建在VMware虛擬機(jī)上,實(shí)驗(yàn)代碼基于cp-abe-0.11庫[18]編寫。使用配置為IntelCore2 Duo 2.92 GHz,2 GB內(nèi)存的虛擬機(jī)作為服務(wù)器模擬可信授權(quán)機(jī)構(gòu),操作系統(tǒng)為Ubuntu12.04。使用配置為IntelCore2 Duo 800 GHz,1 GB內(nèi)存的幾臺虛擬機(jī)作為客戶端模擬用戶,操作系統(tǒng)為Window7。實(shí)驗(yàn)中通過統(tǒng)計(jì)虛擬機(jī)的反應(yīng)時間來計(jì)算時間消耗。
系統(tǒng)初始化:3種方案的初始化時間都是隨著系統(tǒng)屬性域呈線性增加,如圖6所示,由于文獻(xiàn)[17]需要進(jìn)行密鑰對的協(xié)商,因此時間的消耗在初始化和加密階段都要高于本文方案,文獻(xiàn)[4]是建立在合數(shù)階雙線性映射群基礎(chǔ)之上的,并額外生成2個隨機(jī)數(shù)進(jìn)行二元運(yùn)算,造成公鑰過長,因此,該方案的初始化效率介于2種這方案之間。
圖6 系統(tǒng)初始化時間對比
屬性變更:如圖7所示,由于文獻(xiàn)[17]方案在變更過程中不需要在密鑰對中進(jìn)行協(xié)商更新,只進(jìn)行組密鑰的替換,因此時間消耗隨屬性數(shù)量的增加基本持平,文獻(xiàn)[4]方案在加密時引入用戶撤銷列表,屬性變更牽扯涉及的變更用戶,故時間消耗依然偏高。本文方案利用訪問樹結(jié)構(gòu)的訪問控制策略,時間消耗隨著屬性增加呈對數(shù)增長,并且屬性變更過程中Manager僅需接受根節(jié)點(diǎn)密鑰并進(jìn)行重加密,因此,在屬性變更效率方面整體高于另外2個方案。
圖7 屬性變更時間對比
密文解密效率對比如圖8所示,由于文獻(xiàn)[4]是將恢復(fù)明文所需的信息片段與用戶綁定,在解密時需要線性秘密重構(gòu),增加了解密開銷;本文方案在解密方面只需多進(jìn)行一步雙線性映射運(yùn)算,因此效率要高于前者;在訪問策略方面將屬性關(guān)聯(lián)到二叉樹中,隨著屬性域的增加解密開銷上升較緩,屬性數(shù)量越多,其優(yōu)勢越明顯。
圖8 密文解密時間對比
通過以上實(shí)驗(yàn)綜合對比可知,本文所提出的ALKEK-CPABE方案在系統(tǒng)初始化、屬性變更和密文解密方面的效率都是最優(yōu)的,能夠在擁有著巨大屬性域的云計(jì)算環(huán)境中得到更廣泛的應(yīng)用。
本文提出一種支持細(xì)粒度屬性變更的云訪問控制方案。該方案可根據(jù)需求任意加入或撤出屬性,并在變更時保證數(shù)據(jù)向前向后的安全性,實(shí)現(xiàn)屬性變更的細(xì)粒度化。同時方案將哈希函數(shù)加入到邏輯二叉樹中,使用戶只需保存與其對應(yīng)的葉子節(jié)點(diǎn)和部分節(jié)點(diǎn)的密鑰,減少了用戶存儲的壓力。下一步將繼續(xù)優(yōu)化邏輯二叉樹,減少用戶在解密時的開銷。