馬佳佳,張志強,曹素珍,竇鳳鴿,丁曉暉,王彩芬
(1.西北師范大學 計算機科學與工程學院,蘭州 730070;2.深圳技術大學 大數據與互聯網學院,廣東 深圳 518118)
2012 年,BONOMI 等[1]正式提出了霧計算,使用網絡中的邊緣設備來進行數據的存儲和運算,緩解中心網絡設備的壓力。作為新一代的分布式計算[2],霧計算具有低延時、分布廣泛、帶寬壓力小、調度靈活等優勢,未來將被廣泛應用于物聯網和工業行業等領域中[3]。
2005 年,SSHAI 等[4]提出了屬性基加密(Attribute-Based Encryption,ABE)技術,將屬性合并為其密碼原語的輸入。屬性基加密分為密鑰策略的屬性基加密(Key-Policy Attribute-Based Encryption,KP-ABE)[5]和密文策略的屬性基加密(Ciphertext-Policy Attribute-Based Encryption,CP-ABE)[6]兩種。在CP-ABE 下訪問策略與密文相關聯,更加符合實際需求[7]。2014 年,FAN 等[8]提出了權重屬性的概念,將二進制狀態表示的屬性值擴展到任意狀態,使其更廣泛地應用于實際環境中,文獻[9]為減輕用戶端的解密運算壓力,以密鑰分割的方式將運算工作外包給霧節點,文獻[10]將終端設備中部分復雜的加解密運算外包給霧節點。上述方案都未考慮單一授權中心單點失效的問題,在單授權的ABE方案[11-13]中,授權機構要為所有用戶生成屬性密鑰,容易受到集中攻擊并且存在性能瓶頸。為解決這一問題,文獻[14]提出多授權的ABE 方案,有效地解決了單授權機構單點失效的問題。文獻[15]為解決傳統CP-ABE單一授權機構存在的問題,設計了基于區塊鏈的多授權訪問控制方案。文獻[16]考慮到用戶系統用戶的合法性問題,將惡意用戶追蹤機制引入到了多機構中。為了降低用戶的計算開銷,文獻[17]提出支持計算外包的多授權CP-ABE 訪問控制方案,將部分解密計算外包給代理服務器;文獻[18]提出了基于密文策略的基于屬性的加密方案,將部分解密外包給云服務器;文獻[19]采用多機構屬性基加密方案,除了能夠滿足機密性與細粒度性之外,還提供了匿名認證;文獻[20]使用邊緣霧節點來承擔大部分的用戶解密運算操作,有效節省了用戶終端資源。
本文提出基于霧節點的分布式權重屬性CP-ABE外包解密方案。該方案通過霧節點實現外包解密計算,驗證外包結果的正確性。為每個屬性定義權重值,默認最小權重值,當用戶屬性值小于最小權重值時,不能訪問密文,使屬性從二進制狀態“0”和“1”(即“滿足”和“不滿足”)擴展到任意狀態,從而簡化訪問結構,減少密文的存儲開銷和加密中的計算成本。
本文方案中的部分符號說明如表1 所示。

表1 符號說明Table 1 Symbol description
定義1 設G、GT是兩個階為素數p的乘法循環群,g是G的生成元,e為雙線性映射e:G×G→GT。隨機選取a,s,b1,b2,…,bq?Zp,公開:

判定性q?parallel BDHE 假設是指不存在多項式時間的算法以不可忽略的優勢區分和GT中的某一隨機元素R。
定義2每個參與方P上的線性秘密共享方案(Linear Secret Sharing Scheme,LSSS)Π。
存在一個l×n的矩陣M稱為Π 的共享生成矩陣,對于所有的i=1,2,…,l,定義M的第i行Mi被標識為參與方ρ(i),同時有列向量v=(s,r2,r3,…,rn),其中s?Zp是要共享的秘密值,r2,r3,…,rn?Zp是隨機數,則根據秘密共享方案Π,向量M˙v是l的秘密份額,并且(M˙v)i屬于ρ(i)。
假定Π 的訪問結構為A,令授權集合S?A,定義I?{1,2,…,l}且I={i:ρ(i)?S}。存在常量{ωi?Zp}i?I,對于任意合法共享秘密{λi},有(Mi˙v)=ε˙v=s,其中ε=(1,0,…,0)。{ωi}在共享生成矩陣M的大小相關的時間多項式中,約定向量(1,0,…,0)是任何線性秘密共享方案的目標向量。對于M中任何滿足的行集I,得到目標向量在I的跨度內,而任何未經授權的行集I,目標向量不在集合I的行的跨度內,并且存在一個向量ω,使得ω˙(1,0,…,0)=-1,ω˙Mi=0。
本文方案由6個實體構成,即云服務商(Cloud Service Provider,CSP)、中央授權機構(Center Authority,CA)、屬性授權機構(Attribute Authority,AA)、霧節點(Fog)、數據屬主(Data Owner,DO)以及數據用戶(Data User,DU)。系統模型如圖1 所示,其中,m 表示明文,CT 表示密文。

