?

基于聯盟鏈的可搜索加密電子病歷數據共享方案

2020-09-08 11:57牛淑芬劉文科陳俐霞王彩芬杜小妮
通信學報 2020年8期
關鍵詞:關鍵字哈希密文

牛淑芬,劉文科,陳俐霞,王彩芬,杜小妮

(1.西北師范大學計算機科學與工程學院,甘肅 蘭州 730070;2.西北師范大學數學與統計學院,甘肅 蘭州 730070)

1 引言

電子病歷(EMR,electronic medical record)使用數字化方式創建、存儲和使用個人健康狀況和保健信息。傳統的EMR 是將數據存儲在醫院本地服務器,在占用大量設備的同時,也不便于數據共享。云計算可以實現對海量數據的分析處理,提供可靠的數據處理與存儲中心,越來越多的醫院選擇將其EMR 存儲到云服務器中,而不是維護一個專門的數據中心[1]。但是,由于數據泄露或未經授權的訪問等安全問題,云服務器不能完全被用戶信任。EMR 涉及大量的患者隱私信息,因此防止EMR內容被未經授權的用戶和云服務器獲取是非常重要的。

考慮到云服務器的不可靠性和用戶數據的隱私性,需要對數據進行加密后再外包至云服務器。利用可搜索加密技術實現對加密數據的搜索,使EMR 的使用更加便利。但是,醫院只允許其授權的用戶對云服務器中的數據進行訪問,這導致云服務器中數據的使用具有局限性。

為了解決上述問題,文獻[2-5]將區塊鏈技術應用于醫療領域,將患者的EMR 數據上傳至區塊鏈,實現對EMR 數據的訪問和共享。區塊鏈是一個經過驗證的、不可變的分布式賬本,用于存儲EMR記錄。此外,該技術跟蹤記錄所有的交易,保證了數據交換過程中的透明性。因此,用區塊鏈來存儲EMR,可以使患者對自己的病歷數據的管理更加便利。區塊鏈去中心化和開放的特性使患者能夠掌握自己的醫療健康信息,這不僅保護了患者的隱私,也保證了患者對其醫療數據的訪問控制。例如,患者可以在自己的EMR 中記錄醫生的醫療和診斷信息,從而便于之后的診斷。

2 相關工作

隨著云計算的飛速發展,云計算中的安全問題日益凸顯,因此人們對訪問控制[6-7]和隱私保護[8-9]等安全問題進行了一系列的研究。云存儲作為云計算中的一部分,既能保證數據安全,又能實現搜索功能。為了解決對密文的直接搜索問題,Song 等[10]首先提出了基于流密碼和對稱加密的可搜索加密方案,但該方案只允許持有私鑰的用戶才能對數據進行加密和搜索,不滿足人們的實際需求。為解決這一問題,Boneh 等[11]提出了公鑰可搜索加密(PEKS,public key encryption with keyword search)方案,即公鑰加密與可搜索加密的結合。Wu 等[12]提出一種新的不需要安全通道的可搜索加密(SCF-PEKS,secure channel free searchable encryption)方案,并將其應用至EMR 中以實現對EMR 的共享??伤阉骷用軐崿F了從加密數據中檢索密文,而代理重加密技術將加密數據共享給更多用戶。Shao 等[13]首次提出支持關鍵字搜索的代理重加密(PRES,proxy re-encryption with keyword search)方案,將PEKS和代理重加密技術結合,實現了第三方授權用戶對密文的獲取與解密。Liu 等[14]結合屬性加密和可搜索加密技術,并將其應用至EMR 中,實現了對EMR數據的存儲、模糊搜索和共享。由于醫院對云服務器的限制,這些應用于EMR 的方案大多沒有涉及不同醫院之間的數據共享。

區塊鏈的發展為上述問題帶來了解決方案,其去中心化的分布式存儲結構適用于醫療數據的共享。Xia 等[15]提出了一種基于許可鏈的醫療數據共享框架,只允許被邀請和經過驗證的用戶進行訪問。Yue 等[16]提出了一個被稱為醫療數據網關的應用程序,將私有鏈作為云存儲的角色進行數據存儲,并確?;颊邠碛泻涂刂扑麄兊尼t療數據。Zhang 等[17]通過構造聯盟鏈與私有鏈,提出了一種基于區塊鏈的安全隱私保護個人健康信息共享方案。

