蔣 琳,徐 穎,吳宇琳*,王 軒,方俊彬
(1.哈爾濱工業(yè)大學(xué)(深圳)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,廣東 深圳 518052;2.暨南大學(xué) 理工學(xué)院,廣東 廣州 510632)
在大數(shù)據(jù)、云計(jì)算和物聯(lián)網(wǎng)等信息技術(shù)的快速發(fā)展下,信息數(shù)據(jù)呈現(xiàn)爆炸式的增長。為了減輕用戶的本地存儲(chǔ)能力負(fù)擔(dān),越來越多的企業(yè)選擇在云端存儲(chǔ)海量數(shù)據(jù)。由于云服務(wù)器并不是完全可信的第三方,如何確保存儲(chǔ)在云服務(wù)器中用戶隱私數(shù)據(jù)的安全成為亟需解決的問題。密碼學(xué)作為信息安全的基石,可以保證數(shù)據(jù)的完整性、機(jī)密性和不可否認(rèn)性,是解決數(shù)據(jù)安全問題的關(guān)鍵技術(shù)。由于云服務(wù)提供平臺(tái)不是可信第三方,因此現(xiàn)階段普遍的做法是將數(shù)據(jù)加密之后再存儲(chǔ)到云服務(wù)器上,傳統(tǒng)的公鑰加密體制通常是構(gòu)建在一對一的數(shù)據(jù)安全上,無法滿足加密數(shù)據(jù)共享中的一對多的場景。屬性基加密(Attribute-based Encryption,ABE)作為公鑰密碼體制中的一員,能夠?qū)崿F(xiàn)細(xì)粒度的訪問控制和一對多的加密模式,被廣泛地應(yīng)用于云計(jì)算環(huán)境中進(jìn)行加密數(shù)據(jù)共享。
2005年,Sahai等人[1]提出了ABE的概念,首次將用戶的身份信息轉(zhuǎn)換為一系列的屬性來控制加密數(shù)據(jù)的訪問。ABE機(jī)制引入了屬性集合和訪問策略的概念,只有當(dāng)屬性滿足訪問策略時(shí),用戶才可以解開密文。2006年,Goyal等人[2]根據(jù)密鑰/密文與策略的關(guān)系將ABE進(jìn)一步地劃分為密鑰策略屬性基加密(Key-Policy Attribute-based Encryption,KP-ABE)和密文策略屬性基加密(Cipher-Policy Attribute-based Encryption,CP-ABE)兩種類型。為了達(dá)到理想的靈活性,需要為ABE設(shè)計(jì)更具有表達(dá)性的訪問結(jié)構(gòu),如訪問樹(Tree)[3]、線性秘密共享矩陣(LSSS)[4]和一般電路[5]等。傳統(tǒng)的ABE系統(tǒng)大多都是單授權(quán)系統(tǒng),需要一個(gè)完全可信的中央授權(quán)機(jī)構(gòu)(Central Authority,CA)進(jìn)行屬性授權(quán)管理和密鑰生成的工作。這也帶來了用戶隱私和單機(jī)器系統(tǒng)計(jì)算瓶頸的問題,對整個(gè)系統(tǒng)的安全十分不利,如果CA遭到惡意攻擊造成密鑰泄露更會(huì)導(dǎo)致嚴(yán)重的數(shù)據(jù)機(jī)密性問題。有學(xué)者針對多授權(quán)機(jī)構(gòu)的ABE方案[6-7]進(jìn)行研究,這些方案仍然需要CA幫助管理。為了解決這個(gè)問題,Lewko等人[8]提出了一個(gè)分散的多授權(quán)機(jī)構(gòu)ABE系統(tǒng),該系統(tǒng)任何一方都可以成為授權(quán)機(jī)構(gòu),且不需要CA進(jìn)行屬性管理和密鑰分發(fā)。之后,又提出了許多不借助CA進(jìn)行屬性管理和密鑰分發(fā)的方案[9-11]。上述方案大多數(shù)都是由傳統(tǒng)的訪問結(jié)構(gòu)如LSSS,Tree作為控制策略,這些結(jié)構(gòu)只能處理固定數(shù)量的屬性變量,無法處理對任意數(shù)量的屬性變量。2012年,Waters[12]提出了支持正則語言的ABE,在該使用確定性有限自動(dòng)機(jī)(Deterministic Finite Automata,DFA)被用來作為訪問結(jié)構(gòu)生成解密密鑰,以此識(shí)別任意長度的屬性字符串,但是該方案依賴于q-type類型的動(dòng)態(tài)假設(shè)且安全性只滿足選擇性安全。文獻(xiàn)[13-15]對提升方案的安全性進(jìn)行了詳細(xì)研究。這些研究側(cè)重單授權(quán)機(jī)構(gòu)下自適應(yīng)安全性的提升和簡化安全性證明,存在密鑰泄露的安全問題。
基于以上分析,本文提出了一種以DFA作為訪問結(jié)構(gòu)的多授權(quán)機(jī)構(gòu)KP-ABE方案。通過使不同權(quán)限的授權(quán)機(jī)構(gòu)管理相關(guān)密鑰分發(fā),解決了單授權(quán)機(jī)構(gòu)下遭受攻擊容易導(dǎo)致密鑰泄露的問題。用戶密鑰由多個(gè)授權(quán)機(jī)構(gòu)共同生成,并且和用戶的身份標(biāo)識(shí)綁定,所提方案能夠抵抗非法用戶及授權(quán)機(jī)構(gòu)的共謀攻擊。此外,該方案在系統(tǒng)建立后仍然可以動(dòng)態(tài)增加授權(quán)機(jī)構(gòu),并且滿足大屬性集合的構(gòu)造,增強(qiáng)了方案的可擴(kuò)展性。最后,使用雙系統(tǒng)加密技術(shù)[16-18]證明該方案在隨機(jī)預(yù)言機(jī)模型下滿足自適應(yīng)安全。
① 雙線性:對于所有的g,h∈G,a,b∈Zn,有e(ga,hb)=e(g,h)ab。
② 非退化性:?g∈G,使得e(g,g)≠1。
③ 可計(jì)算性:對于所有的g,h∈G,存在一個(gè)算法可以有效地計(jì)算e(g,h)。
④ 正交性:群的3個(gè)子群在雙線性映射下滿足“正交性”,即對于任意的g∈Gpi,h∈Gpj(i,j∈{1,2,3}),則有當(dāng)i≠j的時(shí)候,e(g,h)為群GT的生成元,即e(g,h)=1。
本文提出的基于DFA訪問結(jié)構(gòu)的多授權(quán)機(jī)構(gòu)KP-ABE方案系統(tǒng)模型如圖1所示。由5個(gè)實(shí)體構(gòu)成:中央授權(quán)機(jī)構(gòu)、普通授權(quán)機(jī)構(gòu)、云服務(wù)器、數(shù)據(jù)擁有者和數(shù)據(jù)使用者。
圖1 系統(tǒng)模型Fig.1 System Model
中央授權(quán)機(jī)構(gòu):負(fù)責(zé)建立系統(tǒng)全局公開參數(shù),并為系統(tǒng)中的用戶生成一個(gè)全局的唯一標(biāo)識(shí)(gid),為每個(gè)授權(quán)機(jī)構(gòu)產(chǎn)生一個(gè)唯一標(biāo)識(shí)(θ)。
授權(quán)機(jī)構(gòu):每個(gè)授權(quán)機(jī)構(gòu)之間是相互獨(dú)立的,負(fù)責(zé)生成自己的公私鑰對,并根據(jù)用戶的訪問策略產(chǎn)生相對應(yīng)的密鑰。
云服務(wù)器:主要提供數(shù)據(jù)存取的服務(wù)。在該系統(tǒng)中,云服務(wù)器被設(shè)定為半誠實(shí)的實(shí)體,即它會(huì)正確地執(zhí)行系統(tǒng)中合法用戶的操作,同時(shí)也試圖從接收的數(shù)據(jù)中獲取信息。
數(shù)據(jù)擁有者:根據(jù)數(shù)據(jù)的屬性值對該數(shù)據(jù)進(jìn)行加密,并上傳到云服務(wù)器上。
數(shù)據(jù)使用者:在該系統(tǒng)中,每個(gè)用戶都擁有一個(gè)全局唯一的標(biāo)識(shí),并根據(jù)自己在不同機(jī)構(gòu)上的訪問策略可以獲得對應(yīng)的解密密鑰。用戶可以從云服務(wù)器上下載密文數(shù)據(jù),當(dāng)所有的訪問策略滿足加密數(shù)據(jù)的屬性后,用戶才能使用其密鑰解密密文。
本文所提方案包括以下5個(gè)多項(xiàng)式時(shí)間算法,其形式化描述如下:
① GlobalSetup(λ)→GP:系統(tǒng)全局建立算法,由中央授權(quán)機(jī)構(gòu)執(zhí)行。算法輸入安全參數(shù)λ,輸出系統(tǒng)全局公共參數(shù)GP。
② AuthSetup(GP,θ)→(pkθ,skθ):授權(quán)機(jī)構(gòu)初始化算法,由每個(gè)授權(quán)機(jī)構(gòu)執(zhí)行。算法輸入全局公開參數(shù)GP和授權(quán)機(jī)構(gòu)的唯一標(biāo)識(shí)θ,輸出為該授權(quán)機(jī)構(gòu)的公鑰和私鑰。
③ KeyGen(GP,ASKθ,θ,gid)→SKθ,gid:數(shù)據(jù)擁有者密鑰生成算法,算法由授權(quán)機(jī)構(gòu)執(zhí)行。算法輸入全局公開參數(shù)GP、屬性機(jī)構(gòu)的私鑰ASKθ、用戶訪問自動(dòng)機(jī)θ和用戶身份標(biāo)識(shí)gid,算法為gid標(biāo)識(shí)的用戶生成密鑰SKθ,gid。
④ Encrypt(GP,{APKθ,ωθ}θ∈Auth,m)→CT:數(shù)據(jù)加密算法,由數(shù)據(jù)擁有者執(zhí)行。算法輸入全局公開參數(shù)GP、屬性機(jī)構(gòu)的公鑰和屬性字符串{APKθ,ωθ}θ∈Auth以及明文數(shù)據(jù)m,輸出生成的密文數(shù)據(jù)CT。
⑤ Decrypt(GP,{SKθ,gid}θ∈Auth,CT)→m/⊥:數(shù)據(jù)解密算法,由數(shù)據(jù)使用者執(zhí)行。算法輸入全局公開參數(shù)GP、用戶的組密鑰{SKθ,gid}θ∈Auth和密文CT。如果密文的屬性字符串滿足標(biāo)識(shí)為gid的用戶的訪問結(jié)構(gòu),則算法輸出解密的明文數(shù)據(jù)m,否輸出m/⊥。
所提算法的安全性主要基于以下模型進(jìn)行證明,此安全模型由挑戰(zhàn)者和敵手之間的安全游戲進(jìn)行描述。
系統(tǒng)建立:挑戰(zhàn)者運(yùn)行GlobalSetup和AuthSetup算法,生成全局公共參數(shù)和授權(quán)機(jī)構(gòu)的公私鑰對。令A(yù)uth*表示所有授權(quán)機(jī)構(gòu)的集合,令A(yù)uthc表示被腐蝕的授權(quán)機(jī)構(gòu)的集合。對被腐化的授權(quán)機(jī)構(gòu),挑戰(zhàn)者將其私鑰和公共參數(shù)一并發(fā)送給敵手。
敵手查詢請求階段1:敵手向未被腐蝕的授權(quán)機(jī)構(gòu)發(fā)送有限自動(dòng)機(jī)θ以及身份標(biāo)識(shí)gid進(jìn)行密鑰詢問。挑戰(zhàn)者運(yùn)行KeyGen算法,產(chǎn)生解密秘鑰SKθ,gid,并把它發(fā)送給敵手,這一過程可重復(fù)多項(xiàng)式有界次。
挑戰(zhàn)階段:敵手提交2個(gè)長度相等的消息M0,M1和待挑戰(zhàn)的屬性字符串{ωθ}θ∈Auth*。對每個(gè)授權(quán)機(jī)構(gòu)θ∈Auth*/(Auth*∩Authc),其ωθ不能被詢問階段1中的所有θ接受。然后挑戰(zhàn)者投擲一枚硬幣b,b取隨機(jī)值0或者1,運(yùn)行加密算法Encrypt(GP,{APKθ,ωθ}Auth*,Mb)生成密文CT*并返回給敵手。
詢問階段2:重復(fù)詢問階段1的過程,唯一的限制是對于θ∈Auth*/(Auth*∩Authc)的授權(quán)機(jī)構(gòu),其發(fā)送的θ不能接收ωθ。挑戰(zhàn)者以階段1中的方式進(jìn)行回應(yīng),這一過程可重復(fù)多項(xiàng)式有界次。
猜測階段:攻擊者返回一個(gè)關(guān)于b的猜測b′。如果b′=b,則攻擊者獲勝。攻擊者在游戲中的攻擊優(yōu)勢為Adv=Pr[b′=b]-1/2。
定義:對于任意多項(xiàng)式時(shí)間內(nèi)攻擊者,如果在上述安全游戲中獲得勝利的優(yōu)勢可以忽略,那么該方案是自適應(yīng)CPA安全的。
該方案包括以下5個(gè)多項(xiàng)式時(shí)間算法,具體構(gòu)造如下:
③ KeyGen(GP,ASKθ,θ,gid)→SKθ,gid:由標(biāo)識(shí)為θ的授權(quán)機(jī)構(gòu)執(zhí)行。假設(shè)身份標(biāo)識(shí)為gid的用戶在標(biāo)識(shí)為θ授權(quán)機(jī)構(gòu)下?lián)碛械脑L問結(jié)構(gòu)為θ=(Q,ZN,T,q0,qn-1)。令n表示狀態(tài)機(jī)的狀態(tài)個(gè)數(shù)即n=|Q|。對每個(gè)狀態(tài)qx∈Q{qn-1}選取一個(gè)對應(yīng)的隨機(jī)數(shù)uθ,x∈ZN,有uθ=(uθ,0,uθ,1,…,uθ,n-1),其中uθ,n-1=α,并計(jì)算得到令uskθ,1,0=H(gid),令m表示自動(dòng)機(jī)的轉(zhuǎn)移函數(shù)的個(gè)數(shù)即m=|T|。對每一個(gè)轉(zhuǎn)移函數(shù)T={(qxt,qyt,σt)|t∈[1,m]},選擇隨機(jī)數(shù)rθ,t∈Zn,通過計(jì)算得到輸出SKθ,gid=(uskθ,0,{uskθ,1,t}t∈[0,m],{uskθ,2,t,uskθ,3,t}t∈[1,m],θ)。
⑤ Decrypt(GP,{SKθ,gid}θ∈Auth,CT)→m/⊥:由數(shù)據(jù)使用者執(zhí)行。對每個(gè)機(jī)構(gòu)θ∈Auth進(jìn)行下列計(jì)算:
對于所有授權(quán)機(jī)構(gòu)θ∈Auth,如果數(shù)據(jù)使用者的與密鑰相關(guān)聯(lián)的自動(dòng)機(jī)θ能夠接受與密文相關(guān)聯(lián)的ωθ,則有:
3.2.1 抗共謀安全性
在本文所提的系統(tǒng)中,用戶的密鑰與用戶的身份標(biāo)識(shí)gid相關(guān)聯(lián),在密文中,明文m與e(g1,g1)Γ相乘,所以必須借助Γ的值才能夠恢復(fù)出明文數(shù)據(jù)。Γ使用加法秘密共享被拆分為多個(gè)共享值,并且使用e(g1,g1)αθsθ,0對不同機(jī)構(gòu)的共享值進(jìn)行加密,如果想要恢復(fù)這些共享值,用戶的訪問策略和屬性字符串匹配才可以獲得滿足條件的SKθ,gid并最終解開密文。解密過程,當(dāng)有2個(gè)身份標(biāo)識(shí)gid和gid′的用戶想要合謀解開密文的時(shí),在雙方的訪問結(jié)構(gòu)滿足條件之后,解密的計(jì)算過程中產(chǎn)生式子e(g1,H(gid))∑θ∈Authδθ無法被約掉,也就無法得到正確的明文結(jié)果。因此本文提供的方案具有抗共謀安全性。
3.2.2 自適應(yīng)選擇明文安全
本方案的安全性證明類似于雙系統(tǒng)加密證明技術(shù)。首先介紹半函數(shù)密文和半函數(shù)密鑰,這些半功能密文和密鑰僅用于安全性證明,不會(huì)在實(shí)際方案中出現(xiàn)。
①半功能密文:
②半功能密鑰:
本文將通過一系列的混合游戲來證明所提方案的安全性,具體的定義如下:
GameReal:第一個(gè)游戲GameReal表示真實(shí)的安全游戲,即用戶的密鑰和挑戰(zhàn)密文都是正常的。
Game0:在該游戲里,用戶的密鑰都是偽正常密鑰,挑戰(zhàn)密文是正常的密文。
Game1:該游戲與Game0的唯一區(qū)別是挑戰(zhàn)密文是偽正常密文。
假設(shè)q為攻擊者密鑰查詢的總次數(shù),對于j∈[1,q]定義2種類型的游戲:
Game2,j,1:該游戲中,對前j-1個(gè)密鑰請求,使用type2類型的半功能密鑰;對于第j個(gè)密鑰請求,使用type1類型的半功能密鑰;其余的密鑰請求使用正常密鑰。挑戰(zhàn)密文使用type1類型的半功能密文。
Game2,j,2:該游戲中,對前j個(gè)密鑰請求,使用type2類型的半功能密鑰;其余的密鑰請求使用正常密鑰。挑戰(zhàn)密文使用type2類型的半功能密文。
Gamefinal:該游戲和Game2,q,2的唯一區(qū)別就是不使用mb來生成挑戰(zhàn)密文,而是使用隨機(jī)值生成挑戰(zhàn)密文。
使用下面5個(gè)引理證明這些游戲是不可區(qū)分的。
引理1:假設(shè)存在一個(gè)攻擊者能以的優(yōu)勢區(qū)分GameReal和Game0,則存在敵手能以接近的優(yōu)勢攻破假設(shè)1。
引理2:假設(shè)存在一個(gè)攻擊者能以的優(yōu)勢區(qū)分Game0和Game1,則存在敵手能以接近的優(yōu)勢攻破假設(shè)1。
引理3:假設(shè)存在一個(gè)攻擊者能以的優(yōu)勢區(qū)分Game2,j-1,2和Game2,j,1,則存在敵手能以接近的優(yōu)勢攻破假設(shè)2。
引理4:假設(shè)存在一個(gè)攻擊者能以的優(yōu)勢區(qū)分Game2,j,1和Game2,j,2,則存在敵手能以接近的優(yōu)勢攻破假設(shè)3。
引理5:假設(shè)存在一個(gè)攻擊者能以的優(yōu)勢區(qū)分Game2,q,2和Gamefinal,則存在敵手能以接近的優(yōu)勢攻破假設(shè)4。
定理1。如果假設(shè)1,2,3,4成立,則本文所提的方案在隨機(jī)預(yù)言機(jī)模型下滿足自適應(yīng)安全。
證明。如果假設(shè)1,2,3,4成立,可以由先前的引理得到安全游戲GameReal和Gamefinal是不可區(qū)分的,在Gamefinal中,密文完全隱藏了b的信息,攻擊者無法獲取到任何有關(guān)b的信息,因此攻擊者贏得Gamefinal的優(yōu)勢是可以忽略的,同樣攻擊者贏得GameReal的優(yōu)勢也是可以忽略的。所以,不存在一個(gè)多項(xiàng)式時(shí)間的敵手可以以不可忽略的優(yōu)勢攻破本文所提的方案。
本文利用DFA作為訪問結(jié)構(gòu),設(shè)計(jì)了一個(gè)多授權(quán)機(jī)構(gòu)的KP-ABE方案,解決了單一授權(quán)機(jī)構(gòu)的密鑰濫用問題,提高了方案的安全性,并從訪問結(jié)構(gòu)、安全性、是否支持大屬性集和共謀攻擊等方面進(jìn)行性能比較。
表1 性能比較Tab.1 Performance comparison
為了驗(yàn)證本文所提方案的有效性,同時(shí)對方案的時(shí)間開銷有更為直觀的了解,接下來將給出方案的實(shí)驗(yàn)仿真結(jié)果。方案在開源代碼庫JPBC的基礎(chǔ)上進(jìn)行了仿真實(shí)現(xiàn)。由于所提方案基于合數(shù)階群構(gòu)造,故選取JPBC中的Type Al參數(shù)類型,設(shè)置群的階為N=npq其中|n|=|p|=|q|=128 bit。實(shí)驗(yàn)運(yùn)行的軟件環(huán)境為Windows10 64位操作系統(tǒng),Java版本為1.8。硬件環(huán)境為(英特爾)Intel(R) Core(TM) i7-8700 CPU @ 3.20 GHz(3 192 MHz)。群的所有實(shí)驗(yàn)仿真結(jié)果均取程序運(yùn)行20次后的平均值。實(shí)驗(yàn)結(jié)果如下:
授權(quán)機(jī)構(gòu)的初始化算法的開銷為5E+P,其中E是指一次冪指數(shù)運(yùn)算,P是指一次雙線性配對操作,初始化算法時(shí)間復(fù)雜度與DFA中字符集字符的數(shù)量無關(guān)。授權(quán)機(jī)構(gòu)初始化時(shí)間隨DFA中字符集字符數(shù)量的關(guān)系如圖2所示,隨著字符集中字符數(shù)量的增加,授權(quán)機(jī)構(gòu)初始化時(shí)間不會(huì)隨之增長,滿足大屬性集合的性質(zhì)。
圖2 授權(quán)機(jī)構(gòu)初始化算法時(shí)間開銷Fig.2 Time cost of AuthSetup algorithm
方案在初始化、加密、密鑰生成和解密4個(gè)算法消耗的計(jì)算時(shí)間如圖3所示。假設(shè)用戶的各個(gè)機(jī)構(gòu)訪問策略不變,同時(shí)用于加密的屬性字符串長度依次增加。從圖3可以看出,密鑰生成算法和授權(quán)時(shí)間開銷基本是固定的,原因在于該算法計(jì)算開銷與屬性字符串無關(guān);而數(shù)據(jù)加密和數(shù)據(jù)解密時(shí)間開銷與屬性字符串長度成線性增長關(guān)系。
圖3 方案的時(shí)間開銷Fig.3 Time cost of the proposed scheme
本文對傳統(tǒng)的基于DFA訪問結(jié)構(gòu)的ABE方案進(jìn)行改進(jìn),提出了一種基于DFA訪問結(jié)構(gòu)的多授權(quán)ABE方案,解決了單授權(quán)機(jī)構(gòu)下密鑰泄露問題。所提方案不僅支持系統(tǒng)擴(kuò)展性,還能夠抵抗非法用戶和授權(quán)機(jī)構(gòu)的共謀攻擊,增強(qiáng)了系統(tǒng)的安全性。此外,基于合數(shù)階雙線性群的子群判斷假設(shè)問題,證明了方案在隨機(jī)預(yù)言機(jī)模型下滿足自適應(yīng)安全,并通過仿真實(shí)驗(yàn)測試了所提方案的計(jì)算開銷。本文所提的方案構(gòu)建在計(jì)算開銷比較大的合數(shù)階雙線性群,如何在計(jì)算效率更高的素?cái)?shù)階雙線性群上構(gòu)建基于DFA訪問結(jié)構(gòu)的自適應(yīng)安全的多授權(quán)ABE方案是下一步要進(jìn)行的工作。