李維勇,張 偉
(1.南京信息職業技術學院網絡與通信學院,江蘇 南京 210023;2.南京郵電大學計算機學院,江蘇 南京 210003)
個人健康記錄(Personal Health Record,以下簡稱PHR)云[1]是云計算應用的一種延伸,它提供一種便捷的網絡訪問,方便病人以及醫生隨時隨地上傳、訪問、分析以及使用各類健康信息。隨著物聯網、云計算等技術的全面發展,關于個人健康信息的數據呈現井噴式的增長,個人健康記錄分享系統逐漸發揮出了在健康管理方面的優勢,例如身體狀態預測、疾病預防、病史分析、用藥分析等功能。雖然方便了人們隨時隨地進行信息的交換,但同時也對病人的隱私造成了巨大的威脅[2]。目前在互聯網上,國家、企業或者個人的隱私數據出現意外暴露的事件數不勝數,有的甚至被拿去作為商用從而獲取非法利益。因此,當前PHR 系統急需一套嚴格的數據保護與訪問權限控制技術,最理想的狀況就是既可以實現數據的安全加密,又能夠方便加密者們自己自由地制定各種各樣的訪問策略。然而傳統的密碼學算法并不具備這種數據分享的機制。即使是公鑰加密算法,一個公鑰加密的數據也只能發送給一個解密者。而從訪問控制技術角度來看,傳統的訪問控制算法也僅支持可信的服務器制定和實施訪問控制策略。
基于屬性的加密體制[3-4](attribute-based encryption,ABE)是近些年來提出的一種功能加密體制,它拓展了傳統公鑰加密的范疇,在加解密操作中賦予一套訪問策略以及具備一定描述性的屬性集合,只要屬性集合與訪問策略之間足夠相似,那么就能夠在眾多加密者與解密者之間實現安全的數據共享。相比一般公鑰加密算法,ABE 不僅為加密信息提供了靈活的訪問控制功能,還具備一定的容錯性質,因此在指紋驗證、虹膜驗證、人臉識別等生物特征識別領域[5]具有潛在的應用價值,尤其在個人健康記錄云當中[6]有著廣闊的應用前景,填補了傳統密碼學在這方面的應用空白。具體來說目前主要有兩種主流ABE 算法:一種是基于密鑰策略的ABE算法[7](key policy attribute-based encryption,KPABE),它將訪問策略嵌入到密鑰當中,而將屬性集合則嵌入到密文當中;一種是基于密文策略的ABE算法[8](ciphertext policy attribute-based encryption,CP-ABE),它將訪問策略嵌入到密文當中,而將屬性集合則嵌入到密鑰當中。CP-ABE 在數據加密過程中支持數據屬主自由制定訪問策略,而密鑰當中嵌入的屬性集合又能夠表征不同解密者的身份,因此CP-ABE 非常適合面向PHR 系統構建安全又靈活訪問控制機制。
盡管CP-ABE 具備了傳統數據加密和訪問控制算法所不具備的獨特性質,但是其距離實際應用仍然相距甚遠。其中最關鍵的問題就是如何實現高效的、安全的、細粒度的屬性撤銷機制。在絕大多數應用場景下,屬性都是動態變化的,其中包括系統級屬性變化(系統新增或者刪除某個屬性)、用戶撤銷(注冊新用戶或者注銷舊用戶)、以及屬性級撤銷(用戶增加屬性或者刪除舊屬性)。這些動態變化對數據的機密性造成了非常巨大的影響,因為一旦屬性發生變化,原有的訪問策略會使得未授權用戶獲取訪問權限,或者已授權用戶突然失去訪問權限。如果沒有做好屬性撤銷工作,以上情況就很有可能發生并使整體的訪問控制完全失控。因此,構建合理的屬性撤銷機制是實現安全且靈活的ABE 算法的核心。
目前相關的研究學者對ABE 撤銷機制做了許多研究,但是撤銷工作往往涉及巨大的計算量,甚至導致最后解密計算無比復雜,于是使得許多方案無法直接應用于PHR 系統當中,否則將會極大地降低PHR 系統的可用性。因此如何制定靈活的高效的撤銷機制乃是將ABE 算法應用到PHR 系統當中的當務之急。
Laranjo 等人[1]最早指出在未來的醫療系統將逐步發展成為一種以病人為中心的醫療系統,病人將擁有直接獲取自己醫療數據的權利。他們的工作說明了未來的PHR 數據分享應當具備相當的靈活性。Chen 等人[9]指出基于云計算的PHR 系統處于一種更為開放的環境,因此不僅需要對PHR 數據進行加密,更應當允許用戶自己決定誰可以獲取他們的健康數據。為了實現該功能,他們提出了一種基于拉格朗日插值法的動態醫療數據訪問控制算法,使得醫療數據分享在靈活性和安全性上都得到了很大的提升。Li 等人[10]根據醫療數據分享系統中用戶的數據接入需求將系統劃分為兩個安全域:公有域與私有域。公有域包含醫生、護士以及醫藥研究院等大多數用戶,其中的PHR 數據分享采用基于多權威的密文策略屬性加密算法。個人域包含與用戶有個人密切關系的人,其中的PHR 數據分享采用密鑰策略屬性加密算法。該算法能夠較好地提高PHR 數據分享的秘鑰管理效率。Zhang 等人[11]設計了一種基于等級化匿名ABE 的醫療數據訪問控制算法,該方案能夠充分保護了用戶的隱私并且有效縮小密鑰的尺寸。
在屬性撤銷方面,Pirretti 等人[12]最早提出了一種ABE 屬性撤銷的方法:每個屬性均包含有效期,鑒權中心周期性地釋放屬性的最新版本并更新所有解密者的私鑰組件。該方法實現起來很簡單但是存在諸多缺陷,例如有效期時長的確定缺乏現實依據、所有訪問者必須保存并即時更新每個時間段的私鑰。Bethencourt 等人[8]提出為解密者的每個屬性設置終止日期,而在密文的訪問策略里附帶每個屬性的時間信息。解密過程中,如果解密者屬性的終止日期在時間信息之前,那么視該屬性為無效屬性。盡管該方法降低了密鑰更新和存儲的開銷,但無法支持屬性的即時撤銷。Boldyreva 等人[13]提出一種基于二叉樹的ABE 撤銷機制,將KP-ABE 算法當中每個解密者關聯至二叉樹中的節點,同時將私鑰分為由解密者保留的秘密組件以及由鑒權中心持有的向全局公開的更新組件,該機制最終使得密鑰更新的數量與解密者數量呈對數關系,然而仍無法實現屬性的即時撤銷。在此之后,也有部分學者提出了利用密鑰隔離技術[14-15](Key-Insulated Mechanism)實現ABE 屬性撤銷,雖然能夠保證不同時間片段的前后向安全性,但是如何合理分配時間片段仍然是一個難題。Ibraimi 等人[16]在CP-ABE 算法當中引入第三方仲裁中心來掌握屬性撤銷列表,這使得私鑰變為兩部分,其中一部分私鑰由仲裁者持有。解密過程中仲裁中心首先判斷是否存在已被撤銷的屬性,若沒有則使用該部分私鑰完成部分解密工作,然后由用戶自己完成剩余的解密工作。該算法利用仲裁中心減輕了鑒權中心的工作負擔,但是必須保證仲裁者是誠實的并且始終在線。文獻[17-18]均采用代理重加密技術(Proxy Re-Encryption),利用密鑰中心來標記主密鑰的演化版本,由主密鑰產生的公鑰參數、私鑰以及密文都用版本號來標記,當撤銷發生時由密鑰中心更新被撤銷屬性主密鑰構件的版本號。文獻[19]提出了一種密鑰的協作管理機制,不僅能夠避免將密鑰完全托管給密鑰中心而帶來的信息泄露風險,而且能夠防止用戶密鑰管理不慎所產生的密鑰泄露問題。其采用了一種基于屬性群[20-21]的撤銷方法保證密鑰的前/后向安全性,然而在重加密過程中執行的指數運算次數與屬性群中用戶數量呈線性關系,這就導致在執行海量屬性的撤銷時效率不盡如人意。值得注意的是,以上研究均采用了間接撤銷的思路,即由某個機構周期性地更新用戶私鑰組件,只有未被撤銷的用戶才能獲取更新的私鑰,而被撤銷的用戶將不再獲取更新的私鑰。也有部分研究采用了直接撤銷的思路[22-23],但是直接撤銷機制很難做到細粒度撤銷,同時會增加公鑰參數的長度,因此ABE 撤銷機制的研究大都集中于間接撤銷。
為了解決以上問題,本文基于間接撤銷思路在現有方案的基礎上,對ABE 撤銷方案的靈活性、安全性以及計算效率等方面進行了改進。首先提出了快速的即時撤銷(fast and immediate revocation,簡稱FIR)算法,不需要用戶保持在線以更新私鑰,并使得解密時獲取屬性群密鑰所需的乘法操作降低為僅1 次,從而在保證即時撤銷的同時減少了解密開銷。圍繞FIR 算法設計了一種支持快速撤銷的密文策略屬性加密(ciphertext policy attribute-based encryption supporting fast revocation,簡稱CP-ABE-FR)方案,通過理論分析證明了該方案的安全性。基于以上的方案進一步構建了一種應用于PHR 系統的訪問控制系統模型,實現了個人健康記錄的安全加密以及靈活的訪問控制。仿真實驗表明,本文提出的PHR 系統訪問控制模型在加解密操作時具備較高的計算效率。
定義1(訪問策略,Access Policy) 設{P1,P2,…,Pn}是由若干元素組成的集合,訪問策略是一組范式,它定義了一個由集合{P1,P2,…,Pn}的部分非空子集組成的集合,即A∈2{P1,P2,…,Pn}\?。
若任意兩個集合B和C滿足B∈A并且B?C時,使得C∈A,那么稱A 是單調訪問策略。我們稱集合S是關于訪問策略A 的合法集合,當且僅當S∈A。否則稱S為關于訪問策略A 的非法集合。
定義2(線性秘密分享算法,Linear Secret Sharing Scheme,以下簡稱LSSS) 我們稱關于集合P 的秘密分享算法Π在群Zp上是線性的,當且僅當其滿足以下條件:
(1)集合P 中每個元素對應的分享因子都是Zp群上的一個向量;
(2)存在一個l行列m的矩陣M,我們稱之為分享矩陣。同時存在函數ρ,對于分享矩陣M 的任意第i行Mi,ρ(i)將Mi映射到P 中的某個元素。設列向量v=(s,v1,v2,…,vm),其中s∈Zp是待分享的秘密,v1,v2,…,vm∈Zp是一組隨機數。那么Mv是P 中所有元素對應的分享因子行向量,其中λi=Miv就是元素ρ(i)的分享因子。
對于任意一種單調的訪問策略A,均存在與之對應的分享矩陣M 和一個映射關系ρ的組合[21]。如果訪問策略A 包含l個元素,那么分享矩陣M 的行數必定為l。此外,LSSS 算法具有如下的重構性質:假設集合S是關于訪問策略A 的合法集合,我們可構建一個索引集合I?{1,2,…,l}使得I={i:ρ(i)∈S}。那么必定可以在多項式時間內找到一組元素{ωi∈Zp}i∈I,使得
定義3(雙線性對,Bilinear Pairing) 設G1和G2是兩個階為大素數p的乘法循環群,g是G1的生成元,我們稱映射e:G1×G1→G2是關于G1和G2的雙線性映射,當且僅當e滿足以下性質:
(1)雙線性:對于任意的u,v∈G1以及a,b∈Zp,都有e(ua,vb)=e(u,v)ab;
(2)非退化性:存在生成元g,使得e(g,g)≠1,其中1 是乘法循環群G2的單位元;
(3)可計算性:對于任意的g1,g2∈G1,存在多項式時間的算法可以計算出e(g1,g2)的值。
定義4(判定雙線性Diffie-Hellman 困難假設,Decisional Bilinear Diffie-Hellman Assumption,DBDH) 假設G1是一個階為素數p的群。在已知一組參數{g,A=ga,B=gb,C=gc}的情況下,敵手難以區分e(g,g)abc∈G2與另一個隨機數e(g,g)z∈G2。
假設存在一個算法B 在獲得參數{g,A,B,C,Z}后,輸出1 表示Z=e(g,g)abc,輸出0 表示Z=e(g,g)z。那么我們認為算法B 能夠以優勢ε解決DBDH 假設,當且僅當:

定義5(屬性群,Attribute Group) 設N={att1,att2,…,attn}為系統的全局屬性集合,U ={u1,u2,…,uq}為系統全體用戶集合。對于任意屬性attx∈N,U 當中所有擁有該屬性的用戶的集合稱為關于屬性attx的屬性群,記為Gx。
我們定義G={G1,G2,…,Gn}為系統中所有屬性群的集合,即對于任意一個屬性群Gx∈G,其中所有用戶共享一個關于attx的密鑰Kx∈Zp,稱為屬性群密鑰。我們定義屬性群密鑰集合為K ={K1,K2,…,Kn}。
本文提出的CP-ABE-FR 方案包括初始化算法set、私鑰生成算法kgen、加密算法enc、FIR 算法fir和解密算法dec五部分。方案架構的描述如下:
set(1λ)→
kgen(S,PK,MSK)→
enc(A,PK,M)→CTinit:加密算法輸入訪問策略A、公鑰PK以及PHR 數據明文M,輸出與訪問策略A 對應的初始密文CTinit。
fir(G,CTinit/CT)→
dec(t,headers,CT,SK)→Mor ⊥:解密算法輸入時間戳t、全局FIR 消息頭headers、FIR 密文CT以及私鑰SK,在時間戳協商無誤的情況下,當用戶的屬性集合滿足訪問策略時輸出PHR 數據明文M,否則輸出⊥表示解密失敗。
基于提出的CP-ABE-FR 方案,本文構建面向PHR 系統的訪問控制模型并進行了仿真實驗。該訪問控制模型包含以下四類角色:
(1)密鑰中心:是一個可信的權威機構,負責所有解密者的權限認證和各類密鑰的發布。
(2)PHR 加密者:是PHR 數據的擁有者,負責上傳自己的PHR 數據并自由制定相應的訪問策略。
(3)PHR 存儲中心:是存儲PHR 數據的媒介,所有PHR 數據都以FIR 密文的形式存儲在當中。此外一旦用戶的屬性集合發生撤銷,還將負責對相關的密文進行即時的更新。
(4)PHR 解密者:是試圖獲取PHR 數據的一類用戶,其身份用一個屬性集合來表示。解密者擁有一個與其屬性集合相對應的私鑰,并通過私鑰來解密密文。當PHR 解密者的屬性集合發生改變時,系統需要對該屬性采取即時的撤銷以保證前向/后向安全性。
該系統模型的工作流程如圖1 所示,在系統正式啟動時,密鑰中心執行初始化算法產生公鑰PK并發送給PHR 加密者和PHR 存儲中心。當有PHR解密者提出關于某屬性集合S的密鑰生成請求時,密鑰中心執行密鑰生成算法產生與該屬性集合相對應的私鑰。PHR 加密者通過加密算法Encrypt使用公鑰PK和訪問策略A 對PHR 數據明文M進行加密生成初始密文CTinit交由PHR 存儲中心存儲。PHR 存儲中心收到初始密文之后首次執行FIR 算法生成FIR 消息頭headers和FIR 密文CT。當某個PHR 解密者撤銷屬性atty時,PHR 存儲中心對重加密密文再次執行FIR 算法,并更新生成新的FIR 消息頭headers′和FIR 密文CT′。如果PHR 解密者發出解密請求,PHR 存儲中心和PHR 解密者立即協商此時的時間戳t,并執行解密算法。如果此時的屬性集合滿足訪問策略且時間戳無誤,那么解密者則順利獲取訪問權限,然后解密得到PHR 數據明文。反之則無法獲取任何有效信息。