本文以EMR 的安全存儲、隱私保護和安全共享為目標,將可搜索加密和代理重加密技術結合區塊鏈應用于EMR,用以實現EMR 在不同醫院間的共享和患者對EMR 數據的訪問控制。該方案特點如下:1) 方案中EMR 由醫生產生,醫生將EMR加密后上傳至醫院服務器,醫院服務器將密文哈希值放至私有鏈,確保EMR 的安全存儲;2) 醫生使用可搜索加密技術加密關鍵字上傳至聯盟鏈,患者使用其私鑰生成搜索陷門發送至聯盟鏈,聯盟鏈負責搜索;3) 聯盟鏈節點使用代理重加密技術對EMR 密文進行重加密,生成EMR 重加密密文,經過患者授權的數據用戶可使用其私鑰解密重加密密文得到EMR。為保護患者隱私,整個共享過程使用患者的偽身份。

3 預備知識

3.1 雙線性映射

定義1令G1和G2為2 個階為素數q的加法循環群,定義一個雙線性映射e:G1×G1→G2,其滿足以下性質。

1) 雙線性。對于任意a,b∈和x,y∈G1,有e(ax,by)=e(x,y)ab。

2) 非退化性。存在x,y∈G1,使e(x,y) ≠ 1。

3) 可計算性。對于任意的x,y∈G1,存在有效算法來計算e(x,y)。

3.2 困難性假設

定義2計算性Diffie-Hellman(CDH,computational Diffie-Hellman)問題。對于任意a,b∈,給定P,aP,bP∈G1,CDH 問題就是計算abP。

定義3判定性Diffie-Hellman(DDH,decision Diffie-Hellman)問題。對于任意a,b∈,給定P,aP,bP,T∈G1,DDH 問題就是判斷T=abP是否成立。

3.3 區塊鏈技術

區塊鏈是通過區塊鏈接在一起的有序記錄的列表[18],其本質上是一個分散的數據庫,是分布式數據存儲、點對點傳輸、協商共識機制、加密算法等計算機技術的一種新的應用模式。區塊鏈也是一個分布式賬本,并使用密碼學方法使其不能被篡改。

根據區塊鏈網絡中心化程度的不同,可將其分為3 種模式:公有鏈(public blockchain)、聯盟鏈(consortium blockchain)和私有鏈(private blockchain)。公有鏈是完全去中心化、無許可的區塊鏈,任何節點都可進入和獲取信息,例如比特幣和以太坊。聯盟鏈是部分去中心化的區塊鏈,通常由多個機構共同管理,只有經過機構授權的用戶才可以訪問。私有鏈是完全中心化的區塊鏈,由一個中心機構控制訪問權限。本文方案中,各個醫院在聯盟鏈上進行EMR 數據共享。每家醫院擁有自己的服務器和私有鏈,服務器上存儲EMR 密文,私有鏈上存儲EMR 密文的哈希值,多家醫院組成聯盟并創建一個聯盟鏈用以存儲患者EMR 的安全索引。

本文中區塊鏈合法的區塊由區塊頭、區塊體、簽名和時間戳組成。區塊頭由4 部分組成:區塊ID、區塊大小、前一個區塊的哈希值和Merkle 樹,其中,區塊ID 表示每個區塊唯一的身份;區塊大小顯示區塊占用的存儲空間;前一個區塊的哈希值用于鏈接前一個區塊,防止區塊鏈被修改;Merkle 樹用于快速歸納和校驗區塊數據的存在性和完整性。區塊體中是交易單(TX,transaction),本文中,私有鏈區塊結構與聯盟鏈區塊結構唯一的不同之處是交易單的結構,這部分內容將在第4 節中說明。簽名用于驗證區塊的完整性。時間戳表示區塊的生成時間。

4 本文方案

本節介紹基于聯盟鏈的EMR 存儲與共享模型及其方案,給出區塊鏈上的交易單結構,并提出安全目標。

4.1 基于聯盟鏈的EMR 存儲與共享模型

本文模型中n家醫院協商構建一個聯盟鏈,每家醫院都擁有服務器和私有鏈。醫院服務器中存儲患者的EMR 密文,私有鏈中存儲EMR 密文的哈希值,聯盟鏈中存儲關鍵字密文。圖1 為EMR共享系統模型,系統模型中有6 個實體:患者、醫生、其他數據用戶、醫院服務器、私有鏈和聯盟鏈。圖1 中β為就診號,ca0為電子病歷密文,hash(ca0)為ca0的哈希值。

