彭維平,郭凱迪,宋 成,閆璽璽
河南理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,河南 焦作454003
隨著云計(jì)算的廣泛應(yīng)用,基于“云”模式的外包服務(wù)已日趨成為外包行業(yè)發(fā)展的主流和趨勢(shì)[1]。其中,醫(yī)院信息管理系統(tǒng)是一個(gè)比較典型的應(yīng)用。在現(xiàn)代醫(yī)療信息管理應(yīng)用中,醫(yī)院的電子病歷數(shù)據(jù)龐大,且涉及到醫(yī)生、護(hù)士和病人等多方用戶,由于云服務(wù)器并不完全可信,其信息的存儲(chǔ)、安全訪問和隱私保護(hù)都是云外包服務(wù)模式下亟待解決的問題[2-3]。根據(jù)電子病歷的多角色和多權(quán)限等特性,應(yīng)用基于屬性基加密(Attribute-Based Encryption,ABE)的可追蹤外包數(shù)據(jù)泄漏的安全訪問是解決上述問題的一種可行途徑。Sahai 等人[4]首次提出ABE 的方案,其基本思想是將用戶身份標(biāo)識(shí)視為一系列描述用戶身份的屬性,實(shí)現(xiàn)了用戶的隱私保護(hù),但是在靈活性和效率性方面還存在不足。Goyal 等人[5]提出了密鑰策略屬性基加密(Key-Policy Attribute-Based Encryption,KP-ABE)方案,該方案中密鑰對(duì)應(yīng)于訪問結(jié)構(gòu)而密文關(guān)聯(lián)于屬性集合,方案加強(qiáng)了數(shù)據(jù)的安全性和訪問策略的靈活性,但其公鑰長(zhǎng)度會(huì)隨著用戶屬性的增加而增加。Bethencourt 等人[6]提出密文策略屬性基加密(Ciphertext-Policy Attribute-Based Encryp‐tion,CP-ABE)方案,該方案中用戶私鑰是根據(jù)用戶屬性集合生成,而密文策略則以訪問結(jié)構(gòu)的形式部署在密文中,發(fā)送者根據(jù)密文自己制定訪問結(jié)構(gòu),從而增強(qiáng)了靈活性。但是,在ABE 機(jī)制中私鑰僅與屬性關(guān)聯(lián),與用戶的其他特征信息無關(guān),當(dāng)合法用戶有意或無意泄漏私鑰被發(fā)現(xiàn)后也無法確認(rèn)出與其關(guān)聯(lián)的合法用戶。Hinek等人[7]提出了基于標(biāo)記的ABE 方案,使得密鑰代理會(huì)泄漏用戶的隱私,對(duì)預(yù)防密鑰泄漏起到了震懾作用,但該方案無法確認(rèn)密鑰泄漏者的身份。文獻(xiàn)[8]提出了屬性基叛徒追蹤方案,方案采用聯(lián)合安全編碼和叛徒追蹤技術(shù)確定泄密者身份,但聯(lián)合編碼的應(yīng)用使得密文及公鑰長(zhǎng)度增加,降低了系統(tǒng)效率。文獻(xiàn)[9]中提出的基于CP-ABE 的數(shù)據(jù)訪問控制方案較好地解決了云服務(wù)器不完全可信的問題,提高了數(shù)據(jù)訪問的安全性,但密鑰濫用依然不能追蹤到用戶身份。文獻(xiàn)[10]提出了一個(gè)支持任意單調(diào)訪問結(jié)構(gòu)可追蹤ABE 方案,支持強(qiáng)表達(dá)能力,但追蹤到的是與用戶對(duì)應(yīng)的隨機(jī)數(shù),而隨機(jī)數(shù)與用戶身份不具有可公開驗(yàn)證的關(guān)聯(lián),無法明確用戶身份。文獻(xiàn)[11]提出了密文策略分層屬性基加密(CPHABE)方案,該方案降低了公鑰和密文長(zhǎng)度。但方案由于權(quán)限委托在抵抗攻擊和用戶密鑰泄漏追蹤方面存在不足。文獻(xiàn)[12]提出一個(gè)固定追蹤存儲(chǔ)空間的白盒追蹤方案,實(shí)現(xiàn)了用戶的追蹤,但是解密操作與訪問控制策略線性相關(guān),增大了計(jì)算量,且只有發(fā)現(xiàn)了惡意用戶的密鑰才能進(jìn)行追蹤,無法對(duì)用戶的解密行為進(jìn)行統(tǒng)計(jì)記錄。文獻(xiàn)[13]提出了一個(gè)可隱藏的密文屬性基加密方案,方案實(shí)現(xiàn)了信息的隱私安全保護(hù),也在一定程度上降低了私鑰的長(zhǎng)度,但是與門的訪問策略在訪問靈活性上還有不足。文獻(xiàn)[14]將叛徒追蹤機(jī)制和聯(lián)合安全編碼引入到方案中,提出一個(gè)適應(yīng)性安全可追蹤的屬性基加密方案,方案對(duì)用戶私鑰濫用實(shí)現(xiàn)了有效的追蹤,但是方案在密文長(zhǎng)度和公鑰長(zhǎng)度上會(huì)隨著屬性的增加而增加。文獻(xiàn)[15]提出了一個(gè)可追蹤的云存儲(chǔ)屬性基加密訪問控制方案,該方案通過對(duì)密文進(jìn)行簽名,在追蹤階段對(duì)簽名進(jìn)行驗(yàn)證從而實(shí)現(xiàn)追蹤用戶,但這在一定程度上增加了密文的長(zhǎng)度,同時(shí)方案在訪問靈活性上有所不足。
鑒于以上不足,本文基于醫(yī)院電子病歷外包數(shù)據(jù)的安全訪問和泄漏追蹤問題,結(jié)合雙線性理論和秘密共享機(jī)制提出了一個(gè)面向服務(wù)外包數(shù)據(jù)的可追蹤防泄漏安全訪問控制方案?;颊卟v經(jīng)加密后上傳至云服務(wù)器存儲(chǔ),由病歷科對(duì)病人病歷的讀取權(quán)限進(jìn)行授權(quán),醫(yī)護(hù)人員以及患者均可查看病歷。當(dāng)用戶需訪問病歷數(shù)據(jù)時(shí)則根據(jù)授權(quán)屬性與策略進(jìn)行匹配,若滿足則服務(wù)器反饋給用戶解密參數(shù),用戶根據(jù)私鑰進(jìn)一步解密數(shù)據(jù)。反之,則不能訪問數(shù)據(jù)。同時(shí),方案中將身份特征嵌入私鑰實(shí)現(xiàn)了抵抗合謀攻擊以及用戶身份的追蹤確認(rèn)。方案通過與傳統(tǒng)的外包數(shù)據(jù)訪問控制方案和部分改進(jìn)方案相比較,實(shí)現(xiàn)了對(duì)數(shù)據(jù)安全性和效率性的優(yōu)化。
設(shè)G1和G2為兩個(gè)p 階乘法循環(huán)群且p 為素?cái)?shù)。設(shè)g 是G1的生成元,且在群G1和G2上計(jì)算離散對(duì)數(shù)問題是困難的。則是G1×G1→G2的一個(gè)雙線性映射,若滿足以下三個(gè)性質(zhì)[16],則稱為一個(gè)從G1到G2的有效雙線性映射:
(1)雙 線 性:?u,v ∈G1和?m,n ∈Zp,都 存 在(um,vn)=(u,v)mn的運(yùn)算關(guān)系。
(2)非退化性:?u,v ∈G1,使得(u,v)1,即映射不能將所有G1×G1都映射到G2中某個(gè)相同元素。
(3)可計(jì)算性:對(duì)?u,v ∈G1,存在有效的算法可計(jì)算(u,v),即(um,vn)=(u,v)mn=(un,vm)。
雙線性Diffie-Hellman 問題是指:對(duì)于乘法循環(huán)群G1和G2,隨 機(jī) 選 取m,n,k ∈Zp,給 定 任 意 四 元 組(g,gm,gn,gk),計(jì)算e(g,g)mnk∈G2,其中g(shù) 是群G1中的生成元。而判定雙線性Diffie-Hellman 問題是指:設(shè)g 是乘法循環(huán)群G1中的生成元,m,n,k ∈Zp且未知,r ∈G2,給定一個(gè)五元組(g,gm,gn,gk,r),判定r=e(g,g)nmk是否成立。
攻擊者驗(yàn)證r 與e(g,g)nmk是否相等的前提條件是需要分別從gm、gn、gk中計(jì)算獲取m、n、k 的值。而由于g 是群G1中 的 生 成 元,m,n,k ∈Zp,設(shè) 定N=gm,計(jì) 算,可知其為離散對(duì)數(shù)困難問題,故攻擊者通過計(jì)算得到m 是不可行的,同理n與k亦是如此。此時(shí)假設(shè)攻擊者能夠驗(yàn)證r 與e(g,g)nmk相等的概率為κ,則攻擊者的優(yōu)勢(shì)函數(shù)AdvDBDHB(κ)定義如下:
秘密共享方案是由Shamir[17]提出的,其主要思想是將秘密分割成若干份并分別由若干可信用戶保管,只有秘密的份額大于規(guī)定的門限值時(shí)才能重建。在(t,n)門限共享方案中,將一個(gè)共享密鑰K 分成n個(gè)子密鑰k1,k2,...,kn,且分配給n 個(gè)用戶。方案需滿足兩個(gè)條件[18]:
(1)任意大于等于t 個(gè)用戶執(zhí)有ki值才可解得K。
(2)任意小于等于t-1個(gè)用戶執(zhí)有ki值不可解得K。
(t,n)門限共享方案的具體設(shè)計(jì)描述如下:
選擇共享密鑰k ∈Zp以及素?cái)?shù),授權(quán)中心給n(n <p)個(gè)參與者pi(1 ≤i ≤n)分配秘密值[19]:
(1) 選 取 隨 機(jī) 的 t-1 次 多 項(xiàng) 式ξ(x)=at-1xt-1+at-2xt-2+ +a1x1+a0,令a0=k,則 有ξ(0)=k。
(2)任意選取n 個(gè)非零且互不相同的元素x1,x2, ,xn,計(jì)算(yi=ξ(xi))1≤i≤n。
(3)把(xi,yi)1≤i≤n分配給第i個(gè)參與者pi,其中yi是pi的子密鑰且xi公開。
設(shè)定U={Ai,i ∈[1,n]}為所有的屬性集合,且每個(gè)屬性Ai設(shè)定三個(gè)取值其中表示屬性值為真,表示屬性值為假,表示此屬性值任意取值。在訪問中,每個(gè)用戶均具備不同的特征和身份,通過屬性取值來區(qū)分。為了標(biāo)識(shí)不同的用戶,在此為每個(gè)用戶分配一個(gè)屬性集L,定義如下:
定義1(用戶屬性集L)定義用戶的屬性集L={Bj,j ∈[1,k]},且??芍瑢傩约疞是U 的一個(gè)非空子集,即L ?U。僅當(dāng)用戶具備并滿足屬性Ai時(shí),即設(shè)定為;當(dāng)無需考慮該屬性,即該屬性可以任意時(shí),設(shè)定為。否則,表示該用戶不具備該屬性項(xiàng)。屬性總數(shù)為n 的屬性集最多能夠用來鑒別2n個(gè)用戶。
定義2(訪問結(jié)構(gòu)T[20])設(shè)定訪問結(jié)構(gòu)T 是系統(tǒng)屬性全集U的一個(gè)非空子集,即T ?2{A1,A2,,An}{?}。T 表示為屬性的判斷條件:在T 中的屬性集合即為授權(quán)集合,不在T 中的屬性集合即為非授權(quán)集合。
定義3(訪問樹[21])訪問結(jié)構(gòu)的采用訪問樹來實(shí)現(xiàn)。將T 定義為一棵訪問結(jié)構(gòu)樹,訪問樹的每一個(gè)非葉子節(jié)點(diǎn)代表一個(gè)關(guān)系函數(shù),關(guān)系函數(shù)可以是AND(n of n)、OR(1 of n)和Threshold(m of n,n >m)等,節(jié)點(diǎn)的值由其子節(jié)點(diǎn)以及門限值來確定。定義節(jié)點(diǎn)x 的子節(jié)點(diǎn)數(shù)量 為numx,設(shè) 其 門 限 值 為kx,則 有0 ≤kx≤numx。當(dāng)kx=1時(shí),代表的關(guān)系函數(shù)為OR,當(dāng)kx=numx時(shí),代表的關(guān)系函數(shù)為AND。訪問樹的每一個(gè)葉子節(jié)點(diǎn)x 定義為一個(gè)屬性項(xiàng),其門限值kx=1。同時(shí),定義節(jié)點(diǎn)x 的父節(jié)點(diǎn)為par(x),定義葉子節(jié)點(diǎn)x 的相關(guān)聯(lián)的屬性為att(x),定義index(x)為節(jié)點(diǎn)x的子節(jié)點(diǎn)位置返回值。
定義4(授權(quán))設(shè)T 代表根節(jié)點(diǎn)為r 的訪問樹,設(shè)R代表訪問樹T 在根節(jié)點(diǎn)x 的子樹,則有R和T 具有相同的性質(zhì)。假設(shè)一個(gè)屬性集合γ 符合訪問樹R,則令R(γ)=1。應(yīng)用遞歸方式來計(jì)算R(γ),即當(dāng)所計(jì)算的節(jié)點(diǎn)x 為非葉子節(jié)點(diǎn)時(shí),計(jì)算節(jié)點(diǎn)x 的所有的子節(jié)點(diǎn)x′的Rx′(γ)值。當(dāng)且僅當(dāng)至少有kx個(gè)子節(jié)點(diǎn)返回值為1 時(shí),Rx′(γ)返回值才為1;如果節(jié)點(diǎn)x 為葉子節(jié)點(diǎn)時(shí),當(dāng)且僅當(dāng)該葉子節(jié)點(diǎn)屬性值滿足att(x)∈γ,Rx′(γ)返回值才為1。
本醫(yī)療云外包數(shù)據(jù)安全訪問系統(tǒng)模型主要由4 類實(shí)體組成:病歷科、醫(yī)護(hù)人員、云服務(wù)商和用戶,如圖1所示。
圖1 系統(tǒng)架構(gòu)圖
(1)病歷科:作為第三方授權(quán)機(jī)構(gòu)(Third-Party Authority,TPA),主要負(fù)責(zé)執(zhí)行初始化算法生成公鑰和主密鑰,根據(jù)數(shù)據(jù)擁有者發(fā)送的策略,為其返回加密數(shù)據(jù)的參數(shù)。同時(shí)也為用戶分發(fā)私鑰,保存可追蹤列表。
(2)醫(yī)護(hù)人員:作為病歷上傳者(Data Owner,DO),主要是對(duì)病歷進(jìn)行加密并將密文發(fā)送至云端。
(3)云服務(wù)商(Cloud Service Provider,CSP):主要用來存儲(chǔ)加密數(shù)據(jù),同時(shí)為訪問者進(jìn)行屬性匹配并為匹配成功者分發(fā)中間解密參數(shù)。云服務(wù)提供者是半可信或者是不可信的。
(4)用戶(User):擁有一組屬性,當(dāng)屬性滿足密文訪問策略時(shí)即可獲得云端反饋的解密參數(shù)并解密密文。
系統(tǒng)整體執(zhí)行如下:首先,病歷科作為TPA 執(zhí)行系統(tǒng)初始化過程,生成系統(tǒng)公鑰和主密鑰;隨后①醫(yī)護(hù)人員根據(jù)不同病歷類型,定義不同訪問權(quán)限的訪問策略,并發(fā)送給病歷科;②病歷科根據(jù)該訪問策略中所包含的屬性集合生成訪問策略的根節(jié)點(diǎn),連同系統(tǒng)公鑰返回給醫(yī)護(hù)人員;③醫(yī)護(hù)人員根據(jù)病歷科返回根節(jié)點(diǎn)和系統(tǒng)公鑰,生成加密所需的加密密鑰等參數(shù),完成醫(yī)療信息的加密并上傳至云服務(wù)器;④當(dāng)某一用戶需要訪問該醫(yī)療數(shù)據(jù)時(shí),首先將該用戶的屬性信息集合發(fā)送給病歷科;⑤病歷科根據(jù)該用戶的屬性集合,生成用戶私鑰和中間參數(shù)返回給該用戶;⑥用戶將中間參數(shù)和自身的屬性集合發(fā)送給云服務(wù)器,由云服務(wù)器實(shí)施策略匹配;⑦若匹配成功,云服務(wù)器將中間解密參數(shù)和密文發(fā)送給用戶,用戶即可根據(jù)自己的私鑰解密密文;⑧云服務(wù)器將中間參數(shù)和用戶屬性集合發(fā)送給病歷科,由病歷科執(zhí)行追蹤用戶解密行為。
本文方案使用選擇明文攻擊(IND-CPA)模型,其模型可以定義為一個(gè)攻擊者?和一個(gè)挑戰(zhàn)者?的游戲,具體方案定義如下:
初始階段:攻擊者?選擇挑戰(zhàn)訪問結(jié)構(gòu)。
建立階段:挑戰(zhàn)者? 運(yùn)行初始化算法,并將生成的公鑰PK提供給攻擊者?。
查詢階段1:根據(jù)屬性集對(duì)應(yīng)的屬性密鑰進(jìn)行查詢,挑戰(zhàn)者? 執(zhí)行密鑰生成算法,同時(shí)將私鑰交給攻擊者?,其屬性基不能滿足訪問結(jié)構(gòu)T。
挑戰(zhàn)階段:攻擊者?向挑戰(zhàn)者?提交兩個(gè)等長(zhǎng)的消息M1、M2以及挑戰(zhàn)屬性集合,且有挑戰(zhàn)者? 未曾查詢挑戰(zhàn)屬性集的密鑰,挑戰(zhàn)者?隨機(jī)選擇一個(gè)數(shù)u ∈{0,1},并且利用T 加密,生成挑戰(zhàn)密文并發(fā)送給攻擊者?。
查詢階段2:重復(fù)執(zhí)行查詢階段1。
猜測(cè)階段:攻擊者?輸出一個(gè)猜測(cè)的數(shù)u′∈{0,1},若有u′=u,則攻擊者勝利。攻擊者? 在游戲中的優(yōu)勢(shì)定義為:
若攻擊者贏得游戲的概率Adv?(k)可以忽略,則稱該方案是安全的。
由TPA執(zhí)行初始化操作,屬性全域U 以及安全隨機(jī)數(shù)λ作為初始化算法的輸入,得到主密鑰MK、公共密鑰PK,同時(shí)生成一個(gè)二元組為(用戶ID,隨機(jī)參數(shù))的可查詢列表W,W 初始化為?。
e:G×G →GT是雙線性映射,且由素?cái)?shù)階P 和生成元g 組成。定義系統(tǒng)全域?qū)傩约蟄 且對(duì)其屬性值進(jìn)行index 編號(hào),按index 進(jìn)行排序,同時(shí)為每個(gè)屬性Ai∈U 選擇一個(gè)隨機(jī)參數(shù)ti∈Zp。從循環(huán)群G 中選擇兩個(gè)隨機(jī)參數(shù)α,β ∈ZP,同時(shí)定義?y ∈Zp。TPA 執(zhí)行Setup(),則有:
TPA 為User 分配私鑰。將主密鑰MK,User 的ID號(hào)uk以及User 的屬性授權(quán)L′作為輸入,TPA 運(yùn)行密鑰生成算法,生成用戶私鑰SKu和中間參數(shù)DKu。在生成密鑰后,將ID和隨機(jī)參數(shù)記錄在列表W 中。設(shè)定用戶的授權(quán)屬性集合為L(zhǎng)′,即L′={Ai′}且L′?S,同時(shí),根據(jù)User的ID分配一個(gè)隨機(jī)參數(shù)?,TPA 將用戶ID和參數(shù)?寫入列表W。TPA執(zhí)行KeyGen(),則有:
數(shù)據(jù)擁有者DO 對(duì)數(shù)據(jù)進(jìn)行加密處理,輸入公共密鑰PK和指定的策略P以及明文M,生成密文文件Cp。具體執(zhí)行如下:
(1)DO 將制定的訪問策略Policy 發(fā)送給授權(quán)機(jī)構(gòu)TPA,TPA 根據(jù)公鑰PK 去除Policy 中所有的*(*代表其通配符)屬性,同時(shí)將其屬性按照指定的優(yōu)先級(jí)進(jìn)行排序,形成新的屬性集合L。將L中的屬性映射到U 中,構(gòu)建訪問樹。
定義屬性集合L={W1,W2, ,Wm},并將L 屬性Ai作為樹的葉子節(jié)點(diǎn),根據(jù)訪問結(jié)構(gòu)樹T 對(duì)明文M 加密。為T 的每個(gè)節(jié)點(diǎn)x 選擇一個(gè)多項(xiàng)式qx,該多項(xiàng)式依照由上至下,從根節(jié)點(diǎn)r 開始進(jìn)行選擇。對(duì)T 的每個(gè)節(jié)點(diǎn)x為其定義多項(xiàng)式qx的階次為dx,且與該節(jié)點(diǎn)的門限值kx滿足關(guān)系式:dx=kx-1。算法以根節(jié)點(diǎn)r 開始,算法隨機(jī)選擇多項(xiàng)式qr剩余dr個(gè)點(diǎn)的值。對(duì)于剩余節(jié)點(diǎn)x,令qx(0)=qpar(x)(index(x,)同)樣隨機(jī)選擇其他dx個(gè)點(diǎn)的值。若多項(xiàng)式被確定后,那么每一個(gè)葉子節(jié)點(diǎn)x,將定義一個(gè)秘密值,即:
TPA將根節(jié)點(diǎn)r 的qr(0)返回給DO。
(2)DO 在接收到TPA 反饋的參數(shù)之后,令qr(0)=ε,選擇隨機(jī)參數(shù)y ∈ZP,生成密文文件Cp,則有:
數(shù)據(jù)擁有者DO 將生成的密文文件發(fā)送給CSP,存儲(chǔ)數(shù)據(jù)。
由User 發(fā)送DKu和L′給CSP,如果User 授權(quán)屬性與DO 定義的策略P 相匹配,則將中間解密參數(shù)Fu和ψ*返回給User。具體如下:
(1)用戶User訪問云端數(shù)據(jù)時(shí)需將自己的屬性集合L′和中間參數(shù)DKu發(fā)送給CSP,CSP 將用戶屬性集合與訪問策略進(jìn)行比較,以確定是否擁有訪問權(quán)限。同時(shí)計(jì)算{TAi}Ai∈L′的集合,即中間參數(shù)DL′,則:
定義遞歸算法DepNode(Hp,D,x),輸入密文文件參數(shù)秘密值集合D 以及訪問樹節(jié)點(diǎn)x,輸出G2的一組元素或者是⊥。若節(jié)點(diǎn)x 為葉子節(jié)點(diǎn),則有i=att(x),滿足公式(8):
若x 為非葉子節(jié)點(diǎn),則遞歸算法DepNode(Hp,D,x)定義如下:關(guān)于節(jié)點(diǎn)x 的所有子節(jié)點(diǎn)z,運(yùn)算DepNode(Hp,D,x),且將結(jié)果記為fz,若滿足存在節(jié)點(diǎn)x的子節(jié)點(diǎn)集合為Sx,且其值為kx,則繼續(xù)執(zhí)行遞歸算法,若不然,則有fz=⊥。
令i =index(x),S′x={index(z)|z ∈,S則x}有:
以上算法詳細(xì)地定義了DepNode(Hp,D,x)的運(yùn)算方式,系統(tǒng)中的解密算法只能調(diào)用該遞歸算法在根節(jié)點(diǎn)r 的值。所以只有在用戶屬性集關(guān)聯(lián)的私鑰滿足指定的訪問樹時(shí),即Tx(r)=1時(shí),有:
Fu=DepNode(Hp,D,r)=e(g,ω)yqr(0)=e(g,ω)εy(10)
(2)若用戶屬性集合滿足訪問,則根據(jù)用戶屬性的授權(quán)集合,計(jì)算出用戶ID對(duì)應(yīng)的參數(shù),即有:
CSP將中間解密參數(shù)Fu和ψ*返回給用戶。
User 根據(jù)TPA 為其分配的SKu以及中間解密參數(shù)Fu和ψ*,運(yùn)行算法得到明文M。當(dāng)用戶User 收到CSP反饋的參數(shù)Fu和ψ*,根據(jù)公式(12)得到參數(shù)G,再根據(jù)公式(13)解得明文M。
本文方案中,TPA 為每個(gè)User 產(chǎn)生密鑰時(shí)均將其ID和對(duì)應(yīng)的參數(shù)? 記錄在列表W 中,并且當(dāng)用戶訪問數(shù)據(jù)時(shí),云服務(wù)器不僅實(shí)施策略匹配,也會(huì)將用戶的屬性集合L 和中間參數(shù)DKu通過安全信道發(fā)送給TPA。由此,TPA 可根據(jù)公鑰PK、中間參數(shù)DKu和屬性集合L進(jìn)行驗(yàn)證,若驗(yàn)證用戶DKu是TPA 分發(fā)的有效中間參數(shù),則根據(jù)參數(shù)? 在列表W 中即可查找出對(duì)應(yīng)的用戶ID,以此來監(jiān)測(cè)用戶的解密行為,為追蹤惡意散布解密密鑰用戶提供參考因子。若驗(yàn)證無效,則說明該用戶不能解密即無需追蹤。
本文方案的用戶追蹤分為檢驗(yàn)和查詢兩個(gè)階段,具體流程如下:
(1)檢驗(yàn)階段:在檢驗(yàn)階段,TPA 根據(jù)用戶的屬性集合L、中間參數(shù)DKu和公鑰PK 驗(yàn)證中間參數(shù)DKu是否為有效參數(shù),依據(jù)以下計(jì)算方法:
根據(jù)訪問者的屬性和公式(14)可計(jì)算出公鑰中對(duì)應(yīng)屬性的Ti連乘運(yùn)算,只有當(dāng)用戶中間參數(shù)是根據(jù)其屬性集合分配得到的,才能使得公式(15)成立。若公式(15)成立,則表明其為有效用戶;反之,為非授權(quán)用戶。
(2)查詢階段:若驗(yàn)證參數(shù)為有效的用戶中間參數(shù),則可以根據(jù)查詢列表W 對(duì)? 進(jìn)行查詢,并輸出與? 對(duì)應(yīng)的用戶ID,若驗(yàn)證無效,則輸出⊥。
本文所設(shè)計(jì)算法的正確與否體現(xiàn)于密文數(shù)據(jù)能否被成功解密以及泄密用戶能否被追蹤。在解密過程中,用戶需先將自己的屬性集合和中間參數(shù)DKu提交給云服務(wù)器,云服務(wù)器對(duì)其進(jìn)行策略匹配,當(dāng)用戶屬性集合L′滿足訪問結(jié)構(gòu)L,即,用戶才能獲取到解密參數(shù)Fu和ψ*,然后根據(jù)公式(12)解得參數(shù)G,最后根據(jù)公式(13)解密密文得到明文。由此可知,本解密算法的正確性驗(yàn)證可等價(jià)于對(duì)公式(12)和(13)的正確性驗(yàn)證。而泄密用戶的檢測(cè)和追蹤主要是通過驗(yàn)證中間參數(shù)DKu的有效性來實(shí)現(xiàn)的,可等價(jià)于對(duì)公式(15)的正確性驗(yàn)證。
(1)用戶收到解密參數(shù)Fu和ψ*后,執(zhí)行解密算法,根據(jù)公式(12)解得參數(shù)G,這里驗(yàn)證公式(12)的正確性:
(2)獲得參數(shù)G后進(jìn)一步根據(jù)公式(13)解密密文,這里驗(yàn)證公式(13)的正確性:
若用戶屬性不能夠滿足訪問策略,則不能獲取解密參數(shù),從而不能夠正確解密密文。
(3)對(duì)公式(15)的正確性證明如下:
5.2.1 IND-CPA模型下證明安全性
以下證明是基于上述IND-CPA 安全模型和DBDH問題上進(jìn)行分析論證的。假設(shè)DBDH成立,則攻擊者無法在多項(xiàng)式時(shí)間內(nèi)選擇訪問策略T*攻破該方案,則方案是IND-CPA安全的。
證明如果存在一個(gè)攻擊者? 能夠攻破本文方案,則存在一個(gè)算法B 可以攻破DBDH 問題,即輸入(ga,ωb,gc,Z=e(g,ω)z),算法B決定等式Z=e(g,ω)abc是否成立,其過程如下:
挑戰(zhàn)者定義系統(tǒng)參數(shù):生成元為g 和ω 的群G1和G2、有效映射e 和隨機(jī)參數(shù)a,b,c,z ∈Zp。同時(shí)挑戰(zhàn)者執(zhí) 行 拋 幣 值 u,若 u=1,則 挑 戰(zhàn) 者 設(shè) 置(A,B,F,Z)=(ga,ωb,gc,e(g,ω)z);若u=0,則挑戰(zhàn)者設(shè)置(A,B,F,Z)=(ga,ωb,gc,e(g,ω)abc)。
(1)初始階段:攻擊者?選擇挑戰(zhàn)的訪問結(jié)構(gòu)T*,并將其提交給挑戰(zhàn)者?。
(2)建立階段:選擇隨機(jī)數(shù)λ,設(shè)置e(g,ω)α=e(A,B),使α=ab計(jì)算Y=e(g,ω)α;對(duì)于每個(gè)屬性Aj∈U,則有:
(4)挑戰(zhàn)階段:攻擊者? 提交兩個(gè)挑戰(zhàn)消息M1、M2,挑戰(zhàn)者? 執(zhí)行擲幣游戲選取μ ∈{0,1},并進(jìn)行以 下 操 作 。 隨 機(jī) 選 擇 c ∈Zp計(jì) 算,同時(shí) 設(shè)置訪問樹T*的根節(jié)點(diǎn)值為待共享的值為c。對(duì)于每一個(gè)葉子節(jié)點(diǎn)Aj∈T*,計(jì)算。執(zhí)行加密算法,返回加密數(shù)據(jù)Mμ,輸出密文:
并將其返回給攻擊者?。
若u=0時(shí),則有Z=e(g,ω)abc和C′=e(g,ω)yc·Z,所以是有效隨機(jī)加密。
若u=1時(shí),則有Z=e(g,ω)z和C′=Mμ·e(g,ω)cy+z,因?yàn)閦的隨機(jī)性,從攻擊者的角度來看C′將是G2的隨機(jī)元素,得不到Mμ。
(5)查詢階段2:重復(fù)查詢階段1。
(6)猜測(cè)階段:攻擊者? 輸出一個(gè)猜測(cè)的數(shù)μ′∈{0,1},若有μ′=u,則用u′=0 表示一個(gè)有效的BDH組,反之,則用u′=1表示一個(gè)隨機(jī)組。
當(dāng)u=1 時(shí),攻擊者不能獲取信息μ,則有Pr[μ′≠μ|u=1]=1 。2那么挑戰(zhàn)者在μ′≠μ時(shí)猜測(cè)u′=1,則有Pr[u′=u|u=1]=1 。2當(dāng)u=0時(shí)能獲取信息μ,那么攻擊者的優(yōu)勢(shì)通過 κ 來定義,所以有Pr[μ′=μ|u=0]1= 2+κ,那 么 挑 戰(zhàn) 者 在μ′=μ 時(shí) 猜 測(cè)u′=0, 則 有 Pr[u′=u|u=0]=1 2+。κ 因 此Pr[u′=u|u=0]-Pr[u′=u|u=1]2=1+κ-12≥κ 成立,即假定攻擊者能夠以優(yōu)勢(shì)κ 求解DBDH。
綜上分析,假設(shè)DBDH 成立,則沒有攻擊者能夠在多項(xiàng)式時(shí)間內(nèi)選擇訪問策略T*下攻破方案,則方案是安全的。
5.2.2 抗攻擊等特性分析
(1)抗合謀攻擊
當(dāng)多個(gè)用戶試圖將自己的屬性私鑰進(jìn)行聯(lián)合,組合屬性私鑰以實(shí)施對(duì)密文解密時(shí),授權(quán)中心為用戶分配屬性私鑰和中間參數(shù)時(shí)為每一個(gè)屬性嵌入了一個(gè)與該用戶ID對(duì)應(yīng)的唯一隨機(jī)數(shù)? ∈Zp,這就說明只有嵌入相同隨機(jī)數(shù)的屬性私鑰才可以進(jìn)行組合使用,則加大了屬性私鑰組合的難度。例如,用戶1 的私鑰和中間參數(shù)分別為SK1u=g(α+?1)/β和用戶2 的私鑰和中間參數(shù)分別為SK2u=g(α+?2)/β和。那么它們聯(lián)合之后則會(huì)在聯(lián)合私鑰和中間參數(shù)中出現(xiàn)兩個(gè)隨機(jī)數(shù),不符合中心頒發(fā)的私鑰和中間參數(shù),即不可解密密文。同時(shí)密文與e(g,ω)ε(y+α)有關(guān),若要獲取明文則需通過計(jì)算e(ψ*,ωε先)解得G,因?yàn)镾Ku中嵌入了用戶私有的隨機(jī)數(shù)? ∈Zp,所以用戶之間無法通過組合解得G,以此實(shí)現(xiàn)了抗合謀攻擊。
(2)抗中間人攻擊
在通信過程中存在攻擊者以中間人身份來實(shí)施對(duì)數(shù)據(jù)的破獲。本文方案中若要破獲數(shù)據(jù)則需要計(jì)算中間參數(shù)G,而計(jì)算中間參數(shù)則需要私鑰SKu。如,存在中間人截獲了解密中間參數(shù)Fu和ψ*后,想去破解密文則 需 要 通 過 計(jì) 算C′/G/Fu,而G則 通 過 計(jì) 算獲取,但中間人無法獲取私鑰SKu則無法獲取G即無法解密,同時(shí)在數(shù)據(jù)加解密的過程中都引入了隨機(jī)參數(shù),故中間人無法恢復(fù)云端發(fā)來的消息,即方案能夠抗中間人攻擊。
(3)抗云服務(wù)器端泄密
本應(yīng)用場(chǎng)景中涉及到病歷科、醫(yī)護(hù)人員、用戶和CSP 四類實(shí)體,其中病歷科作為授權(quán)中心是完全可信的,但CSP 是半可信的。CSP 除了提供安全的密文存儲(chǔ)和策略匹配之外,由于其能直接對(duì)密文進(jìn)行訪問和管理,故也存在試圖獲取私密性數(shù)據(jù)的可能。為防止CSP端泄密,在本文方案中設(shè)計(jì)的解密密鑰由兩部分參數(shù)通過公式(12)產(chǎn)生,除了由CSP 產(chǎn)生的中間解密參數(shù)Fu和ψ*之外,另外一部分參數(shù)SKu掌握在訪問用戶端。因而,即使CSP 獲得了解密的中間參數(shù),由于接觸不到私鑰,仍然不能對(duì)密文進(jìn)行解密,故無法破壞數(shù)據(jù)的隱私性。同時(shí)用戶想要獲取到明文也需要滿足數(shù)據(jù)者制定的訪問策略,擁有權(quán)限才可解密。
(4)提供用戶可追蹤性
在訪問控制過程中,針對(duì)可能出現(xiàn)的用戶無意或是有意泄漏私鑰的問題,方案定義了用戶追蹤驗(yàn)證算法。當(dāng)用戶訪問時(shí),TPA 對(duì)用戶中間參數(shù)有效性進(jìn)行驗(yàn)證,根據(jù)訪問者的屬性和公式(14)來計(jì)算公鑰中對(duì)應(yīng)屬性的Ti連乘運(yùn)算,然后根據(jù)公式(15)驗(yàn)證是否為有效私鑰,只有當(dāng)用戶中間參數(shù)是根據(jù)其屬性集合分配得到才能使得公式(15)成立,因而,根據(jù)參數(shù)? 在列表W 中即可查找出對(duì)應(yīng)的用戶ID,實(shí)現(xiàn)了用戶可追蹤。
5.2.3 安全性比較
與文獻(xiàn)[6]、[13]、[14]、[15]比較可知,本文方案除了和上述文獻(xiàn)均滿足IND-CPA 模型下證明安全性且支持抗合謀攻擊和抗中間人攻擊之外,與文獻(xiàn)[6]和[13]相比,支持用戶解密行為的追蹤;與文獻(xiàn)[6]、[13]和[15]相比,在訪問策略上采用訪問樹的模式具備更高的靈活性;與文獻(xiàn)[14]具備相同的特性。具體如表1所示。
表1 特性分析
由于文獻(xiàn)[7-12]在方案構(gòu)造上使用了分層結(jié)構(gòu)、聯(lián)合編碼方式或者是單調(diào)訪問結(jié)構(gòu),與本文方案在構(gòu)造上存在較大差異,無可比性,故以下僅將本文方案與文獻(xiàn)[6]、[13]、[14]、[15]進(jìn)行比較。表2、3 中n代表系統(tǒng)中屬性域中屬性的數(shù)目;k 表示用戶屬性集合中屬性的數(shù)目;|w |表示訪問結(jié)構(gòu)中屬性集合中屬性的數(shù)目;ni代表文獻(xiàn)[13]第i 個(gè)屬性的取值個(gè)數(shù);a、b 分別代表文獻(xiàn)[13]、[14]中用戶屬性矩陣行和列的數(shù)目;|G |和 | GT|表示群G 和群GT中每個(gè)元素的長(zhǎng)度;|Zp|代表Zp中每一個(gè)元素的長(zhǎng)度;tb代表線性對(duì)運(yùn)算時(shí)間;te代表一次指數(shù)運(yùn)算時(shí)間;其余操作忽略不計(jì)。
表2 時(shí)間復(fù)雜度對(duì)比
表3 公私鑰及密文長(zhǎng)度對(duì)比
5.3.1 時(shí)間復(fù)雜度分析
從表2 對(duì)比結(jié)果可以看出,本文方案在解密時(shí)間和公鑰生成時(shí)間上長(zhǎng)于文獻(xiàn)[6],但是在加密時(shí)間、私鑰生成時(shí)間和密文生成時(shí)間上實(shí)現(xiàn)了縮短。其次,本文方案與文獻(xiàn)[13]相比,私鑰生成時(shí)間一致,另外雖然在加密時(shí)間、公鑰和密文生成時(shí)間上都與屬性數(shù)目線性相關(guān),但也有所減少且解密時(shí)間更短。本文方案與文獻(xiàn)[14]均實(shí)現(xiàn)了用戶追蹤,但是在加解密時(shí)間、公私鑰和密文生成時(shí)間上本文方案更具有優(yōu)勢(shì),文獻(xiàn)[15]雖然在加密時(shí)間上更短,但是其加密時(shí)間與用戶屬性數(shù)目線性相關(guān),同時(shí)在公私鑰和密文生成時(shí)間上本文方案具有一定優(yōu)勢(shì)。
5.3.2 空間復(fù)雜度分析
從表3 對(duì)比結(jié)果可以看出,本文方案與文獻(xiàn)[6]和[15]相比,在公鑰長(zhǎng)度方面有所增加,但是與私鑰長(zhǎng)度和密文長(zhǎng)度相比略有縮短,一定程度上降低了空間開銷和解密開銷。方案與文獻(xiàn)[13]和[14]相比雖然在公鑰長(zhǎng)度、私鑰長(zhǎng)度和密文長(zhǎng)度方面均與屬性有線性關(guān)系,但是相比于文獻(xiàn)[13]和[14]在這些方面均對(duì)空間大小有所壓縮。
綜上所述,從總體來看,本文方案在加解密時(shí)間上實(shí)現(xiàn)了縮短且在私鑰長(zhǎng)度和密文長(zhǎng)度方面也進(jìn)行了縮短,同時(shí)實(shí)現(xiàn)了安全訪問的靈活性,與其他方案相比在功能上實(shí)現(xiàn)了追蹤和性能效率上有所提高。
當(dāng)前外包數(shù)據(jù)的安全隱患依然制約著云服務(wù)的發(fā)展,如何提高云外包數(shù)據(jù)的安全性依然是一個(gè)好的研究方向。本文引入第三方可信機(jī)構(gòu)在基于CP-ABE 的經(jīng)典方案上做出改進(jìn),首先在私鑰分配階段和數(shù)據(jù)加密階段對(duì)算法進(jìn)行了改進(jìn),縮短了私鑰長(zhǎng)度和密文長(zhǎng)度,降低了存儲(chǔ)開銷和通信時(shí)間成本;其次在為用戶分配私鑰時(shí)根據(jù)其ID 隨機(jī)生成一個(gè)參數(shù)嵌入私鑰中,當(dāng)用戶訪問數(shù)據(jù)時(shí)只有用戶屬性滿足訪問策略才能獲取中間參數(shù)從而解密密文,增強(qiáng)了抗合謀攻擊和中間人攻擊能力;然后對(duì)于用戶私鑰泄漏的問題定義了用戶追蹤驗(yàn)證,追蹤用戶的身份;最后方案是基于訪問樹結(jié)構(gòu),利用Shamir 秘密共享機(jī)制實(shí)現(xiàn)策略的與或、門限操作,提高了系統(tǒng)的靈活性。分析表明,方案在基于DBDH假設(shè)下證明是安全的,通過方案比較,本文方案在加解密時(shí)間、私鑰長(zhǎng)度和密文長(zhǎng)度方面有所優(yōu)化,實(shí)現(xiàn)了性能和功能的優(yōu)化。由于在方案中對(duì)于泄密的合法用戶未實(shí)施叛逃撤銷,因而后續(xù)將針對(duì)追蹤到的泄密用戶的撤銷做進(jìn)一步的研究。