姚 堯 袁駿毅 岑星星
(上海市胸科醫院/上海交通大學醫學院附屬胸科醫院 上海 200030)
電子病歷(electronic medical records,EMR)的建設對于就醫流程服務質量、效率、用戶體驗的提升以及醫院智能化水平的促進等有重要作用[1-2],近年來越來越多的研究者致力于挖掘EMR的潛力,涉及公共衛生管理[3]、患者醫療數據共享[4]等方面。由于EMR包含患者大量的隱私信息,傳統的醫療信息系統將其存儲在就診醫院,導致不同醫療機構間共享困難,容易造成“數據孤島”。
為實現醫療數據的安全共享,有研究[5]提出將區塊鏈技術引入EMR系統建設中。區塊鏈本質上是一個授權的賬本,具有去中心化、時序數據、集體維護、可編程性、安全性和可靠性等特點[6]。基于區塊鏈的EMR系統也面臨數據存儲、安全分享、訪問控制等難點[7-8]。Zheng X等[9]和Lin C等[10]提出使用鏈下的分布式數據庫存儲醫療數據,解決了醫療數據過于龐大以至于無法存儲在鏈上的難題,但是增加了數據保護難度。Huang H等[11]使用群簽名技術實現病歷共享的匿名性與安全性,但是系統的運算開銷過大。Nguyen D等[12]使用對稱加密技術保證共享數據的機密性,并通過訪問控制手段保證安全性,但是攻擊者可能會在挖取節點過程中獲取私人信息。Patel P等[13]和Lee J等[14]都提出將智能合約與訪問控制結合,對訪問區塊鏈的用戶進行權限管理,但使后期追溯變得困難。現有研究表明,將區塊鏈和EMR數據共享相結合具有以下優勢。一是去中心化,防止病歷數據的未經授權訪問和篡改。二是數據隱私與匿名性,確保只有授權的用戶可以訪問和查看特定的病歷數據。三是可追溯性,意味著EMR的共享可以被準確地追蹤和審計。四是易共享性,使不同的醫療機構系統可以無縫共享和交換數據。本文提出一種基于區塊鏈的EMR共享方案,主要工作包括結合區塊鏈技術與傳統數據存儲方式,建立區塊鏈安全共享平臺,通過智能合約與外部服務交互,實現第三方用戶的鑒權與訪問控制;探討醫療數據全生命周期各環節的保護方案,針對不同數據運用不同的加密方式,針對機構間信息交互做到數據存證與操作審計,保障系統的安全性。

圖1 總體架構
用戶層共包含4個實體。患者:患者到醫院就診后會生成相應的醫療數據,是數據的擁有者,對病歷是否共享擁有決定權。患者通過區塊鏈平臺進行身份注冊并獲得統一的身份標識符與密鑰。醫生:可以在平臺查看患者的歷史病歷,授權后可在院外遠程查看病歷數據。醫療機構:若患者需要在不同的醫療機構查看歷史病歷,授權后可通過共享平臺實現跨機構的病歷檢索與查閱。科研機構:可以向多個醫療機構請求醫療數據共享,用于科研,需要得到相應患者和醫院的授權。
核心業務層通過區塊鏈服務、醫療數據處理、國密算法和賬戶認證4個模塊實現EMR的安全共享。區塊鏈是保障系統安全性的核心部件,其基本結構,見圖2。由于區塊鏈去中心化特點,系統不需要可信的第三方或者中心節點統一處理事務,各節點都擁有一個區塊鏈副本,并隨時同步和維護鏈上內容。由于每一個區塊同時包含自身的哈希值與前一個區塊的哈希值,如果其中某一個區塊的信息被篡改,將會導致自身哈希值的變化,使區塊鏈斷鏈,保證了系統的防篡改。