圖1 PHR 系統訪問控制模型流程
設全局屬性空間為N ={att1,att2,…,attn},初始屬性群集合為G ={G1,G2,…,Gn}。首先輸入一個安全參數1λ,算法產生一個長度為λ比特的素數p以及兩個階為p的循環群G1和G2。設g是G1的一個生成元。然后算法生成一個雙線性對映射e:G1×G1→G2、一組與屬性空間N 對應的隨機數{h1,h2,…,hn}以及兩個抗碰撞的散列函數H:{0,1}?×{0,1}?→G1和H1:{0,1}?→Zp。隨后選擇兩個秘密的隨機數α,β∈Zp,最終輸出公鑰:

同時保留主密鑰:

選擇一個隨機數τ∈Zp并計算D1=gα+βτ以及D2=gτ。對于屬性集合S當中的任意屬性attx,計算對于任意用戶uk,該用戶自己選擇一個秘密字符σk∈{0,1}?,然后產生一個對話私鑰SKsession,k=H(IDk,σk)以及一個對話公鑰PKsession,k=gH(IDk,σk),其中IDk為該用戶唯一的身份標識。最后輸出關于屬性集合S的私鑰:

對于一個訪問策略A,記其包含的屬性總數為l。加密算法首先生成對應的LSSS 訪問結構(M,ρ),其中M 是一個l行m列的矩陣,ρ為映射函數負責將矩陣的任意一行映射為訪問策略里的某個屬性。其次生成一個秘密數s∈Zp以及一個隨機向量v=(s,v1,v2,…,vm),其中v1,v2,…,vm都是Zp上的隨機數。然后計算C1=M?e(g,g)αs和C2=gs。同時對于任意一個屬性attρ(i)計算,其中λi=Miv。最后輸出初始密文:

基于文獻[19]采用的撤銷方案基礎上,我們提出并采用FIR 算法優化屬性撤銷的過程,使得用戶不需要保持在線以更新私鑰。該算法執行過程如下:
如果針對某初始密文CTinit首次執行FIR 算法,通過屬性群集合G ={G1,G2,…,Gn}的描述產生對應的屬性群密鑰集合K ={K1,K2,…,Kn}。其次選擇一個秘密隨機數γ∈Zp并產生對話公鑰PKsession=gγ以及對話私鑰SKsession=γ。然后計算關于任意用戶uk的因子
假設任意一個屬性群Gx∈G 包含的用戶數量為d。對于該屬性群,FIR 算法產生一個多項式fattx。隨后產生一組元素{P0=Kx+a0,P1=a1,…,Pd=ad},即關于該屬性群的FIR 消息頭:

以此類推,全局的FIR 消息頭為:

最終FIR 密文為:

當撤銷某個用戶的屬性atty時,首先將屬性群集合更新為:其中是剔除了該用戶的屬性群。 相應的,屬性群密鑰集合更新為:Kn},其中是更新的屬性群密鑰。 然后中所有用戶各自產生自己的隨機數。 為了不失一般性,我們假設用戶uk產生的新隨機數為并計算新的對話公鑰。 云存儲中心根據新的對話私鑰計算,隨后產生新的多項式以生成新的FIR 消息頭:

于是全局FIR 消息頭將更新為:

之后所有訪問策略中包含屬性atty的FIR 密文將更新為:

可以看到,以上的全部過程不需要用戶保持在線以更新自己的私鑰,從而極大提高了系統的可用性。
在解密算法當中我們通過時間戳克服用戶在更新私鑰時必須保持在線的問題,使得用戶不需要更新自己的私鑰就可以實現屬性的即時撤銷,具體的執行過程如下:
當建立解密會話時,首先記錄此時的時間戳t。緊接著將全局FIR 消息頭更新為:

隨后將更新后的全局FIR 消息頭以及FIR 密文發送給用戶。之后用戶首先通過自己的時間戳t計算。對于任意屬性attx∈S,解密算法執行如下計算獲取對應的屬性群密鑰:
不難看出,獲取屬性群密鑰所需的乘法操作僅需1 次。相比現有的屬性群撤銷方法,FIR 極大地優化了解密開銷。要注意的是,如果用戶非法獲取了更新后的全局FIR 消息頭,他將無法知道更新所用的時間戳,那么則無法獲取正確的屬性群密鑰。
獲取屬性群密鑰之后,解密算法執行如下計算:

根據LSSS 性質可知,如果屬性集合不滿足訪問策略的權限,那么將無法在多項式時間內恢復出秘密s,并導致解密失敗。反之則能在多項式時間內恢復出秘密s,從而使下式成立:

將此時得到的參數記為A,然后繼續執行如下運算:

將此時得到的參數記為B,最終執行如下運算即可獲取正確的消息明文:

由以上的密文組成可以看出,對于撤銷了屬性atty的用戶,即使其利用之前獲取的消息頭計算得到屬性群密鑰Ky也無法完成解密獲取正確的消息明文,因為此時密文已被更新。因此可以保證方案的前向安全性。
對于屬性集合中仍然包含屬性atty或者剛剛擁有屬性atty的用戶,當發起解密時只能獲取當前時間戳的重加密消息頭和重加密密文,即使獲取了過去某個時刻的消息頭也無從知曉具體的會話時間是多少,所以無法抽取過去的屬性群密鑰。即使其已下載了過去的密文也不能正確解密。因此可以保證方案的后向安全性。
本文基于FIR 算法構造了CP-ABE-FR 方案,該方案的安全性建立在DBDH 困難假設的難解性之上。為方便分析,我們給出如下定理和相應的證明:
定理如果DBDH 問題是難解的,那么一定不存在多項式時間內的敵手能以不可忽略的優勢破解CP-ABE-FR 方案。
證明為了證明以上的定理,我們設計一種挑戰游戲,通過該游戲將CP-ABE-FR 方案的機密性規約到DBDH 問題的難解性上。該游戲由敵手A、模擬器B 以及挑戰者C 共同參與完成,流程如下:
(1)初始化階段:首先敵手A 向模擬器B 發送一個挑戰訪問策略A?。其次挑戰者C 產生一個循環群G1,選擇該群的一個生成元g以及三個秘密數a,b,c∈Zp,并將g、A=ga、B=gb、C=gc和Z發送給模擬器B。然后模擬器B 選擇一個循環群G2以及一個雙線對映射e:G1×G1→G2,一組秘密隨機數{β,r1,r2,…,rn}、一個屬性群集合G 以及兩個隨機預言機H:{0,1}?×{0,1}?→G1和H1:{0,1}?→Zp。最后模擬器B 向敵手A 發送如下的公鑰:

(2)詢問階段:敵手A 向模擬器B 有限次地發送如下兩種詢問:
(a)私鑰詢問:首先模擬器B 維護一個列表List。其次敵手A 在屬性群集合G 中任意選擇一個用戶uk(記用戶uk的身份表示為IDk、屬性集合為S)并向模擬器B 發出關于屬性集合S的私鑰請求。然后模擬器B 產生隨機數R1,R2,R3∈Zp,然后返回私鑰:

最后模擬器B 在列表List 當中添加關于用戶uk的元組{IDk,S,PKsession,k=gH(IDk,r1),R1,R2,R3}。
(b)加密詢問:首先敵手A 選擇一個PHR 數據明文M以及一個訪問策略A,并向模擬器B 發送關于M和A 的加密請求。其次模擬器B 首先根據屬性群集合產生對應的屬性群密鑰集合K ={K1,K2,…,Kn}并生成與訪問策略A 相對應的LSSS 訪問結構矩陣(M,ρ),同時選擇一個秘密數s∈Zp以及一個隨機向量v=(s,v1,v2,…,vm),計算λi=Miv。然后模擬器B 產生如下密文給A:

同時從List 當中抽取用戶的對話公鑰PKsession,k并按照真實的重加密算法構造全局重加密消息頭。對于不在List 當中的用戶,模擬器B 調用私鑰生成預言機來產生對應于該用戶的元組并添加進列表List 當中。最終模擬器B 將密文和對應于此時時間戳的全局重加密消息頭發送給敵手A。
(3)挑戰階段:首先敵手A 向模擬器B 提交兩個長度相同的PHR 數據明文M1和M2。其次模擬器B 生成與A?對應的LSSS 訪問結構(M?,ρ?)以及一個隨機向量v=(s,v1,v2,…,vm)。然后對于任意屬性attρ(i)∈A?計算,其中λi=Miv。最后模擬器B 選擇一個隨機的比特值δ∈{0,1}并返回如下的挑戰密文給A:

(4)詢問階段:與第2 階段一樣,敵手A 繼續向模擬器B 發送有限次的私鑰詢問和加密詢問。要注意的是,所有詢問必須滿足以下的限制:
(a)私鑰詢問過程中,所有的屬性集合S都不可以滿足挑戰訪問策略A?;
(b)訪問策略A?或者是M1和M2不可以用來進行加密詢問。
(5)猜測:敵手A 輸出δ′∈{0,1}作為對δ的猜測。如果δ=δ′則敵手A贏得挑戰游戲,同時模擬器B 輸出1 表示其猜測Z=e(g,g)abc。如果δ≠δ′則敵手挑戰失敗,同時模擬器B 輸出0 表示猜測Z=e(g,g)z。
當Z=e(g,g)abc時,挑戰階段的加密過程與真實CP-ABE-FR 算法的加密過程相同。假設敵手A破解CP-ABE-FR 算法的優勢為ε′,那么模擬器B輸出1 的概率為:

當Z=e(g,g)z時,敵手A 所獲得的挑戰密文是由一個完全隨機的密文,那么敵手A 的猜測是完全隨機的。在這樣的情況下,模擬器B 輸出1 的概率為:

因此,模擬器B 解決DBDH 問題的優勢滿足:

由此可以推斷,如果不存在多項式時間算法能夠以不可忽略的優勢ε解決DBDH 問題,那么必然不存在多項式時間敵手A 破解CP-ABE-FR 算法。所以本算法能夠很好地保證機密性。
合謀攻擊是指多名解密者通過各自的私鑰非法地產生一個全新的私鑰,而這個全新的私鑰卻能夠正確實現正確的解密。假如這么多名解密者的屬性集合都不符合密文的訪問策略,卻能夠通過合謀產生合法的私鑰,那么密文的安全性將受到巨大的威脅。
在CP-ABE-FR 方案中,每產生一個私鑰時算法都會生成一個不同的隨機數τ,并將這個隨機數嵌入到私鑰組件當中,即每個私鑰都有一個不同的D=gα+βτ。即使多名消息訪問者嘗試進行合謀,也無法獲取一個合法的私鑰,因為來自不同消息訪問者的私鑰組件內嵌入了不同的隨機數。綜上所述,CP-ABE-FR 能夠很好地抵抗合謀攻擊。
本文在LHS 方法[19]以及Hur 方法[21]的基礎上針對屬性撤銷過程中產生過大的計算負荷的問題進行了改進,提出了FIR 算法。為方便分析FIR 的撤銷效率,我們定義Tmul以及Texp分別為生成消息頭以及抽取屬性群密鑰時執行單次乘法或指數運算所需的時間。
比較結果如表1 所示,LHS 方法[19]以及Hur 方法[21]生成關于屬性群Gx的消息頭時均需要執行1次乘法運算以及2d次指數運算,而抽取屬性群密鑰時均需要執行d次乘法以及d(d+3)/2 次指數運算,其中d為屬性群Gx包含的用戶數量。