圖1 EMR 共享系統模型

患者。當患者去醫院就診時,首先需要注冊,醫院服務器為其生成就診號?;颊呔驮\時將就診號交給醫生,作為其對醫生的授權。醫生對患者診斷后為患者生成EMR,將EMR 加密后上傳至服務器進行存儲?;颊咴诓煌t院就診時,其EMR 密文的哈希值就存儲在醫院的私有鏈中。同時,每家醫院將其存儲在私有鏈中的關鍵字密文發送至聯盟鏈?;颊呖稍诼撁随溨兴阉麝P鍵字來獲取其EMR,若醫生需要,則將EMR 交給醫生。

醫生。在得到患者授權后,醫生對患者進行診斷,為其生成EMR 和偽身份,構建證據,為私有鏈提供一致性證明,并將EMR 加密后存儲至服務器。同時,醫生構建包含密文的哈希值、醫生身份、患者偽身份、關鍵字索引和證據的交易單,并將交易單上傳至私有鏈。另外,醫生在對患者診斷時,也需了解患者以往的就診記錄,以便得出更加精確的診斷結果。

其他數據用戶。當其他數據用戶想要獲取某患者的EMR 時,需獲得該患者的授權。在與其他數據用戶和患者交互后,聯盟鏈上節點生成代理重加密密鑰,聯盟鏈上節點使用重加密密鑰對EMR 密文重加密,生成重加密密文,其他數據用戶使用其私鑰即可解密。

醫院服務器。每家醫院都擁有一臺服務器和維護服務器的多臺客戶端,醫生使用客戶端將患者的EMR 存儲在服務器中。醫院服務器構建私有鏈的新區塊,用以存儲包括病人信息相關的EMR 數據交易單。醫院服務器也負責為聯盟鏈構建新區塊,新區塊構建完成后,其他醫院服務器負責驗證新區塊的有效性。

私有鏈。每家醫院都擁有私有鏈,醫生使用患者EMR 構建交易單并上傳至私有鏈。在搜索階段,患者發送搜索陷門至聯盟鏈,聯盟鏈搜索后通過私有鏈身份定位至私有鏈,獲取EMR 密文的哈希值。

聯盟鏈。多家醫院協商構建聯盟鏈,醫院服務器使用關鍵字密文、患者偽身份和私有鏈身份構建安全索引,使用安全索引構建交易單后將交易單上傳至聯盟鏈。在搜索階段,收到患者發送的陷門后,聯盟鏈上節點負責執行搜索,并返回EMR 密文的哈希值給患者?;颊呖傻卿涐t院服務器進行哈希值比對,若一致,服務器返回EMR密文給患者;否則,服務器返回查詢失敗給患者。同時,聯盟鏈上節點還負責為其他數據用戶生成EMR 重加密密文。

4.2 區塊鏈上EMR 交易單結構

私有鏈上交易單由4 部分組成:病歷生成者(醫生)ID、病歷擁有者(患者)ID、病歷關鍵字索引和病歷密文哈希值,如表1 所示。為了保護患者的隱私,病歷是以密文的形式存儲的。其中,病歷擁有者ID 是患者的偽身份,由患者真實身份計算而來。

表1 私有鏈上交易單

聯盟鏈上交易單由2 部分組成:區塊生成者(醫院服務器)ID 和安全索引,如表2 所示。醫院服務器收集醫生發送的關鍵字密文,利用構建的安全索引創建新的區塊。聯盟鏈區塊的區塊體中不存儲原始EMR,而是存儲包含關鍵字密文的安全索引。安全索引Txa由3 部分組成:私有鏈區塊IDb、患者偽IDa和關鍵字密文ca1。

表2 聯盟鏈上交易單

4.3 安全目標

假設本文方案中醫院服務器為半可信的,其可能會嘗試解密密文。同時,一些惡意攻擊者可能會在傳輸期間攔截、修改或偽造EMR 數據。外部攻擊者可能入侵醫院服務器或客戶端,竊取存儲的文件??紤]上述威脅模型,本文方案的安全目標如下。

數據的機密性和完整性。無論患者的EMR 是存儲在醫院服務器還是通過公共渠道進行傳輸,其他實體都無法讀取或修改患者的EMR。通常數據的機密性和完整性是通過加密和簽名來保證的。本文方案通過使用私有鏈存儲EMR 和聯盟鏈存儲關鍵字來保證數據的安全性。

