李 琦,熊金波,黃利智,王 煊,毛啟銘,姚嵐午
(1.南京郵電大學(xué) 計(jì)算機(jī)學(xué)院、軟件學(xué)院、網(wǎng)絡(luò)空間安全學(xué)院,南京 210023; 2.南京郵電大學(xué) 物聯(lián)網(wǎng)技術(shù)與應(yīng)用協(xié)同創(chuàng)新中心,南京 210003; 3.福建師范大學(xué) 數(shù)學(xué)與信息學(xué)院, 福州 350117; 4.南京郵電大學(xué) 通信與信息工程學(xué)院,南京 210023)(*通信作者電子郵箱jinbo810@163.com)
隨著物聯(lián)網(wǎng)[1]和云計(jì)算[2]等新興技術(shù)的發(fā)展,智慧健康(Smart health, S-health)[3]為人們提供精確有效的遠(yuǎn)程健康服務(wù)。通過(guò)可穿戴或者植入式的傳感器設(shè)備,便捷地采集病人的生理信息(例如血糖、血脂),通過(guò)智能設(shè)備整合成個(gè)人健康檔案(Personal Health Record, PHR),經(jīng)由網(wǎng)絡(luò)上傳至云服務(wù)器,以此節(jié)約智能設(shè)備的存儲(chǔ)開銷、快捷地實(shí)現(xiàn)PHR共享,并快速地獲得醫(yī)生或者其他專業(yè)人員、機(jī)構(gòu)提供的健康服務(wù)。然而,PHR里包含了大量的個(gè)人隱私信息,如果處理不當(dāng),將極大地危害個(gè)人隱私,并降低病人使用S-health的積極性。
基于屬性的加密(Attribute-Based Encryption, ABE)[4]作為一種新的“一對(duì)多”加密模式,在保護(hù)數(shù)據(jù)機(jī)密性的同時(shí)實(shí)現(xiàn)細(xì)粒度的訪問(wèn)控制。密文策略ABE(Ciphertext-Policy ABE, CP-ABE)[5]作為一種將訪問(wèn)策略與密文相關(guān)聯(lián)的ABE模式,只有擁有滿足該訪問(wèn)策略的屬性的用戶才能正確解密,更適合由數(shù)據(jù)擁有者來(lái)定義訪問(wèn)策略的場(chǎng)景。因此,本文采用CP-ABE算法作為設(shè)計(jì)S-health中訪問(wèn)控制方案的基礎(chǔ)。
然而,在應(yīng)用傳統(tǒng)的CP-ABE算法[4-8]來(lái)實(shí)現(xiàn)S-health中訪問(wèn)控制之前,有兩個(gè)問(wèn)題需要注意。一方面,在傳統(tǒng)CP-ABE算法中,用戶的解密開銷通常隨著解密時(shí)用到的屬性數(shù)量呈線性增長(zhǎng),對(duì)于計(jì)算能力有限的智能設(shè)備而言,極大地降低了它們的解密效率。為此,Green等[9]提出了一個(gè)解密外包方法,將ABE中復(fù)雜的解密開銷外包至計(jì)算能力較強(qiáng)的第三方來(lái)執(zhí)行,例如云服務(wù)器,第三方返回一個(gè)ElGamal類型的部分解密密文(Partial Decryption Ciphertext, PDC),用戶端只需要執(zhí)行一次指數(shù)運(yùn)算即可恢復(fù)出明文,但是該P(yáng)DC是否正確計(jì)算是不能保證的。隨后,Lai等[10]提出了一個(gè)外包解密結(jié)果可以驗(yàn)證的方案,但是該方案需要加密一個(gè)額外的隨機(jī)消息來(lái)實(shí)現(xiàn)解密結(jié)果驗(yàn)證,加密開銷和密文長(zhǎng)度都是文獻(xiàn)[9]方案的兩倍。
另一方面,當(dāng)一些受限的用戶不能與云服務(wù)器端直接進(jìn)行交互時(shí),需要將其解密密鑰授權(quán)給第三方用戶,通過(guò)第三方用戶來(lái)獲取解密結(jié)果。但是,若直接利用文獻(xiàn)[5]方案中的代理方法,就會(huì)增加隱私泄露的風(fēng)險(xiǎn),因?yàn)槲墨I(xiàn)[5]方案中的授權(quán)密鑰是可以直接解密密文的。
目前,基于屬性的訪問(wèn)控制方案要么只關(guān)注如何實(shí)現(xiàn)高效的可驗(yàn)證外包解密,要么為了減少授權(quán)第三方用戶代理解密時(shí)隱私泄露風(fēng)險(xiǎn),而增加了額外的計(jì)算開銷。文獻(xiàn)[11]方案在不增加額外加密開銷和密文長(zhǎng)度的同時(shí),實(shí)現(xiàn)了高效的可驗(yàn)證外包解密,但是沒(méi)有考慮第三方代理解密的問(wèn)題,而且其安全性是在一個(gè)較弱的安全模型上。文獻(xiàn)[12]方案考慮了代理解密問(wèn)題,但是增加了額外的計(jì)算開銷。因此,如何設(shè)計(jì)一個(gè)解密外包可驗(yàn)證并可代理的基于屬性的訪問(wèn)控制方案仍是一個(gè)值得考慮的問(wèn)題。
基于文獻(xiàn)[13]方案,利用文獻(xiàn)[11]方案的可驗(yàn)證外包解密思想,本文提出了一個(gè)面向S-health的解密外包可驗(yàn)證并可代理的訪問(wèn)控制方案。該方案在合數(shù)階群上構(gòu)造,用戶可以將復(fù)雜的解密開銷外包至云端執(zhí)行,并利用授權(quán)機(jī)構(gòu)來(lái)驗(yàn)證云端返回的PDC的正確性。同時(shí),利用代理方法,可以授權(quán)第三方用戶來(lái)與云端和授權(quán)機(jī)構(gòu)進(jìn)行交互,在保證PDC正確性的同時(shí)不泄露PHR的明文信息。在標(biāo)準(zhǔn)模型下證明了方案的自適應(yīng)安全性,相較文獻(xiàn)[11]方案中較弱的安全模型而言,本文的安全模型在公開系統(tǒng)參數(shù)之前無(wú)需聲明要挑戰(zhàn)的訪問(wèn)策略。
定義1[13]令G和G1為2個(gè)階為N=p1p2p3的群,其中,p1、p2、p3是3個(gè)不同的素?cái)?shù)。定義一個(gè)可有效計(jì)算的雙線性映射e:G×G→G1,當(dāng)滿足下面條件:
1)雙線性性。對(duì)于所有的x,y∈ZN和所有的u,v∈G,有e(ux,vy)=e(u,v)xy。
2)非退化性。?g∈G,使e(g,g)在G1中的階為N。
定義2[13]令PP={P1,P2,…,PT}為參與方的集合,PP上的一個(gè)秘密共享方案Π被稱作線性的,如果:
1)每個(gè)參與方關(guān)于秘密s的份額構(gòu)成ZN上的一個(gè)向量。
如圖1所示,系統(tǒng)由4個(gè)參與方組成:授權(quán)機(jī)構(gòu),云服務(wù)提供商(Cloud Service Provider, CSP),PHR擁有者,用戶。
授權(quán)機(jī)構(gòu):負(fù)責(zé)設(shè)置系統(tǒng)參數(shù),為用戶生成基于屬性的密鑰,并且向用戶提供外包解密結(jié)果的驗(yàn)證服務(wù)。
云服務(wù)提供商:負(fù)責(zé)存儲(chǔ)加密后的PHR,并為用戶提供外包解密服務(wù)。
PHR擁有者:負(fù)責(zé)整合PHR并定義訪問(wèn)策略加密PHR后將其上傳至云服務(wù)器,PHR擁有者可以是病人、老年人,也可以是為其病人管理PHR的醫(yī)療機(jī)構(gòu)。
用戶:可以是醫(yī)生或者醫(yī)療研究人員,每一個(gè)用戶擁有一個(gè)屬性集合。若其屬性集合滿足PHR密文中的訪問(wèn)策略,則可以獲取明文PHR并為其擁有者提供相關(guān)的醫(yī)療服務(wù)。
本文假定:授權(quán)機(jī)構(gòu)是可信的;CSP是誠(chéng)實(shí)但好奇的,即CSP誠(chéng)實(shí)地提供存儲(chǔ)和外包解密服務(wù),但是試圖從中獲取PHR的明文信息;用戶是惡意的,他們可能共謀去獲取他們中任何一個(gè)都沒(méi)有被授權(quán)訪問(wèn)的PHR。
圖1 S-health系統(tǒng)框架Fig.1 System architecture of S-health
本文方案由如下9個(gè)多項(xiàng)式時(shí)間算法組成。
1)SystemSetup(λ)→(PK,MSK):輸入安全參數(shù)λ,輸出系統(tǒng)公開參數(shù)PK和主密鑰MSK。
2)UserSetup(PK)→(UPK,UDK):輸入PK,輸出用戶公開參數(shù)UPK和用戶解密密鑰UDK。
3)Encrypt(AC,PK)→(CT,SEK):輸入訪問(wèn)策略AC與PK,輸出密文CT與對(duì)稱加密密鑰SEK。
4)KeyGen(S,PK,UPK,MSK)→(SK):輸入用戶的屬性集合S、PK、UPK和MSK,輸出用戶屬性密鑰SK。
5)TKKeyGen(SK,PK,UPK)→(TK):輸入SK、PK、UPK,輸出用戶轉(zhuǎn)化密鑰TK。
6)Transform(TK,CT)→(PDC):輸入TK與CT,若TK中的屬性集合滿足CT中的訪問(wèn)策略AC,則輸出部分解密密文PDC。
7)Decrypt(PDC,UDK)→(SEK/⊥):輸入PDC及UDK,若Verify(PK,MSK,PDC,CT)→1,則輸出SEK;否則,輸出⊥。
8)Verify(PK,MSK,PDC,CT)→(1,0):輸入PK、MSK、PDC和CT,驗(yàn)證PDC是否正確,若是,則輸出1;否則,輸出0。
9)Delegate(SK,PK)→(SK′):輸入SK和PK,輸出代理密鑰SK′。
通過(guò)攻擊者AD與挑戰(zhàn)者B之間的游戲來(lái)定義本文方案的CPA(Chosen Plaintext Attack)安全模型。
系統(tǒng)建立B執(zhí)行SystemSetup算法,并將系統(tǒng)公開參數(shù)PK發(fā)送給AD。
階段1B初始化一個(gè)空集合H和空表L。AD詢問(wèn)任意的用戶屬性集合(S1,S2,…,Sq)如下:
1)用戶密鑰查詢。一旦收到屬性集合Si,B首先運(yùn)行UserSetup得到(UPKi,UDKi),再運(yùn)行KeyGen得到用戶屬性密鑰SKi,最后,設(shè)置H=H∪{Si}并返回SKi給AD。
2)用戶轉(zhuǎn)化密鑰查詢。當(dāng)收到關(guān)于Si的轉(zhuǎn)換密鑰查詢,B首先在表L中搜索(Si,SKi,TKi,UDKi),若存在,則返回TKi給AD;否則,運(yùn)行KeyGen與TKKeyGen,返回TKi給AD并存儲(chǔ)(Si,SKi,TKi,UDKi)至L。
挑戰(zhàn)AD選擇一個(gè)訪問(wèn)策略AC*,并詢問(wèn)挑戰(zhàn)密文。B運(yùn)行Encrypt得到(CT*,SEK*)并隨機(jī)選擇b∈{0,1},若b=0,則返回(CT*,SEK*)給AD;否則,返回(CT*,R*),其中R*是從密鑰空間中隨機(jī)選擇的元素。注意:AC*不能是匹配階段 1中屬性集合的訪問(wèn)策略。
階段2 與階段 1類似,AD可以詢問(wèn)密鑰,但是不能查詢滿足AC*的屬性集合。
猜測(cè)AD輸出對(duì)b的猜測(cè)b′。若b′=b,則AD獲勝。令A(yù)D贏得該游戲的優(yōu)勢(shì)為|Pr[b=b′]-1/2|。
定義3 一個(gè)外包解密可驗(yàn)證并可代理的CP-ABE方案是CPA安全的,當(dāng)且僅當(dāng)在上述的游戲中,任何多項(xiàng)式時(shí)間攻擊者的優(yōu)勢(shì)是可以忽略的。
與2.3節(jié)安全模型類似,通過(guò)攻擊者AD與挑戰(zhàn)者B之間的游戲來(lái)定義可驗(yàn)證性安全模型。
系統(tǒng)建立 與CPA安全模型一致。
階段1 與CPA安全模型一致。
挑戰(zhàn)AD提交一個(gè)訪問(wèn)策略AC*。B運(yùn)行Encrypt得到(CT*,SEK*)并返回CT*給AD。
階段2 與階段 1類似,AD可以詢問(wèn)密鑰,但是AD不能查詢滿足AC*的屬性集合。
輸出AD輸出一個(gè)屬性集合S*,以及兩個(gè)部分解密密文PDC1*和PDC2*。若PDC1*和PDC2*能夠通過(guò)Verify算法,并且滿足Decrypt(PDC1*,UDK)≠Decrypt(PDC2*,UDK),則AD贏得該游戲。
定義4 一個(gè)外包解密可驗(yàn)證并可代理的CP-ABE方案是可驗(yàn)證性安全的,當(dāng)且僅當(dāng)在上述的游戲中,任何多項(xiàng)式時(shí)間攻擊者AD的優(yōu)勢(shì)是可以忽略的。
授權(quán)機(jī)構(gòu)運(yùn)行SystemSetup算法,輸入安全參數(shù)λ,得到(N,p1,p2,p3,G,G1,e),其中:G與G1為2個(gè)階為N的群,N為3個(gè)不同的素?cái)?shù)p1、p2、p3的乘積,e是一個(gè)G×G→G1的雙線性映射。從Gp1中隨機(jī)選擇一個(gè)元素g,從Gp3中選擇一個(gè)生成元X3。授權(quán)機(jī)構(gòu)管理一個(gè)屬性域U,對(duì)于每個(gè)屬性i∈U,從ZN中選擇一個(gè)隨機(jī)數(shù)ti,并計(jì)算Ti=gti,另外隨機(jī)選擇α,a∈ZN。發(fā)布授權(quán)機(jī)構(gòu)的公開參數(shù)PK=(N,g,ga,e(g,g)α,{Ti}i∈U)。主密鑰MSK為MSK=(α,X3)。
與方案[6]類似,本方案也利用KEM(Key Encapsulation Mechanism)機(jī)制,即PHR文件會(huì)被一個(gè)SEK(SymmEtric Key)加密后得到ENPHR,而SEK會(huì)被一個(gè)訪問(wèn)策略加密。具體過(guò)程如下:
輸出密文CT=(AC,C0,{Cx,Dx}x∈[l])并設(shè)置SEK為e(g,g)αs。
收到CT與加密的PHR文件后,CSP為文件定義一個(gè)ID并以圖2的形式存在云端。
圖2 加密的PHR存儲(chǔ)形式
Fig. 2 Storage form of encrypted PHR
用戶運(yùn)行UserSetup算法,隨機(jī)選擇z∈ZN,計(jì)算UPK=gz,并設(shè)置UDK=z。
為了減輕解密開銷,用戶首先將私鑰SK變成轉(zhuǎn)換密鑰,其次大部分的解密開銷外包至CSP,再與授權(quán)機(jī)構(gòu)交互來(lái)驗(yàn)證返回的PDC的正確性,若正確,則通過(guò)一次指數(shù)運(yùn)算即可解密。具體流程如下:
1)TKKeyGen:因?yàn)橹盎赨PK來(lái)設(shè)置SK,所以這里令TK=SK。
e(g,g)αzs
3)Verify:授權(quán)機(jī)構(gòu)驗(yàn)證等式PDC=e(C0,(UPK)α)是否成立,若是,則輸出1表示PDC是正確的;否則,輸出0。
4)Decrypt:用戶計(jì)算SEK=(PDC)(UDK)-1=e(g,g)αs,并解密ENPHR。
當(dāng)用戶不能直接與CSP及授權(quán)機(jī)構(gòu)交互時(shí),可以通過(guò)下面的方式委托第三方用戶來(lái)獲取并驗(yàn)證外包解密結(jié)果。
與文獻(xiàn)[14]類似,本文的安全性規(guī)約至方案[13]的安全性,將文獻(xiàn)[13]的方案與本文的方案分別表示為∑CP和∑VDCP。
引理1 若子群判斷假設(shè)1、2、3[13]成立,則方案∑CP在標(biāo)準(zhǔn)模型下是適應(yīng)性安全的。
具體的證明可以參考文獻(xiàn) [13]的方案。
下面給出方案∑VDCP的安全性證明。
引理2 若方案∑CP是安全的,則本文的方案∑VDCP在2.3節(jié)給出的安全模型下也是安全的。
證明 假設(shè)存在一個(gè)多項(xiàng)式時(shí)間攻擊者AD以優(yōu)勢(shì)ADVAD∑VDCP攻破本文的方案,則可以構(gòu)造一個(gè)多項(xiàng)式時(shí)間仿真者B以相等的優(yōu)勢(shì)ADVB∑CP攻破∑CP。
系統(tǒng)建立 ∑CP發(fā)送公開參數(shù)PKCP=(N,g,ga,e(g,g)α,{Ti}i∈U)給B。B發(fā)送PKVDCP=PKCP給AD。
階段1B初始化一個(gè)空集合H和空表L。AD詢問(wèn)任意的用戶屬性集合(S1,S2,…,Sq)如下:
2)用戶轉(zhuǎn)化密鑰查詢。當(dāng)收到Sj的轉(zhuǎn)換密鑰查詢,B首先在表L中搜索(Sj,SKj,TKj,UDKj),若存在,則返回TKj給AD;否則,B設(shè)置SKj如1)所示,并運(yùn)行UserSetup與TKKeyGen,返回TKi并存儲(chǔ)(Sj,SKj,TKj,UDKj)至L。
階段2 與階段 1類似,AD可以詢問(wèn)密鑰,但是不能查詢滿足AC*的屬性集合。
猜測(cè)AD輸出猜測(cè)u′∈{0,1}。若u′=1,意味著SEK*在AD看來(lái)是一個(gè)隨機(jī)密鑰,B輸出它的猜測(cè)1-u;若u′=0,意味著在AD看來(lái)SEK*是一個(gè)合法密鑰,B輸出它的猜測(cè)u。
因?yàn)橛螒蛑械膮?shù)與正常方案中參數(shù)的分布是一致的,若AD可以攻破本文方案∑VDCP,則B可以攻破方案∑CP。
定理1 若假設(shè)1、2、3[13]成立,則本文的方案在標(biāo)準(zhǔn)模型下是適應(yīng)性CPA安全的。
證明 由引理2可得若∑CP是CPA安全的,則本文的方案也是CPA安全的。由引理1可得,若假設(shè)1、2、3成立,則∑CP在標(biāo)準(zhǔn)模型下是適應(yīng)性CPA安全的。
綜上所述,定理1成立。
定理2 對(duì)于所有的多項(xiàng)式時(shí)間攻擊者AD而言,本文的方案在第2.4節(jié)定義的安全模型中是可驗(yàn)證性安全的。
證明 假設(shè)存在一個(gè)多項(xiàng)式時(shí)間攻擊者AD攻破本文方案的可驗(yàn)證性,則可以構(gòu)造一個(gè)多項(xiàng)式時(shí)間仿真者B與AD交互如下。
系統(tǒng)建立 與CPA安全證明中類似,不同的是B可以自行設(shè)置PK。
階段1 與CPA安全證明中類似,不同的是B可以自行生成SK等,因?yàn)樗繫SK。
挑戰(zhàn)AD提交一個(gè)訪問(wèn)策略AC*。B運(yùn)行Encrypt得到(CT*,SEK*)并返回CT*給AD。
階段2 與階段 1類似,AD可以詢問(wèn)密鑰,但是不能查詢滿足AC*的屬性集合。
輸出AD輸出一個(gè)屬性集合S*以及關(guān)于CT*的兩個(gè)部分解密密文PDC1*和PDC2*。AD贏得該游戲若PDC1*和PDC2*滿足:
1)Verify(PK,MSK,PDC1*,CT*)→1;
2)Verify(PK,MSK,PDC2*,CT*)→1;
3)Decrypt(PDC1*,UDK)≠Decrypt(PDC2*,UDK)。
條件1)意味著PDC1*=e(C0,(UPK)α),條件2)意味著PDC2*=e(C0,(UPK)α)。從條件1)和2)可知PDC1*=PDC2*。然而,條件3)意味著PDC1*≠PDC2*。所以,AD只能以至多可以忽略的優(yōu)勢(shì)贏得該游戲。
相關(guān)ABE方案[9-13]與本文方案的特征比較如表1所示。從表1可以看出,本文提出的方案是同時(shí)實(shí)現(xiàn)自適應(yīng)安全性、可驗(yàn)證外包解密及代理功能的。
統(tǒng)計(jì)自適應(yīng)安全方案[13]與本文方案中SystemSetup、Encrypt、KeyGen、Decrypt以及Verify算法用到指數(shù)運(yùn)算和雙線性配對(duì)的次數(shù),結(jié)果如表2所示。令|U|、|W|、|S|、|I|分別表示系統(tǒng)屬性集合、訪問(wèn)策略、用戶屬性集合、解密時(shí)用到的屬性集合中屬性個(gè)數(shù);令E和E1分別表示G與G1群中一次指數(shù)運(yùn)算;令P表示一次雙線性配對(duì)。
表1 不同方案的特征比較Tab. 1 Characteristic comparison of different schemes
表2 不同方案的性能比較Tab. 2 Performance comparison of different schemes
從表2可以看出,本文方案的SystemSetup、Encrypt及KeyGen算法和方案[13]中的算法計(jì)算開銷是相同的。本文方案用戶端的解密開銷僅需要執(zhí)行G1群中一次指數(shù)運(yùn)算,而文獻(xiàn)[13]方案中的用戶解密開銷隨用到屬性的個(gè)數(shù)呈線性增長(zhǎng)。另外,為了執(zhí)行驗(yàn)證操作,本文方案也只需要執(zhí)行一次G群中指數(shù)運(yùn)算和一次雙線性配對(duì)運(yùn)算,與屬性個(gè)數(shù)無(wú)關(guān)。
本文提出了一個(gè)面向S-health的基于屬性的訪問(wèn)控制方案,并在標(biāo)準(zhǔn)模型下證明了其自適應(yīng)安全性。通過(guò)將復(fù)雜的解密開銷外包至云服務(wù)提供商,可以驗(yàn)證其返回的部分解密密文的正確性,用戶僅需要執(zhí)行一次指數(shù)運(yùn)算即可恢復(fù)明文PHR。同時(shí),為了驗(yàn)證該部分解密密文,授權(quán)機(jī)構(gòu)也僅需要執(zhí)行一次指數(shù)運(yùn)算和一次雙線性配對(duì)運(yùn)算。性能分析表明,本文的方案在實(shí)現(xiàn)高效解密和驗(yàn)證的同時(shí),并沒(méi)有給其他步驟增加額外的開銷。下一步的工作將以提出的方案作基礎(chǔ),研究如何在素?cái)?shù)階群構(gòu)造高效的自適應(yīng)性安全的方案。