圖2 區塊鏈基本結構
區塊鏈系統采用多節點共識的存證服務,經證書簽證機關(certification authority,CA)授權的多個醫療機構組成聯盟,各自作為系統的節點,負責將信息交互事務記入共享賬本。按照T/CESA 1048—2018、T/CESA 1049—2018相關標準,對用戶注冊、病歷提交、獲取、檢索、調閱等業務服務交互進行信息安全審計。智能合約是集成在區塊鏈服務內的一個自動執行的程序,作為外部服務和區塊鏈交互的接口,用于約定事務上傳的格式以過濾節點非法請求,提供服務封裝。通過配置訪問控制列表功能,判斷請求者是否有獲取相應數據的權限,實現用戶識別。各節點將事務打包上傳,經實用拜占庭容錯[15]共識算法認定成功后,上傳至區塊鏈。醫療數據處理涵蓋EMR脫敏、加密與事務上鏈等功能,保證數據的安全共享。共享的EMR經國密SM2非對稱加密算法與SM4對稱加密算法處理,即使發生泄漏,攻擊者也無法獲得有用信息。
基于等級保護2.0的要求,院內醫療數據保存在內網,區塊鏈安全共享平臺部署在外網單獨的安全隔離區,內外網通過防毒墻與網閘隔離,保證數據的安全交換[16]。互聯網應用通過區塊鏈前置機訪問共享平臺,接口設計基于企業服務總線,提供符合標準規則的封裝服務。共享數據平臺均按照《WS/T 447—2014基于電子病歷的醫院信息平臺技術規范》與《醫院信息互聯互通標準化指標》建設。
對EMR共享全生命周期進行推導,其符號,見表1。共享模型,見圖3。

表1 符號及其解釋

