孫磊,趙志遠,王建華,朱智強
(1. 戰略支援部隊信息工程大學三院,河南 鄭州 450001;2. 61516部隊,北京 100062)
密碼學可以保證信息的完整性、機密性、不可抵賴性、可控性及可用性[1]。屬性基加密(ABE,attribute-based encryption)[2]通過用戶屬性的差異實現數據的細粒度訪問控制及靈活共享[3]。目前,ABE方案依據訪問結構位置的差異主要分為密鑰策略屬性基加密(KP-ABE, key-policy ABE)方案[4]和密文策略屬性基加密(CP-ABE, ciphertext-policy ABE)方案[5]。KP-ABE方案中,密文和屬性相關聯,私鑰和訪問結構相關聯,當且僅當密文的屬性滿足密鑰的訪問結構時,用戶才能解密密文以恢復出明文消息;CP-ABE方案中,私鑰和屬性相關聯,密文和訪問結構相關聯,當且僅當與私鑰關聯的屬性滿足與密文關聯的訪問結構時,用戶才能解密密文,恢復出明文消息。CP-ABE類似于傳統訪問控制中的基于角色的訪問控制,指定具有某些屬性的用戶可以訪問該密文,實現了“一對多”的加密模式,因此,CP-ABE在云存儲模式(大量用戶、海量數據,且解密方未知)下能夠發揮極大價值,受到學術界和產業界的廣泛關注,成為當前密碼理論的研究熱點[6]。
云存儲系統中大量用戶共享部分相同屬性導致撤銷某一個用戶的屬性時往往會影響其他相關用戶,因此研究如何撤銷用戶屬性成為一個富有挑戰且具有重要意義的課題[7]。Pirretti等[8]第一次提出了屬性可撤銷的 ABE方案,該方案為系統所有屬性指定版本密鑰,并定期更新屬性的版本密鑰,而被撤銷的屬性無法完成密鑰更新以此達到屬性撤銷的目的。在這種撤銷方法中,當未達到更新時刻時,即使撤銷用戶屬性,也不能立刻實現屬性撤銷,這個時間間隙被稱為脆弱性窗口,其影響方案的前向安全和后向安全[9]。
為解決上述問題,Ibraimi等[10]和Yu等[11]分別提出了屬性立即撤銷的ABE方案,但這2種方案無法實現數據的細粒度訪問控制。Hur等[12]提出了一種支持屬性級用戶撤銷的 ABE方案,該方案能夠實現實時撤銷,不存在脆弱性窗口,但該方案無法抵抗用戶合謀攻擊。Yang等[13]提出了一種支持屬性級用戶撤銷的 ABE方案,該方案中數據擁有者不需要實時在線參與撤銷工作,且具有較高的計算效率,但該方案在隨機預言機模型下完成安全性證明,而隨機預言機模型是一種較弱的安全模型。Yang等[14]提出了另外一種支持屬性撤銷的ABE方案中,屬性授權機構需要更新密文,同時生成新版本的密鑰、更新密鑰和私鑰,這些計算工作給屬性授權機構帶來嚴重的計算負擔。馬華等[15]提出了一種支持屬性撤銷的 ABE方案,該方案基于密鑰加密密鑰樹實現了密鑰的更新,且在解密過程中,將部分解密運算外包給解密服務器,減少了用戶的計算代價。馬華等[15]聲稱該方案能夠抵抗用戶合謀攻擊,但通過分析發現,該方案無法抵抗撤銷用戶與未撤銷用戶的合謀攻擊。Shiraishi等[16]提出了一種屬性可撤銷的 ABE方案,但是其基于復雜假設完成安全證明導致安全性較弱。
目前,移動終端的弱計算能力與 ABE方案解密過程中的復雜計算過程相矛盾。因此,將 ABE方案的復雜計算外包給云服務商是一種切實可行的解決辦法。Green等[17]提出了一種計算外包ABE方案,該方案通過云服務商將原始密文轉變成ElGamal型密文,數據用戶通過一次指數運算就可獲得明文。Lai等[18]和Li等[19]分別提出了可驗證外包解密的ABE方案。另外,Li等[19]所提方案的密文長度與方案所采用的訪問結構復雜度無關。
文獻[12,15]中,一個群中的用戶共享相同的屬性群密鑰,因此已被撤銷的用戶和未被撤銷的用戶可以發起合謀攻擊。針對上述問題,本文提出了一種支持屬性立即撤銷且解密外包的 ABE方案,該方案可以有效抵抗上述合謀攻擊,采用外包技術,還可有效減少屬性中心和用戶的計算負擔。本文在標準模型下基于計算性 Diffie-Hellman(CDH,computational Diffie-Hellman)假設完成安全證明。最后,實驗表明所提方案具有更高的安全性,且提高了用戶的解密效率。
1) 對于每個參與者所持有的秘密份額都可以構成Zp上的向量。
密鑰加密密鑰(KEK, key encryption key)樹[12]是一個完全二叉樹,如圖1所示。令系統中所有用戶集合為系統中的所有屬性集合為。設Gi?U是擁有屬性atti的一個用戶集合,被稱為屬性群。Gi則是可以正常訪問屬性atti的訪問列表。設是屬性群集合。例如,若用戶分別擁有屬性集合{那么

圖1 KEK樹示意
數據服務管理者(DSM, data service manager)按如下過程構建KEK樹。
1) 二叉樹的每一個葉子節點關聯用戶集合U中的每一個用戶uk。同時,每個內部節點vj存儲一個隨機值jθ。
2) 路徑節點生成算法Path(uk):從根節點到葉子節點上的所有節點被定義為用戶uk的路徑節點,如
3) 最小覆蓋集算法Mincs(Gi):可以涵蓋屬性群Gi中所有用戶的最少節點集合為最小覆蓋集。若,則若,則
在 ABE方案中,由于每個屬性被多個用戶共享,屬性撤銷是一個極其困難的問題,因此構建一個安全有效的屬性撤銷ABE方案至關重要。另外,ABE方案一個重要的安全特點就是抵抗用戶合謀攻擊,但是在閱讀分析文獻[12,15]時發現,這2種方案是不安全的,且存在用戶合謀攻擊。下面分別對這2種方案進行安全性分析。
文獻[12]提出了屬性群概念,并構建KEK樹為用戶分發屬性群密鑰,同時完成屬性撤銷后的密鑰更新工作,但是該方案不能夠抵抗撤銷用戶和未撤銷用戶的合謀攻擊。
一個用戶的密鑰由兩部分組成:屬性集合關聯的密鑰sk1(等同于基本ABE用戶私鑰)和基于KEK樹的屬性群密鑰sk2。sk1和sk2是完全獨立的,當一個用戶從某個屬性群撤銷時,該用戶將失去sk2,但是該用戶的sk1仍然是可用的,因此該用戶可以和其他用戶合謀獲得sk2,完成最終密文解密。
攻擊實例:假設消息m用訪問結構“教師and計算機”加密。用戶u1的屬性集合為“學生,計算機”,用戶u2的屬性集合為“教師,計算機”,則“計算機”的用戶集合為所以“計算機”的最小覆蓋集為此時關聯屬性“計算機”的密文頭文件用節點v4的隨機值4θ加密。u1的路徑節點是的路徑節點是
當沒有屬性撤銷時,u2能夠通過解密獲得sk2,u2,通過屬性集合獲得sk1,u2,最終解密密文獲得消息m。
當u2改變行業從事密碼學時,該用戶的屬性“計算機”將被撤銷,則“計算機”的用戶集合為所以“計算機”的最小覆蓋集為,此時關聯屬性“計算機”的密文頭文件將通過用節點v8的隨機值θ8加密。即使用戶u2仍然擁有關聯屬性集合“教師,計算機”的私鑰sk1,u2,由于其沒有θ8,不能完成密文頭解密,因此用戶u2也不能完成最終密文解密。但是用戶u1和用戶u2合謀,u1將隨機值θ8泄露給u2,u2將通過θ8完成對密文頭的解密,再結合sk1,u2完成解密獲得消息m。
文獻[15]基于文獻[12]構建,屬性集合關聯的密鑰sk1和KEK樹分發的屬性群密鑰sk2仍然是完全獨立的,因此該方案也不能抵抗撤銷用戶和未撤銷用戶的合謀攻擊。其分析過程如3.1節所述,這里不再贅述。
本節首先描述了支持屬性撤銷的屬性基加密(RO-CP-ABE, CP-ABE with attribute revocation and outsourced decryption)方案的系統模型及其各組成部分的功能,然后對其進行形式化的描述,最后給出該方案的安全模型。
本文提出了一種支持屬性立即撤銷的屬性基加密方案,系統模型主要包括以下4類實體。
屬性機構(AA, attribute authority):AA是一個完全可信的權威機構,主要負責生成系統公鑰和系統主私鑰,同時管控屬性密鑰分發等工作。
云服務商(CSP, cloud service provider):CSP主要是指第三方云存儲提供商,本文定義的CSP包括DSM、計算服務和存儲服務。數據擁有者將加密的數據上傳至CSP,減少了用戶的存儲負擔。為了減少用戶(數據擁有者和數據用戶)的計算負擔,當撤銷屬性時,DSM完成密文更新工作;當數據解密時,CSP承擔了解密過程中的部分計算。同時本文假設CSP是誠實并好奇的(honest but curious)。
數據擁有者(DO, data owner):DO在將數據上傳至CSP之前需要用對稱密鑰PK加密數據,然后基于本文所提方案加密對稱密鑰PK,通過對PK的安全共享完成數據的細粒度訪問控制。
數據用戶(DU, data user):DU即系統中的消費者,能夠自由地訪問云中的密文數據資源。屬性機構根據其屬性為其生成私鑰并用于解密密鑰密文。若其屬性沒有被撤銷且滿足訪問結構,則用戶能夠計算出最終明文。
首先給出本文相關符號及其含義,如表1所示。

