王靜宇,周雪娟
(內(nèi)蒙古科技大學(xué)信息工程學(xué)院,內(nèi)蒙古包頭014010)
近年來,大數(shù)據(jù)技術(shù)發(fā)展迅速,對(duì)社會(huì)生活的影響與日俱增。但大數(shù)據(jù)技術(shù)在帶來諸多便利的同時(shí),也暴露出諸多安全隱私問題,目前解決該問題的關(guān)鍵是安全高效的數(shù)據(jù)加/解密。對(duì)此,文獻(xiàn)[1]提出了屬性基加密(Attribute Based Encryption,ABE)方案,其中心思想是系統(tǒng)根據(jù)用戶的角色或身份,給其分配不同的一組屬性集從而保證用戶擁有不同的訪問權(quán)限。根據(jù)訪問策略所在位置的不同,屬性基加密方案可分為密鑰策略屬性基加密(KP-ABE)[2]和密文策略屬性基加密(CPABE)[3]。屬性的頻繁撤銷不僅會(huì)導(dǎo)致系統(tǒng)計(jì)算負(fù)擔(dān)過重,而且會(huì)引起數(shù)據(jù)安全問題。如何應(yīng)對(duì)大數(shù)據(jù)訪問控制中屬性撤銷帶來的負(fù)面影響成為當(dāng)下最受關(guān)注的研究熱點(diǎn)之一。
在CP-ABE 方案中,密文與特定的訪問策略相關(guān)聯(lián),用戶私鑰則與一組屬性有關(guān),即數(shù)據(jù)擁有者可以任意指定哪些數(shù)據(jù)可被哪些特定的用戶查看。比起KP-ABE 系統(tǒng),CP-ABE 則更適合處理生活中大部分的數(shù)據(jù)安全問題。該方案最早由文獻(xiàn)[3]提出,但是缺少屬性撤銷功能。文獻(xiàn)[4-5]提出給每個(gè)屬性加上一個(gè)有效期,由授權(quán)中心定期更新屬性的最新版本,但該方案缺乏實(shí)時(shí)更新性,系統(tǒng)安全性較低。文獻(xiàn)[6]提出利用非完全可信的第三方服務(wù)器進(jìn)行用戶屬性撤銷,但是要求第三方服務(wù)器時(shí)刻在線,因此撤銷不夠靈活且對(duì)系統(tǒng)要求過高。文獻(xiàn)[7]提出了一種支持屬性直接撤銷的方案,該方案無法抵抗合謀攻擊,安全性較低。文獻(xiàn)[8-10]提出的方案均為用戶級(jí)撤銷,缺乏細(xì)粒度的屬性級(jí)撤銷。文獻(xiàn)[11]提出一種使用單一授權(quán)機(jī)構(gòu)管理所有用戶屬性、并為所有用戶頒發(fā)解密密文的密鑰,雖有第三方服務(wù)器幫助進(jìn)行加解密操作,但是單一的授權(quán)中心容易降低系統(tǒng)安全性與運(yùn)行效率。文獻(xiàn)[12]提出了首個(gè)多權(quán)限訪問控制系統(tǒng),但是該系統(tǒng)的中央授權(quán)機(jī)構(gòu)擁有的主密鑰能夠解密所有密文,削弱了系統(tǒng)的安全性,同時(shí)撤銷問題仍未得到解決。文獻(xiàn)[13-14]提出使用多個(gè)授權(quán)機(jī)構(gòu)產(chǎn)生用戶秘鑰,解決了秘鑰托管和屬性撤銷問題,但仍然沒有解決系統(tǒng)計(jì)算量過大的缺陷。
針對(duì)上述問題,本文借鑒文獻(xiàn)[15]提出的屬性撤銷思想,在改進(jìn)文獻(xiàn)[16]中算法的基礎(chǔ)上,提出一種靈活的屬性撤銷方案,采用安全兩方計(jì)算協(xié)議以及多個(gè)屬性授權(quán)中心進(jìn)行細(xì)粒度屬性撤銷、密鑰托管以及用戶級(jí)撤銷,以提高系統(tǒng)安全性能及屬性撤銷效率。
定義1映射e:G0×G0→G1,其中G0和G1是階為q的乘法循環(huán)群。g為乘法循環(huán)群的生成元。滿足以下性質(zhì):
2)非退化性:?g∈G0,使e(g·g)≠1。
3)可計(jì)算性:存在有效的方法計(jì)算e(g·g)。
定義2設(shè)由系統(tǒng)中所有屬性組成的集合為P,且P={P1,P2,…,Pn},同時(shí)訪問結(jié)構(gòu)意為包含在P中的非空集合。若A是單調(diào)的訪問結(jié)構(gòu),當(dāng)?B,且B∈A,B?C時(shí),則C∈A。
定義3Shamir 提出采用拉格朗日多項(xiàng)式插值的門限秘密共享方案。該方案將秘密s無規(guī)律分成k份,其中任意不少于t(1≤t≤k)份可以通過拉格朗日插值重構(gòu)出s,但任意少于t-1 份的分割數(shù)據(jù)都不能重構(gòu)出s。同時(shí),為每個(gè)分割出來的秘密分配節(jié)點(diǎn)(x1,y1),(x2,y2),…,(xk,yk),則其中t個(gè)節(jié)點(diǎn)可以確定出唯一的由秘密共享中心生成階為t-1 的多項(xiàng)式y(tǒng)=f(x)。
1)秘密分割
(1)秘密分享中心分發(fā)一組被分割的秘密s給每一位參與者qi(1≤i≤t),且隨機(jī)選擇k-1 個(gè)系數(shù)a1,a2,…,ak-1,定義隨機(jī)多項(xiàng)式f(x)=ak-1xk-1+ak-2xk-2+…+a1x+a0。
(2)隨機(jī)選擇t個(gè)非零且不重疊的元素x1,x2,…,xt,且公開xi,得出yi=f(xi)(1≤i≤t),因此有t個(gè)(xi,yi),但保留yi。
2)秘密重構(gòu)
采用拉格朗日重構(gòu)的思想,將t個(gè)參加者所擁有的多項(xiàng)式節(jié)點(diǎn)(xi,yi)(1≤i≤t)作為輸入,輸出多項(xiàng)式其中a0=s,即可重構(gòu)秘密s。
定義4[17]在一個(gè)安全系數(shù)普遍較低的分布式網(wǎng)絡(luò)環(huán)境中,參與者A 與B 在協(xié)同計(jì)算后得到某函數(shù)p(x1,x2)的值,其中x1和x2分別是兩個(gè)參與者的秘值。最終參與者A 與B 均可根據(jù)協(xié)議得到自己預(yù)期的結(jié)果值,但是不知道除自身外的任何信息,亦不能根據(jù)中間信息推導(dǎo)出其他信息,該協(xié)議保證了參與者個(gè)人隱私以及系統(tǒng)的安全。
本文方案主要由5 類實(shí)體構(gòu)成,分別為:數(shù)據(jù)擁有者(Data Owner,DO),云存儲(chǔ)服務(wù)器(Cloud Service Provider,CSP),密鑰生成中心(Key Generation Center,KGC),屬性授權(quán)中心(Attribute Authorization Center,AAC),數(shù)據(jù)使用者(Data User,DU)。
本文算法由以下幾個(gè)主要函數(shù)構(gòu)成:
1)Setup():KGC 利用安全參數(shù)初始化運(yùn)算獲得系統(tǒng)的公鑰PK,私鑰SK。CSP 產(chǎn)生DU 的各種參數(shù)值。
2)Data Encrypt(PK,m,Τ):DO 使用公鑰PK、明文信息m,以及訪問控制策略Τ進(jìn)行數(shù)據(jù)加密,生成密文CT 并將其發(fā)送給CSP。
3)Data KeyGen(PK,MK,?u,Uij):首先,多個(gè)AACi計(jì)算生成Uij,并將最后結(jié)果發(fā)給CSP,之后,CSP 與KGC 使用安全兩方計(jì)算協(xié)議計(jì)算后生成用戶私鑰SKu。
4)Data Decrypt(SKu,CT):合法用戶DU 使用自己私鑰SKu解密密文CT,當(dāng)所擁有的一組屬性集?u∈Τ時(shí),即可解出明文m。
5)Revocation():此階段進(jìn)行用戶級(jí)撤銷和屬性級(jí)撤銷。刪除DU 的參數(shù)進(jìn)行用戶級(jí)撤銷。更改屬性版本秘鑰以及用戶秘鑰進(jìn)行屬性級(jí)撤銷。
下面給出支持撤銷的CP-ABE 方案在選擇明文攻擊(Indistinguishablity under Chosen Plaintext Attack,IND-CPA)下的安全模型,以及攻擊者A 與挑戰(zhàn)者B 之間的攻擊游戲流程。
準(zhǔn)備階段:攻擊者A 向挑戰(zhàn)者B 挑戰(zhàn)訪問控制策略T*以及用戶撤銷列表Rx。
初始化:挑戰(zhàn)者B 運(yùn)行Setup(),輸出主密鑰MK,公鑰PK,且發(fā)送PK 給攻擊者A,留存MK。
挑戰(zhàn):攻擊者A 向挑戰(zhàn)者B 提交兩個(gè)等長(zhǎng)的消息ma,mb。B 隨機(jī)選取P∈{a,b},并運(yùn)行KeyGen(PK,MK,?u,Uij)算法,將得到的密文返回給攻擊者A。
階段2:同階段1,A 繼續(xù)向B 發(fā)送詢問報(bào)文。
猜測(cè):A 猜測(cè)數(shù)值p*,若p*∈{a,b}且p*=p,則敵手贏。同時(shí)A 獲得游戲成功的優(yōu)勢(shì)定義為:
若在某個(gè)概率多項(xiàng)時(shí)間內(nèi)敵手贏得游戲的優(yōu)勢(shì)可以被忽略,則稱本文方案滿足IND-CPA 安全。
本文方案在CP-ABE 的基礎(chǔ)上,結(jié)合安全兩方計(jì)算協(xié)議與多屬性授權(quán)中心,解決用戶級(jí)撤銷及屬性級(jí)撤銷。方案流程如圖1所示。
圖1 支持屬性撤銷的CP-ABE 方案流程Fig.1 CP-ABE solution process that supports attribute revocation
方案具體步驟如下:
1)用戶秘鑰生成。各個(gè)屬性授權(quán)中心生成對(duì)應(yīng)屬性的屬性版本秘鑰Uij,并將其交由CSP,CSP 與KGC 用各自的參數(shù)進(jìn)行安全兩方計(jì)算,將生成的結(jié)果交由DU,DU 即可得到自身用戶秘鑰SKu。
2)屬性級(jí)撤銷。KGC 將隨機(jī)選取的重加密參數(shù)Φ發(fā)送給除DO 外的各個(gè)實(shí)體,以此來更新各自實(shí)體的相關(guān)參數(shù)。每個(gè)AACi更新和被撤銷屬性相關(guān)的屬性版本秘鑰Uij,CSP 更新和被撤銷屬性相關(guān)的密文CT,KGC 與CSP 進(jìn)行安全兩方計(jì)算,更新與被撤銷屬性相關(guān)的用戶的秘鑰SKu。
3)用戶級(jí)撤銷。CSP 給每一位合法用戶DU 分配唯一身份值UIDi及唯一秘值rt。并將其存入用戶列表Rx中,若進(jìn)行用戶級(jí)撤銷時(shí),CSP 將用戶的身份值移出用戶列表,并刪除唯一秘值,該用戶將不能再訪問加密數(shù)據(jù)。
該方案包含的主要函數(shù)如下:
1)Setup()
H:{0,1}*→G1是一個(gè)哈希函數(shù),用來將字符串屬性映射到G1的隨機(jī)元素上。CSP 隨機(jī)選擇,設(shè)h=gβ,則CSP 的公鑰pkc=h,私鑰為mkc=β。密鑰生成中心KGC 隨機(jī)選擇,則KGC 的公鑰為pkk=e(g,g)α,私鑰為mkk=gα。則系統(tǒng)公鑰PK={G1,g,h=gβ,e(g,g)α},主密鑰為MK={α,β}。
CSP 為每個(gè)用戶分配唯一身份值UIDi,并添加進(jìn)用戶列表Rx中,根據(jù)其身份或者角色分配一組屬性集?u,以及唯一隨機(jī)秘值。KGC 為每個(gè)AACi分配唯一隨機(jī)值。
2)Data Encrypt(PK,m,T)
該算法由DO 操作,首先,使用訪問結(jié)構(gòu)和訪問樹表示DO 制定的訪問控制策略,訪問結(jié)構(gòu)中的屬性作為葉子節(jié)點(diǎn),門限邏輯運(yùn)算符作為中間節(jié)點(diǎn),且樹的根節(jié)點(diǎn)為R,以此來構(gòu)建訪問控制樹Τ。該算法采用自上而下的方式從根節(jié)點(diǎn)R開始為樹Τ中所有節(jié)點(diǎn)x(包括非葉子節(jié)點(diǎn)和葉子節(jié)點(diǎn))產(chǎn)生一個(gè)階為dx的多項(xiàng)式qx,nx為非葉子節(jié)點(diǎn)閾值,且多項(xiàng)式的階dx和節(jié)點(diǎn)閾值nx之間的關(guān)系為dx=nx-1。隨機(jī)選取,設(shè)置根節(jié)點(diǎn)多項(xiàng)式為qR(0)=s,同時(shí)計(jì)算m·e(g,g)αs,C=hs。針對(duì)其它節(jié)點(diǎn),設(shè)置多項(xiàng)式為qx(0)=qp(x)(index(x)),index(x)的值表示其父節(jié)點(diǎn)p(x)的第index(x)個(gè)左孩子節(jié)點(diǎn)。
在樹Τ中,設(shè)J 為所有和葉子節(jié)點(diǎn)相聯(lián)系的屬性的集合,計(jì)算每個(gè)葉子節(jié)點(diǎn)j∈J 所對(duì)應(yīng)的和。密文CT 則為:
3)Data KeyGen(PK,MK,?u,Uij)
(1)屬性版本密鑰生成
該算法由AAC 運(yùn)行。每個(gè)AACi管理若干個(gè)不同屬性,每個(gè)屬性僅由一個(gè)AACi管理。每個(gè)AACi給其所管理的每個(gè)屬性各隨機(jī)選取任意值故屬性版本密鑰為。并將其發(fā)送給CSP。
(2)用戶密鑰生成
該算法由CSP 和KGC 同時(shí)運(yùn)行得出。CSP 將參數(shù)(rt,β)作為輸入,KGC 將參數(shù)α作為輸入,CSP與KGC 二者之間進(jìn)行安全兩方計(jì)算協(xié)議[17],輸出x=(α+rt)β,將計(jì)算結(jié)果發(fā)送給KGC[18]。KGC 隨機(jī)選擇,將計(jì)算的結(jié)果發(fā)送給CSP。當(dāng)CSP 接收到后,計(jì)算,之后將B發(fā)送給KGC。
KGC 在接收到B后,計(jì)算用戶的部分密鑰SKk=。CSP 將用戶的一組屬性集?u以及屬性版本密鑰作為輸入,輸出用戶部分私鑰:
用戶分別接收到來自KGC 和CSP 的部分密鑰后,合并生成用戶自己的用戶密鑰:
4)Data Decrypt(SKu,CT)
該算法由DU 執(zhí)行,當(dāng)用戶獲得加密數(shù)據(jù)后,采用遞歸的算法對(duì)數(shù)據(jù)進(jìn)行解密。過程如下:
(1)若j為訪問控制樹T 的葉子節(jié)點(diǎn),用戶的一組實(shí)體屬性集?u∈Τ,且?ui∈?u時(shí),解密公式如下:
當(dāng)?ui??u,則為⊥。
(2)若j為訪問控制樹Τ的非葉子節(jié)點(diǎn),設(shè)為大小為kx的每個(gè)節(jié)點(diǎn)z的孩子節(jié)點(diǎn)集合,當(dāng)Fz≠⊥,則進(jìn)行如下遞歸計(jì)算:
當(dāng)?u∈Τ,則調(diào)用訪問控制樹Τ的根節(jié)點(diǎn)R,并進(jìn)行如下計(jì)算:
(3)當(dāng)用戶屬性集?u∈Τ,即Τ(?u)=1,則可解密被加密的數(shù)據(jù)。
5)Revocation()
主要包含以下4 個(gè)階段:
(1)用戶級(jí)撤銷
當(dāng)用戶整體從系統(tǒng)中撤銷時(shí),CSP 將其唯一身份值uidi從用戶列表Rx中刪除,并刪除唯一秘密值rt。在該系統(tǒng)中,任意用戶均可下載密文,但是只有存在于用戶列表中的合法用戶才可獲得相關(guān)秘鑰,進(jìn)一步解密密文。保證了系統(tǒng)的安全性。
(2)屬性級(jí)撤銷
KGC 隨機(jī)選取一個(gè)重加密參數(shù)Φ,并將其分配給每個(gè)AACi,CSP,以及和撤銷屬性相關(guān)的用戶DU。接收到重加密參數(shù)的實(shí)體更新其參數(shù),使其保證參數(shù)的最新性。
每個(gè)AACi更新其所管理的對(duì)應(yīng)的撤銷屬性的秘參則撤銷屬性更新后的版本密鑰為
(3)用戶密鑰更新
AACi更新相關(guān)的撤銷屬性的最新版本秘鑰,并將結(jié)果發(fā)送給CSP,隨之,CSP 與KGC 進(jìn)行安全兩方計(jì)算得出用戶的最新秘鑰。最新版本的秘鑰為:
(4)密文更新
CSP 接收到KGC 的更新參數(shù)后,迅速更新密文的相關(guān)組件,確保密文的安全性。
本方案中多屬性授權(quán)中心可分為兩個(gè)模塊,即由多個(gè)屬性授權(quán)中心AACi聯(lián)合產(chǎn)生的屬性版本密鑰,以及云服務(wù)器和密鑰生成中心聯(lián)合生成的用戶密鑰。當(dāng)撤銷某個(gè)用戶或者某個(gè)用戶的屬性時(shí),任意屬性授權(quán)中心都無法獲得用戶的屬性版本密鑰,且用戶密鑰是由兩個(gè)實(shí)體通過安全兩方協(xié)議共同產(chǎn)生,雙方均無法獲取對(duì)方的部分密鑰,故無法解密密文。同理,當(dāng)合法用戶加入到系統(tǒng)中時(shí),屬性授權(quán)中心會(huì)根據(jù)用戶的一組屬性集生成最新的屬性版本密鑰,因此確保了數(shù)據(jù)的向前向后安全性。
證明:在本文的方案中,只有當(dāng)DU 的?u∈T,才能計(jì)算出e(g,g)αs。當(dāng)有若干個(gè)不同權(quán)限的用戶串謀攻擊,由云服務(wù)器分配給每個(gè)用戶一個(gè)唯一隨機(jī)秘值rt,則產(chǎn)生不同的DU 秘鑰部分組件,故合謀攻擊不能獲得用戶秘鑰。本方案可滿足抗合謀攻擊。
在隨機(jī)預(yù)言機(jī)模型下基于DBDH[19](判定雙線性Diffie-Hellman 問題)困難假設(shè)進(jìn)行安全性證明:
一個(gè)概率多項(xiàng)式時(shí)間算法Q以優(yōu)勢(shì)為ε求解DBDH 問題。
定理1假設(shè)DBDH 成立,則敵手就無法在多項(xiàng)式時(shí)間內(nèi)求解DBDH 問題,其中可忽略優(yōu)勢(shì)ε即可證明該方案的安全性。
準(zhǔn)備階段:敵手A 選擇訪問控制樹Τ*及用戶撤銷列表。
初始化:B 運(yùn)行Setup()算法。
2)對(duì)每個(gè)屬性?j,都有
挑戰(zhàn):敵手A 向挑戰(zhàn)者B 提交兩個(gè)等長(zhǎng)的消息ma,mb。B 隨機(jī)選取P∈{a,b},并運(yùn)行KeyGen()算法。
階段2:同階段1,A 繼續(xù)向B 發(fā)送秘鑰詢問報(bào)文。
猜測(cè):敵手A 輸出猜測(cè)p*∈{0,1}。
1)若p*=p,則z=e(g,g)abc,即DBDH 成立。表明敵手A 可獲得有效密文且優(yōu)勢(shì)為Pr=[p*=p|z=e(g,g)abc]=1/2+ε。
2)若p*≠p,則表明敵手A 無法獲得有效的密文,z=e(g,g)θ,其優(yōu)勢(shì)為:
綜上所述,若沒有敵手在多項(xiàng)式時(shí)間內(nèi)選擇訪問控制樹Τ*擊敗該方案,則證明該方案有較高的安全性。
本文中提出的方案與其他方案在秘鑰托管、抗合謀、撤銷機(jī)制等方面作出分析比較。從表1 中可以得出結(jié)論:本文方案在系統(tǒng)安全等功能方面考慮得比較全面,基本問題得到解決。
表1 各方案功能實(shí)現(xiàn)分析比較Table 1 Analysis and comparison of function realization of each scheme
當(dāng)進(jìn)行用戶級(jí)撤銷時(shí),僅由CSP 將用戶唯一身份值UIDi從用戶列表Rx中刪除,并刪除唯一秘密值rt,故用戶級(jí)撤銷的計(jì)算復(fù)雜度為O(1)。當(dāng)進(jìn)行屬性級(jí)撤銷時(shí),被撤銷的屬性需更新最新的版本秘鑰,故屬性級(jí)撤銷所需的計(jì)算復(fù)雜度為O(6n)。
本文方案中采用的安全兩方計(jì)算協(xié)議所需計(jì)算復(fù)雜度為O(5n),屬性版本秘鑰由各個(gè)屬性授權(quán)中心產(chǎn)生,故計(jì)算復(fù)雜度為O(n),故生成用戶秘鑰所需計(jì)算復(fù)雜度為O(6n)。
由此可以看出本文方案在解密花費(fèi)以及撤銷花費(fèi)中,將部分計(jì)算任務(wù)交由CSP 進(jìn)行,極大地降低了系統(tǒng)計(jì)算復(fù)雜度。各方案效率的對(duì)比結(jié)果如表2所示。
表2 效率分析比較Table 2 Analysis and comparison of efficiency
在表2 中,te為指數(shù)運(yùn)算所需的花費(fèi),tp為雙線性對(duì)運(yùn)算所需的花費(fèi),p為在中元素的大小。
本文提出一種支持屬性撤銷的CP-ABE 方案,通過安全兩方計(jì)算協(xié)議,生成并更新用戶秘鑰,從而實(shí)現(xiàn)細(xì)粒度級(jí)的用戶級(jí)和屬性級(jí)撤銷,同時(shí)引進(jìn)多個(gè)屬性授權(quán)中心,在撤銷某用戶或某用戶屬性時(shí),任意屬性授權(quán)中心都無法獲得用戶的屬性版本密鑰。實(shí)驗(yàn)結(jié)果表明,該方案能有效降低撤銷操作的計(jì)算復(fù)雜度,并增強(qiáng)了系統(tǒng)安全性。未來研究將繼續(xù)優(yōu)化細(xì)粒度撤銷所需的計(jì)算開銷,以進(jìn)一步降低系統(tǒng)的計(jì)算復(fù)雜度。