張利華,付東輝,萬源華
(華東交通大學1. 軟件學院;2.電氣與自動化工程學院,江西 南昌330013)
個人健康信息和電子醫療記錄已成為可能影響個人生活質量的資產。 世界衛生組織的報告已經將個人健康信息確定為資產[1],電子醫療記錄(electronic medical records,EMR)的共享遠遠超出了其基本醫療用途。然而,由于醫院和醫療保健提供者網絡中的個人健康數據的碎片化和隔離[2],受行業和政府法規保護,充分把這些數據進行共享非常困難。 最早出現的一種解決方案是建立數字健康信息交換機構,使護理人員和機構之間的患者病歷數字化傳輸成為常態。 這已經解決了一些問題,包括多余的測試和相關成本,更好地協調患者護理,降低了總體管理成本且改善了患者的生活質量。
然而,盡管有一些解決措施,但仍然存在一些挑戰,并沒有辦法解決,其中一些涉及到互操作性[3],數據的安全性和私密性以及傳輸到請求者后的數據控制。 當前的方法幾乎不能控制所請求的數據進行操作或計算。 對于錯誤或不道德地使用所請求信息會受到法律制裁,當該行為被監管部門檢測到,但此時,對個人利益的損害可能已無法彌補。再者,盡管存在異構數據源的挑戰,但醫療領域的網絡化趨勢仍將繼續存在[4]。區塊鏈是比特幣加密貨幣的基礎,是分布式賬本技術,為共享后的數據和操作提供了控制機會。 有效巧妙地使用密碼學加密技術和共識機制相結合,為在多個領域中的應用提供了執行計算的安全平臺[5]。
近年來,由于區塊鏈在數據管理方面的優勢,即區塊鏈的不變性和內在自治性,其在電子健康領域能夠保障個人健康數據的安全性和隱私性越來越受到人們的關注。
軟件服務平臺Patientory,通過向患者提供個人檔案,患者可以安全地訪問自己的醫療記錄。醫療信息存儲在符合HIPAA 的區塊鏈平臺上,為患者和護理人員提供安全的數據點。 通過使用Patientory,護理人員可以審查醫療計劃、 患者的醫療信息, 并與患者進行交流, 而患者又可以與其他病情相似的患者建立聯系。Xiao 等[6]提出了一個基于區塊鏈的健康信息系統架構,通過引入的健康數據網關,旨在使患者能夠通過區塊鏈控制和共享其醫療數據。 夏琦等[7]提出了一種針對敏感醫療數據存儲庫池的安全醫療數據訪問與共享框架BBDS,他們使用區塊鏈網絡作為訪問控制層,只有授權用戶才能對數據執行操作,存儲每個交易的副本并將其附加到區塊鏈。 然而,只有在Xia[8]的研究中討論了實現數據來源和審計,作者調查了智能合約和區塊鏈技術的使用。 MeBoice 的設計是BBDS 的一個邏輯擴展,它集成了現有的無信任的云提供商和其他數據監護人,它們希望以防篡改的方式將數據從一個實體傳輸到另一個實體。MedRec[9]是另一個使用區塊鏈技術的分散記錄管理系統,MedRec 是一個模塊化設計,用于管理身份驗證、機密性、責任性和數據共享。 與MedRec 類似,Ancile[10]是另一個記錄管理系統,它利用智能合約和基于以太坊的區塊鏈來提高訪問控制和數據混淆。 盡管使用區塊鏈技術在改進醫療數據訪問、共享和許可管理方面具有巨大潛力,但仍缺乏以數據為中心的研究, 缺乏對網絡中從一個實體傳輸到另一個實體后的數據控制的明確研究。 為了遵守行業相關規定, 確保患者數據安全和隱私對于健康信息交換的持續維持至關重要。 從請求數據到系統發送應開始響應用戶對系統中交互的監視。 只有當數據達到了用戶提出請求的目的或檢測到違規行為時,這種監視才應終止。
區塊鏈技術具有去中心化、不易篡改的特點,提出了一種基于區塊鏈的醫療記錄安全共享方案,其底層機制可以監控和執行附加到患者數據的可接受使用策略。 系統中的患者在注冊時創建策略,以確定對其個人健康信息的允許操作。 這些策略存儲在系統中,并與智能合約一起咨詢,以確定何時可以共享數據或以其他方式共享數據。 參與的醫療機構的處理節點、智能合約和安全監視器進行合作,以確保患者數據安全免受未經授權的訪問和計算。
方案主要涉及的變量符號和意義如表1 所示。
系統由患者(Patient)、醫療機構(Hospital)、區塊鏈(Blockchain)3 個部分構成,如圖1 所示。
患者:電子醫療記錄的產生者,并對這些記錄擁有所有權與控制權,患者可以在多個醫療機構間進行診斷治療。
醫療機構:為醫生與病人提供治療的平臺,負責保管醫療記錄,同時可以跟其它醫療機構維持數據共享的關系。
區塊鏈:將保存患者的醫療記錄在分布式數據庫當中的存儲地址。 區塊鏈中的每筆交易都會返回一個標識符。 交易標識符將幫助用戶進一步訪問數據。