訪問控制。為防止未授權用戶對EMR 數據進行訪問,對EMR 的訪問受控制,使數據訪問活動始終在患者和醫院的參與和監控之下進行。并通過對密碼原語進行標識、身份認證和授權來實現訪問控制。

安全搜索。當醫生想要獲取患者的歷史EMR數據時,患者生成搜索陷門對EMR 進行搜索。在搜索過程中,只有患者才能生成搜索陷門從而進行搜索。同時,搜索過程中使用患者的偽身份,竊聽者也無法推斷出患者的真實身份。

隱私保護。由于EMR 中包含患者的一些隱私敏感信息,因此共享EMR 的同時也要保護患者的身份隱私。此外,原始的EMR 不能透露給非法實體。

4.4 基于聯盟鏈的EMR 存儲與共享方案

基于聯盟鏈的EMR 存儲與共享方案可分為3個階段:系統建立、數據加密與存儲、數據搜索與解密。

階段1系統建立

本階段分為初始化和密鑰生成2 個步驟。

階段2數據加密與存儲

本階段分為患者注冊、數據加密、私有鏈交易單生成和聯盟鏈交易單生成4 個步驟。

階段3數據搜索與解密

本階段分為陷門生成、搜索和解密3 個步驟?;颊呔驮\時,為了進行更精確的診斷,醫生需查看患者的歷史診斷記錄?;颊呱伤阉飨蓍TT,發送T和IDa至聯盟鏈。聯盟鏈上節點運行搜索算法獲取EMR 密文的哈希值并將其發送給患者,患者可通過登錄醫院服務器獲取EMR 密文?;颊叩玫矫芪暮?,使用其私鑰進行解密,得到EMR 明文后交給醫生查看。除了患者可獲取其EMR 外,經患者授權的其他數據用戶也可獲取患者EMR,在解密步驟中分別敘述。

4.5 正確性分析

本文的正確性分析如下。

1) 私有鏈交易單生成H

5 安全性分析

本文方案在實現安全目標的同時,又能滿足密文安全和關鍵字安全。

5.1 安全目標

數據的機密性和完整性。EMR 數據在上傳到醫院服務器存儲之前是經過加密的。醫生使用患者的公鑰對EMR 進行加密,解密時m=cm⊕,由于ka2為患者的私鑰,故只有患者可進行解密,這實現了EMR 數據的機密性。另外,區塊鏈中的數據是不可變的,若數據添加或交易已經完成,它就不能被編輯或刪除,構建的新區塊上存在區塊生成者的簽名,實現了EMR 數據的完整性。

訪問控制。EMR 密文的哈希值存儲在私有鏈,只允許經過身份驗證的人員訪問;EMR 密文存儲在醫院服務器,用戶必須在醫院注冊后并經過身份驗證才能訪問數據?;颊呱蟼魉阉飨蓍TT=(T1,T2),聯盟鏈上節點驗證通過后,發送密文的哈希值hash(ca0)給患者,患者登錄醫院服務器即可獲取EMR 密文。只有擁有私鑰,才能生成搜索陷門和解密EMR 密文ca0,因此患者可以控制EMR 的訪問。

安全搜索。階段2 數據的加密及存儲過程中,EMR 和關鍵字都是以密文形式進行存儲,其他實體無法獲取關鍵字。階段3 數據搜索與解密過程中,患者生成搜索陷門T=(T1,T2)發送給聯盟鏈,其中T1包含患者的私鑰,只有患者能夠生成,故其他用戶無法知道搜索結果。

隱私保護。首先,EMR 由醫生上傳至私有鏈,上傳的交易單中包含患者的偽身份IDa,偽身份由醫生生成,患者的真實身份RIDa和β無法被獲取。其次,數據的搜索過程中也只包含患者的偽身份,因此,此方案中公共信息不會泄露患者的真實身份,實現了對患者身份的隱私保護。

5.2 安全性證明

5.2.1 密文安全

定理1若敵手A1在一個概率多項式時間內能以不可忽略的優勢ε贏得游戲,則挑戰者B能夠以不可忽略的優勢解決DDH 困難問題。

證明假設給挑戰者B一個 DDH 實例(aP,bP,cP),挑戰者B的目的是確定cP=abP是否成立。游戲過程如下。

