牛淑芬 宋 蜜* 方麗芝 王彩芬②
①(西北師范大學計算機科學與工程學院 蘭州 730070)
②(深圳技術大學大數據與互聯網學院 深圳 518118)
隨著信息技術的飛速發展,越來越多的醫療機構使用電子信息系統來存儲醫療數據。為了提高醫院服務質量,降低患者成本,更好地利用醫療信息數據已逐漸成為研究熱點。作為患者,個人電子健康記錄(Electronic Health Record, EHR)[1]是一種電子的個人醫療健康記錄,包含所有與個人健康相關的信息,如個人醫療記錄、過敏藥物、體檢報告、家族病史等敏感信息。由于EHR中包含著患者極其隱私敏感的信息, 而且數據的存儲需要很大的空間,云技術被提出用于個人健康數據的存儲、管理和共享[2—4]。醫療云系統不僅為醫患雙方提供了極大的便利,而且也有助于患者更好地控制自己的病情。然而,云服務器并不完全可信,當用戶在云服務器上存儲EHR數據時,數據會受到各種安全威脅,涉及數據的隱私、完整性和數據的認證[5]。為了防止數據泄露,在上傳前需對共享數據進行加密。但又會出現新的問題,數據加密之后,數據的使用就會受到一定的限制。為了解決這一問題,研究人員引入了可搜索加密(Searchable Encryption,SE)技術。Song等人[6]首先在流密碼的基礎上提出了對稱可搜索加密,該方案對文件中的每個關鍵字進行加密,使得云服務器在不知道具體關鍵字的情況下卻能明確文件中是否包含特定的關鍵字。
文獻[7]提出了可實現動態更新的可搜索加密方案,方案具有較高的準確性和安全性。文獻[8]支持連接關鍵字作為搜索的輸入,并使服務器能夠向用戶證明搜索結果的完整性。然而,這些可搜索方案都是一對一加密,由于加密數據在多個接收者之間共享,并保存在一個不可信的遠程共享存儲服務器中。如何實現多個用戶安全高效的訪問數據成為新的問題,屬性基加密(Attribute-Based Encryption,ABE)正好解決了這個問題。文獻[9,10]提出了幾個ABE方案,實現了細粒度的訪問控制和關鍵字搜索。然而,這些方案關注的是數據的機密性,沒有考慮訪問策略的隱私保護。訪問策略被大多數注重數據保密性的ABE方案采用,并與相關密文公開共享。這種數據訪問策略的暴露會泄露共享數據和解密方身份的敏感信息,從而使傳統的ABE方案變得不安全。
為了防止訪問策略的泄露,文獻[11] 提出了一種在素序群中具有部分隱藏訪問結構的基于密文策略的屬性加密方案。另一個問題是云服務器(Cloud Server Provider, CSP)并不完全可信。在不完全可信的云環境中,半可信云服務器可能會返回部分結果或錯誤的搜索結果,因此研究支持搜索結果完整性驗證的SE技術顯得尤為重要。為了驗證CSP返回的搜索結果的完整性,Sun等人[12]提出了一種基于屬性的可驗證加密方案,但是這些方案存在云數據的重復性。隨著云中存儲的數據量增加,不可避免地會出現重復數據。如果云服務器存儲大量冗余數據,則會浪費CSP的存儲資源和用戶的網絡帶寬。因此,重復數據消除對于云服務提供商來說是非常必要的。針對這個問題,文獻[13]提出了一個在混合云環境下具有重復數據消除功能的屬性加密存儲系統,其中私有云負責重復數據的檢測,公共云負責數據的存儲。文獻[14,15]均使用消息鎖定加密來實現對密文的重復數據刪除,用戶使用聚合密鑰對敏感數據進行加密,CSP將存儲的數據與新上傳的數據進行比較,若發現相同的數據,CSP將不再存儲新的數據,以節省存儲空間。
本文在加密的云數據上建立一個基于屬性的關鍵字搜索加密方案,它支持數據完整性驗證和重復數據消除,能夠實現醫療數據的機密性、認證性、完整性,并支持機密數據的共享。該文分別從數據所有者、數據用戶和醫療云的角度進行了研究。對于數據所有者來說,數據機密性是最重要的,其次是對數據用戶的有效授權。為此,本文采用ABE技術來保證數據的機密性和用戶的匿名性。為了防止訪問策略泄漏,本文將訪問策略中的屬性進行加密隱藏。此外,還提供了細粒度的訪問授權,只允許屬性集滿足訪問策略的用戶才可獲得醫療數據。對于數據用戶來說,搜索數據的完整性是最重要的。為了保證搜索結果的完整性,本文通過數據用戶和醫療云的交互對密文進行驗證。對于醫療云,它側重于消除重復數據和減少存儲資源的浪費,因此本文為每個共享文檔生成數據標簽,以實現云重復數據消除。 對于數據所有者來說,數據保密性是最重要的,其次是對數據用戶的有效授權。
本文的創新點如下:
(1)方案允許多個患者對電子病歷設置訪問控制策略,同時支持多個用戶對數據進行細粒度訪問,所有屬性滿足訪問策略的用戶均能夠獲取醫療數據。
(2)方案實現了訪問策略的隱藏,有效避免用戶的具體屬性值泄露給第三方,確保了用戶隱私的安全。
(3)方案通過對加密文件設置數字標簽,實現重復數據消除功能,減少占用醫療云的存儲空間;同時對密文進行簽名來保證數據正確性,實現密文可驗證,解決了半誠實云服務器下搜索結果不正確的問題。
(4)安全性分析表明了本文方案對適應性選擇關鍵字攻擊是安全的,確保了關鍵字的保密性;此外,還可以有效地阻止未經授權用戶對數據的訪問。
EHR系統是以電子病歷為核心的醫療信息系統,EHR不僅包括個人的醫療記錄,即門診、住院就診的所有醫療信息,還包括個人的健康記錄,如免疫接種、過敏源、健康狀態等內容,如圖1所示。如果一個急診患者突然來到醫院,醫師可以將患者身上所帶的醫療卡插入計算機,這樣計算機就會立刻顯示出患者的有關情況,如姓名、年齡、藥敏等,此時醫師就能夠根據患者的臨床表現開出需要的檢查項目單。電子病歷和計算機信息系統的應用,將使醫療會診的時間縮短,質量大幅度提高,同時改善醫療服務,提高治愈率,降低成本。然而EHR系統也存在一些安全和隱私問題,這些問題也受到了越來越多的關注[16,17]。