表1 撤銷效率比較
本文提出的FIR 算法在生成關于屬性群Gx的消息頭只需要執行1 次乘法,相比LHS 方法[19]和Hur 方法[21]減少了2d次的指數運算。同時FIR 算法在抽取對應的屬性群密鑰時需執行d次乘法以及d(d+1)/2 次指數運算,相比以上兩種方案減少了d次指數運算。因此FIR 算法提高了屬性撤銷的計算效率。
本節在撤銷功能角度上對基于FIR 算法設計的CP-ABE-FR 方案與其他類似方案進行了比較。
比較結果如表2 所示,PTM 方法[12]、HS 方法[14]以及QLZ 方法[18]利用密鑰中心來執行撤銷,這使得密鑰中心必須完全可信。而且由于密鑰中心已經承擔了公鑰和私鑰的發布工作,再承擔撤銷工作無疑將增加了其本身的計算負荷。IPN 方法[16]和YWR 方法[17]的方案利用第三方的仲裁中心執行撤銷,雖然分擔了密鑰中心的負荷,但是仲裁中心必須要保持完全可信。本文提出的CP-ABE-FR 利用現有的密文存儲中心執行撤銷工作,其可信程度只需要保持半可信就可以保證撤銷工作的安全性。除此之外不需要用戶保持實時在線更新私鑰,同時又可以實現即時撤銷。因此在撤銷功能上,本文提出的方案較其他方案而言有顯著改進。

表2 撤銷功能比較
本系統的仿真硬件為Intel(R)Core(TM)i5-4200H CPU @ 2.8GHz,內存為4GB,系統為Windows 10,所使用代碼庫為JPBC2.0,實驗基于512 位的橢圓曲線,曲線的階為120 bit 的大素數。實驗分別基于LHS 方法[19]、Hur 方法[21]以及本文所提出方案構建了PHR 系統訪問控制模型,并記錄了在不同的屬性數量情況下的平均加解密計算時間。
幾種系統模型在不同屬性個數情況下的平均加密時間如圖2 所示。LHS 方法[19]和Hur 方法[21]都支持基于屬性群的細粒度即時撤銷,因此在加密過程中都需要對密文再次加密。Hur 方法[21]的加密時間整體上稍短于LHS 方法[19]的方案,而基于CPABE-FR 的PHR 系統訪問控制模型盡管增加了FIR算法,但是FIR 算法本身并沒有給系統的加密工作產生太大的計算負荷。

圖2 平均加密時間對比
同樣地,平均解密時間的統計如圖3 所示。LHS 方法[19]和Hur 方法[21]所需的解密時間相當,但是LHS 方法[19]采用了分布式的私鑰進行解密,所以總體上解密時間稍長。而CP-ABE-FR 則將PHR 解密時間降低了約9.3%。因此總體來說,本文所提出的PHR 系統訪問控制模型的解密計算效率是比較可觀的。

圖3 平均解密時間對比
個人健康記錄云作為云計算的延伸服務,既需要提供安全的數據保護,也需要支持靈活的訪問權限控制。ABE 算法能夠滿足個人健康記錄云的安全需求,但是現有ABE 算法往往依賴大量的計算才能保證在屬性撤銷的前/后向安全。本文在ABE 算法的基礎上提出了一種快速的即時撤銷算法,使得用戶不需要在線更新私鑰就可以實現快速的、即時的撤銷,同時降低了撤銷的計算開銷。理論證明該方法能夠保證PHR 數據的安全性。仿真實驗表明,基于本方法構建的PHR 系統訪問控制模型具備較高的加解密計算效率。在算法的計算效率上可以做進一步的改善,比如預計算、外包計算思路縮短解密時間,這將是下一步的研究方向。