5.2.2 關鍵字安全

6 性能分析

本節首先將本文方案與相關EMR 方案的功能進行比較。然后,從理論角度分析本文方案的計算效率,并與已有的可搜索加密方案進行比較。最后,通過數值模擬實驗對方案性能進行評估。

6.1 功能性分析

基于云存儲的文獻[12,19]方案、基于區塊鏈的文獻[20-21]方案與本文方案的功能性分析如表3 所示。由表3 可知,所有的方案都能實現訪問控制和隱私保護的特性,這是EMR 共享方案的關鍵安全目標。但文獻[20]方案不能實現安全搜索,文獻[12,20-21]方案不能實現身份認證。

表3 功能性分析

6.2 計算效率理論分析

本節從理論角度分析本文方案與文獻[12,22]方案在計算效率上的優劣。表4 顯示方案中基本運算的符號和執行時間。由表4 可以看出,基本運算的執行時間的排序為Th>Tp>Te>TH。由于計算開銷中指數運算、配對運算和哈希運算時間較長,故只考慮這3 個方面的運算時間。下面,本文將利用表4中的數據得出各階段的運行時間。

表4 方案中的運算符號和執行時間

表5 顯示加密、搜索和解密3 個階段的運算時間。由表5 可以看出,在加密階段,各方案計算量由大到小依次為文獻[12]方案、文獻[22]方案、本文方案;在搜索階段,各方案計算量由大到小依次為文獻[22]方案、文獻[12]方案、本文方案;在解密階段,各方案計算量由大到小依次為文獻[22]方案、文獻[12]方案、本文方案。

6.3 數值分析

本節對本文方案中算法進行數值模擬實驗,并通過改變關鍵字的數量分析本文方案的計算效率,關鍵字數量n分別取10、50、100。數值模擬實驗是在Linux 操作系統下利用雙線性包(pairing-based cryptography library)實現的,使用C 語言對算法進行編程,在PC 機(惠普電腦,3.1 GHz CPU,4 GB RAM)的虛擬機環境中運行。實驗結果取算法運行50 次的平均值,如表6 所示。

表5 各階段計算量對比

表6 本文方案中算法的執行時間

系統構建算法模擬系統建立和患者注冊階段,數據加密算法模擬對EMR 和關鍵字的加密過程,私有鏈驗證算法模擬驗證者對私有鏈上新區塊驗證的過程,聯盟鏈驗證算法模擬驗證者對聯盟鏈上新區塊驗證的過程,陷門生成算法模擬患者生成搜索陷門的過程,關鍵字搜索算法模擬聯盟鏈匹配關鍵字的過程,數據解密算法模擬患者對EMR 密文進行解密的過程。

由表6 可知,由于數據加密、聯盟鏈驗證、陷門生成和關鍵字搜索算法中包含關鍵字信息,故這些算法的執行時間隨著關鍵字的數量增加而增加;當關鍵字數量發生變化時,系統構建、私有鏈驗證和數據解密算法的執行時間則不受其影響。

7 結束語

本文基于可搜索加密和代理重加密技術,提出了一種具有隱私保護和安全存儲的EMR 數據共享方案,解決了區塊鏈上EMR 共享過程中的數據安全和個人隱私等關鍵問題。在本文提出的區塊鏈EMR 共享模型中,醫院服務器存儲EMR 密文、醫院私有鏈存儲EMR 密文哈希值、聯盟鏈存儲關鍵字密文,實現了對EMR 數據的安全存儲與共享。其次,本文設計EMR 區塊鏈的數據結構和一致性證明,保證了所提方案的高效運行。另外,使用關鍵字搜索保證了數據的安全性和可搜索性。最后,安全性分析和性能分析表明,本文方案在達到設計的安全目標的同時還具有良好的性能。

猜你喜歡
關鍵字哈希密文
履職盡責求實效 真抓實干勇作為——十個關鍵字,盤點江蘇統戰的2021
一種支持動態更新的可排名密文搜索方案
基于特征選擇的局部敏感哈希位選擇算法
基于模糊數學的通信網絡密文信息差錯恢復
哈希值處理 功能全面更易用
基于網絡報文流量的協議密文分析方法
文件哈希值處理一條龍
密鑰共享下跨用戶密文數據去重挖掘方法*
成功避開“關鍵字”
巧用哈希數值傳遞文件
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合