表1 相關符號及其含義
RO-CP-ABE方案包含以下5個階段。
1) 系統初始化階段
AASetup(1λ)→{PK,MSK}:AA運行該算法,輸入安全參數RK=λ,輸出系統公鑰PK和系統主私鑰MSK。
DSMSetup(PK)→{DPK,DSK}:DSM 運行該算法,輸入PK,輸出DSM的公鑰DPK和主私鑰DSK。
2) 私鑰生成階段
AAKeyGen(id,PK,DPK,MSK,S)→{RK,SK,KEK′}:AA運行該算法,輸入PK、DPK、MSK和屬性集合S,輸出用戶私鑰RK、轉換密鑰SK和屬性群初始密鑰KEK′。
DSMKeyGen(KEK′,S)→KEK :DSM運行該算法,輸入KEK′和S,輸出用戶屬性群密鑰KEK。
3) 數據加密階段
Encrypt(PK,(M,ρ),m)→CT′:輸入系統公鑰PK、訪問結構(M,ρ)和明文消息m,輸出中間密文CT′。
DSMEncrypt(PK,DSK,CT′)→{Hdr,CT}:輸入PK、DPK和CT′,輸出密文頭Hdr和最終密文CT。
4) 數據解密階段
OutDecrypt(PK,Hdr,CT,SK,KEK)→CT:CSP運行該算法,輸入PK、Hdr、CT和SK,輸出轉換密文。
Decrypt(PK,CT,CT,RK)→m:DU運行該算法,輸入和RK,輸出明文數據m。
5) 用戶屬性撤銷階段
UpKEK(DSK,KEK,attx)
運行該算法,輸入DSK、KEK和被撤銷屬性attx,輸出新的屬性群密鑰
ReEncryption(Hdr,CT,attx):DSM運行該算法,輸入Hdr、CT和被撤銷屬性attx,輸出新的密文頭和密文
為證明所提方案可以有效抵抗用戶合謀攻擊,定義敵手可以詢問2種類型密鑰:1) 已撤銷用戶的私鑰詢問,其中,,但已撤銷挑戰屬性;2) 未撤銷用戶的私鑰詢問,其中,,但S包含挑戰屬性。證明過程如下。
初始化A選擇挑戰屬性Type-I和挑戰訪問結構并發送給B。其中,若att??S,則一定有
系統建立B運行AASetup和DSMSetup后得到PK、MSK、DPK和DSK。然后,B更新關聯屬性att?的密鑰對和。最后,B將PK、DPK和發送給A,自己保留MSK、DSK和
詢問階段1A可以詢問以下2種類型密鑰。
已經被撤銷。B運行AAKeyGen和DSMKeyGen算法獲得RKI、SKI和KEKI,然后將它們發送給A。2) Type-II私鑰詢問:用戶uII的屬性集合SII不滿足訪問結構但是uII擁有屬性。B運行AAKeyGen和DSMKeyGen算法獲得RKII、SKII和KEKII,然后將它們發送給A。挑戰階段A提交2個等長消息m0和m1。B選擇隨機值b∈{0,1},并運行Encrypt和DSMEncrypt算法獲得Hdr*和CT,最后將二者傳遞給A。
詢問階段2類似詢問階段1。
猜測階段A輸出。若b′=b,則A贏得游戲,攻破所提方案。A攻破所提方案的優勢定義為:
定義 1假設沒有多項式時間的敵手能夠以不可忽略的優勢來攻破上述安全模型,則所提方案是選擇安全的。
本節給出RO-CP-ABE方案的具體構建方法,并基于CDH假設給出了方案的安全性證明。
1) 系統初始化階段
AASetup(1λ)→{PK,MSK}:該算法首先選擇階為素數p的循環群G和GT,g是群G的生成元,存在映射e:G×G→GT。隨機選取α,a∈Zp,隨機選取h1,h2,…,hn∈G。輸出系統主私鑰MSK=gα和系統公鑰PK=(g,e(g,g)α,ga,h1,h2,…,hn)。
DSMSetup(PK)→{DPK,DSK}:DSM 為每一個屬性atti(1≤i≤n)選擇一個隨機指數ti∈Zp并計算Ti=gti,輸出DSM的公鑰DPK={Ti|1≤i≤n}和主私鑰DSK={ti|1≤i≤n}。
2) 私鑰生成階段
AAKeyGen(id,PK,DPK,MSK,S)→{RK,SK,KEK′}:該算法隨機選擇r∈Z,然后計算K′=gα+arid,idp L′=grid,對于任意 atti∈S,計算K′=hridii,kek′=Trid。然后隨機選擇λ∈Z,計算K=(K′)λ,iip L=(L′)λ,Ki=(Ki′)λ,keki=(kek′i)λ。最后輸出用戶私鑰RK=λ,轉換密鑰SK=(K,L,{Ki})和屬性群初始密鑰KEK′={atti,keki},atti∈S。
DSMKeyGen(KEK′,S)→KEK:該算法按2.4節中 KEK樹為用戶生成屬性群密鑰。對于每一個atti∈S,DSM 計算?i=Path(uid)∩Mincs(Gi)。若?i=?,DSM停止計算;若?i≠?,DSM計算,其中隨機值θj所對應節點vj∈?i。然后輸出KEK={atti,vj,keki,KEKi},atti∈S。
3) 數據加密階段
Encrypt(PK,(M,ρ),m)→CT′:該算法隨機選擇向量用于共享加密指數s。對于1≤i≤l,計算,其中Mi是M的第i行。然后計算,對于。最后輸出中間密文
DSMEncrypt(PK,DSK,CT′)→{Hdr,CT}:對于訪問結構(M,)ρ中每一個屬性atti,DSM隨機選擇并調用算法。然后重新加密中間密文CT′獲得,計算密文頭最后DSM將(CT,Hdr)上傳到云服務商進行存儲。
4) 數據解密階段
當數據用戶的屬性滿足密文的訪問結構且用戶屬性未被撤銷時,可以通過以下過程計算獲得明文。
OutDecrypt(PK,Hdr,CT,SK,KEK)→CT:云服務商根據轉換密鑰SK和屬性群密鑰KEK計算T′、T′和,如式(1)~式(3)所示,然后云服務商將CT和CT發送給數據用戶。