圖1 電子病歷示例圖
屬性基加密與過去的公鑰加密方案相比(如身份基加密)最大的不同點就是,ABE實現了一對多的加解密。不需要像身份加密一樣,每次解密都必須知道接收者的身份信息,在ABE中它把身份標識看作一系列的屬性。當用戶擁有的屬性超過加密者所描述的預設門檻時,用戶是可以解密的。 基于屬性加密主要分為兩大類:密文策略的屬性加密(Ciphertext Policy Attribute Based Encryption,CP-ABE)[18]和密鑰策略的屬性加密(Key Policy Attribute Based Encryption, KP-ABE)[19]。ABE方案可以運用在多對多的場景下,例如電子病歷系統和社交網絡中。
ABE方案提出以后,大多數學者開始著手關于ABE的研究[20,21]。如Yin 等人[20]提出了一種有效的機制來實現對加密數據的安全搜索,服務器可以根據數據用戶提交的查詢陷門對加密數據進行關鍵字搜索,如圖2所示。近年來,為了獲得更好的安全性和性能,文獻[21,22]分別提出了支持數據更新和搜索結果可驗證的方案。本文重點研究了基于CP-ABE的醫療數據共享方案,允許多個用戶進行細粒度的數據訪問,支持多關鍵字搜索,保護了數據用戶的匿名性和隱私安全,不僅實現了多個數據用戶對密文的可驗證,同時保障了用戶隱私安全,具有實際可行的意義。

