白澤興,曾晟珂
(1. 西華大學(xué)西華學(xué)院,四川 成都 610039;2. 西華大學(xué)計算機與軟件工程學(xué)院,四川 成都 610039)
物聯(lián)網(wǎng)(IoT)技術(shù)的發(fā)展可為醫(yī)療機構(gòu)提供更加便利和高效的服務(wù)。一種小型的無線感應(yīng)設(shè)備[1 ? 2]穿戴于人體,便可隨時監(jiān)測身體的各項指標,形成個人健康檔案(personal health record,PHR)。這些檔案可通過網(wǎng)絡(luò)傳輸保存于數(shù)據(jù)管理系統(tǒng),并通過PHR 共享實現(xiàn)對健康數(shù)據(jù)的統(tǒng)計分析。穿戴該設(shè)備的人們通過及時傳送自己身體的健康狀況信息,使醫(yī)生能迅速采取相應(yīng)的醫(yī)療措施。然而,PHR包含了個人的隱私信息,若信息直接在公共網(wǎng)絡(luò)上傳送或直接存儲在第三方云數(shù)據(jù)服務(wù)器中,可能會泄露健康隱私。為了保護個人隱私,在數(shù)據(jù)傳輸之前需要對數(shù)據(jù)文檔進行加密,以防止信息泄露。
Sahai 等[3]提出的基于屬性的加密方案(attributebased encryption,ABE)在保護數(shù)據(jù)的安全條件下,依據(jù)用戶的屬性特征實現(xiàn)了數(shù)據(jù)的共享和屬性的訪問控制。基于屬性的加密有2 類:密鑰訪問策略的屬性基加密[4](key-policy attribute-based encryption,KP-ABE),當需要解密的密文屬性符合用戶的密鑰策略時解密;密文訪問策略的屬性基加密[5](ciphertext-policy attribute-based encryption,CPABE),當密鑰屬性符合密文的策略時解密。Chase[6]提出了適用于多授權(quán)機構(gòu)的加密體系,將計算和密鑰管理等分散于多個授權(quán)機構(gòu),解決了單一授權(quán)機構(gòu)的問題,但帶來了合謀威脅;為解決合謀威脅,又提出了中心授權(quán)機構(gòu),但是中心授權(quán)機構(gòu)可以解密任意密文,因此增加了系統(tǒng)的隱私威脅。Lin 等[7]基于DBDH(decisional bilinear diffie-hellman)假設(shè),提出了去中心的多授權(quán)機構(gòu)方案,增強了系統(tǒng)隱私的安全性。與傳統(tǒng)的公鑰加密方案相比,屬性加密使加密方案具有了動態(tài)性,訪問策略更靈活,適用于數(shù)據(jù)共享機制。在PHR 系統(tǒng)中,醫(yī)護人員的晉職、辭退等原因會使用戶屬性發(fā)生變化,加密系統(tǒng)中的屬性必須進行調(diào)整,然而上述方案并不能解決該問題。
針對該問題,許多可撤銷屬性基加密方案被提出。Yu 等[8]提出了一種外包的CP-ABE 方案,使用代理重加密技術(shù)使加密體系支持屬性撤銷。為了保護屬性的隱私,Wang 等[9]提出了一種支持屬性撤銷和屬性隱藏的外包CP-ABE 方案。Li 等[10]基于屬性組提出了一種抵抗合謀攻擊的CP-ABE方案。在該方案中,管理員只需要更新用戶的密鑰即可實現(xiàn)屬性撤銷。上述方案大多是基于雙線性對設(shè)計,需要使用多次雙線性對的運算,其計算效率低且無法抵抗量子攻擊。隨著量子計算機的發(fā)展,越來越多的人開始關(guān)注格密碼,基于格的密碼是被認為能夠抵抗量子攻擊的。Boyen[11]提出了格基上的屬性基加密方案。該方案基于線性秘密共享技術(shù)(linear secret sharing schemes,LSSS),需要進行高維的矩陣運算,其效率并不高。Chen 等[12]提出了格上基于身份的高效可撤銷加密方案,支持身份撤銷,但難以實現(xiàn)細粒度訪問。隨后,Zhang等[13]提出格上基于CP-ABE的屬性基加密方案。該方案基于格中的誤差學(xué)習問題所設(shè)計,但并不支持屬性撤銷。Yang 等[14]提出了一種支持格上可撤銷的屬性加密方案,支持屬性的細粒度訪問和屬性撤銷。本文基于Yang 等[14]的格上CP-ABE 方案,提出了一種可撤銷屬性的安全的PHR 方案。該方案通過應(yīng)用云數(shù)據(jù)服務(wù)器,實現(xiàn)了PHR 功能的靈活管理。同時,在標準模型下基于誤差學(xué)習問題證明了該方案是選擇屬性和選擇明文安全的。
本章將對方案所用的相關(guān)基礎(chǔ)知識和困難性假設(shè)等進行介紹。
定義1(格)設(shè)向量a1,a2,···,am∈Zm是線性獨立的,則定義格
其中,A={a1,a2,···,am},L(A)為其系數(shù)的線性組合。
定義2(q-元格)設(shè)q為素數(shù),矩陣向量定義q-元格
定義3(離散高斯函數(shù))設(shè)r為大于0 的任意實數(shù),以參數(shù)r,向量c為中心的(高斯分布)定義為
當滿足c為原點或r=1時,其下標r、c可省略。
對任意向量c∈Rn,大于0 的實數(shù)r,和一個n維格L,定義格L上的離散高斯分布為
引理1[14]算法TrapdoorGen(q,n)
Boldyreva 等[15]采用基于用戶撤銷的二叉樹進行構(gòu)造,但其并不能實現(xiàn)屬性的細粒度撤銷。本文設(shè)計了支持細粒度屬性撤銷的二叉樹結(jié)構(gòu)。在該方案中,用戶j與二叉樹BTj相關(guān)聯(lián)。j的每個屬性i與一個葉子結(jié)點關(guān)聯(lián),路徑Path(i)代表從葉子結(jié)點i到根結(jié)點的所有元素集合。所有結(jié)點都帶有一個二元組(key,value),其中 key代表該結(jié)點的序號,value代表當前用戶j所擁有的屬性集合。當該結(jié)點當前沒有任何子結(jié)點時,其value為0。設(shè)ξ是一個中間結(jié)點,ξl和 ξr分別代表其左孩子結(jié)點和右孩子結(jié)點。ti表示屬性i的撤銷時間。S1是包含所有有關(guān)屬性i在t時被撤銷的Path(i)結(jié)點集合,S2是所有S1中未被撤銷的孩子結(jié)點的集合。若S2為空,則在其中加入根結(jié)點。如圖1 所示,圖中每個結(jié)點都帶有各自的(key,value)元組,key代表結(jié)點的序號,value代表屬性值。結(jié)點2 因其子結(jié)點為4(帶有屬性值1)和5(帶有屬性值2),所以結(jié)點2 的屬性為1 和2。當結(jié)點4 被撤銷時,結(jié)點1、2、4 被加入集合S1中,結(jié)點3 和5 被加入集合S2中。
圖 1 撤銷二叉樹
傳統(tǒng)的PHR 結(jié)構(gòu)如圖2 所示,包括密鑰授權(quán)中心、云數(shù)據(jù)服務(wù)器、病人、醫(yī)生4 個實體。
1)密鑰授權(quán)中心:生成和管理公鑰、主密鑰,以及由醫(yī)生所擁有的屬性生成的私鑰,負責屬性的更新和撤銷。
2)云數(shù)據(jù)服務(wù)器:負責保管病人上傳的加密文檔。
3)病人:設(shè)置自己的屬性策略訪問結(jié)構(gòu),用該結(jié)構(gòu)對自己的PHR 進行加密并上傳到數(shù)據(jù)服務(wù)器。
4)醫(yī)生:根據(jù)自身所屬屬性對數(shù)據(jù)服務(wù)器上的加密數(shù)據(jù)進行合法的解密訪問。
本文提出的PHR 方案包括以下幾個算法步驟。
1)系統(tǒng)初始化Setup(1n,Q,N)→PK,msk,RLj:輸入安全參數(shù)λ、屬性集合Q和最大用戶數(shù)N;輸出公鑰 PK、主密鑰msk和撤銷列表RLj,j∈N。
2)密鑰生成PriKeyGen(PK,msk,G)→SKG:輸入主密鑰msk、公鑰 PK和屬性集合G∈Q;輸出與屬性集合G關(guān) 聯(lián)的私鑰SKG。
圖 2 PHR 系統(tǒng)結(jié)構(gòu)圖
3)更新密鑰生成KeyUpd(PK,msk,t,RLj)→KUt:輸入公鑰 PK、主密鑰msk、更新時間t∈T和撤銷列表RLj;輸出更新密鑰KUt。
4)解密密鑰DecKeyGen(SKG,KUt,(W,k))→DKG,t:輸入私鑰SKG、更新密鑰KUt、訪問結(jié)構(gòu)W和系統(tǒng)門限值k;輸出解密密鑰DKG,t。當DKG,t為⊥時,表示其用戶的屬性已被撤銷,否則,表示其有足夠?qū)傩赃M行解密。
5)數(shù)據(jù)加密Enc(PK,(W,k),t,M)→CTW,t:輸入訪問結(jié)構(gòu)W、門限值k、公鑰 PK、消息M∈M0和加密時間t∈T;輸出密文CTW,t。
6)數(shù)據(jù)解密Dec(DKG,t,CTW,t)→M:輸入解密密鑰DKG,t和密文CTW,t;輸出明文消(息M。)
7)撤銷列表更新RevListUpdG,t,RLj:輸入屬性集合G、當前的時間t和撤銷列表RLj,j∈N;輸出更 新后的撤銷列表
下面給出選擇屬性和選擇明文攻擊下的格上可撤銷密文策略的屬性加密方案的安全模型。在該模型中,敵手需要在系統(tǒng)初始化前,提交一個用于挑戰(zhàn)的訪問結(jié)構(gòu)。
初始化:挑戰(zhàn)者 C接收敵手 A在t?時刻的撤銷列表RLj和用于挑戰(zhàn)的訪問結(jié)構(gòu)(W?,k?)。
系統(tǒng)設(shè)置:挑戰(zhàn)者 C使用系統(tǒng)設(shè)置算法來生成公鑰 PK和主密鑰msk,將 PK發(fā)送給敵手 A,主密鑰由自己保留。
階段1:敵手 A隨意地選擇屬性集合G={ai|ai?W?},并詢問挑戰(zhàn)者 C關(guān)于屬性集合G的私鑰。挑戰(zhàn)者 C通過運行PriKeyGen算法來回復(fù)敵手的請求。敵手 A詢問挑戰(zhàn)者 C由撤銷列表RLj更新后的私鑰,挑戰(zhàn)者 C運行KeyUpd算法來回答敵手的請求。
挑戰(zhàn):敵手發(fā)送比特消息m0和m1給挑戰(zhàn)者。挑戰(zhàn)者通過擲一枚均勻的硬幣選擇b∈{0,1}來運行加密算法,并返回加密后的消息給敵手。
階段2:在看到挑戰(zhàn)密文后,敵手 A 按照階段1 繼續(xù)向挑戰(zhàn)者做選擇屬性及選擇密文的詢問。
猜測:敵手 A根據(jù)自己得到的信息猜測b′∈{0,1}。若b′=b,則稱敵手 A挑戰(zhàn)成功。
在該挑戰(zhàn)中,敵手挑戰(zhàn)成功的優(yōu)勢定義為
定義5對PPT 敵手而言,一個CP–RABE 方案若滿足其優(yōu)勢是一個可忽略的函 數(shù),則稱該方案是抵抗IND?sAtt?CPA安全的。
本章提出了一種可撤銷屬性的安全的PHR 方案,通過二叉樹的訪問結(jié)構(gòu)和密鑰更新的方法,實現(xiàn)醫(yī)護屬性可以靈活撤銷的功能。基于格理論的加密解密,保證了PHR 數(shù)據(jù)在共享時抵抗選擇屬性攻擊和選擇明文攻擊的安全。
密鑰授權(quán)中心通過輸入相關(guān)的安全參數(shù)來進行PHR 系統(tǒng)的初始化。系統(tǒng)初始化過程如下。
密鑰授權(quán)中心根據(jù)公鑰、主密鑰和用戶的屬性集合生成相關(guān)屬性的私鑰。密鑰生成過程如下。
密鑰授權(quán)中心根據(jù)公鑰、主密鑰、密鑰更新時間和屬性撤銷列表來生成更新密鑰。該算法與撤銷列表更新算法相結(jié)合可以解決醫(yī)護人員的人事變動帶來的訪問控制問題。當某個醫(yī)護人員的權(quán)限發(fā)生變動后,該算法可根據(jù)撤銷列表更新算法生成更新后的撤銷列表,由此來生成更新密鑰,并將該密鑰發(fā)送給醫(yī)護人員。此時,原有的密鑰可能因其有效屬性數(shù)不滿足訪問策略的閾值而失效,從而實現(xiàn)屬性撤銷的功能。更新密鑰生成過程如下。
密鑰授權(quán)中心根據(jù)醫(yī)護人員的私鑰、更新密鑰和訪問策略來生成相關(guān)密文的解密密鑰。密鑰生成過程如下。
病人通過其穿戴的智能設(shè)備,從密鑰管理中心獲取公鑰和訪問結(jié)構(gòu),加密自己的健康信息并將其上傳至云數(shù)據(jù)服務(wù)器。加密過程如下。
Enc(PK,(W,k),t,M):輸入公鑰PK=(A0,B1,B2,C1,C2,{ai}i∈R′,u,H),訪問結(jié)構(gòu)W、門限k滿足1 ≤k≤min(|W|,l),輸入比特消息M和時間設(shè)
密鑰管理中心根據(jù)醫(yī)生的屬性分發(fā)相關(guān)的解密密鑰,醫(yī)生通過訪問數(shù)據(jù)服務(wù)器獲取并解密相關(guān)病人的健康信息。解密過程如下。
3)根據(jù)基于拉格朗日插值的Shamir 秘密共享方案[16]有則返回0。
每隔指定的一段時間,密鑰管理中心會根據(jù)當前醫(yī)護人員的屬性集合和撤銷列表來更新原來所存儲的撤銷列表。更新過程如下。
RevListUpd(G,t,RLj):輸入屬性集合G、當前的時間t和撤銷列表RLj,j∈N。該算法把所有與屬性i有關(guān)的結(jié)點的屬性集合G和時間t加入撤銷列表RLj中,返回更新后的撤銷列表更新撤銷列表即更新撤銷二叉樹。
本方案在標準模型下基于誤差學(xué)習問題,能夠抵抗選擇屬性攻擊和選擇明文攻擊。定理具體證明了該方案的安全性。
定理假設(shè)存在一個概率多項式時間敵手 A,如果其能夠在選擇屬性和選擇明文模型下破壞PHR 系統(tǒng)的數(shù)據(jù)安全,那么LWE 問題就是在多項式時間內(nèi)可解。
本方案將從公鑰長度、私鑰長度、密文長度、是否支持屬性撤銷和是否支持細粒度方面與相關(guān)方案進行分析對比,其結(jié)果如表1 所示。其中:q、n、m為格上的參數(shù),q為模數(shù),n為系統(tǒng)的安全參數(shù),m為 矩陣的維數(shù),對于m,根據(jù)引理1 有m>5nlbq;As代表系統(tǒng)中總的屬性數(shù)目;Au代表用戶的屬性數(shù)目;Ae代表加密時使用的屬性數(shù)目。在公鑰長度方面,本文的公鑰長度為(5nm+Asn+n)lbq,文獻[10]的公鑰長度為(2nm+Asnm+n)lbq,本文公鑰長度比文獻[10]少了(As(m?1)?3nm)lbq。As數(shù)值一般較大,相比文獻[10],本文方案的公鑰長度有了明顯的減小,但文獻[9]的公鑰長度比本文和文獻[10]的長度更小。在私鑰長度方面,本文的私鑰長度為(Aun+2Au)lbq,隨著安全參數(shù)n的增大而變大;文獻[9]的私鑰長度為(2mAu+Au)lbq,文獻[10]的私鑰長度為(2Aum)lbq,兩者的私鑰長度皆隨矩陣的維數(shù)m的增大而變大:因此,在矩陣的維度較大時,本方案比文獻[9]和文獻[10]更適用。在功能上,與文獻[9]相比,本方案多了細粒度訪問的功能,與文獻[10]相比,本方案多了屬性撤銷的功能。本方案不足之處是,因同時具有屬性撤銷和細粒度訪問功能,其密文長度相比文獻[9]和文獻[10]略有增大。
表 1 相關(guān)方案對比
綜上,本文方案在性能方面得到了一定的改進,在功能方面更加完善,支持細粒度訪問和屬性撤銷,更加滿足PHR 需求。
本文提出了一種基于格上可撤銷密文策略屬性基加密方案,使用二叉樹結(jié)構(gòu)來更新用戶的密鑰,實現(xiàn)了屬性撤銷,解決了PHR 數(shù)據(jù)共享時的數(shù)據(jù)隱私問題,使醫(yī)護屬性可以靈活撤銷。在標準模型下基于格上的誤差學(xué)習問題證明了該方案是選擇屬性安全和選擇明文安全的。盡管本方案實現(xiàn)了靈活的訪問控制,但如何構(gòu)建一個公鑰、私鑰、密文空間更小的方案仍值得繼續(xù)研究。