賴霖漢,繆祥華,2*
(1.昆明理工大學(xué) 信息工程與自動(dòng)化學(xué)院,云南 昆明 650500; 2.云南省計(jì)算機(jī)技術(shù)應(yīng)用重點(diǎn)實(shí)驗(yàn)室,云南 昆明 650500)
隨著云計(jì)算、云存儲(chǔ)技術(shù)的發(fā)展,越來越多的資源和信息需要多方位地進(jìn)行細(xì)粒度的共享,這需要數(shù)據(jù)擁有者能維護(hù)一對(duì)多關(guān)系的能力,并向多個(gè)未知用戶提供安全的服務(wù)。因此,2005年,SAHAI和WATERS[1]等人提出了基于屬性的密碼體制(Attribute-Based Encryption,ABE),將用戶屬性合并為其密碼原語作為輸入?;趯傩缘拿艽a體制分為兩種,一種是2006年GOYAL[2]等人提出的KP-ABE(Key Policy Attribute-Based Encryption)密碼體制,策略與密鑰相關(guān)聯(lián),適用于審計(jì)日記;另一種是2007年BETHENCOURT[3]等人提出的CPABE(Ciphertext Policy Attribute-Based Encryption)密碼體制,策略與密文相關(guān)聯(lián),更適用于云存儲(chǔ)中進(jìn)行細(xì)粒度的共享。2011年WATERS[4]等人提出了完備的基于密文策略的屬性密碼體制。然而,基于密文策略的屬性密碼體制被提出后,仍存在訪問結(jié)構(gòu)不夠靈活、計(jì)算效率不高以及單一屬性授權(quán)中心易失效的問題。
針對(duì)訪問結(jié)構(gòu)的問題,現(xiàn)提出的幾種訪問結(jié)構(gòu)類型包括閾值門、LSSS矩陣、分布矩陣以及有序二叉決策圖(Ordered Binary Decision Diagram,OBDD)等。盡管這些訪問結(jié)構(gòu)都可以成功地表示訪問策略,但是效率和靈活性并不理想。因此,需要更加靈活和高效的訪問結(jié)構(gòu)。對(duì)此,加入權(quán)重屬性的設(shè)計(jì)。在權(quán)重屬性密碼體制的研究中,文獻(xiàn)[5]首次在CP-ABE中引入了屬性權(quán)重的概念,打破了屬性的二進(jìn)制模式。文獻(xiàn)[6]提出了另一種密文策略的權(quán)重屬性密碼體制,該方案支持門限訪問結(jié)構(gòu),更適用于云計(jì)算環(huán)境。然而,增加權(quán)重屬性必然會(huì)增加一定的存儲(chǔ)空間,因此需要進(jìn)一步優(yōu)化訪 問結(jié)構(gòu)。
文獻(xiàn)[7]利用線性秘密共享方案中的矩陣?yán)碚摚s減矩陣,從而進(jìn)行了屬性約簡,以達(dá)到提高整體效率的目的。文獻(xiàn)[8]則是在訪問樹的結(jié)構(gòu)上解決了需要同時(shí)分享多個(gè)數(shù)據(jù)時(shí),這些數(shù)據(jù)存在共享子策略,導(dǎo)致共享子策略所對(duì)應(yīng)的密文重復(fù)計(jì)算的問題。2017年,LI等人[9]提出將OBDD作為一種訪問結(jié)構(gòu)來構(gòu)建一個(gè)高效的、有表現(xiàn)力的CP-ABE方案。文獻(xiàn)[10]提供了一種基于OBDD的外包CPABE方案,具有高效的用戶撤銷能力,將高計(jì)算負(fù)載外包給云服務(wù)提供商,不泄露文件內(nèi)容和密鑰。文獻(xiàn)[11]基于OBDD訪問結(jié)構(gòu),利用橢圓曲線的點(diǎn)乘計(jì)算代替雙線性映射。但是用戶的本地計(jì)算都無法與計(jì)算能力強(qiáng)大的霧節(jié)點(diǎn)相比。
因此,為了降低用戶端的計(jì)算開銷,將計(jì)算遷移到靠近用戶端的霧節(jié)點(diǎn)。霧節(jié)點(diǎn)在用戶和云端之間起到承上啟下、提高效率的作用,有效節(jié)省了用戶端的網(wǎng)絡(luò)開銷,同時(shí)還避免了云平臺(tái)的網(wǎng)絡(luò)性能瓶頸。文獻(xiàn)[12]提出一種安全性更高的基于屬性的密碼體制,但由于該方案為多認(rèn)證中心方案,認(rèn)證交互次數(shù)過多,并不適合霧計(jì)算環(huán)境。文獻(xiàn)[13]提出了基于屬性加密的霧協(xié)同云數(shù)據(jù)共享方案,利用云霧協(xié)同的方式充分地體現(xiàn)了霧節(jié)點(diǎn)的靈活性,但該密碼體制并未考慮在標(biāo)準(zhǔn)模型下的安全性。文獻(xiàn)[14]的方案利用了輕量級(jí)的霧計(jì)算的幫助,層次化的外包方案大大地提高了計(jì)算的效率,但是其方案存在不夠靈活的問題。文獻(xiàn)[15]提出了霧計(jì)算中支持計(jì)算外包的訪問控制方案,利用線性結(jié)構(gòu)有效地證明了計(jì)算外包的可行性,但是仍然存在單一屬性授權(quán)中心的威脅。
在單一屬性授權(quán)的ABE方案[16]中,屬性授權(quán)機(jī)構(gòu)要為所有用戶生成屬性密鑰,很容易受到集中攻擊并且存在性能瓶頸。為了解決這一問題,文獻(xiàn)[17]設(shè)計(jì)了基于區(qū)塊鏈的多授權(quán)訪問控制方案,成功解決傳統(tǒng)CP-ABE單一授權(quán)機(jī)構(gòu)存在的問題。
綜合以上研究,本文提出基于霧計(jì)算的權(quán)重OBDD訪問結(jié)構(gòu)屬性密碼體制。該方案有效地利用霧計(jì)算的特點(diǎn)降低了用戶端的計(jì)算量,還利用權(quán)重OBDD的訪問結(jié)構(gòu)提高訪問策略的靈活性,采用多屬性授權(quán)中心方式解決了單一授權(quán)中心面臨的威脅。
二叉決策圖(Binary Decision Diagram,BDD)是一個(gè)僅有一個(gè)根節(jié)點(diǎn)的有向無環(huán)圖,可用于高效地表示布爾函數(shù)。假設(shè)訪問結(jié)構(gòu)中出現(xiàn)的所有屬性編號(hào)為i,0≤i≤n-1,n為屬性總數(shù),U為整個(gè)屬性的集合。以預(yù)設(shè)定的順序編號(hào)為Xi,0≤i≤n-1。轉(zhuǎn)換為布爾函數(shù)為f(x0, x1,…, xn-1),而所有的布爾函數(shù)都可以轉(zhuǎn)換為變量之間基本邏輯關(guān)系,如AND、OR、NOT等組合。在此二叉決策圖中,若存在一條有效路徑π以規(guī)定次序出現(xiàn),即x0, x1,…, xn-1,則稱為該BDD為布爾函數(shù)f(x0, x1,…,xn-1)的有序二叉決策 圖(Ordered Binary Decision Diagram,OBDD)。對(duì)于OBDD訪問結(jié)構(gòu)的實(shí)現(xiàn),用于表示布爾函數(shù)的對(duì)象描述的構(gòu)造是通過一個(gè)簡單的遞歸過程完成的。利用香農(nóng)展開定理,在構(gòu)造之后,包含在OBDD中的所有節(jié)點(diǎn)應(yīng)該被編號(hào)以獲得最終表達(dá)式:
式中:ID是包含所有非終端節(jié)點(diǎn)的序列號(hào)的集合,U是由出現(xiàn)在訪問結(jié)構(gòu)中的所有屬性形成的集合;Nodeiid是一個(gè)元組
圖1 布爾函數(shù)為f(x0, x1, x2, x3)=x0+x1x2+x1x3+x2x3的OBDD表示
基于霧計(jì)算的權(quán)重OBDD訪問結(jié)構(gòu)屬性密碼體制系統(tǒng)模型主要由中央屬性授權(quán)中心、屬性授權(quán)中心、霧節(jié)點(diǎn)、云存儲(chǔ)平臺(tái)、數(shù)據(jù)擁有者以及數(shù)據(jù)使用者組成,系統(tǒng)模型如圖2所示。中央屬性授權(quán)中心的主要工作是創(chuàng)建系統(tǒng)的公共參數(shù)和主密鑰,管理權(quán)重分配、數(shù)據(jù)擁有者及數(shù)據(jù)使用者。屬性授權(quán)中心主要分擔(dān)中央屬性授權(quán)中心的風(fēng)險(xiǎn)并為其服務(wù),生成屬性密鑰。霧節(jié)點(diǎn)具有存儲(chǔ)和計(jì)算能力,填補(bǔ)用戶和云端之間的空白。它實(shí)時(shí)處理數(shù)據(jù)擁有者的訪問請(qǐng)求,負(fù)責(zé)對(duì)數(shù)據(jù)擁有者的請(qǐng)求進(jìn)行外包加解密,并將結(jié)果返回。云存儲(chǔ)平臺(tái)由各大云平臺(tái)提供,能存儲(chǔ)海量信息,為數(shù)據(jù)共享提供交互場所。數(shù)據(jù)擁有者是擁有資源且有分享需求的用戶。數(shù)據(jù)使用者是從云平臺(tái)合法獲取數(shù)據(jù)的用戶。
圖2 基于霧計(jì)算的權(quán)重OBDD訪問結(jié)構(gòu)屬性密碼體制的系統(tǒng)模型
所提出的基于霧計(jì)算的權(quán)重OBDD訪問結(jié)構(gòu)屬性密碼體制方案包括4個(gè)步驟,分別是系統(tǒng)初始化算法(Setup)、密鑰生成算法(Key Gen)、數(shù)據(jù)加密算法(Encrypt)以及數(shù)據(jù)解密算法(Decrypt),各個(gè)算法的具體描述如下。
2.2.1 系統(tǒng)初始化算法(Setup)
系統(tǒng)初始化算法包含中央屬性授權(quán)中心初始化(CA setup),設(shè)置公共參數(shù)、權(quán)重及主密鑰,然后由屬性授權(quán)中心(AA setup)設(shè)置屬性的正負(fù)值及其對(duì)應(yīng)的屬性密鑰。
(1)中 央 屬 性 授 權(quán) 中 心 階 段CASetup(1γ, A)→(MK,PP,ai(w))。該算法由中央屬性授權(quán)中心執(zhí)行,輸入安全參數(shù)1γ,設(shè)有n個(gè)屬性,屬性授權(quán)
2.2.3 數(shù)據(jù)加密階段(Encrypt)
2.2.4 數(shù)據(jù)解密算法(Decrypt)
霧節(jié)點(diǎn)解密階段FogDecrypt(CT,SKuser)→ (Ek(M)):由霧節(jié)點(diǎn)執(zhí)行該算法數(shù)據(jù)使用者擁有的屬性集Auser必須滿足數(shù)據(jù)擁有者制定的訪問策略。具體的解密階段可以通過以下遞歸算法實(shí)現(xiàn)。
Step 1:尋找編號(hào)為2的節(jié)點(diǎn),即根節(jié)點(diǎn),并將其定義為當(dāng)前節(jié)點(diǎn)。
Step 2:提取當(dāng)前節(jié)點(diǎn)中包含的信息即Nodeiid,i(w),如 果i∈A∩i(bi)≥i(w)令i為—t, 為正值,即跳轉(zhuǎn)到Step3繼續(xù)執(zhí)行。如果i∈ A∩i(bi)≤i(w)∪i?A,令i為負(fù)值。跳轉(zhuǎn)到Step 4繼續(xù)執(zhí)行。
Step 3:搜索當(dāng)前節(jié)點(diǎn)的1分支節(jié)點(diǎn)。
(1)如果1分支節(jié)點(diǎn)是終端節(jié)點(diǎn)0,則終止遞歸算法并返回解密失敗。
(2)如果1分支節(jié)點(diǎn)是終端節(jié)點(diǎn)1,則算法轉(zhuǎn)到Step 5繼續(xù)執(zhí)行。
(3)如果1分支節(jié)點(diǎn)是非終端節(jié)點(diǎn),則將其定義為當(dāng)前節(jié)點(diǎn),算法轉(zhuǎn)到Step 2繼續(xù)執(zhí)行。
Step 4:搜索當(dāng)前節(jié)點(diǎn)的0分支節(jié)點(diǎn)。
(1)如果0分支節(jié)點(diǎn)是終端節(jié)點(diǎn)0,則終止遞歸算法并返回解密失敗。
(2)如果0分支節(jié)點(diǎn)是終端節(jié)點(diǎn)1,則算法轉(zhuǎn)到Step 5繼續(xù)執(zhí)行。
(3)如果0分支節(jié)點(diǎn)是非終端節(jié)點(diǎn),則將其定義為當(dāng)前節(jié)點(diǎn),算法轉(zhuǎn)到Step 2繼續(xù)執(zhí)行。
Step 5:如若數(shù)據(jù)使用者擁有的屬性集滿足某一條有效路徑Ri,那么為了恢復(fù)出明文M可以計(jì)算:
命題:若存在一個(gè)算法Z可以調(diào)用S來解決DBDH問題,以不可忽略的優(yōu)勢Y來攻破該系統(tǒng)。存在則為真,不存在則為假。
證明:用一個(gè)攻擊者和挑戰(zhàn)者之間的安全游戲來描述本方案的安全性,過程描述如下。
(2)詢問階段1。攻擊者可以不限次數(shù)地向挑戰(zhàn)者詢問屬性集合A1,A2…私鑰,本文采用中央屬性授權(quán)機(jī)構(gòu)和屬性授權(quán)機(jī)構(gòu)兩方隨機(jī)選擇秘?cái)?shù)r∈ZP
*計(jì)算生成用戶私鑰
挑戰(zhàn)者以整體形式回復(fù)攻擊者的私鑰請(qǐng)求,并公開發(fā)給攻擊者。
(3)挑戰(zhàn)階段。攻擊者隨機(jī)選擇兩個(gè)長度相等的明文組合{M0, M0}和{M1, M1}發(fā)送給挑戰(zhàn)者。另外,攻擊者給出對(duì)應(yīng)的挑戰(zhàn)訪問控制結(jié)構(gòu){T,T*}。且一定不能與詢問階段1中所查詢的屬性集合均相同。同時(shí)將{T,T*}也發(fā)送給挑戰(zhàn)者。挑戰(zhàn)者隨機(jī)拋擲一枚硬幣利用{T,T*},分別加密挑戰(zhàn)明文{M0,M0},并計(jì)算密文
(4)詢問階段2。攻擊者可以向挑戰(zhàn)者再次詢問其他屬性集合的私鑰,但同樣地,不能與之前所詢問的訪問結(jié)構(gòu)相同。
(5)估測。攻擊者給出一個(gè)關(guān)于b的猜測b'∈{0,1},如果b'∈{0,1}則稱攻擊者贏得了此游戲。攻擊者在上述游戲中的優(yōu)勢定義為
結(jié)論:不存在一個(gè)算法Z可以調(diào)用S來解決DBDH問題,以一個(gè)不可忽略的優(yōu)勢贏得上述游戲。命題為真,本部分所提出的方案在選擇明文攻擊下是安全的。
將該方案與現(xiàn)有方案進(jìn)行對(duì)比,包括功能分析、存儲(chǔ)成本及計(jì)算成本。分析過程中所用到的符號(hào)定義如表1所示。
表1 符號(hào)定義表
方案所具有的功能分析如表2所示。本文考慮了是否是單一授權(quán)中心、加解密外包、訪問結(jié)構(gòu)類型及是否設(shè)計(jì)權(quán)重幾個(gè)方面??梢钥吹剑墨I(xiàn)[11]和文獻(xiàn)[17]是沒有將加解密操作外包出去的,其他方案都將加解密操作部分外包出去。而文獻(xiàn)[11]和[14]的方案均不具備抗單一授權(quán)中心易失效的能力。其他方案均是多屬性授權(quán)中心。在權(quán)重設(shè)計(jì)方面,除了本方案實(shí)現(xiàn)了權(quán)重的設(shè)計(jì),其他方案均不具備屬性權(quán)重的功能。并且本文方案和文獻(xiàn)[11]均采用了OBDD訪問結(jié)構(gòu)。其他對(duì)比文獻(xiàn)的方案均沒有實(shí)現(xiàn)OBDD訪問策略。
表2 功能分析對(duì)比表
將本文方案與另外文獻(xiàn)方案進(jìn)行了存儲(chǔ)成本上的對(duì)比,對(duì)比結(jié)果如表3所示。本文方案的中央屬性授權(quán)中心CA的存儲(chǔ)空間主要是增加了權(quán)重值和主密鑰,而屬性授權(quán)中心AA的存儲(chǔ)空間主要來自于屬性密鑰。本方案相對(duì)于單一屬性授權(quán)機(jī)構(gòu)的文獻(xiàn)[11]和文獻(xiàn)[14]減少了CA的存儲(chǔ)成本。但相對(duì)于都是多屬性授權(quán)機(jī)構(gòu)的文獻(xiàn)[15]和文獻(xiàn)[17]增加了CA屬性權(quán)重的存儲(chǔ)空間。表中各方案的密文長度都會(huì)隨著相關(guān)屬性的增加呈現(xiàn)線性關(guān)系。但是,隨著相關(guān)屬性的增加,本文方案與文獻(xiàn)[11]方案所采用的OBDD訪問策略所生成的密文存儲(chǔ)成本是少于其他方案的。霧節(jié)點(diǎn)Fog的存儲(chǔ)空間主要來自于OBDD訪問結(jié)構(gòu)和公鑰,本方案的數(shù)據(jù)擁有者的存儲(chǔ)空間主要是對(duì)稱加密的密鑰|k|。文獻(xiàn)[11]和文獻(xiàn)[17]都沒有使用霧節(jié)點(diǎn)進(jìn)行加密外包,不考慮霧節(jié)點(diǎn)的存儲(chǔ)成本;其他方案和本文方案都利用了霧節(jié)點(diǎn)進(jìn)行加解密外包,霧節(jié)點(diǎn)存儲(chǔ)公鑰以加密數(shù)據(jù),這樣數(shù)據(jù)擁有者端的存儲(chǔ)成本大大降低,明顯少于文獻(xiàn)[11]和文獻(xiàn)[17]。數(shù)據(jù)訪問者DU的存儲(chǔ)空間依賴于其本身擁有的屬性個(gè)數(shù)線性正相關(guān)的私鑰。
表3 各方案存儲(chǔ)成本比較
將本文方案與其他文獻(xiàn)進(jìn)行了計(jì)算成本的比較,結(jié)果如表4所示。由于文獻(xiàn)[11]和文獻(xiàn)[17]并未采用外包計(jì)算的方式,所以計(jì)算效率遠(yuǎn)不如其他三個(gè)方案,在這里就不予比較。文獻(xiàn)[14]和文獻(xiàn)[15]均采用訪問樹的結(jié)構(gòu)進(jìn)行加解密,由于文獻(xiàn)[14]是單授權(quán)機(jī)構(gòu),所以需要屬性中心計(jì)算所有屬性的密鑰。在加密過程中,所有方案的加密計(jì)算消耗都會(huì)隨與密文相關(guān)屬性數(shù)量的增加而線性增加。但由于本方案采用了權(quán)重屬性,在密鑰生成和加解密上會(huì)多為每一個(gè)屬性增加一次計(jì)算量。但相對(duì)于本方案的OBDD訪問結(jié)構(gòu),在數(shù)據(jù)用戶屬性數(shù)量較高的情況下,本文方案的增加幅度更小。
表4 計(jì)算成本比較
本文提出了基于霧計(jì)算的權(quán)重OBDD訪問結(jié)構(gòu)屬性密碼體制研究。本文所提的方案首先考慮了計(jì)算效率的問題,通過將計(jì)算外包給霧節(jié)點(diǎn)從而大大減少了用戶端的計(jì)算量。其次,本方案采用了權(quán)重的設(shè)計(jì),在OBDD訪問結(jié)構(gòu)的基礎(chǔ)上提高了細(xì)粒度的表達(dá)能力。屬性存儲(chǔ)空間更加節(jié)約,同時(shí)采用多屬性授權(quán)中心的方式降低了被集中攻擊的風(fēng)險(xiǎn)。最后證明了所提方案基于DBDH假設(shè)在明文攻擊下的安全性。通過功能分析、存儲(chǔ)成本和計(jì)算成本3個(gè)方面證明方案具有較高的系統(tǒng)效率和使用 價(jià)值。