圖2 屬性基可搜索加密方案示例圖
定義1(訪問控制樹)[22]在本方案中,訪問結構可以用訪問樹Γ來表示,其中非葉節點表示門限值,葉節點表示屬性值。對于Γ中的每個非葉節點x,numx定義為子節點數量,kx表示節點x的門限值,其中,如果kx=1,表示閾值門是“OR”門。 如果kx=numx,則閾值門表示“AND”門。為了方便描述訪問結構,本文用att(x)表示和葉節點x相關聯的屬性,用parent(x)表示節點x的父節點,對于每個節點y,它是x的子節點(即parent(y)=x),本文將index(y)表示為節點y的索引號,其中1≤index(y)≤numx,這些索引值以任意方式唯一地分配給訪問結構中的節點,即?y /=y′,若parent(y)=parent(y′),則 index(y)/=index(y′)。
定義2(離散對數假設) 設G為一個階為素數p的群,g是G的生成元,給定g和ga,DL問題的目標是輸出a。對于任何概率多項式時間(PPT)的對手 A,如果Pr[A(g,ga)=a]≤ε成立可以認為 A在解決DL問題方面的優勢忽略不計,即在DL假設下,G中的DL問題在計算上是不可行的或困難的。
本文考慮一個加密云存儲系統(醫療云),它支持信息檢索和對加密的個人數據文件(健康記錄)進行細粒度訪問控制。在這個系統中,存在多個數據所有者(患者)和多個數據用戶(如醫生、診所、政府機構等)。患者可以創建、管理和修改其文件,數據用戶可以通過特定患者的授權訪問這些敏感文件。系統框架涉及4個實體,即數據所有者(Data Owner, DO)、數據用戶(Data User, DU)、云服務器提供商(Cloud Server Provider, CSP)、密鑰生成中心(Key Generation Center, KGC),如圖3所示。

圖3 系統模型
各個角色的具體介紹如下:
(1) DO是指到醫院或醫療機構看病就醫的患者。DO作為健康檔案的來源,對數據擁有所有權和控制權。他們加密健康記錄,將密文外包給CSP,并把隱藏的訪問策略和安全索引上傳到CSP。
(2) DU是指需要訪問患者EHR的醫生、政府、實驗室、診所等。通過將自己的屬性集提交給KGC獲得密鑰,生成感興趣關鍵字集的陷門,并將其提交給CSP。
(3) CSP是指醫院的云服務器,即醫療云。主要負責存儲DO提供的加密健康記錄,驗證DU的合法性,將陷門與索引、用戶提交的屬性集與訪問策略進行匹配,若匹配成功,將電子健康記錄文件地址返回給DU。它是誠實的,但對數據很好奇。
(4) KGC是指密鑰生成中心。主要負責系統初始化、數據用戶認證和密鑰生成。
在本文模型中,DO去醫院就診后,醫生為其生成一份電子病歷,DO根據自己的需要對病歷設置訪問控制策略,并生成一份關鍵字安全索引。隨后DO將加密的病歷、加密的訪問策略和安全索引上傳到CSP。當有DU想要訪問特定病歷時,DU會根據自己的私鑰生成搜索令牌,并將其提交給CSP,當DU的屬性滿足DO定義的訪問控制策略,且符合訪問條件時,CSP把相應密文發送給DU,DU可以對密文進行驗證并解密,最新獲得病歷明文。


本方案的安全模型包括適應性選擇關鍵字攻擊游戲、關鍵字保密游戲。
游戲1:選擇關鍵字攻擊游戲
初始化:挑戰者 B運 行系統建立算法,返回系統公開參數PP,保留主密鑰Msk。
階段1:攻擊者 A在Trap預言機中查詢關鍵字集{W1,W2,...,Wt}。
-Trap(sk,W): B運行陷門生成算法得到陷門Tokwi(1≤i ≤t)發送給A 。
挑戰: A向 B提交兩個挑戰關鍵字W0和W1,

