馬佳佳,曹素珍,竇鳳鴿,丁曉暉,丁賓賓,王彩芬,2
(1.西北師范大學(xué)計算機科學(xué)與工程學(xué)院,甘肅 蘭州 730070;2.深圳技術(shù)大學(xué)大數(shù)據(jù)與互聯(lián)網(wǎng)學(xué)院,廣東 深圳 518118)
在大數(shù)據(jù)時代,為了有效地節(jié)省本地存儲成本,用戶通常選擇將海量的數(shù)據(jù)存儲在云服務(wù)器上。使用強大的云服務(wù)器資源不僅可以解決海量數(shù)據(jù)存儲問題,而且還可以提供高效的計算服務(wù)[1]。然而,由于它主要提供分布在遠(yuǎn)離用戶的核心網(wǎng)絡(luò)中的資源,具有高帶寬耗費和高傳輸時延等缺點,研究人員提出了霧計算。霧計算(也稱為邊緣計算)是云計算的擴展,它使計算和存儲能夠在網(wǎng)絡(luò)邊緣實現(xiàn)。因為存儲和處理任務(wù)可以由大規(guī)模、無處不在和分散的設(shè)備執(zhí)行,無需第三方干預(yù)即可相互通信并可能相互合作。霧計算為各種用戶提供了新的應(yīng)用程序和服務(wù),具有更強大CPU、更大內(nèi)存和更大存儲空間的特定高端服務(wù)器[2,3]。
相比傳統(tǒng)病歷,電子病歷具有使用方便、及時性強和成本低的優(yōu)點,再加上計算機和通信技術(shù)的快速發(fā)展,使得電子病歷成為醫(yī)療服務(wù)必不可少的工具,人們也越來越關(guān)注醫(yī)療系統(tǒng)的安全性和隱私保護問題[4]。文獻[5]提出了區(qū)塊鏈與可搜索加密結(jié)合的電子病歷共享方案,利用可搜索加密技術(shù)將關(guān)鍵字索引保存在私有鏈上,實現(xiàn)醫(yī)療數(shù)據(jù)的隱私保護。文獻[6]提出了基于區(qū)塊鏈的電子病歷數(shù)據(jù)共享方案,使用可搜索加密技術(shù)實現(xiàn)安全索引。但是,文獻[5,6]都未能實現(xiàn)醫(yī)療數(shù)據(jù)的細(xì)粒度訪問控制且未考慮數(shù)據(jù)使用者密鑰可能泄露的問題。
基于屬性的加密方案ABE(Attribute-Based Encryption)[7]中,每個用戶由一組屬性來標(biāo)識,并且這些屬性的一些功能被用來確定每個密文的解密能力[8]。其中,密文策略屬性基加密方案[9]將訪問策略嵌入密文中,患者指定具有哪些屬性的醫(yī)生解密患者病歷信息,不僅保護了患者病歷信息,而且還實現(xiàn)了一對多的細(xì)粒度訪問控制。文獻[10]提出了一種支持快速加密的基于屬性的加密方案,采用密文策略的屬性外包加密方案保證了用戶的機密性,同時采用外包方案降低了系統(tǒng)的計算開銷,提高了傳輸效率。多機構(gòu)授權(quán)下可追蹤可隱藏的屬性基加密方案[11]和智慧城市關(guān)鍵詞搜索技術(shù)中隱藏敏感策略的基于密文策略屬性的加密方案[12]都采用了密文策略的屬性基加密方案,但未將加解密方案外包給代理服務(wù)器,大大增加了系統(tǒng)的計算開銷。基于屬性的加密方案在策略構(gòu)造上有訪問樹和訪問矩陣2種方式。文獻[13]提出了霧環(huán)境下的電子健康外包和屬性撤銷的高效訪問控制方案,其訪問策略的構(gòu)造采用了訪問矩陣方式。相比訪問矩陣,訪問樹具有易構(gòu)造,可讀性強和加密效率高的優(yōu)勢。
為了實現(xiàn)用戶的屬性更新,文獻[14]提出了一種基于云的用戶屬性更新的訪問控制方案,但不適用于外包計算框架。文獻[15]提出了支持屬性撤銷和用戶屬性更新的方案,但沒有將加解密運算外包給代理服務(wù)器,使得數(shù)據(jù)擁有者和數(shù)據(jù)用戶的計算負(fù)擔(dān)增大,同時降低了效率。文獻[16]基于霧計算提出了一種具有外包和屬性更新能力的高效訪問控制方案,但并未實現(xiàn)加密外包計算,降低了數(shù)據(jù)擁有者的計算效率。
基于上述問題,本文提出了智慧醫(yī)療環(huán)境下支持屬性更新的加解密外包方案,主要貢獻有:
(1)將部分加解密運算外包給霧節(jié)點,有效減少了數(shù)據(jù)擁有者和數(shù)據(jù)用戶的計算負(fù)擔(dān),降低了傳輸時延,提高了通信效率;
(2)將云服務(wù)器視為半可信實體,在密文更新時,向云服務(wù)器傳輸屬性相關(guān)的哈希值,有效保護了用戶的隱私;
(3)實現(xiàn)數(shù)據(jù)擁有者屬性的更新,更加符合實際的醫(yī)療應(yīng)用環(huán)境。
最后,基于DBDH困難問題證明了本文方案是安全的,通過與現(xiàn)有其它方案的數(shù)值分析比較,表明本文方案具有更高的效率。
智慧醫(yī)療環(huán)境下支持屬性更新的加解密外包方案中使用的部分符號說明如表1所示。
Table 1 Symbol description表1 符號說明
設(shè)p是一個大素數(shù),G和GT是2個階為p的乘法循環(huán)群,G到GT的雙線性映射e:G×G→GT滿足以下性質(zhì)[17]:
(2)非退化性。存在g∈G,有e(g,g)≠1。
(3)可計算性。對任意的g1,g2,存在一個有效算法計算e(g1,g2)。
定義T為訪問樹,它的每個葉節(jié)點代表一個屬性,每個非葉節(jié)點代表一個門限節(jié)點。numx表示節(jié)點x的所有子節(jié)點的個數(shù),d表示數(shù)據(jù)擁有者設(shè)置的閾值數(shù),且0 如圖1所示,假設(shè)訪問樹的閾值為2,訪問子樹的葉節(jié)點屬性為{甘肅省人民醫(yī)院,普外科系統(tǒng),甲亢患者}。當(dāng)用戶的屬性為{蘭州大學(xué)第二醫(yī)院,內(nèi)科系統(tǒng),疝氣患者}時,不滿足訪問樹的任何2個屬性,秘密值不能通過線性秘密共享來恢復(fù);當(dāng)用戶的屬性為{甘肅省人民醫(yī)院,普外科系統(tǒng),甲亢患者}時,滿足訪問樹的最低閾值,可以訪問根節(jié)點的秘密值,因此最終的明文可以通過用戶的私鑰解密密文來獲得。 Figure 1 Access tree圖1 訪問樹 設(shè)G1和G2是p階的雙線性群,e:G1×G1→G2,設(shè)g是群G1的生成元,給定元組y={g,ga,gb,gc,e(g,g)abc},其中a,b,c∈RZp,對于多項式時間算法Y來說,區(qū)分有效的元組e(g,g)abc與群中G2的隨機元素r是困難的[18]。令算法Y輸出一個比特h∈{0,1},如果等式pr[Y(y,T=e(g,g)abc)=0]-pr[Y(y,T=r)=0]≥δ成立,則稱Y在解決DBDH問題上的優(yōu)勢為δ。 智慧醫(yī)療環(huán)境下支持屬性更新的加解密外包方案模型如圖2所示。方案共有6個實體,分別為可信中心CA(Center Authority)、授權(quán)機構(gòu)AAs(Attribute Authorities)、霧節(jié)點FN(Fog Node)、醫(yī)療云服務(wù)商CSP(Cloud Service Provide)、數(shù)據(jù)擁有者DO(Date Owner)和數(shù)據(jù)使用者DU(Date User)。 Figure 2 Model of encryption and decryption outsourcing solution supporting attribute update圖2 支持屬性更新的加解密外包方案模型 (1)CA是完全可信的一方,其主要作用是負(fù)責(zé)管理全局參數(shù)的設(shè)置,并且為每一個DU和AA生成唯一的身份標(biāo)識uid和aid。 (2)AAs:授權(quán)機構(gòu)之間相互信任,可將醫(yī)院視為授權(quán)機構(gòu),主要為每個DO和FN根據(jù)其管理的屬性生成密鑰。在屬性更新階段,AAs為CSP生成用于更新密文的代理密鑰的更新密鑰 。 (3)FN的主要作用是承擔(dān)DO和DU的部分加解密工作。加密階段,患者將部分加密運算傳輸給FN,F(xiàn)N執(zhí)行加密操作;解密階段,醫(yī)生將部分解密計算外包給FN,然后醫(yī)生進行最后的解密,這樣可有效減少DO和DU的計算開銷。 (4)CSP的主要作用是提供存儲功能,從FN接收密文,然后存儲并發(fā)送給FN。此外,還在更新相關(guān)屬性時執(zhí)行密文更新。 (5)患者作為DO,對自己的病歷根據(jù)其設(shè)置的加密算法對關(guān)鍵信息進行加密,然后將加密后的病歷上傳到FN。 (6)醫(yī)生作為DU,從FN獲得部分解密的密文之后,執(zhí)行剩余的解密操作,最終獲得患者病歷。 令G和G1是階為p的雙線性群,其生成元為g,e:G×G→G1。定義一個哈希函數(shù)H:{0,1}*→G。 (1)系統(tǒng)初始化。 ①GlobalSetup(1λ)→PP。 該階段由可信中心執(zhí)行。輸入安全參數(shù)λ,輸出公共參數(shù)PP={G,p,g,e,H}。CA為每一個授權(quán)機構(gòu)AA和數(shù)據(jù)使用者DU生成唯一的身份標(biāo)識aid和uid。定義全局屬性U={u1,u2,…,un}。 ②AuthSetup(PP,aid)→{MSKaid,PKaid}。 該階段由授權(quán)機構(gòu)執(zhí)行。令A(yù)Aaid管理的屬性集為Aaid,且A1∩A2∩…∩Aaid…∩AAID≠?,其中AID為授權(quán)機構(gòu)數(shù)量。授權(quán)機構(gòu)AAaid隨機選取αaid∈Zp,對于每一個j∈Aaid,選取βj,aj,vj∈RZp,計算屬性密鑰PKj=gvj。系統(tǒng)主密鑰為MSKaid={aj,gαaid,βj},公鑰為PKaid={H(j)aj,e(g,g)αaid,PKj}。 (2)密鑰生成。 KeyGen(PP,uid,MSKaid,S)→{SKaid,FSKaid,uid}。 該階段由授權(quán)機構(gòu)執(zhí)行。數(shù)據(jù)使用者要想訪問加密數(shù)據(jù),其密鑰必須滿足訪問策略才能解密數(shù)據(jù)文件。 Aaid,uid表示由授權(quán)機構(gòu)AAaid管理的用戶uid的屬性集,且Aaid,uid?S,其中S為所有用戶屬性集。對于任意的j∈Aaid,uid: ①選取隨機數(shù)raid,taid∈Zp,計算部分密鑰構(gòu)件Kaid,uid=(graidvj·H(j)aj)taid,Laid=gajtaid,F(xiàn)aid=gαaid+raid/βj; ②生成霧節(jié)點的轉(zhuǎn)換密鑰FSKaid,uid={Faid,Kaid,uid,Laid}和DU的私鑰SKuid={Faid,taid}。 (3)數(shù)據(jù)加密。 ①DOEncrypt(PP,M,T,PKaid)→CTpart。 該階段由數(shù)據(jù)擁有者執(zhí)行。數(shù)據(jù)擁有者通過構(gòu)造訪問樹T加密消息M。 a 構(gòu)造訪問策略。定義R為訪問樹的根節(jié)點。對于根節(jié)點R,數(shù)據(jù)擁有者加密算法隨機選取一個秘密值s∈Zp,選擇一個d-1次多項式Y(jié)(·),令YR(0)=s。令Q是訪問樹T中與葉節(jié)點相關(guān)聯(lián)的屬性集。 最終得到部分加密密文: CTpart={C,C0,?att(n)=j∈Q:C1,C2} ②FNEncrypt(T,PP,CTpart)→CT。 該階段由霧節(jié)點執(zhí)行。數(shù)據(jù)擁有者將加密的部分密文發(fā)送給霧節(jié)點,霧節(jié)點執(zhí)行進一步加密操作。 a 對于每一個節(jié)點n∈T1,霧節(jié)點加密算法從根節(jié)點R開始,根據(jù)其閾值d開始自上向下為每一個節(jié)點n選擇一元d-1次多項式Y(jié)(·)。 b 對于父節(jié)點p(c)的子節(jié)點c,Yc(0)=Yp(c)(index(n))。 最終,密文CT={T,C,C0,?att(n)=j∈Q:C1,C2}。 (4)數(shù)據(jù)解密。 ①FNDecryct(PP,CT,uid,FSKaid,uid)→CT′part。 該階段由霧節(jié)點執(zhí)行,當(dāng)數(shù)據(jù)使用者的屬性集能滿足訪問樹T時,才能夠解密得到消息M。 a 當(dāng)n為葉節(jié)點時,令j=att(n)。如果j?Auid,則Fn=⊥。 否則,計算: e(g,g)Yn(0)taidraid b 當(dāng)n為非葉節(jié)點時,如果n 令I(lǐng)C={?c∈Cn:Ic},計算: e(g,g)raidtaidYn(0) 最終,CT′part=(T,C,C0,Fn)。 ②EUDecryct(CT′part,SKaid)→M。 該階段由數(shù)據(jù)使用者執(zhí)行。數(shù)據(jù)使用者對霧節(jié)點解密的密文進行進一步解密,得到最終的消息消息M: (5)屬性更新。 ①更新密鑰KeyUpdate(SKuid,i)→USKuid。 當(dāng)數(shù)據(jù)擁有者的信息需要更新時,如更新用戶uid的某一屬性i時,需要執(zhí)行該階段。假設(shè)患者的病歷信息增加了病癥,需要不同科室的醫(yī)生癥治時,執(zhí)行該階段。該階段由授權(quán)機構(gòu)執(zhí)行。 a 隨機選取v′j∈Zp,授權(quán)機構(gòu)AAaid為用戶uid產(chǎn)生一個升級密鑰UKuid=g(v′j-vj)taid,更新私鑰相關(guān)聯(lián)的密鑰構(gòu)件Kaid,uid,有K′aid,uid=Kaid,uid×UKuid; b 對于?j∈S,當(dāng)j≠i時,有Kaid,uid=(graidvj·H(j)aj)taid;當(dāng)j=i時,有K′aid,uid=Kaid,uid×UKuid=(graidv′j·H(j)aj)taid。 c 生成代理密鑰Km=vj/v′j。 ②更新密文CTUpdate(CT,Km)→CTU。 密文更新利用代理重加密技術(shù),有利于減少數(shù)據(jù)擁有者的計算負(fù)擔(dān)。密文更新時,向醫(yī)療云服務(wù)商提供包含更新屬性j的哈希值H(j)后,醫(yī)療云服務(wù)商通過判斷用戶提交的哈希值H(j)′與哈希值H(j)是否相等來更新密文,這樣能確保更新屬性不被泄露,有效保護了數(shù)據(jù)擁有者的屬性信息。 CTU={T,C,C0,?j=att(n)∈Y,C′1,C′2}。 定理1假設(shè)存在多項式時間的敵手以不可忽略的優(yōu)勢φ(φ>0)攻破本文方案。那么,存在一個多項式時間算法QA,以φ/2的優(yōu)勢解決DBDH問題。 證明設(shè)G1是素數(shù)階p的雙線性群,其生成元為g,設(shè)雙線性映射e:G1×G1→G2。首先挑戰(zhàn)者C隨機選擇x,y,z∈RZp,隨機元素F∈G2且b∈{0,1},如果b=0,挑戰(zhàn)者C設(shè)置(g,X,Y,Z,L)=(g,gx,gy,gz,e(g,g)xyz),其中L=e(g,g)xyz;否則設(shè)置(g,X,Y,Z,L)=(g,gx,gy,gz,F),其中L=F。 系統(tǒng)建立首先,敵手A選擇一個訪問樹T*并將訪問樹T*發(fā)送給挑戰(zhàn)者C。 階段2和階段1相同。 挑戰(zhàn)敵手A提交b的一個猜測b′。若b=b′,那么挑戰(zhàn)者C輸出0,即T=e(g,g)xyz;否則,挑戰(zhàn)者C輸出1,即T=F。如果T=e(g,g)xyz,那么密文CT為有效密文,則敵手A的優(yōu)勢為φ,則有Pr[QA(g,gx,gy,gz,L=e(g,g)xyz)=0]=1/2+φ;如果T=f,則密文CT是隨機選取的,則有Pr[QA(g,gx,gy,gz,L=F)=0]=1/2。因此,挑戰(zhàn)者C的優(yōu)勢δ表示為: 表2是本文方案與文獻[15,16]方案的功能比較,從表2可以看出,本文方案最大的優(yōu)勢在于將加解密運算部分外包給霧節(jié)點,同時滿足屬性的更新。 本文方案與文獻[15,16]方案在性能比較中,用NE1表示群G上的指數(shù)運算次數(shù),NE2表示群G1上的指數(shù)運算次數(shù),NP表示雙線性運算次數(shù),Nct表示與密文相關(guān)的屬性個數(shù),Nsk表示與用戶私鑰相關(guān)的屬性個數(shù),NM表示滿足訪問結(jié)構(gòu)的最小內(nèi)部節(jié)點數(shù)。 Table 2 Comparison of characteristics of relevant schemes 表3是本文方案與文獻[15,16]方案的計算開銷比較。數(shù)據(jù)擁有者的計算開銷主要取決于加密數(shù)據(jù)的不同授權(quán)機構(gòu)生成的公鑰。本文方案支持外包加密,因此數(shù)據(jù)擁有者的計算開銷比文獻[15,16]方案的計算開銷低些。另外,數(shù)據(jù)使用者的屬性密鑰存儲在霧節(jié)點中進行外包解密,因此數(shù)據(jù)使用者的計算開銷低于文獻[15]方案的計算成本。 為了對比方案效率,本文還通過實驗對現(xiàn)有其它方案和本文方案進行了更直觀的比較。實驗環(huán)境為Intel(R)Core(TM)i5-8250U CPU@1.60 GHz 1.80 GHz處理器8.00 GB RAM,使用語言為JAVA,方案實現(xiàn)基于JPBC(Java Pairing-Based Cryptography library)庫。 圖3是密鑰生成階段隨著屬性個數(shù)的遞增,授權(quán)機構(gòu)為用戶生成密鑰所消耗的時間,在密鑰生成階段,因為雙線性配對的運算時間遠(yuǎn)大于指數(shù)運算的時間,所以文獻[16]方案消耗的時間明顯多于文獻[15]方案和本文方案的時間。圖4是本文方案和對比方案的整個加密階段所消耗的時間,包括霧節(jié)點的加密時間和數(shù)據(jù)擁有者的加密時間。圖5是本文方案和對比方案整個解密階段所消耗的時間,包括霧節(jié)點解密和數(shù)據(jù)用戶的解密時間。從圖4和圖5可以看出,本文方案與文獻[16]方案加解密時間遠(yuǎn)優(yōu)于文獻[15]方案的,本文方案與文獻[16]方案將大部分運算外包給霧節(jié)點,數(shù)據(jù)使用者僅有少量的運算,這樣大大提高了整個系統(tǒng)的效率。 Table 3 Calculation cost comparison of relevant schemes Figure 3 Computational overhead during key generation圖3 密鑰生成階段計算開銷 Figure 4 Computational overhead during encryption圖4 加密階段計算開銷 Figure 5 Time during decryption圖5 解密階段所消耗時間 圖6是霧節(jié)點外包解密所消耗的時間,從圖6中可以看出,本文方案略優(yōu)于文獻[16]方案。在文獻[15,16]方案中,由于數(shù)據(jù)擁有者執(zhí)行所有的加密操作,因此增加了數(shù)據(jù)擁有者的計算開銷,降低了方案整體效率;而在本文方案中,部分加密運算由霧節(jié)點執(zhí)行,有效降低了計算開銷,提高了效率。圖7是3個方案加解密階段的總體時間對比。 Figure 6 Time during outsourcing decryption圖6 外包解密所消耗時間 Figure 7 Running time during encryption and decryption圖7 加解密運行時間 上述實驗結(jié)果表明,本文方案在數(shù)據(jù)所有者加密、數(shù)據(jù)用戶解密和密文更新過程中的計算開銷較小。 本文提出的在智慧醫(yī)療環(huán)境下支持屬性更新的加解密外包方案將部分加解密運算外包給霧節(jié)點,有效地減少了數(shù)據(jù)擁有者和數(shù)據(jù)用戶的計算負(fù)擔(dān),同時提高了通信效率;且在密文更新時,向云服務(wù)器傳輸屬性相關(guān)的哈希值而非屬性值,有效保護了用戶的隱私。最后,基于DBDH問題證明了本文方案是安全的,數(shù)值分析結(jié)果表明,本文方案在計算效率上具有一定的優(yōu)勢。2.4 困難問題假設(shè)
3 方案描述
3.1 方案模型
3.2 方案構(gòu)造
4 安全性證明
5 性能分析
6 結(jié)束語