范春芳,卜 婧,李文超,宋 冬,熊 虎,鐘俊宏,吳佳欣,徐千寓,王振國*
(1.武警特色醫(yī)學(xué)中心,天津300162;2.電子科技大學(xué)信息與軟件工程學(xué)院,成都610054;3.武警后勤學(xué)院,天津300309)
隨著云計算的發(fā)展,越來越多的醫(yī)療系統(tǒng)采用云服務(wù)存儲患者的電子病歷(electronic medical record,EMR)[1]。在基于云存儲的EMR 中,采用加密算法對重要信息加密來保證信息安全是必然選擇。在公鑰加密體制下,每個用戶需要獨一無二的密鑰,而密鑰需要密鑰分配中心統(tǒng)一分配,大量的密鑰成為了系統(tǒng)管理的難題。雖然基于身份的加密(identity-based encryption,IBE)方案既能保證信息傳輸?shù)陌踩玔2],又能解決密鑰管理問題,但當(dāng)用戶需要傳輸信息時,此方案只能通過發(fā)送私鑰給該用戶或使用對方的公鑰重新加密。這種以犧牲用戶隱私安全為代價或承擔(dān)巨大運算開銷的數(shù)據(jù)共享方式應(yīng)用在目前的醫(yī)療系統(tǒng)中存在著很大的局限性。
針對上述問題,Blaze 等[3]在1998 年的歐洲密碼學(xué)年會上首次提出代理重加密(proxy re-encryption,PRE)方案。該方案是一種能夠靈活分享加密數(shù)據(jù)的方法,可讓用戶在一個半可信代理服務(wù)器的幫助下完成對加密后密文的安全轉(zhuǎn)換。半可信代理服務(wù)器利用轉(zhuǎn)換密鑰將授權(quán)人(delegator)公鑰加密的密文轉(zhuǎn)換成被授權(quán)人(delegatee)通過私鑰可以解密的密文。Green 等[4]提出了基于身份的代理重加密(identity-based proxy re-encryption,IB-PRE)方案,該方案結(jié)合了上述身份基加密和代理重加密二者的優(yōu)點,不但克服了公鑰加密中的密鑰管理難題,還可以實現(xiàn)數(shù)據(jù)的安全、靈活共享。但在實際應(yīng)用中需要患者授權(quán)醫(yī)生查看本人病歷,而醫(yī)生不能授權(quán)患者查看醫(yī)療信息庫,因此需要單向身份基代理重加密(unidirectional IB-PRE)以實現(xiàn)單向的訪問授權(quán)。若出現(xiàn)患者的病歷涉及到醫(yī)院轉(zhuǎn)診,該患者的主治醫(yī)生、主管護士、科室主任、護士長等均需要了解該患者的病情,或者該患者需要多部門多名醫(yī)生進行會診,對患者病歷信息還需多次授權(quán)的情況,這就需要利用帶有多跳功能的身份基代理重加密(multi-hop IB-PRE,MH-IB-PRE)方案將醫(yī)療記錄進行多次授權(quán)。在當(dāng)前互聯(lián)網(wǎng)醫(yī)療信息系統(tǒng)的構(gòu)建過程中,患者的主治醫(yī)生、主管護士、科室主任、護士長應(yīng)當(dāng)在一定程度上共享經(jīng)該患者授權(quán)的全部或者部分信息,而疾控中心根據(jù)疾病防控情況也有可能需要了解該患者信息,這又涉及了多次授權(quán)的問題。但是,在傳統(tǒng)的代理重加密中,代理服務(wù)器一旦獲得用戶授權(quán)的轉(zhuǎn)換密鑰,就可以不受限制地重加密用戶的所有病歷記錄,這樣不利于保護用戶的隱私。由此,Shao 等[5]在隨機預(yù)言機模型下提出身份基條件代理重加密(identity-based conditional proxy re-encryption,IBCPRE)方案對代理服務(wù)器的重加密權(quán)力進行限制,然而該方案僅實現(xiàn)了單向單跳條件代理重加密。基于此,本文基于雙線性映射提出了單向多跳身份基條件代理重加密(unidirectional multi-hop IB-CPRE,UMH-IB-CPRE)方案。在該方案中,重加密的密文長度固定不變,不受重加密次數(shù)影響,這避免了多跳重加密的密文增長的負擔(dān),且本方案中代理重加密具有非交互性、抗共謀性。
雙線性配對(bilinear pairing)也叫雙線性映射,是研究現(xiàn)代密碼學(xué)的基礎(chǔ)。2001 年,Boneh 等[2]利用雙線性配對構(gòu)造了第一個實用并且可證安全的基于身份的加密方案。自此之后,雙線性映射在密碼學(xué)中得到了廣泛應(yīng)用,成了構(gòu)造眾多加密方案的有效工具。雙線性映射中定義了階數(shù)為素數(shù)q的乘法循環(huán)群G 和GT,f,k為生成元,定義在這2 個乘法循環(huán)群上的一個映射關(guān)系e:G×G→GT,其中箭頭表示映射關(guān)系。如果該映射同時滿足以下性質(zhì),那么稱e是一個雙線性映射:
(1)雙線性:e(fa,kb)=e(f,k)ab對于任意(f,k)∈G×G 與任意a,b∈Z*q均成立;
(2)非退化性:只要f,k≠1G就有e(f,k)≠1GT;(3)可計算性:對于任意(f,k)∈G×G,在多項式時間內(nèi)e(f,k)的結(jié)果是可以計算的。
本方案是基于DBDH(decisional bilinear Diffie-Hellman)問題的,DBDH 問題在基于身份密碼體制中有廣泛的應(yīng)用。
在該問題中,給出元組(u,ua,ub,uc,T)作為輸入,其中,需判斷T=e(u,u)abc是否成立。算法A 為概率多項式時間(probabilistic polynomial time,PPT),本方案中概率多項式時間算法A解決DBDH 問題的優(yōu)勢被定義為(u,ua,ub,uc,e(u,u)abc=1)]-Pr[A(u,ua,ub,uc,T=1)]|。若對于任意概率多項式時間算法A,均無法以不可忽略的優(yōu)勢解決DBDH 問題,則稱DBDH 問題是困難的。
UMH-IB-CPRE 方案由系統(tǒng)建立、密鑰生成、重加密密鑰生成、一級加密、二級加密、重加密、一級解密和二級解密8 個算法構(gòu)成,具體的形式化描述如下:
(1)系統(tǒng)建立。Setup(1k)→(msk,par):k作為安全參數(shù)輸入系統(tǒng)后,主密鑰msk和公共參數(shù)par被輸出。
(2)密鑰生成。KeyGen(msk,par,I)→skI:在該算法中輸入主密鑰msk、公共參數(shù)par和用戶身份I,則算法返回私鑰skI。
(3)重加密密鑰生成。ReKeyGen(par,skI,ω,I')→rk(I→I'|ω):公共參數(shù)par、授權(quán)用戶私鑰skI、條件ω 和被授權(quán)用戶身份I'作為輸入,算法返回轉(zhuǎn)換密鑰rk(I→I'|ω)。
(4)一級加密。Enc1(par,M,I)→σI:加密者對算法輸入用戶身份I、加密消息M和公共參數(shù)par,則算法輸出基于用戶身份I的一級密文σI。
(5)二級加密。Enc2(par,ω,M,I)→σ(I,ω):加密用戶輸入用戶身份I、明文M、條件ω 和公共參數(shù)par,算法輸出二級密文σ(I,ω)。
(6)一級解密。Dec1(σI,skI)→M:將基于用戶身份I加密的一級密文σI、用戶I的私鑰skI作為輸入,算法返回明文M。
(7)重加密。ReEnc(σ(I,ω),rk(I→I'|ω))→σ(I',ω):輸入密文σ(I,ω)和對應(yīng)的轉(zhuǎn)換密鑰rk(I→I'|ω),則算法輸出重加密密文σ(I',ω)。
(8)二級解密。Dec2(σ(I',ω),skI')→M:輸入重加密密文σ(I',ω)和用戶I'的私鑰skI',則算法輸出明文M。
此外,對于任意par,任意M∈GT,以及任意私鑰skI、skI',該方案需滿足:
Dec1(Enc1(par,M,I),skI)=M;
Dec2(Enc2(par,M,I),skI)=M;
Dec2(ReEnc(Enc2(par,ω,M,I), ReKeyGen(par,skI,ω,I')),skI')=M。
UMH-IB-CPRE 方案需可以抵抗選擇明文攻擊(chosen-plaintext attack,CPA),故本方案包含一級密文和二級密文2 種安全模型。
1.4.1 一級密文安全模型
一級密文安全模型是不含有條件的、滿足普通重加密需要的密文安全模型。在一級密文安全模型中,C 作為挑戰(zhàn)者,A 作為敵手,如果A 不能夠以不可忽略的優(yōu)勢贏得游戲,那么認定UMH-IB-CPRE方案中的一級密文達到CPA 安全。一級密文安全模型的建立過程如下:
(1)系統(tǒng)初始化。C 建立系統(tǒng),并將公開參數(shù)par傳輸給A。
(2)階段1。A 發(fā)出查詢命令,C 返回相應(yīng)的回應(yīng)。私鑰生成預(yù)言機Osk(Ii):A 輸入身份信息Ii,C 將skIi←KeyGen(par,msk,Ii)發(fā)送給A。轉(zhuǎn)換密鑰生成預(yù)言機Ork(Ii,Ij,ω):A 輸入信息(Ii,Ij,ω),C 將rk(I→I'|ω)←ReKeyGen(par,skIi,ω,Ij)發(fā)送給A。
(3)挑戰(zhàn)階段。A 提交目標(biāo)元組(I*,M0,M1),同時A 發(fā)出的詢問受以下限制:
①A 不能查詢身份I*的私鑰;
②消息M0,M1∈GT且長度相同。
C 隨機選取d∈{0,1},并把一級密文(par,Md,I*)作為挑戰(zhàn)密文發(fā)送給A。
(4)階段2。A 重復(fù)階段1 中的詢問,但不能對I*進行私鑰查詢。
(5)猜測階段。
A 輸出d'∈{0,1},若d'=d,則A 勝出;否則一級密文達到CPA 安全。
1.4.2 二級密文安全模型
二級密文安全模型是帶有條件的密文安全模型,其構(gòu)建過程如下:
(1)系統(tǒng)初始化。同1.4.1。
(2)階段1。A 發(fā)出查詢命令,C 返回相應(yīng)的回應(yīng)。私鑰生成預(yù)言機Osk(Ii):同1.4.1。轉(zhuǎn)換密鑰生成預(yù)言機Ork(Ii,Ij,ω):同1.4.1。代理重加密預(yù)言機Ore(Ii,Ij,ω,σ(Ii,ω)):A 輸 入信 息(Ii,Ij,ω,σ(Ii,ω)),C將σ(I',ω)←ReEnc(σ(I,ω),rk(I→I'|ω))發(fā)送給A。其中rk(I→I'|ω)←ReKeyGen(par,skIi,ω,Ij)。
(3)挑戰(zhàn)階段。A 提交一個目標(biāo)元組(I*,ω*,M0,M1),對A 的提交行為做如下限制:
①同1.4.1;
②同1.4.1;
③對于A 在上階段的任意轉(zhuǎn)換密鑰查詢輸入(Ii,Ij,ω),均滿足Ii≠I*或ω≠ω*。
C 隨機選取d∈{0,1},并將二級密文σ*(I*,ω*)←Enc2(par,ω*,Md,I*)作為挑戰(zhàn)密文發(fā)送給A。
(4)階段2。A 重復(fù)階段1 中的詢問,并受以下限制:
①A 不能查詢身份信息I*的私鑰;
②查詢轉(zhuǎn)換密鑰時輸入(Ii,Ij,ω),其中Ii≠I*或ω≠ω*;
③對于代理重加密查詢輸入(Ii,Ij,ω,σ(Ii,ω))需滿足Ii≠I*或ω≠ω*。
(5)猜測階段。同1.4.1。
本文基于身份的加密技術(shù)和代理重加密技術(shù)提出的UMH-IB-CPRE 的具體方案如下:
(1)系統(tǒng)建立。Setup(1k):安全參數(shù)k作為輸入,算法返回一個雙線性映射,記為(q,G,GT,e)。其中,q為乘法循環(huán)群G 和GT的階數(shù),e表示映射e:G×G→GT。隨機選取為G 中不同的2 個生成元。用戶身份空間為消息空間為GT,系統(tǒng)的主密鑰為msk:{a,b,c}(主密鑰在全方案各個算法中可以被重復(fù)使用,并在密鑰生成算法中用于加密生成密鑰),最后輸出公開參數(shù)par:
(2)密鑰生成。KG(msk,par,I):主密鑰msk、公共參數(shù)par與用戶身份作為輸入,選取t,x,y∈R并計算:α=a+x,β=b+y;sk={c(/a+bI),α(/a+bI),β/(a+bI),kx,ky,s/(a+bI)}。最后輸出用戶I的私鑰skI=(sk1,sk2,sk3,sk4,sk5,sk6)。
(3)重加密密鑰生成。RKG(par,skI,ω,I'):輸入公共參數(shù)par、授權(quán)用戶私鑰skI、被授權(quán)用戶身份I'∈和條件ω,計算最后輸出轉(zhuǎn)換密鑰rk(I→I'|ω)=(rk1,rk2,rk3)。
(4)一級加密。Enc1(par,M,I):為基于用戶身份I加密明文M∈GT并生成一級密文σI,數(shù)據(jù)發(fā)送者需執(zhí)行如下步驟:
②計算A=M·e(f,k)cα,B=e(f,k)(a+bI)α,A、B表示密文內(nèi)容,共同組成一級密文;
③輸出一級密文σI=(A,B)。
(5)二級加密。Enc2(par,ω,M,I):用戶輸入身份I、條件ω 和明文M∈GT,并生成二級密文σ(I,ω),具體加密過程如下:
②計算A'=M·e(f,k)cr,B'=f r,C'=e(f,k)(a+bI)r,D'=(ks)ω;
③輸出二級密文σ(I,ω)=(A',B',C',D')。
(6)一級解密。Dec1(σI,skI):輸入密文σI=(A,B)和私鑰skI,恢復(fù)明文M的解密計算為M=A/Bsk1。
(7)重加密。RE(σ(I,ω),rk(I→I'|ω)):輸入基于用戶身份I及條件ω 加密的二級密文σ(I,ω)=(A',B',C',D'),代理服務(wù)器利用重加密密鑰rk(I→I'|ω)對二級密文進行重加密計算:
最后輸出重加密密文σ(I',ω)=(A'',B'',C'',D'')。
(8)二級解密。Dec2(σ(I',ω),skI'):輸入σ(I,ω)=(A',B',C',D')和σ(I',ω)=(A'',B'',C'',D''),二 者 結(jié) 構(gòu) 相同,均可通過公式M=A''/(C'')sk1來恢復(fù)明文M。
表1 和表2 分別為UMH-IB-CPRE 方案與其他單向MH-PRE 方案和雙向MH-PRE 方案的屬性比較。為進一步分析本方案在同類條件代理重加密方案中的性能,對UMH-IB-CPRE 方案與其他IB-CPRE方案的計算用時進行了對比,詳見表3。
表1 UMH-IB-CPRE 方案與單向MH-PRE 方案的屬性比較
表2 UMH-IB-CPRE 方案與雙向MH-PRE 方案的屬性比較
表3 UMH-IB-CPRE 與其他IB-CPRE 方案的時間消耗比較
由表1、2 可知,本文提出的方案與其他MHPRE 方案相比,在實現(xiàn)密文定長、非交互、抗同謀等屬性的基礎(chǔ)上還支持條件控制的代理重加密。由表3 可知,本方案僅在二級加密Enc2 算法上比Zhou等[10]提出的方案耗時略高,其余算法的平均耗時都相對較低,尤其是解密算法的平均耗時大幅減少,降低了用戶端的運行負擔(dān)。雖然Luo 等[7]和Xiong 等[11]提出的2 個多跳IB-CPRE 方案可以抵抗選擇密文攻擊(chosen-ciphertext attack,CCA),但是付出了較高的時間及運行成本,使得各項運算的時間消耗成本遠高于本方案。相比而言,UMH-IB-CPRE 方案實現(xiàn)了CPA 安全,且獲得了較高的運算效率。
與身份基條件代理重加密方案相比較得出的各算法的時間消耗仿真實驗也驗證了UMH-IB-CPRE方案的優(yōu)勢,如圖1 所示。
圖1 各方案算法的時間消耗比較
時間消耗仿真實驗通過Windows7 操作系統(tǒng)(3.2 GHz 主頻,i5-4460 CPU,4 GB 內(nèi)存,64 位)下運行VC++6.0 來完成。
本文將通過證明相關(guān)定理來表明UMH-IBCPRE 方案的兩類密文可以在標(biāo)準(zhǔn)模型下抵抗自適應(yīng)身份選擇明文攻擊,達到CPA 安全。為驗證UMHIB-CPRE 方案的安全性,需要應(yīng)用基于DBDH 問題的定理,其定義如下:若有一個PPT 算法A 在CPA安全意義下攻破UMH-IB-CPRE 方案的一級或二級密文加密方案的優(yōu)勢是不可忽略的,那么一定存在一個PPT 算法C 能以不可忽略的優(yōu)勢解決雙線性映射中的DBDH 問題。
該定理在UMH-IB-CPRE 方案中的證明如下:假設(shè)存在一個PPT 算法A 攻破UMH-IB-CPRE 方案的優(yōu)勢是不可忽略的,則利用A 來構(gòu)造一個PPT算法C 能以不可忽略優(yōu)勢解決雙線性映射(q,G,GT,e)中的DBDH 困難問題。C 收到DBDH 困難問題輸入值〈G=〈u〉,ua,ub,uc,T〉來判斷T是否等于e(u,u)abc。為了達到目的,C與A 之間需進行密文安全性證明。
在一級密文安全性證明中,C 通過私鑰查詢、轉(zhuǎn)換密鑰查詢進行詢問,具體如下:
(2)階段1。A 發(fā)出查詢命令,C 返回相應(yīng)的回應(yīng)。私鑰查詢:A 輸入身份信息Ii,C 記錄下Ii,然后執(zhí)行算法KeyGen(par,msk={a0,b0,c0},Ii)→skIi,并將skIi發(fā)送給A。轉(zhuǎn)換密鑰查詢:A 輸入(Ii,Ij,ω),C 記錄下(Ii,Ij,ω),執(zhí)行KeyGen(par,msk={a0,b0,c0},Ii)獲 取skIi,然后運行ReKeyGen(par,skIi,ω,Ij),獲取rk(I→I'|ω)并返回給A。
(3)挑戰(zhàn)階段。A 提交目標(biāo)元組(I*,M0,M1),A 發(fā)出的詢問受以下限制:
①A 沒有查詢過I*身份相應(yīng)的私鑰,即C 沒有I*的私鑰查詢記錄;
②明文M0,M1∈GT且長度相同。
C 隨機選取d∈{0,1},s0∈Z*q,并計算A*=Md·T,作為挑戰(zhàn)密文返回給A。
(4)階段2。A 重復(fù)階段1 中的詢問,但A 不能對I*進行私鑰查詢。
(5)猜測階段??沈炞C,當(dāng)T=e(u,u)abc時σ*I*與基于I*加密的一級密文在形式上相同,σ*I*中s=s0,r=c/c0-s0。根據(jù)假設(shè),此時A 在攻破密文σ*I*并猜中d值方面的優(yōu)勢是不可忽略的。但是,如果T是GT中的隨機元,則Md被隱藏,即A 猜中d的值的概率不會大于1/2。
如果A 猜中d,則C 判定T=e(u,u)abc,否則C 判定T≠e(u,u)abc。通過上述方法實現(xiàn)A 以不可忽略的優(yōu)勢破解一級密文到C 以不可忽略的優(yōu)勢解決DBDH 問題上的歸約。而DBDH 困難問題是公認的數(shù)學(xué)困難問題,A 無法破解DBDH 數(shù)學(xué)困難問題,則不能攻破一級密文,由此完成了一級密文的安全證明。
在二級密文安全性證明中,C 通過私鑰查詢、轉(zhuǎn)換密鑰查詢及代理服務(wù)器重加密查詢進行詢問,具體如下:
(1)系統(tǒng)建立。同4.1。
(2)階段1。C 對于A 給出的查詢給予相應(yīng)的回應(yīng),包括私鑰查詢,同4.1;轉(zhuǎn)換密鑰查詢,同4.1;代理重加密查詢:A 輸入信息(Ii,Ij,ω,σ(Ii,ω)),C 記錄下(Ii,Ij,ω)并生成rk(I→I'|ω),然后運行ReEnc(σ(I,ω),rk(I→I'|ω))→σ(I',ω),并把σ(I',ω)返回給A。
(3)挑戰(zhàn)階段。A 發(fā)送目標(biāo)元組(I*,ω*,M0,M1),需要對A 的提交行為做如下限制:
①同4.1;②同4.1;
③A 查詢轉(zhuǎn)換密鑰時輸入(Ii,Ij,ω),其中Ii≠I*或ω≠ω*。C 查詢轉(zhuǎn)換密鑰時輸入(Ii,Ij,ω),其中Ii≠I*或ω≠ω*。
C 隨機選取d∈{0,1},并計算
(4)階段2。A 可以進行與階段1 中相同的查詢,但要做出如下限制:
①不允許A 對身份信息I*進行私鑰查詢;
②對于轉(zhuǎn)換密鑰查詢輸入(Ii,Ij,ω)需滿足Ii≠I*或ω≠ω*;
③對于代理重加密查詢輸入(Ii,Ij,ω,σ(Ii,ω))需滿足Ii≠I*或ω≠ω*。
(5)猜測階段??沈炞C,當(dāng)T=e(u,u)abc時與基于I*和ω*加密的二級密文在形式上相同中隨機數(shù)為r=c/c0。根據(jù)假設(shè),A 在攻破密文并猜中d值方面的優(yōu)勢是不可忽略的。但是,如果T是GT中的隨機元,則Md被隱藏,即A 猜中d的值的概率不會大于1/2。
若A 猜中d,則C 判定T=e(u,u)abc,否則C 判定T≠e(u,u)abc。通過上述方法實現(xiàn)A 以不可忽略的優(yōu)勢破解二級密文到C 以不可忽略的優(yōu)勢解決DBDH困難問題上的歸約。而DBDH 困難問題是公認的數(shù)學(xué)困難問題,A 無法破解DBDH 數(shù)學(xué)困難問題,則不能攻破一級密文,由此完成了一級密文的安全證明。
綜上所述,C 模擬了游戲中的挑戰(zhàn)者。若A 能夠攻破UMH-IB-CPRE 方案,即攻破本文的一級密文和二級密文加密方案的優(yōu)勢是不可忽略的,那么
本文基于Xiong 等[11]的方案提出了一個高效的、加條件的、基于身份的單向多跳代理重加密方案,滿足抗共謀性、重加密密文長度固定等良好屬性,能夠應(yīng)用于物聯(lián)網(wǎng)云存儲系統(tǒng)中。通過測試各個方案算法的時間消耗仿真實驗比較的結(jié)果表明,UMH-IB-CPRE 方案與其他IB-CPRE 方案相比顯著高效,且不受重加密次數(shù)影響,從而使解密步驟的成本大大減少。同時本方案的條件加密功能使加密者能決定密文是否能被重加密或滿足特定條件才可被重加密,在一定程度上限制了代理服務(wù)器的重加密行為。本方案在較好地保護用戶(患者)隱私安全的前提下大大地減少了運算成本,尤其在患者異地就診就醫(yī)、多人異地同時會診,疾控中心、醫(yī)療機構(gòu)等經(jīng)授權(quán)對醫(yī)療信息數(shù)據(jù)進行共享等場景下更具有顯著優(yōu)勢,能夠解決現(xiàn)實情況下用戶隱私不安全和反復(fù)授權(quán)耗費巨大算力的問題,具有廣泛的應(yīng)用前景。