5) 用戶屬性撤銷階段
UpKEK(DSK,KEK,attx)當用戶uz的屬性attx被撤銷時,DSM隨機選擇xσ并計算,然后用和替代DPK和DSK中的Tx和tx,獲得新的 DSM 公鑰和主私鑰。DSM更新屬性群并重新計算例如,,則。當用戶u6的屬性attx被撤銷時,,則對于每一個數據用戶,DSM計算然后計算和其中隨機值對應節點最后,DSM 用替換KEK中的
ReEncryption(Hdr,CT,attx)DSM隨機選擇,重加密密文:最后
更新密文頭為

定理1若CDH假設在群G中成立,則沒有多項式時間敵手能夠攻破RO-CP-ABE方案,其中挑戰矩陣為
證明若A在qI次Type-I詢問和qII次Type-II詢問后,攻破所提方案的優勢為不可忽略的值ε=AdvA。那么,可以創造一個B能夠以不可忽略的優勢攻破CDH假設。
初始化挑戰者將和發送給仿真者B,A選擇挑戰訪問結構和挑戰屬性并傳遞給B。其中,若att??S,則一定有
系統建立B隨機選取并計算。輸出公鑰和系統主私鑰MSK=gα。對于每一個屬性B選擇一個隨機指數并計算。對于att?,B隨機選取x計算。輸出公鑰和主私鑰然后B更新的密鑰對,設置B更新 DSM 的公鑰和DSM的主私鑰。注意:為理論值,實際情況下B不知道z1,因此也不能計算
詢問階段1A可以詢問2種類型密鑰,B設置2個列表LI和LII,并初始化2個列表為空。
用戶u的屬性集合S滿足訪問結構(M?,ρ?),II但是uI的屬性已被撤銷。B首先查看中是否存在uI。若存在,則B將發送個敵手A;否則,B隨機選擇,計算,其隱含設置。對于i≠x且atti∈SI,計算B產生并計算。其中,隨機值θj與節點關聯;針對, B 計算。然后,B隨機選擇值,計算獲得
用戶uII的屬性集合SII不滿足訪問結構但是uII擁有屬性。B首先查看中是否存在uII。若存在,則B將發送個敵手A;否則,B隨機選擇,計算。對于i≠x且,仿真者B計算,而后求交集然后,B根據交集結果計算,其中隨機值jθ所對應節點對于,計算和其中隨機值所對應節點
挑戰階段A提交2個等長的消息m0和m1。B隨機選擇b∈{0,1}和向量其用于共享加密指數s。對于1≤i≤l,計算,其中是M?的第i行。然后,B計算
對于i≠x且,B隨機選擇k∈Z,ip并計算;對于,計算其意味著。B最終計算密文為