圖1 系統模型Fig.1 System model
系統模型主要包括以下部分:
1)云服務商(CSP)。半可信云服務提供商,負責存儲密文。
2)中央授權機構(CA)。可信的第三方,為整個系統生成公共參數。
3)屬性授權機構(AA)。管理用戶屬性集,并為用戶生成密鑰。不同的授權機構為每個用戶生成唯一的全局身份標識符GID,在為用戶生成密鑰時,用戶GID 與屬性綁定在一起,同時授權機構維護用戶的屬性列表。
4)霧節點(Fog)。霧節點是誠實且好奇的,主要負責解密DU 從CSP 下載的部分密文。
5)數據屬主(DO)。將加密的數據文件上傳至CSP,在加密時,DO 指定一個滿足用戶屬性的訪問結構,然后將數據文件加密成密文上傳至CSP。
6)數據用戶(DU)。自由地訪問CSP 中的密文數據資源,當DU 能夠滿足訪問策略時,才能夠成功地解密密文數據。
設e為G×G→GT的一個雙線性映射。定義G、GT為素數階p的雙線性群,生成元為g。選擇哈希函數H:{0,1}*→G,將身份ID 映射到中。
1)GlobalSetup(k)→PP
全局初始化算法由CA 執行。該算法輸入安全參數k,定義全局屬性A={a1,a2,…,an}及權重集W={w1,w2,…,wn},輸出公共參數PP={G,GT,A,W,H,g}發送給授權中心。
2)AuthoritySetup(PP)→(PK,MSK)
輸入公共參數PP,由屬性授權機構運行該算法。每個授權機構管理用戶的不同屬性,對其管理的每個屬性i,隨機選取兩個數αi,yi?Zp,生成系統的公鑰PK=和主密鑰MSK={αi,yi}。其中,系統公鑰PK 是公開的,主密鑰MSK 是保密的。
3)KeyGen(MSK,GID,S)→(TSK,DSK)
輸入系統主密鑰MSK、用戶身份GID 以及用戶屬性集合S,AA 為用戶GID 的權重屬性i生成屬性密鑰,其權重為wk?W,并將該屬性i記錄在與其身份對應的屬性列表中。對于屬性i?S,隨機選取a,t,z?Zp,計算L=gt/z,Ki,GID=,生成霧節點的轉換密鑰TSK=(PK,L,{Ki,GID}),設置用戶驗證密鑰以及用戶私鑰DSK=(z,TSK)。
4)Encrypt(PK,m,(M,ρ))→CT
輸入系統公鑰PK、消息m以及LSSS訪問策略(M,ρ),輸出密文CT。該算法由數據屬主運行,M為l×n的矩陣,Mi為M的第i行,函數ρ將矩陣M的每一行映射到一個屬性。隨機選取v=(s,r2,r3,…,rn)?,λi=Miv,i?(1,l),s為共享秘密值。隨機選取r1,r2,…,rl?Zp,計算C=m˙e(g,g)αis,C′=gs/z,。輸出密文CT=((M,ρ),C,C′,Ci,Di,i?(1,l))。
5)FogParDec(TSK,CT)→parCT
輸入S對應的TK 以及(M,ρ)的密文CT,該算法由霧節點解密。若S滿足訪問結構,則X={x|ρ(x)?S且wi≤wk},其中,wi是訪問矩陣M第x行Mx對應屬性的權重,wk是用戶該屬性的權重。存在{cx?Zp}x?X,對任意合法分享{λi},有×(Miv)=s。令k=ρ(x)表示訪問矩陣M第x行Mx所對應屬性,x?[1,l]。對所有x?[1,l]進行分類計算,如果k?S或k?S,wi>wk,則返回┴;如果k?S且wi≤wk,對于?x?X,計算半解密密文:

6)UserVerParDec(C′,SKu,parCT)→CT′
用戶驗證階段由授權中心執行,輸入部分密文C′、用戶的驗證密鑰SKu以及半解密密文parCT,計算:

7)Decrypt(DSK,C,CT′)→m
用戶解密消息m,輸入用戶密鑰DSK,密文構件C、CT′,計算:

定義3在訪問結構(M*,ρ*)下,如果存在多項式時間的敵手Α 以ε的優勢攻破本文方案,那么存在另一個敵手B 以的優勢解決判定性q?parallelBDHE假設,其中,M*是l*×n*的矩陣,l*,n*≤q。
證明挑戰者B 首先選取兩個乘法循環群G1、G2,g為G1的生成元,以及雙線性映射G1×G1→G2,隨機選取a,s,b1,…,bq?Zp,公開:



階段2與階段1 類似。
猜測Α 輸出對β的猜測β′。如果β′=β,則Β 輸出μ′=0,表示,否則Z為群G1中的隨機元素。

表2 是文獻[9,15-16]方案與本文方案的特征比較分析。通過比較可以發現,本文最大的優勢在于使用加權屬性簡化訪問結構,從而減少系統的計算開銷。

表2 相關方案特征比較Table 2 Comparison of characteristics of relevant schemes
表3 為方案計算開銷比較。令E1和E2分別是群G和GT上的指數運算,P表示雙線性運算的次數,|M|表示滿足訪問結構的屬性個數,|S|表示用戶屬性個數,|AAA|表示加密時授權機構的個數,|I|表示滿足訪問結構屬性個數。

表3 相關方案計算開銷比較Table 3 Calculation of cost comparison of relevant schemes
為了更直觀地說明本文方案的優勢,對本文方案與現有方案進行比較。實驗環境為Intel?CoreTMi5-8250UCPU@1.60 GHz,1.80 GHz 處理器,8.00 GRAM的個人筆記本電腦,使用語言為Java,算法實現基于JPBC(Java Pairing-Based Cryptography Library)。
圖2 所示是隨著訪問結構屬性個數的變化數據擁有者在加密密文時所消耗的時間,本文方案因為引入權重屬性,簡化了訪問結構,所以其加密階段的計算開銷小于文獻[15-16]方案。圖3 所示是在解密階段用戶屬性滿足密文中包含的屬性個數變化時終端用戶所消耗的時間。在用戶解密階段,本文方案將部分解密運算外包給了霧節點,而文獻[15-16]方案解密運算由用戶獨立完成,因此本文方案用戶的計算開銷遠遠小于[15-16]方案。圖4 所示是隨著用戶屬性的變化,多個授權機構為用戶生成密鑰所消耗的時間,多授權機構分擔不同的屬性的密鑰工作,避免了單一機構密鑰分發單點失效的問題。通過本文方案與文獻[15-16]方案的加解密以及密鑰生成的計算開銷對比可以發現,因為本文引入權重屬性,并將部分解密外包給了霧節點,所以本文方案在加密和用戶解密時的計算開銷優于文獻[15-16]方案。

圖2 數據擁有者的計算開銷Fig.2 Computational overhead of data owner

圖3 終端用戶的計算開銷Fig.3 Computing overhead of end user

圖4 密鑰生成的計算開銷Fig.4 Computational overhead of key generation
本文提出一種基于霧節點的權重屬性CP-ABE 方案。利用分布式授權解決單授權機構單點失效的問題,引入權重屬性簡化訪問結構,并且通過霧節點進行部分解密,減少了終端用戶的計算開銷。基于判定性q?parallel BDHE 問題,在隨機預言機模型下證明了本文方案的安全性。實驗結果表明,該方案在加解密以及密鑰生成部分具有更小的計算開銷。下一步將考慮在標準模型下設計屬性加密方案,以實現更加安全高效的基于霧節點的分布式屬性基加密方案。