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