詢問階段2類似詢問階段1。
猜測階段A輸出一個值作為對b的猜測。假設A猜測b′=b,且。然后,仿真者B分別從LI和LII中選擇對于,存在LI中的和LII中的相結合,使等式(7)成立。

如果B沒有中止游戲,那么A的視覺和真實的攻擊視覺相同。假設敵手A進行了qI次Type-I詢問和qII次Type-II詢問,B從LI和LII中正確地選中和的概率是,因此,B攻破CDH假設的優勢為
6.1.1 功能比較
表 2表明對比方案的訪問結構都具有強表達性,且可以靈活地表示屬性的組合。所有方案都實現了屬性級的用戶撤銷。文獻[12,15]沒有給出形式化的安全證明,相比較而言,文獻[13,16]和本文方案給出了形式化安全證明,但只有本文方案基于弱假設 CDH完成安全證明。另外,在解密過程中,文獻[15]和本文方案將部分計算外包給 CSP,有效地減少了用戶的計算量。
6.1.2 通信成本
在進行通信成本對比之前,給出各符號所代表的含義,|p|、|g|、|gT|分別代表Zp、G、GT中元素的長度,|Ck|代表KEK的長度,nc、nk、na分別代表訪問結構、私鑰和系統中的屬性數量,nu代表系統中的用戶數量。
通信成本主要由密鑰和密文產生,本文方案與相關方案的通信成本對比情況如表3所示。
AA與DU之間的通信成本主要由密鑰產生。由于文獻[15]和本文方案采用了解密外包技術,因此屬性機構需要傳送給數據用戶一個最終解密密鑰RT。另外,本文方案需要屬性機構傳輸nk|g|個kek密鑰給數據用戶,用于后續生成屬性群密鑰。
AA與DO之間的通信成本主要由公鑰產生。屬性機構只需將公鑰發送給DO,然后DO使用公鑰對明文消息加密。