表1 方案中的變量符號和意義Tab.1 Symbols and its notions in our scheme

圖1 基于區塊鏈的電子醫療記錄共享模型Fig.1 Blockchain-based electronic health record sharing model
根據提出的系統模型,采用一種基于證書的代理重新加密方案來做為電子醫療記錄共享協議。 具體的電子醫療記錄共享協議由以下幾個步驟組成:系統初始化,患者注冊,加密醫療數據,數據共享,數據恢復。
1) 系統初始化:系統服務器給定特定的安全參數k。 首先,系統選擇一個k 位素數q。 接下來,生成階數為q 的ECC,并且定義相應的生成元點P,用G 表示ECC 點組。 選擇一個隨機值α∈Fq*并計算Pα=αP。 選取4 個不同的哈希函數。H1:G×{0,1}32→Fq*,H2:Fq*×{0,1}64→Fq*,H3:G×{0,1}64→Fq*,H4:Fq*×{0,1}64→Fq*,輸出公共參數params={G,q,P,Pα,H1,H2,H3,H4}和主密鑰msk=α。
2) 患者注冊:如果有新患者到達醫院接受治療,則患者必須先進行注冊,然后再去看醫生。 由于這是一次注冊,因此他們需要使用他們的移動設備提供其詳細信息,例如其身份IDp,其公鑰PKp和治療他們的醫生PKd的公鑰。為了便于解釋,我們只考慮一位醫生。并且親戚也可以參與其中,其方式與醫生相同,但僅具有閱讀權限。 接下來,系統將患者的IDp和公鑰PKp發送給區塊鏈。 患者的證書和密鑰生成采用一種基于橢圓曲線證書機制算法,包括以下三個階段:
第一階段:患者注冊獲得自己唯一的身份標識符IDU并生成一個隨機數rU∈Fq*,并且計算RU=rUG。 接下來,將元組(IDU,RU)發送給系統。
第二階段:系統收到(IDU,RU)后,將檢查IDU的合法性。接下來,它還會選擇一個隨機值rt∈Fq*并且計算Rt=rtP。 然后得出證書患者的證書CertU=RU+Rt。 最后,通過rα=H1(CertU||IDU)rt+α 計算得出有關實體的私鑰的輔助信息。 將元組(rα,CertU)發送給患者。
第三階段:患者收到元組(rα,CertU)后,根據等式SU=H1(CertU||IDU)rU+rα計算出其私鑰。 由私鑰得出患者的公鑰為PU=SUP。 如果PU=H1(CertU||IDU)CertU+Pα。 則患者接受密鑰對(SU,PU)。
3) 加密醫療數據:為電子醫療數據EMR 生成元數據meta=(IDU||T0)。 接下來計算,進行以下計算

得到醫療記錄的密文CA,該算法的輸出結果為C,C=(CA,meta,hA,sA)。將CA存儲在分布式云服務器當中。 患者作為EMR 的擁有者對其進行簽名,并將簽名的EMR、EMR 的哈希值,云存儲地址和訪問控制策略等寫入區塊鏈交易,然后將交易進行全網廣播。由審核節點驗證交易且驗證通過后把該交易寫入區塊鏈當中。
4) 數據共享:當醫療機構A 想讀取醫療機構B 的某一份EMR 時,醫療機構A 作為數據請求方,在區塊鏈當中發布請求信息{askEMR},醫療機構B 收到{askEMR}后,驗證醫療機構A 的身份是否合法,并且檢查請求信息的訪問控制策略,如果醫療機構A 的身份合法且擁有電子醫療記錄的讀取權限。 進行以下操作。 首先,r=H2(SA||meta)由C 導出。 然后IDB的公鑰PB=H1(CertB||IDB)CertB+Pα。 得到電子醫療記錄共享密鑰rkAB=H3(meta||rPA)⊕H3(meta||rPB)。 此后,醫療機構B 會將共享密鑰、EMR 的云存儲地址傳送給代表節點,代表節點根據云存儲地址提取分布式云存儲數據庫上的加密EMR 文件。 接著,代表節點使用共享密鑰rkAB對加密的EMR 文件再次進行加密,將密文CA轉換為CB(其中CB=rkAB⊕CA)。 最后代表節點將CB發送給醫療機構A。
5) 數據恢復:當醫療機構A 收到CB時,使用自己的私鑰SB對CB進行解密,解密后就可以得到EMR 的的明文文件M。 具體解密過程如下:首先醫療機構A 計算R=SAP+hAPA,然后計算M=CB⊕H3(meta||SBR),計算所得M 即為EMR 的明文文件。 如果患者想要查看自己的電子醫療記錄,獲取EMR 的明文和上面類似,還需要進行以下計算