圖3 共享模型
醫院在CA注冊后,生成醫院節點公、私鑰對(SKhos,PKhos),經CA簽發數字證書后返回醫院進行本地保存。
患者首次來院需要在平臺注冊,醫院生成相應的區塊鏈注冊事務TR=(register,h(PIp||Nop,sigp),其中register表明此事務功能為患者注冊,h(PIp||Nop為患者注冊信息(醫保卡號、身份信息)的摘要,sigp為該患者的唯一身份標識符。系統收集注冊事務后進行共識上鏈,最后隨機生成該患者的對稱密鑰Kp。
患者經醫生診斷后,醫院首先生成患者的明文EMR,并使用國密SM3算法計算得到摘要h(EMR)。然后使用醫院本地私鑰SKhos并采用國密SM2算法對摘要進行數字簽名得到ESkhos(h(EMR))。最后,將明文EMR與數字簽名拼接,使用患者密鑰Kp進行基于國密SM4的分組對稱加密,得到加密后的病歷數據EMRen=EKp(EMR||ESkhos(h(EMR)),存入醫院本地數據庫。區塊鏈平臺通過企業服務總線的接口與醫院本地數據庫交互,自動生成病歷上傳事務TM=(medical,h(EMRen),sigp,pointer),其中medical表明此事務功能為病歷信息,h(EMRen)為密文EMR的消息摘要,sigp為患者唯一身份標識符,pointer為病歷在本地數據庫的索引信息,事務經共識后上鏈。
共享場景一:患者去醫院2就診并有查看醫院1歷史病歷的需求,通過身份驗證登錄平臺。由該醫院前置機啟動區塊鏈智能合約,根據sigp查詢區塊鏈記錄,隨后發起病歷調閱請求。待節點共識存證后,平臺自動根據pointer檢索患者歷史病歷,并使用PKhos2加密相應患者的對稱密鑰EKp,與密文EMRen經安全網絡通道傳輸至醫院2。醫院2使用SKhos2解密得到EKp,再使用EKp解密得到具有數字簽名的明文EMR||ESkhos1(h(EMR))。拆分出后32字節之后使用PKhos1解密,得到EMR的摘要h(EMR)。同時根據SM3算法計算出h’(EMR)。若二者比對一致,則表示EMR是完整有效的。
共享場景二:科研機構向平臺申請EMR的共享,注冊并獲得相應患者的授權。由于科研機構并不具備直接訪問鏈上數據的權限,需要以共識節點中某一醫療機構為代理,發起病歷共享申請。與醫療機構間共享過程的區別在于科研機構獲得的EMR會經平臺脫敏處理,避免泄露患者敏感信息。
患者病歷數據經對稱加密后保存在醫院本地安全區域,不直接暴露在互聯網環境,保證數據存儲安全。在病歷共享過程中,密文只有擁有Kp的授權用戶才能解密。此外,區塊鏈的去中心化、透明性、信息不可篡改性特點,對病歷共享交互全程數據存證,確保可信安全。
假設攻擊者有能力在區塊上鏈過程中攔截,并意圖重放該區塊到區塊鏈服務器以修改事務數據,則該攻擊者必須要面臨時間戳過期的問題。由于區塊鏈的特性,元數據中的時間戳是不容易被篡改的,一旦某個發送到區塊鏈的請求被重放,時間戳一定會發生變化,影響整個鏈的哈希驗證,以此抵御重放攻擊。
首先,患者在區塊鏈上的身份信息均經過了國密SM3摘要算法處理,避免了敏感信息的直接暴露。其次,與科研機構共享的病歷數據均進行了脫敏處理,去除了患者身份信息,科研機構不能從共享的醫療數據中獲取患者隱私。
基于區塊鏈的EMR共享平臺構建了一套完整的用戶授權、事務存證、數據交換鑒權、操作審計的監管方案。數據訪問記錄全流程上鏈,確保數據訪問路徑的全程可回溯。當發生數據泄露時,能快速定位問題源并處理。
為驗證本文方案的可行性,對整個系統流程進行了仿真實驗,實驗平臺為Windows Server 2019,處理器為Intel Xeon Silver 4210R,內存為64 GB,基于Hyperledger Fabric[17]框架搭建區塊鏈系統與云服務器,采用go語言開發智能合約應用程序接口,實現功能主要包括:用戶節點管理、區塊鏈的生成與維護、區塊查詢、事務上傳等功能。借助Hyperledger Explorer實現區塊鏈系統的后臺管理。
選用上海市胸科醫院醫院信息系統存儲的真實患者EMR作為測試數據,涵蓋門診病歷、住院病歷、藥品處方、檢查檢驗報告等,EMR文件的平均大小為32 KB。調取其中500 000份用于測試不同EMR文件數量下區塊鏈消耗的存儲空間,例如,若要通過區塊鏈系統分享250 000份EMR,則包含相應事務的區塊鏈共占用119 MB的空間,見圖4。

圖4 不同EMR數量下區塊鏈占用空間
定義每秒處理的事務量為系統吞吐量(transaction per second,TPS),通過仿真實驗測試事務提交上鏈的吞吐量,運行初始節點數量為4,依次新增2個節點,見圖5。當區塊大小固定為4 MB時,系統的吞吐量最高。由于增加節點數量會增加共識過程消耗的時間,當區塊大小固定時,隨著節點數量的增加,吞吐量逐漸減少。當區塊大小為4 MB時,吞吐量從17 TPS減少為12 TPS。

圖5 不同節點數量下系統吞吐量
本文運用的各種加解密運算消耗時間,見表2。非對稱加密方式的運算消耗遠大于對稱加密,因此采用前者加密重要信息與數字簽名,采用后者加密數據量較大的EMR文件。

表2 運算時間消耗(毫秒)
為了評估區塊鏈系統的運行效率,測試不同區塊數量(1~10 000)下系統的平均響應時間,涵蓋上傳時間與驗證時間,見圖6。測試結果表明,本文的區塊鏈系統在面對大量請求的同時能夠達到較低的延遲,滿足實際場景使用要求。

圖6 不同區塊數量下區塊鏈平均響應時間
本文提出一種基于區塊鏈的EMR安全共享方案,利用區塊鏈去中心化、透明性、信息不可篡改性等特點,實現醫療數據的安全共享。闡述了方案整體架構,論證了區塊鏈系統和國密算法在EMR共享全流程的安全保護作用。通過安全性分析評估了方案在數據安全、防御攻擊、隱私保護等安全指標的表現。通過實驗分析了方案的吞吐量、響應時間等綜合性能水平。區塊鏈分布式的特性使系統具有可擴展性,可以根據需求增加或減少節點數量。當用戶數量或數據量增大時,可添加更多節點來水平擴展分擔負載,提高系統的性能。以下問題待進一步研究:一是系統的可推廣性,由于本文方案包含患者自行注冊與身份驗證環節,有待進一步減輕患者使用區塊鏈平臺的難度;二是數據的共享標準問題,擬通過人工智能信息提取技術,采用結構化的病歷共享標準,促進數據的無縫交互。