李維勇,張 偉
(1.南京信息職業(yè)技術(shù)學(xué)院網(wǎng)絡(luò)與通信學(xué)院,江蘇 南京 210023;2.南京郵電大學(xué)計算機學(xué)院,江蘇 南京 210003)
個人健康記錄(Personal Health Record,以下簡稱PHR)云[1]是云計算應(yīng)用的一種延伸,它提供一種便捷的網(wǎng)絡(luò)訪問,方便病人以及醫(yī)生隨時隨地上傳、訪問、分析以及使用各類健康信息。隨著物聯(lián)網(wǎng)、云計算等技術(shù)的全面發(fā)展,關(guān)于個人健康信息的數(shù)據(jù)呈現(xiàn)井噴式的增長,個人健康記錄分享系統(tǒng)逐漸發(fā)揮出了在健康管理方面的優(yōu)勢,例如身體狀態(tài)預(yù)測、疾病預(yù)防、病史分析、用藥分析等功能。雖然方便了人們隨時隨地進行信息的交換,但同時也對病人的隱私造成了巨大的威脅[2]。目前在互聯(lián)網(wǎng)上,國家、企業(yè)或者個人的隱私數(shù)據(jù)出現(xiàn)意外暴露的事件數(shù)不勝數(shù),有的甚至被拿去作為商用從而獲取非法利益。因此,當(dāng)前PHR 系統(tǒng)急需一套嚴(yán)格的數(shù)據(jù)保護與訪問權(quán)限控制技術(shù),最理想的狀況就是既可以實現(xiàn)數(shù)據(jù)的安全加密,又能夠方便加密者們自己自由地制定各種各樣的訪問策略。然而傳統(tǒng)的密碼學(xué)算法并不具備這種數(shù)據(jù)分享的機制。即使是公鑰加密算法,一個公鑰加密的數(shù)據(jù)也只能發(fā)送給一個解密者。而從訪問控制技術(shù)角度來看,傳統(tǒng)的訪問控制算法也僅支持可信的服務(wù)器制定和實施訪問控制策略。
基于屬性的加密體制[3-4](attribute-based encryption,ABE)是近些年來提出的一種功能加密體制,它拓展了傳統(tǒng)公鑰加密的范疇,在加解密操作中賦予一套訪問策略以及具備一定描述性的屬性集合,只要屬性集合與訪問策略之間足夠相似,那么就能夠在眾多加密者與解密者之間實現(xiàn)安全的數(shù)據(jù)共享。相比一般公鑰加密算法,ABE 不僅為加密信息提供了靈活的訪問控制功能,還具備一定的容錯性質(zhì),因此在指紋驗證、虹膜驗證、人臉識別等生物特征識別領(lǐng)域[5]具有潛在的應(yīng)用價值,尤其在個人健康記錄云當(dāng)中[6]有著廣闊的應(yīng)用前景,填補了傳統(tǒng)密碼學(xué)在這方面的應(yīng)用空白。具體來說目前主要有兩種主流ABE 算法:一種是基于密鑰策略的ABE算法[7](key policy attribute-based encryption,KPABE),它將訪問策略嵌入到密鑰當(dāng)中,而將屬性集合則嵌入到密文當(dāng)中;一種是基于密文策略的ABE算法[8](ciphertext policy attribute-based encryption,CP-ABE),它將訪問策略嵌入到密文當(dāng)中,而將屬性集合則嵌入到密鑰當(dāng)中。CP-ABE 在數(shù)據(jù)加密過程中支持?jǐn)?shù)據(jù)屬主自由制定訪問策略,而密鑰當(dāng)中嵌入的屬性集合又能夠表征不同解密者的身份,因此CP-ABE 非常適合面向PHR 系統(tǒng)構(gòu)建安全又靈活訪問控制機制。
盡管CP-ABE 具備了傳統(tǒng)數(shù)據(jù)加密和訪問控制算法所不具備的獨特性質(zhì),但是其距離實際應(yīng)用仍然相距甚遠。其中最關(guān)鍵的問題就是如何實現(xiàn)高效的、安全的、細粒度的屬性撤銷機制。在絕大多數(shù)應(yīng)用場景下,屬性都是動態(tài)變化的,其中包括系統(tǒng)級屬性變化(系統(tǒng)新增或者刪除某個屬性)、用戶撤銷(注冊新用戶或者注銷舊用戶)、以及屬性級撤銷(用戶增加屬性或者刪除舊屬性)。這些動態(tài)變化對數(shù)據(jù)的機密性造成了非常巨大的影響,因為一旦屬性發(fā)生變化,原有的訪問策略會使得未授權(quán)用戶獲取訪問權(quán)限,或者已授權(quán)用戶突然失去訪問權(quán)限。如果沒有做好屬性撤銷工作,以上情況就很有可能發(fā)生并使整體的訪問控制完全失控。因此,構(gòu)建合理的屬性撤銷機制是實現(xiàn)安全且靈活的ABE 算法的核心。
目前相關(guān)的研究學(xué)者對ABE 撤銷機制做了許多研究,但是撤銷工作往往涉及巨大的計算量,甚至導(dǎo)致最后解密計算無比復(fù)雜,于是使得許多方案無法直接應(yīng)用于PHR 系統(tǒng)當(dāng)中,否則將會極大地降低PHR 系統(tǒng)的可用性。因此如何制定靈活的高效的撤銷機制乃是將ABE 算法應(yīng)用到PHR 系統(tǒng)當(dāng)中的當(dāng)務(wù)之急。
Laranjo 等人[1]最早指出在未來的醫(yī)療系統(tǒng)將逐步發(fā)展成為一種以病人為中心的醫(yī)療系統(tǒng),病人將擁有直接獲取自己醫(yī)療數(shù)據(jù)的權(quán)利。他們的工作說明了未來的PHR 數(shù)據(jù)分享應(yīng)當(dāng)具備相當(dāng)?shù)撵`活性。Chen 等人[9]指出基于云計算的PHR 系統(tǒng)處于一種更為開放的環(huán)境,因此不僅需要對PHR 數(shù)據(jù)進行加密,更應(yīng)當(dāng)允許用戶自己決定誰可以獲取他們的健康數(shù)據(jù)。為了實現(xiàn)該功能,他們提出了一種基于拉格朗日插值法的動態(tài)醫(yī)療數(shù)據(jù)訪問控制算法,使得醫(yī)療數(shù)據(jù)分享在靈活性和安全性上都得到了很大的提升。Li 等人[10]根據(jù)醫(yī)療數(shù)據(jù)分享系統(tǒng)中用戶的數(shù)據(jù)接入需求將系統(tǒng)劃分為兩個安全域:公有域與私有域。公有域包含醫(yī)生、護士以及醫(yī)藥研究院等大多數(shù)用戶,其中的PHR 數(shù)據(jù)分享采用基于多權(quán)威的密文策略屬性加密算法。個人域包含與用戶有個人密切關(guān)系的人,其中的PHR 數(shù)據(jù)分享采用密鑰策略屬性加密算法。該算法能夠較好地提高PHR 數(shù)據(jù)分享的秘鑰管理效率。Zhang 等人[11]設(shè)計了一種基于等級化匿名ABE 的醫(yī)療數(shù)據(jù)訪問控制算法,該方案能夠充分保護了用戶的隱私并且有效縮小密鑰的尺寸。
在屬性撤銷方面,Pirretti 等人[12]最早提出了一種ABE 屬性撤銷的方法:每個屬性均包含有效期,鑒權(quán)中心周期性地釋放屬性的最新版本并更新所有解密者的私鑰組件。該方法實現(xiàn)起來很簡單但是存在諸多缺陷,例如有效期時長的確定缺乏現(xiàn)實依據(jù)、所有訪問者必須保存并即時更新每個時間段的私鑰。Bethencourt 等人[8]提出為解密者的每個屬性設(shè)置終止日期,而在密文的訪問策略里附帶每個屬性的時間信息。解密過程中,如果解密者屬性的終止日期在時間信息之前,那么視該屬性為無效屬性。盡管該方法降低了密鑰更新和存儲的開銷,但無法支持屬性的即時撤銷。Boldyreva 等人[13]提出一種基于二叉樹的ABE 撤銷機制,將KP-ABE 算法當(dāng)中每個解密者關(guān)聯(lián)至二叉樹中的節(jié)點,同時將私鑰分為由解密者保留的秘密組件以及由鑒權(quán)中心持有的向全局公開的更新組件,該機制最終使得密鑰更新的數(shù)量與解密者數(shù)量呈對數(shù)關(guān)系,然而仍無法實現(xiàn)屬性的即時撤銷。在此之后,也有部分學(xué)者提出了利用密鑰隔離技術(shù)[14-15](Key-Insulated Mechanism)實現(xiàn)ABE 屬性撤銷,雖然能夠保證不同時間片段的前后向安全性,但是如何合理分配時間片段仍然是一個難題。Ibraimi 等人[16]在CP-ABE 算法當(dāng)中引入第三方仲裁中心來掌握屬性撤銷列表,這使得私鑰變?yōu)閮刹糠?,其中一部分私鑰由仲裁者持有。解密過程中仲裁中心首先判斷是否存在已被撤銷的屬性,若沒有則使用該部分私鑰完成部分解密工作,然后由用戶自己完成剩余的解密工作。該算法利用仲裁中心減輕了鑒權(quán)中心的工作負擔(dān),但是必須保證仲裁者是誠實的并且始終在線。文獻[17-18]均采用代理重加密技術(shù)(Proxy Re-Encryption),利用密鑰中心來標(biāo)記主密鑰的演化版本,由主密鑰產(chǎn)生的公鑰參數(shù)、私鑰以及密文都用版本號來標(biāo)記,當(dāng)撤銷發(fā)生時由密鑰中心更新被撤銷屬性主密鑰構(gòu)件的版本號。文獻[19]提出了一種密鑰的協(xié)作管理機制,不僅能夠避免將密鑰完全托管給密鑰中心而帶來的信息泄露風(fēng)險,而且能夠防止用戶密鑰管理不慎所產(chǎn)生的密鑰泄露問題。其采用了一種基于屬性群[20-21]的撤銷方法保證密鑰的前/后向安全性,然而在重加密過程中執(zhí)行的指數(shù)運算次數(shù)與屬性群中用戶數(shù)量呈線性關(guān)系,這就導(dǎo)致在執(zhí)行海量屬性的撤銷時效率不盡如人意。值得注意的是,以上研究均采用了間接撤銷的思路,即由某個機構(gòu)周期性地更新用戶私鑰組件,只有未被撤銷的用戶才能獲取更新的私鑰,而被撤銷的用戶將不再獲取更新的私鑰。也有部分研究采用了直接撤銷的思路[22-23],但是直接撤銷機制很難做到細粒度撤銷,同時會增加公鑰參數(shù)的長度,因此ABE 撤銷機制的研究大都集中于間接撤銷。
為了解決以上問題,本文基于間接撤銷思路在現(xiàn)有方案的基礎(chǔ)上,對ABE 撤銷方案的靈活性、安全性以及計算效率等方面進行了改進。首先提出了快速的即時撤銷(fast and immediate revocation,簡稱FIR)算法,不需要用戶保持在線以更新私鑰,并使得解密時獲取屬性群密鑰所需的乘法操作降低為僅1 次,從而在保證即時撤銷的同時減少了解密開銷。圍繞FIR 算法設(shè)計了一種支持快速撤銷的密文策略屬性加密(ciphertext policy attribute-based encryption supporting fast revocation,簡稱CP-ABE-FR)方案,通過理論分析證明了該方案的安全性。基于以上的方案進一步構(gòu)建了一種應(yīng)用于PHR 系統(tǒng)的訪問控制系統(tǒng)模型,實現(xiàn)了個人健康記錄的安全加密以及靈活的訪問控制。仿真實驗表明,本文提出的PHR 系統(tǒng)訪問控制模型在加解密操作時具備較高的計算效率。
定義1(訪問策略,Access Policy) 設(shè){P1,P2,…,Pn}是由若干元素組成的集合,訪問策略是一組范式,它定義了一個由集合{P1,P2,…,Pn}的部分非空子集組成的集合,即A∈2{P1,P2,…,Pn}\?。
若任意兩個集合B和C滿足B∈A并且B?C時,使得C∈A,那么稱A 是單調(diào)訪問策略。我們稱集合S是關(guān)于訪問策略A 的合法集合,當(dāng)且僅當(dāng)S∈A。否則稱S為關(guān)于訪問策略A 的非法集合。
定義2(線性秘密分享算法,Linear Secret Sharing Scheme,以下簡稱LSSS) 我們稱關(guān)于集合P 的秘密分享算法Π在群Zp上是線性的,當(dāng)且僅當(dāng)其滿足以下條件:
(1)集合P 中每個元素對應(yīng)的分享因子都是Zp群上的一個向量;
(2)存在一個l行列m的矩陣M,我們稱之為分享矩陣。同時存在函數(shù)ρ,對于分享矩陣M 的任意第i行Mi,ρ(i)將Mi映射到P 中的某個元素。設(shè)列向量v=(s,v1,v2,…,vm),其中s∈Zp是待分享的秘密,v1,v2,…,vm∈Zp是一組隨機數(shù)。那么Mv是P 中所有元素對應(yīng)的分享因子行向量,其中λi=Miv就是元素ρ(i)的分享因子。
對于任意一種單調(diào)的訪問策略A,均存在與之對應(yīng)的分享矩陣M 和一個映射關(guān)系ρ的組合[21]。如果訪問策略A 包含l個元素,那么分享矩陣M 的行數(shù)必定為l。此外,LSSS 算法具有如下的重構(gòu)性質(zhì):假設(shè)集合S是關(guān)于訪問策略A 的合法集合,我們可構(gòu)建一個索引集合I?{1,2,…,l}使得I={i:ρ(i)∈S}。那么必定可以在多項式時間內(nèi)找到一組元素{ωi∈Zp}i∈I,使得
定義3(雙線性對,Bilinear Pairing) 設(shè)G1和G2是兩個階為大素數(shù)p的乘法循環(huán)群,g是G1的生成元,我們稱映射e:G1×G1→G2是關(guān)于G1和G2的雙線性映射,當(dāng)且僅當(dāng)e滿足以下性質(zhì):
(1)雙線性:對于任意的u,v∈G1以及a,b∈Zp,都有e(ua,vb)=e(u,v)ab;
(2)非退化性:存在生成元g,使得e(g,g)≠1,其中1 是乘法循環(huán)群G2的單位元;
(3)可計算性:對于任意的g1,g2∈G1,存在多項式時間的算法可以計算出e(g1,g2)的值。
定義4(判定雙線性Diffie-Hellman 困難假設(shè),Decisional Bilinear Diffie-Hellman Assumption,DBDH) 假設(shè)G1是一個階為素數(shù)p的群。在已知一組參數(shù){g,A=ga,B=gb,C=gc}的情況下,敵手難以區(qū)分e(g,g)abc∈G2與另一個隨機數(shù)e(g,g)z∈G2。
假設(shè)存在一個算法B 在獲得參數(shù){g,A,B,C,Z}后,輸出1 表示Z=e(g,g)abc,輸出0 表示Z=e(g,g)z。那么我們認為算法B 能夠以優(yōu)勢ε解決DBDH 假設(shè),當(dāng)且僅當(dāng):
定義5(屬性群,Attribute Group) 設(shè)N={att1,att2,…,attn}為系統(tǒng)的全局屬性集合,U ={u1,u2,…,uq}為系統(tǒng)全體用戶集合。對于任意屬性attx∈N,U 當(dāng)中所有擁有該屬性的用戶的集合稱為關(guān)于屬性attx的屬性群,記為Gx。
我們定義G={G1,G2,…,Gn}為系統(tǒng)中所有屬性群的集合,即對于任意一個屬性群Gx∈G,其中所有用戶共享一個關(guān)于attx的密鑰Kx∈Zp,稱為屬性群密鑰。我們定義屬性群密鑰集合為K ={K1,K2,…,Kn}。
本文提出的CP-ABE-FR 方案包括初始化算法set、私鑰生成算法kgen、加密算法enc、FIR 算法fir和解密算法dec五部分。方案架構(gòu)的描述如下:
set(1λ)→
kgen(S,PK,MSK)→
enc(A,PK,M)→CTinit:加密算法輸入訪問策略A、公鑰PK以及PHR 數(shù)據(jù)明文M,輸出與訪問策略A 對應(yīng)的初始密文CTinit。
fir(G,CTinit/CT)→
dec(t,headers,CT,SK)→Mor ⊥:解密算法輸入時間戳t、全局FIR 消息頭headers、FIR 密文CT以及私鑰SK,在時間戳協(xié)商無誤的情況下,當(dāng)用戶的屬性集合滿足訪問策略時輸出PHR 數(shù)據(jù)明文M,否則輸出⊥表示解密失敗。
基于提出的CP-ABE-FR 方案,本文構(gòu)建面向PHR 系統(tǒng)的訪問控制模型并進行了仿真實驗。該訪問控制模型包含以下四類角色:
(1)密鑰中心:是一個可信的權(quán)威機構(gòu),負責(zé)所有解密者的權(quán)限認證和各類密鑰的發(fā)布。
(2)PHR 加密者:是PHR 數(shù)據(jù)的擁有者,負責(zé)上傳自己的PHR 數(shù)據(jù)并自由制定相應(yīng)的訪問策略。
(3)PHR 存儲中心:是存儲PHR 數(shù)據(jù)的媒介,所有PHR 數(shù)據(jù)都以FIR 密文的形式存儲在當(dāng)中。此外一旦用戶的屬性集合發(fā)生撤銷,還將負責(zé)對相關(guān)的密文進行即時的更新。
(4)PHR 解密者:是試圖獲取PHR 數(shù)據(jù)的一類用戶,其身份用一個屬性集合來表示。解密者擁有一個與其屬性集合相對應(yīng)的私鑰,并通過私鑰來解密密文。當(dāng)PHR 解密者的屬性集合發(fā)生改變時,系統(tǒng)需要對該屬性采取即時的撤銷以保證前向/后向安全性。
該系統(tǒng)模型的工作流程如圖1 所示,在系統(tǒng)正式啟動時,密鑰中心執(zhí)行初始化算法產(chǎn)生公鑰PK并發(fā)送給PHR 加密者和PHR 存儲中心。當(dāng)有PHR解密者提出關(guān)于某屬性集合S的密鑰生成請求時,密鑰中心執(zhí)行密鑰生成算法產(chǎn)生與該屬性集合相對應(yīng)的私鑰。PHR 加密者通過加密算法Encrypt使用公鑰PK和訪問策略A 對PHR 數(shù)據(jù)明文M進行加密生成初始密文CTinit交由PHR 存儲中心存儲。PHR 存儲中心收到初始密文之后首次執(zhí)行FIR 算法生成FIR 消息頭headers和FIR 密文CT。當(dāng)某個PHR 解密者撤銷屬性atty時,PHR 存儲中心對重加密密文再次執(zhí)行FIR 算法,并更新生成新的FIR 消息頭headers′和FIR 密文CT′。如果PHR 解密者發(fā)出解密請求,PHR 存儲中心和PHR 解密者立即協(xié)商此時的時間戳t,并執(zhí)行解密算法。如果此時的屬性集合滿足訪問策略且時間戳無誤,那么解密者則順利獲取訪問權(quán)限,然后解密得到PHR 數(shù)據(jù)明文。反之則無法獲取任何有效信息。
圖1 PHR 系統(tǒng)訪問控制模型流程
設(shè)全局屬性空間為N ={att1,att2,…,attn},初始屬性群集合為G ={G1,G2,…,Gn}。首先輸入一個安全參數(shù)1λ,算法產(chǎn)生一個長度為λ比特的素數(shù)p以及兩個階為p的循環(huán)群G1和G2。設(shè)g是G1的一個生成元。然后算法生成一個雙線性對映射e:G1×G1→G2、一組與屬性空間N 對應(yīng)的隨機數(shù){h1,h2,…,hn}以及兩個抗碰撞的散列函數(shù)H:{0,1}?×{0,1}?→G1和H1:{0,1}?→Zp。隨后選擇兩個秘密的隨機數(shù)α,β∈Zp,最終輸出公鑰:
同時保留主密鑰:
選擇一個隨機數(shù)τ∈Zp并計算D1=gα+βτ以及D2=gτ。對于屬性集合S當(dāng)中的任意屬性attx,計算對于任意用戶uk,該用戶自己選擇一個秘密字符σk∈{0,1}?,然后產(chǎn)生一個對話私鑰SKsession,k=H(IDk,σk)以及一個對話公鑰PKsession,k=gH(IDk,σk),其中IDk為該用戶唯一的身份標(biāo)識。最后輸出關(guān)于屬性集合S的私鑰:
對于一個訪問策略A,記其包含的屬性總數(shù)為l。加密算法首先生成對應(yīng)的LSSS 訪問結(jié)構(gòu)(M,ρ),其中M 是一個l行m列的矩陣,ρ為映射函數(shù)負責(zé)將矩陣的任意一行映射為訪問策略里的某個屬性。其次生成一個秘密數(shù)s∈Zp以及一個隨機向量v=(s,v1,v2,…,vm),其中v1,v2,…,vm都是Zp上的隨機數(shù)。然后計算C1=M?e(g,g)αs和C2=gs。同時對于任意一個屬性attρ(i)計算,其中λi=Miv。最后輸出初始密文:
基于文獻[19]采用的撤銷方案基礎(chǔ)上,我們提出并采用FIR 算法優(yōu)化屬性撤銷的過程,使得用戶不需要保持在線以更新私鑰。該算法執(zhí)行過程如下:
如果針對某初始密文CTinit首次執(zhí)行FIR 算法,通過屬性群集合G ={G1,G2,…,Gn}的描述產(chǎn)生對應(yīng)的屬性群密鑰集合K ={K1,K2,…,Kn}。其次選擇一個秘密隨機數(shù)γ∈Zp并產(chǎn)生對話公鑰PKsession=gγ以及對話私鑰SKsession=γ。然后計算關(guān)于任意用戶uk的因子
假設(shè)任意一個屬性群Gx∈G 包含的用戶數(shù)量為d。對于該屬性群,F(xiàn)IR 算法產(chǎn)生一個多項式fattx。隨后產(chǎn)生一組元素{P0=Kx+a0,P1=a1,…,Pd=ad},即關(guān)于該屬性群的FIR 消息頭:
以此類推,全局的FIR 消息頭為:
最終FIR 密文為:
當(dāng)撤銷某個用戶的屬性atty時,首先將屬性群集合更新為:其中是剔除了該用戶的屬性群。 相應(yīng)的,屬性群密鑰集合更新為:Kn},其中是更新的屬性群密鑰。 然后中所有用戶各自產(chǎn)生自己的隨機數(shù)。 為了不失一般性,我們假設(shè)用戶uk產(chǎn)生的新隨機數(shù)為并計算新的對話公鑰。 云存儲中心根據(jù)新的對話私鑰計算,隨后產(chǎn)生新的多項式以生成新的FIR 消息頭:
于是全局FIR 消息頭將更新為:
之后所有訪問策略中包含屬性atty的FIR 密文將更新為:
可以看到,以上的全部過程不需要用戶保持在線以更新自己的私鑰,從而極大提高了系統(tǒng)的可用性。
在解密算法當(dāng)中我們通過時間戳克服用戶在更新私鑰時必須保持在線的問題,使得用戶不需要更新自己的私鑰就可以實現(xiàn)屬性的即時撤銷,具體的執(zhí)行過程如下:
當(dāng)建立解密會話時,首先記錄此時的時間戳t。緊接著將全局FIR 消息頭更新為:
隨后將更新后的全局FIR 消息頭以及FIR 密文發(fā)送給用戶。之后用戶首先通過自己的時間戳t計算。對于任意屬性attx∈S,解密算法執(zhí)行如下計算獲取對應(yīng)的屬性群密鑰:
不難看出,獲取屬性群密鑰所需的乘法操作僅需1 次。相比現(xiàn)有的屬性群撤銷方法,F(xiàn)IR 極大地優(yōu)化了解密開銷。要注意的是,如果用戶非法獲取了更新后的全局FIR 消息頭,他將無法知道更新所用的時間戳,那么則無法獲取正確的屬性群密鑰。
獲取屬性群密鑰之后,解密算法執(zhí)行如下計算:
根據(jù)LSSS 性質(zhì)可知,如果屬性集合不滿足訪問策略的權(quán)限,那么將無法在多項式時間內(nèi)恢復(fù)出秘密s,并導(dǎo)致解密失敗。反之則能在多項式時間內(nèi)恢復(fù)出秘密s,從而使下式成立:
將此時得到的參數(shù)記為A,然后繼續(xù)執(zhí)行如下運算:
將此時得到的參數(shù)記為B,最終執(zhí)行如下運算即可獲取正確的消息明文:
由以上的密文組成可以看出,對于撤銷了屬性atty的用戶,即使其利用之前獲取的消息頭計算得到屬性群密鑰Ky也無法完成解密獲取正確的消息明文,因為此時密文已被更新。因此可以保證方案的前向安全性。
對于屬性集合中仍然包含屬性atty或者剛剛擁有屬性atty的用戶,當(dāng)發(fā)起解密時只能獲取當(dāng)前時間戳的重加密消息頭和重加密密文,即使獲取了過去某個時刻的消息頭也無從知曉具體的會話時間是多少,所以無法抽取過去的屬性群密鑰。即使其已下載了過去的密文也不能正確解密。因此可以保證方案的后向安全性。
本文基于FIR 算法構(gòu)造了CP-ABE-FR 方案,該方案的安全性建立在DBDH 困難假設(shè)的難解性之上。為方便分析,我們給出如下定理和相應(yīng)的證明:
定理如果DBDH 問題是難解的,那么一定不存在多項式時間內(nèi)的敵手能以不可忽略的優(yōu)勢破解CP-ABE-FR 方案。
證明為了證明以上的定理,我們設(shè)計一種挑戰(zhàn)游戲,通過該游戲?qū)P-ABE-FR 方案的機密性規(guī)約到DBDH 問題的難解性上。該游戲由敵手A、模擬器B 以及挑戰(zhàn)者C 共同參與完成,流程如下:
(1)初始化階段:首先敵手A 向模擬器B 發(fā)送一個挑戰(zhàn)訪問策略A?。其次挑戰(zhàn)者C 產(chǎn)生一個循環(huán)群G1,選擇該群的一個生成元g以及三個秘密數(shù)a,b,c∈Zp,并將g、A=ga、B=gb、C=gc和Z發(fā)送給模擬器B。然后模擬器B 選擇一個循環(huán)群G2以及一個雙線對映射e:G1×G1→G2,一組秘密隨機數(shù){β,r1,r2,…,rn}、一個屬性群集合G 以及兩個隨機預(yù)言機H:{0,1}?×{0,1}?→G1和H1:{0,1}?→Zp。最后模擬器B 向敵手A 發(fā)送如下的公鑰:
(2)詢問階段:敵手A 向模擬器B 有限次地發(fā)送如下兩種詢問:
(a)私鑰詢問:首先模擬器B 維護一個列表List。其次敵手A 在屬性群集合G 中任意選擇一個用戶uk(記用戶uk的身份表示為IDk、屬性集合為S)并向模擬器B 發(fā)出關(guān)于屬性集合S的私鑰請求。然后模擬器B 產(chǎn)生隨機數(shù)R1,R2,R3∈Zp,然后返回私鑰:
最后模擬器B 在列表List 當(dāng)中添加關(guān)于用戶uk的元組{IDk,S,PKsession,k=gH(IDk,r1),R1,R2,R3}。
(b)加密詢問:首先敵手A 選擇一個PHR 數(shù)據(jù)明文M以及一個訪問策略A,并向模擬器B 發(fā)送關(guān)于M和A 的加密請求。其次模擬器B 首先根據(jù)屬性群集合產(chǎn)生對應(yīng)的屬性群密鑰集合K ={K1,K2,…,Kn}并生成與訪問策略A 相對應(yīng)的LSSS 訪問結(jié)構(gòu)矩陣(M,ρ),同時選擇一個秘密數(shù)s∈Zp以及一個隨機向量v=(s,v1,v2,…,vm),計算λi=Miv。然后模擬器B 產(chǎn)生如下密文給A:
同時從List 當(dāng)中抽取用戶的對話公鑰PKsession,k并按照真實的重加密算法構(gòu)造全局重加密消息頭。對于不在List 當(dāng)中的用戶,模擬器B 調(diào)用私鑰生成預(yù)言機來產(chǎn)生對應(yīng)于該用戶的元組并添加進列表List 當(dāng)中。最終模擬器B 將密文和對應(yīng)于此時時間戳的全局重加密消息頭發(fā)送給敵手A。
(3)挑戰(zhàn)階段:首先敵手A 向模擬器B 提交兩個長度相同的PHR 數(shù)據(jù)明文M1和M2。其次模擬器B 生成與A?對應(yīng)的LSSS 訪問結(jié)構(gòu)(M?,ρ?)以及一個隨機向量v=(s,v1,v2,…,vm)。然后對于任意屬性attρ(i)∈A?計算,其中λi=Miv。最后模擬器B 選擇一個隨機的比特值δ∈{0,1}并返回如下的挑戰(zhàn)密文給A:
(4)詢問階段:與第2 階段一樣,敵手A 繼續(xù)向模擬器B 發(fā)送有限次的私鑰詢問和加密詢問。要注意的是,所有詢問必須滿足以下的限制:
(a)私鑰詢問過程中,所有的屬性集合S都不可以滿足挑戰(zhàn)訪問策略A?;
(b)訪問策略A?或者是M1和M2不可以用來進行加密詢問。
(5)猜測:敵手A 輸出δ′∈{0,1}作為對δ的猜測。如果δ=δ′則敵手A贏得挑戰(zhàn)游戲,同時模擬器B 輸出1 表示其猜測Z=e(g,g)abc。如果δ≠δ′則敵手挑戰(zhàn)失敗,同時模擬器B 輸出0 表示猜測Z=e(g,g)z。
當(dāng)Z=e(g,g)abc時,挑戰(zhàn)階段的加密過程與真實CP-ABE-FR 算法的加密過程相同。假設(shè)敵手A破解CP-ABE-FR 算法的優(yōu)勢為ε′,那么模擬器B輸出1 的概率為:
當(dāng)Z=e(g,g)z時,敵手A 所獲得的挑戰(zhàn)密文是由一個完全隨機的密文,那么敵手A 的猜測是完全隨機的。在這樣的情況下,模擬器B 輸出1 的概率為:
因此,模擬器B 解決DBDH 問題的優(yōu)勢滿足:
由此可以推斷,如果不存在多項式時間算法能夠以不可忽略的優(yōu)勢ε解決DBDH 問題,那么必然不存在多項式時間敵手A 破解CP-ABE-FR 算法。所以本算法能夠很好地保證機密性。
合謀攻擊是指多名解密者通過各自的私鑰非法地產(chǎn)生一個全新的私鑰,而這個全新的私鑰卻能夠正確實現(xiàn)正確的解密。假如這么多名解密者的屬性集合都不符合密文的訪問策略,卻能夠通過合謀產(chǎn)生合法的私鑰,那么密文的安全性將受到巨大的威脅。
在CP-ABE-FR 方案中,每產(chǎn)生一個私鑰時算法都會生成一個不同的隨機數(shù)τ,并將這個隨機數(shù)嵌入到私鑰組件當(dāng)中,即每個私鑰都有一個不同的D=gα+βτ。即使多名消息訪問者嘗試進行合謀,也無法獲取一個合法的私鑰,因為來自不同消息訪問者的私鑰組件內(nèi)嵌入了不同的隨機數(shù)。綜上所述,CP-ABE-FR 能夠很好地抵抗合謀攻擊。
本文在LHS 方法[19]以及Hur 方法[21]的基礎(chǔ)上針對屬性撤銷過程中產(chǎn)生過大的計算負荷的問題進行了改進,提出了FIR 算法。為方便分析FIR 的撤銷效率,我們定義Tmul以及Texp分別為生成消息頭以及抽取屬性群密鑰時執(zhí)行單次乘法或指數(shù)運算所需的時間。
比較結(jié)果如表1 所示,LHS 方法[19]以及Hur 方法[21]生成關(guān)于屬性群Gx的消息頭時均需要執(zhí)行1次乘法運算以及2d次指數(shù)運算,而抽取屬性群密鑰時均需要執(zhí)行d次乘法以及d(d+3)/2 次指數(shù)運算,其中d為屬性群Gx包含的用戶數(shù)量。
表1 撤銷效率比較
本文提出的FIR 算法在生成關(guān)于屬性群Gx的消息頭只需要執(zhí)行1 次乘法,相比LHS 方法[19]和Hur 方法[21]減少了2d次的指數(shù)運算。同時FIR 算法在抽取對應(yīng)的屬性群密鑰時需執(zhí)行d次乘法以及d(d+1)/2 次指數(shù)運算,相比以上兩種方案減少了d次指數(shù)運算。因此FIR 算法提高了屬性撤銷的計算效率。
本節(jié)在撤銷功能角度上對基于FIR 算法設(shè)計的CP-ABE-FR 方案與其他類似方案進行了比較。
比較結(jié)果如表2 所示,PTM 方法[12]、HS 方法[14]以及QLZ 方法[18]利用密鑰中心來執(zhí)行撤銷,這使得密鑰中心必須完全可信。而且由于密鑰中心已經(jīng)承擔(dān)了公鑰和私鑰的發(fā)布工作,再承擔(dān)撤銷工作無疑將增加了其本身的計算負荷。IPN 方法[16]和YWR 方法[17]的方案利用第三方的仲裁中心執(zhí)行撤銷,雖然分擔(dān)了密鑰中心的負荷,但是仲裁中心必須要保持完全可信。本文提出的CP-ABE-FR 利用現(xiàn)有的密文存儲中心執(zhí)行撤銷工作,其可信程度只需要保持半可信就可以保證撤銷工作的安全性。除此之外不需要用戶保持實時在線更新私鑰,同時又可以實現(xiàn)即時撤銷。因此在撤銷功能上,本文提出的方案較其他方案而言有顯著改進。
表2 撤銷功能比較
本系統(tǒng)的仿真硬件為Intel(R)Core(TM)i5-4200H CPU @ 2.8GHz,內(nèi)存為4GB,系統(tǒng)為Windows 10,所使用代碼庫為JPBC2.0,實驗基于512 位的橢圓曲線,曲線的階為120 bit 的大素數(shù)。實驗分別基于LHS 方法[19]、Hur 方法[21]以及本文所提出方案構(gòu)建了PHR 系統(tǒng)訪問控制模型,并記錄了在不同的屬性數(shù)量情況下的平均加解密計算時間。
幾種系統(tǒng)模型在不同屬性個數(shù)情況下的平均加密時間如圖2 所示。LHS 方法[19]和Hur 方法[21]都支持基于屬性群的細粒度即時撤銷,因此在加密過程中都需要對密文再次加密。Hur 方法[21]的加密時間整體上稍短于LHS 方法[19]的方案,而基于CPABE-FR 的PHR 系統(tǒng)訪問控制模型盡管增加了FIR算法,但是FIR 算法本身并沒有給系統(tǒng)的加密工作產(chǎn)生太大的計算負荷。
圖2 平均加密時間對比
同樣地,平均解密時間的統(tǒng)計如圖3 所示。LHS 方法[19]和Hur 方法[21]所需的解密時間相當(dāng),但是LHS 方法[19]采用了分布式的私鑰進行解密,所以總體上解密時間稍長。而CP-ABE-FR 則將PHR 解密時間降低了約9.3%。因此總體來說,本文所提出的PHR 系統(tǒng)訪問控制模型的解密計算效率是比較可觀的。
圖3 平均解密時間對比
個人健康記錄云作為云計算的延伸服務(wù),既需要提供安全的數(shù)據(jù)保護,也需要支持靈活的訪問權(quán)限控制。ABE 算法能夠滿足個人健康記錄云的安全需求,但是現(xiàn)有ABE 算法往往依賴大量的計算才能保證在屬性撤銷的前/后向安全。本文在ABE 算法的基礎(chǔ)上提出了一種快速的即時撤銷算法,使得用戶不需要在線更新私鑰就可以實現(xiàn)快速的、即時的撤銷,同時降低了撤銷的計算開銷。理論證明該方法能夠保證PHR 數(shù)據(jù)的安全性。仿真實驗表明,基于本方法構(gòu)建的PHR 系統(tǒng)訪問控制模型具備較高的加解密計算效率。在算法的計算效率上可以做進一步的改善,比如預(yù)計算、外包計算思路縮短解密時間,這將是下一步的研究方向。