本文提出的方案主要包括3個階段:系統建立、數據加密與存儲、數據共享。具體方案如下:
算法1:初始化(Setup)
輸入:安全參數λ
輸出:公共參數PP,主密鑰Msk
給定安全參數λ和雙線性映射參數(G1,G2,q,g,e),其中G1和G2為兩個階為素數q的循環乘法群,g為G1的生成元,且滿足雙線性映射對e:G1×G1→G2。KGC首先調用(1λ)→(PP,Msk)算法生成公鑰 PP,主密鑰Msk和對稱密鑰k。選擇兩個抗沖突哈希函數H1:{0,1}*→G1,H2:{0,1}*→Zq。另外,K G C 隨機選取3 個元素a,b,c ∈Zq,計算β1=ga,β2=gb,β3=gc。最后,設置公鑰PP和主密鑰Msk為

算法2:密鑰生成(KeyGen)
輸入:DU的屬性集S,公共參數PP,主密鑰Msk
輸出:DU的私鑰SK
給定一組屬性集S,KGC調用(PP,Msk,S)→SK算法生成授權用戶DU的私鑰S K。它首先選擇一個隨機元素r ∈Zq,然后對每個屬性j ∈S選擇隨機數rj ∈Zq,計算λj=grH1(j)rj,μj=grj,φj=H1(j)a,最后通過下式輸出密鑰SK。SK=(A=g(ac-r)/b,{λj=grH1(j)rj,μj=grj,φj=H1(j)a}j∈S)。
算法3:數據加密(Encrypt)
輸入:公共參數PP,主密鑰Msk,文件集F,關鍵字集W,對稱密鑰k,訪問策略Γ
輸出:密文CT
給定文件集F={f1,f2,...,fn},關鍵字集W= {w1,w2,...,wt},DO首先為每個文件建立關鍵字索引Il,i。在本文中,DO首先通過AES算法生成文件密文,再采用CP-ABE算法加密文件密鑰,最終把完整的密文上傳至云端。
(1)關鍵字索引生成:DO選擇一個隨機數α ∈Zp,計算Pko=gα作為自己的公鑰,給定具有身份 idl的文件集F={f1,f2,...,fn},DO提取關鍵字集W= {w1,w2,...,wt}并建立索引Il,i,圖4描述了一個簡單的索引建立過程。若關鍵字wi包含在文件fl中,計算文件索引Il,i=β1α1H2(wi),否則Il,i=1, 最后設置索引表IW= {Il,i|l ∈[1,n],i ∈[1,t]}。

圖4 索引建立
(2) DO為訪問樹中的每個節點x選擇一個多項式qx,對于根節點r o o t,隨機選擇兩個元素α1,α2∈Zq,令qroot(0)=α2,而多項式qr在其他dr個點的值完全進行隨機選取,往下的其他節點x,令qx(0)=qparent(x)(index(x)),而其他dx個點的值隨機定義,其中函數parent(x)表示訪問樹Γ中節點x的父節點。經過以上操作所有多項式全部確定。本文用att(x)表示和葉子節點x相關聯的屬性,對于Γ中的每一個葉子節點x,計算δx=gqx(0),



本文基于請求者所查詢的關鍵詞,醫療云可以定位特定數據用戶的預期搜索結果。因此,本文提出的方案不僅可以節省計算和帶寬資源,還可以通過患者指定不同的數據訪問結構來實現細粒度的訪問控制。方案的框架如圖5所示。

圖5 方案框架


定理1 本文方案在基于一般雙線性群模型的自適應選擇關鍵字攻擊下是選擇性安全的。
證明 設散列函數H1為隨機預言機,H2為單向散列函數,證明在隨機預言模型中,本文方案在選擇關鍵字攻擊下是選擇性安全的。游戲如下:



6.3.1 功能分析
表1列出了本文方案的功能優勢,主要在訪問控制、多關鍵字搜索、結果驗證、策略隱藏和數據去重等方面與方案[10,12,22]進行了比較。通過比較可以看出文獻[22]和本文方案支持完整性驗證,也實現了訪問策略的隱藏以及數據去重,避免了醫療云的存儲資源浪費,但本文方案支持多關鍵字搜索,能使搜索結果更準確,節省搜索時間,減少資源浪費,因此更具功能性。