患者進行上面兩步計算就可以獲得自己的EMR 文件的明文。
2.3.1 患者密鑰對的正確性
SMRSBC 方案在患者注冊階段,把患者的證書和身份標識進行哈希加密生成患者的私鑰,然后用患者的私鑰計算出患者的公鑰。 患者可以驗證等式PU=H1(CertU||IDU)Cert+Pα是否成立,如果成立,則患者接受密鑰對(SU,PU),否則這拒絕接受密鑰對。
2.3.2 密文的正確性
在SMRSBC 方案中,由于患者的電子醫療記錄是存儲在云服務器當中,患者的醫療記錄雖然經過加密處理,但是云環境并不是可信的安全環境。 惡意的攻擊者可能會篡改加密之后的電子醫療數據,這樣就會導致醫療機構B 解密獲得的明文并不是正確的。 代表節點通過驗證等式hA=H4(CA||meta)是否成立,如果等式成立,則密文沒有被篡改,否則密文已經被篡改過了。
1) 防篡改
在SMRSBC 中,EMR 是不可變的,不能任意修改。 由于每個數據塊都包含當前時間戳和前一個塊的哈希,因此按時間順序嵌套的塊可確保事務無法更改,除非有人可以同時占據整個網絡計算能力。 此外,每個訪問請求和訪問活動都記錄在區塊鏈中,對數據的任何更改都可以進行審核和跟蹤。 因此,提出的SMRSBC可以確保防篡改特性。
2) 隱私保護
由于EMR 是患者的高度敏感的私人數據,因此,它們不希望未經許可而被披露。在SMRSBC 中,由于以下功能,確保了隱私屬性:匿名,云儲存。
匿名:每個參與者都會生成一個帶有隨機公鑰的唯一帳戶。 因此,區塊鏈上的每筆交易都是匿名的。 另外,用戶對不同的事務使用不同的公共密鑰,這使得同一用戶請求的多個事務無法鏈接。
云儲存:原始EMR 被加密并存儲在云存儲中。這樣,不僅解決了區塊鏈存儲容量有限的問題,而且大大降低了原始醫療記錄泄漏的風險。
3) 數據安全存儲和共享
數據存儲和共享的安全性是SMRSBC 的重要功能。 在此方案中,患者可以完全控制自己的EMR。 從數據獲取到數據共享的過程都是安全的。
數據存儲:患者對原始EMR 進行加密并將其存儲在云中。 在云中使用分布式存儲可確保醫療數據的安全性。
數據發布:首先,EMR 的索引保留在防篡改區塊鏈中,不能隨意修改。其次,區塊鏈是一個沒有單點故障的分布式數據庫,每個節點都有交易記錄的副本。 此外,數字簽名還為每筆交易提供身份驗證,完整性和不可否認性。
數據共享:在SMRSBC 中,數據訪問權限是在智能合約中預設的。 僅授權用戶或機構可以使用EMR。執行的訪問記錄存儲在區塊鏈中以跟蹤數據的行為。 一旦有人違反了訪問規則或權限,數據所有者便有權撤銷其訪問權限。
表2 將SMRSBC 方案和現有其它方案進行特性對比。 從表2 中的特性對比可以看出,SMRSBC 方案和其它方案相比具有一定的優勢。

表2 方案對比Tab.2 Scheme comparison
在傳統的方案當中,要么把醫療記錄存放在可信第三方的數據庫當中,要么把區塊鏈當成一個數據庫,直接把醫療記錄存放在區塊鏈當中。 把醫療記錄存放在可信第三方的數據庫當中,容易發生單點故障的問題,而直接把醫療記錄存放在區塊鏈當中,由于區塊鏈的存儲容量有限,一旦區塊鏈網絡當中的節點數量過多,現有數據存儲技術,將存儲不了完整的區塊鏈賬本,方案的可擴展性不強。 而SMRSBC 方案通過用區塊鏈記錄患者的醫療記錄在云存儲當中的地址,而把加密之后的患者醫療記錄存儲在分布式云存儲服務器當中,可以很好的解決區塊鏈存儲數據容量有限的問題,并且該方案具有良好的擴展性。
區塊鏈技術的不斷發展對傳統的行業帶來了較大的沖擊,過于中心化的系統面臨著諸多問題,如容易遭受單點失效、惡意篡改、隱私泄露等威脅。 區塊鏈技術的應用可以解決這些問題,區塊鏈擁有跟分布式存儲機制相當的容錯與容災性能,同時參與到區塊鏈網絡的節點之間并不需要互相信任,且其中所使用的密碼體制與算法已經是在當前受到認可且足夠安全的, 因此在醫療記錄的存儲與共享領域具有良好的前景。提出的SMRSBC 方案將醫療記錄的存儲與共享分開,既減輕了區塊鏈各個節點的負載,又提高了數據的隱私性,為建立一個保護病人隱私的醫療數據共享與存儲生態平臺奠定了基礎。 雙鏈的使用避免了當前很多單鏈設計應用中吞吐量不高且數據較為混亂的現狀, 但在具體的方案實現中可能會遇到一些挑戰與問題。此外,當前的醫療記錄共享中還面臨著一些棘手的問題,例如各個醫療機構的數據不兼容,行業術語不統一,病人對區塊鏈技術安全性的不信任等。