表2 本文方案與相關方案的功能對比

表3 本文方案與相關方案的通信成本對比
CSP與DU之間的通信成本主要由密文產生。文獻[12,15]和本文方案使用了 KEK樹技術,所以CSP不僅要發送密文,還要發送密文頭和KEK密鑰。文獻[12,15]中,CSP需要額外發送大小為的密文頭和大小為的屬性群密鑰。本文方案中,CSP需要額外發送大小為的密文頭和大小為的屬性群密鑰,DU需要發送個kek密鑰給云服務商。另外,文獻[15]和本文方案采用了外包解密技術,因此DU需要將其大小為的外包密鑰發送給CSP,由CSP代為解密。
CSP與DO之間的通信成本主要由DO生成的密文產生。
通過原理分析發現,本文方案與其他方案相比在存儲成本與通信成本的開銷方面基本持平,在某些方面開銷略大。但是本文方案基于弱假設且在標準模型下完成了方案的安全性證明,能夠抵抗用戶的合謀攻擊;本文方案將復雜的解密計算外包給CSP,同時由CSP完成屬性群密鑰更新和密文更新操作,有效較少用戶的計算量。另外,文獻[12,15]無法抵抗撤銷用戶與未撤銷用戶之間的合謀攻擊,而抵抗用戶合謀攻擊時ABE方案最基本的安全需求。綜合分析,本文方案具有一定的優勢,更適用于實際情況。
本文基于 Ubuntu系統搭建實驗環境,并基于Charm實現本文所提方案。首先本文用 10個屬性構建了訪問結構,并分別執行上述5種對比方案,每種方案執行10次,然后取其平均值作為最終值。需要注意,本文給出的時間為屬性機構、DO和DU的計算時間,而云服務具有強大的計算能力,因此這里沒有列出CSP的計算時間。5種方案各個階段執行時間對比如圖2(a)所示。
系統建立階段文獻[13]的執行時間大約是其他方案的2倍,這是因為文獻[13]在系統初始化階段需要為每個屬性設置2個公共屬性密鑰。密鑰生成階段本文方案執行時間要大于其他方案,這是因為本文方案屬性機構需要為每個屬性設置一個kek密鑰,同時本文方案采用外包技術,屬性機構需要將密鑰盲化。數據加密階段文獻[13]的執行時間同樣是其他方案的 2倍,這是因為進行密文加密時,文獻[13]需要為每個屬性額外計算2個用于撤銷后更新密文的組件,而其他方案撤銷計算由第三方執行。數據解密階段由于文獻[15]和本文方案采用了外包解密技術,因此需要較少的計算量,這對于資源有限的用戶至關重要。
本文方案由 CSP完成屬性群密鑰更新和密文更新計算,因此本節只仿真加解密計算。
如圖2(b)所示,加密時間與訪問結構復雜度呈正相關。另外,文獻[13]需要為每個屬性額外計算2個用于撤銷后更新密文的組件,而其他方案撤銷計算由第三方執行,所以文獻[13]所需執行時間大約是其他方案的2倍,這在上文中已經分析。而其他4種方案的加密時間大致相同。
如圖2(c)所示,解密時間與解密所需屬性數量呈線性增長關系,由于文獻[15]和本文方案采用了外包解密技術,其用戶將復雜的計算外包給CSP,只需要進行少量計算就能夠完成解密任務。在解密計算中,文獻[15]只需計算一個雙線性對操作和一個GT中的指數運算,而本文方案只需計算一個GT中的指數運算,與屬性數量無關。

圖2 仿真時間對比
綜合分析,本文方案對于屬性機構的計算需求稍高于其他方案;由于采用外包解密技術,相對于其他方案,本文方案對于用戶的計算需求明顯小于其他方案;同時,由DSM完成屬性撤銷過程中的全部計算任務,有效較少了AA和用戶的計算量,因此可以得出本文方案在計算效率方面有較大優勢。
屬性級用戶撤銷是 ABE方案的一個重點研究方向。本文研究現有方案發現文獻[12,15]存在用戶合謀攻擊,其原因為 2種方案中的KEK對于屬性群中用戶完全相同。基于此,本文提出了一種支持屬性撤銷的 ABE方案,有效地解決了上述問題。所提方案可以有效抵抗撤銷用戶與未撤銷用戶的合謀攻擊,同時,該方案將復雜的解密計算外包給CSP,減輕了DU的計算負擔。在標準模型下基于CDH假設完成安全證明。最后從理論和實驗這 2個方面對所提方案的效率與功能進行了分析,結果表明所提方案可以安全實現屬性級用戶撤銷,并具有快速解密的能力。