表1 功能比較
6.3.2 計算量分析
表2對文獻[10,12]方案和本文方案進行了計算量的比較。其中s表示用戶提交的屬性數量,l表示訪問策略中的屬性數量,m表示關鍵字數量,t表示用戶提交的關鍵字數量。p表示配對運算的時間,e表示指數運算的時間,h表示哈希運算的時間。文獻[12]方案似乎效率更高,但該方案只支持一對一的搜索模型,而本方案支持多對多模型,可應用于多個實際場景中。本文將方案應用于多個患者和多個數據請求者之間,有效實現了醫療數據的共享。因此,本文方案在實際應用中是有效的和可擴展的,在一定程度上不會帶來較大的計算負擔。
6.3.3 存儲量分析
表3對方案[10,12]和本文方案進行了存儲量的比較。本文主要考慮以下幾種算法的存儲量:Key-Gen, Encrypt, Trap和Search算法, 并定義群G1,G2,Zq中元素的長度為|G1|, |G2|和|Zq|。本文方案的陷門生成(Trap)算法和搜索(Search)算法的存儲成本比文獻[10]、文獻[12]方案的低。在加密(Encrypt)階段,本文方案隱藏了訪問策略,相對于其他兩種方案具有更高的存儲負擔,由于加密算法只是一次性操作,因此本方案不會影響用戶的使用體驗感。

表3 存儲量比較
6.3.4 實驗分析
為了更準確地評估方案的實際性能,本文使用真實數據集和PBC ( Pairing-Based Cryptograply)庫在密鑰生成時間、索引生成時間、搜索令牌生成時間、搜索時間方面進行仿真測試。本文基于C 語言進行編程, 在聯想AMD-Randeon R5圖形處理器筆記本上,Linux 操作系統下運行實驗。
在本文中,主要通過改變屬性的數目測試方案計算開銷。如圖6(a)所示,在KeyGen算法中,相比文獻[10]和文獻[12],本文提出的方案效率更高,密鑰生成的計算開銷隨著數據用戶屬性數量的增加幾乎呈線性增長。在圖6(b)中,本文方案的數據加密時間受兩個因素的影響,即關鍵字數量|m|和訪問策略中的屬性個數|l|。為了便于比較,本文在算法中設置了 |m|=100,可以發現3種方案在Encrypt算法中的計算開銷與系統中的屬性個數|l|都近似呈線性關系。由于加入了訪問策略的隱藏算法,本文提出的方案比另外兩個方案產生了更高的計算負擔。但Encrypt算法是一次性開銷,不會影響用戶搜索體驗,因此,本文方案在實踐中仍然是可行的。通過將密文存儲外包給CSP,數據所有者可以減輕存儲負擔。由于本文方案中的Trap算法的計算開銷受到兩個不同因素的影響,即查詢關鍵字數量|t|和用戶提交的屬性個數|s|,如圖6(c)所示,為了便于比較,本文設置|t| = 10,并將|s|的值從1變化到50。在Search算法中本文同樣通過設置|t| =10,|s|∈[1,50]來演示搜索算法的計算開銷,如圖6(d)所示,本文的方案在該算法中的計算開銷明顯低于另外兩個方案。最后得出結論,利用真實數據集得到的性能評估基本符合表2所示的計算復雜度。

圖6 不同方案的性能比較

表2 計算量比較
本文提出了一種基于屬性加密的電子病歷隱私保護方案,該方案支持重復數據刪除和搜索結果的可驗證性。方案采用了隱藏訪問策略的CP-ABE技術對共享數據進行加密,保護了數據的機密性,實現了數據用戶的匿名性;為了驗證電子病歷數據的完整性,引入驗證算法來測試搜索結果真實性,保證用戶得到正確的電子病歷;同時,為了減少云服務器上數據的冗余,使用數據標簽來檢測上傳數據與云中數據的重復性,從而實現云數據去重。安全性分析表明,所提方案安全性能較高,能很好地保護用戶的隱私以及數據的安全。性能分析以及實驗結果表明,所提方案與其他相似方案相比具有更大的優勢,更加適用于智慧醫療等多對多搜索場景,下一步將考慮如何進一步提高方案的效率,使搜索的結果更快更準確。