姚 堯 袁駿毅 岑星星
(上海市胸科醫(yī)院/上海交通大學(xué)醫(yī)學(xué)院附屬胸科醫(yī)院 上海 200030)
電子病歷(electronic medical records,EMR)的建設(shè)對于就醫(yī)流程服務(wù)質(zhì)量、效率、用戶體驗的提升以及醫(yī)院智能化水平的促進(jìn)等有重要作用[1-2],近年來越來越多的研究者致力于挖掘EMR的潛力,涉及公共衛(wèi)生管理[3]、患者醫(yī)療數(shù)據(jù)共享[4]等方面。由于EMR包含患者大量的隱私信息,傳統(tǒng)的醫(yī)療信息系統(tǒng)將其存儲在就診醫(yī)院,導(dǎo)致不同醫(yī)療機構(gòu)間共享困難,容易造成“數(shù)據(jù)孤島”。
為實現(xiàn)醫(yī)療數(shù)據(jù)的安全共享,有研究[5]提出將區(qū)塊鏈技術(shù)引入EMR系統(tǒng)建設(shè)中。區(qū)塊鏈本質(zhì)上是一個授權(quán)的賬本,具有去中心化、時序數(shù)據(jù)、集體維護、可編程性、安全性和可靠性等特點[6]?;趨^(qū)塊鏈的EMR系統(tǒng)也面臨數(shù)據(jù)存儲、安全分享、訪問控制等難點[7-8]。Zheng X等[9]和Lin C等[10]提出使用鏈下的分布式數(shù)據(jù)庫存儲醫(yī)療數(shù)據(jù),解決了醫(yī)療數(shù)據(jù)過于龐大以至于無法存儲在鏈上的難題,但是增加了數(shù)據(jù)保護難度。Huang H等[11]使用群簽名技術(shù)實現(xiàn)病歷共享的匿名性與安全性,但是系統(tǒng)的運算開銷過大。Nguyen D等[12]使用對稱加密技術(shù)保證共享數(shù)據(jù)的機密性,并通過訪問控制手段保證安全性,但是攻擊者可能會在挖取節(jié)點過程中獲取私人信息。Patel P等[13]和Lee J等[14]都提出將智能合約與訪問控制結(jié)合,對訪問區(qū)塊鏈的用戶進(jìn)行權(quán)限管理,但使后期追溯變得困難。現(xiàn)有研究表明,將區(qū)塊鏈和EMR數(shù)據(jù)共享相結(jié)合具有以下優(yōu)勢。一是去中心化,防止病歷數(shù)據(jù)的未經(jīng)授權(quán)訪問和篡改。二是數(shù)據(jù)隱私與匿名性,確保只有授權(quán)的用戶可以訪問和查看特定的病歷數(shù)據(jù)。三是可追溯性,意味著EMR的共享可以被準(zhǔn)確地追蹤和審計。四是易共享性,使不同的醫(yī)療機構(gòu)系統(tǒng)可以無縫共享和交換數(shù)據(jù)。本文提出一種基于區(qū)塊鏈的EMR共享方案,主要工作包括結(jié)合區(qū)塊鏈技術(shù)與傳統(tǒng)數(shù)據(jù)存儲方式,建立區(qū)塊鏈安全共享平臺,通過智能合約與外部服務(wù)交互,實現(xiàn)第三方用戶的鑒權(quán)與訪問控制;探討醫(yī)療數(shù)據(jù)全生命周期各環(huán)節(jié)的保護方案,針對不同數(shù)據(jù)運用不同的加密方式,針對機構(gòu)間信息交互做到數(shù)據(jù)存證與操作審計,保障系統(tǒng)的安全性。
圖1 總體架構(gòu)
用戶層共包含4個實體。患者:患者到醫(yī)院就診后會生成相應(yīng)的醫(yī)療數(shù)據(jù),是數(shù)據(jù)的擁有者,對病歷是否共享擁有決定權(quán)。患者通過區(qū)塊鏈平臺進(jìn)行身份注冊并獲得統(tǒng)一的身份標(biāo)識符與密鑰。醫(yī)生:可以在平臺查看患者的歷史病歷,授權(quán)后可在院外遠(yuǎn)程查看病歷數(shù)據(jù)。醫(yī)療機構(gòu):若患者需要在不同的醫(yī)療機構(gòu)查看歷史病歷,授權(quán)后可通過共享平臺實現(xiàn)跨機構(gòu)的病歷檢索與查閱??蒲袡C構(gòu):可以向多個醫(yī)療機構(gòu)請求醫(yī)療數(shù)據(jù)共享,用于科研,需要得到相應(yīng)患者和醫(yī)院的授權(quán)。
核心業(yè)務(wù)層通過區(qū)塊鏈服務(wù)、醫(yī)療數(shù)據(jù)處理、國密算法和賬戶認(rèn)證4個模塊實現(xiàn)EMR的安全共享。區(qū)塊鏈?zhǔn)潜U舷到y(tǒng)安全性的核心部件,其基本結(jié)構(gòu),見圖2。由于區(qū)塊鏈去中心化特點,系統(tǒng)不需要可信的第三方或者中心節(jié)點統(tǒng)一處理事務(wù),各節(jié)點都擁有一個區(qū)塊鏈副本,并隨時同步和維護鏈上內(nèi)容。由于每一個區(qū)塊同時包含自身的哈希值與前一個區(qū)塊的哈希值,如果其中某一個區(qū)塊的信息被篡改,將會導(dǎo)致自身哈希值的變化,使區(qū)塊鏈斷鏈,保證了系統(tǒng)的防篡改。
圖2 區(qū)塊鏈基本結(jié)構(gòu)
區(qū)塊鏈系統(tǒng)采用多節(jié)點共識的存證服務(wù),經(jīng)證書簽證機關(guān)(certification authority,CA)授權(quán)的多個醫(yī)療機構(gòu)組成聯(lián)盟,各自作為系統(tǒng)的節(jié)點,負(fù)責(zé)將信息交互事務(wù)記入共享賬本。按照T/CESA 1048—2018、T/CESA 1049—2018相關(guān)標(biāo)準(zhǔn),對用戶注冊、病歷提交、獲取、檢索、調(diào)閱等業(yè)務(wù)服務(wù)交互進(jìn)行信息安全審計。智能合約是集成在區(qū)塊鏈服務(wù)內(nèi)的一個自動執(zhí)行的程序,作為外部服務(wù)和區(qū)塊鏈交互的接口,用于約定事務(wù)上傳的格式以過濾節(jié)點非法請求,提供服務(wù)封裝。通過配置訪問控制列表功能,判斷請求者是否有獲取相應(yīng)數(shù)據(jù)的權(quán)限,實現(xiàn)用戶識別。各節(jié)點將事務(wù)打包上傳,經(jīng)實用拜占庭容錯[15]共識算法認(rèn)定成功后,上傳至區(qū)塊鏈。醫(yī)療數(shù)據(jù)處理涵蓋EMR脫敏、加密與事務(wù)上鏈等功能,保證數(shù)據(jù)的安全共享。共享的EMR經(jīng)國密SM2非對稱加密算法與SM4對稱加密算法處理,即使發(fā)生泄漏,攻擊者也無法獲得有用信息。
基于等級保護2.0的要求,院內(nèi)醫(yī)療數(shù)據(jù)保存在內(nèi)網(wǎng),區(qū)塊鏈安全共享平臺部署在外網(wǎng)單獨的安全隔離區(qū),內(nèi)外網(wǎng)通過防毒墻與網(wǎng)閘隔離,保證數(shù)據(jù)的安全交換[16]?;ヂ?lián)網(wǎng)應(yīng)用通過區(qū)塊鏈前置機訪問共享平臺,接口設(shè)計基于企業(yè)服務(wù)總線,提供符合標(biāo)準(zhǔn)規(guī)則的封裝服務(wù)。共享數(shù)據(jù)平臺均按照《WS/T 447—2014基于電子病歷的醫(yī)院信息平臺技術(shù)規(guī)范》與《醫(yī)院信息互聯(lián)互通標(biāo)準(zhǔn)化指標(biāo)》建設(shè)。
對EMR共享全生命周期進(jìn)行推導(dǎo),其符號,見表1。共享模型,見圖3。
表1 符號及其解釋
圖3 共享模型
醫(yī)院在CA注冊后,生成醫(yī)院節(jié)點公、私鑰對(SKhos,PKhos),經(jīng)CA簽發(fā)數(shù)字證書后返回醫(yī)院進(jìn)行本地保存。
患者首次來院需要在平臺注冊,醫(yī)院生成相應(yīng)的區(qū)塊鏈注冊事務(wù)TR=(register,h(PIp||Nop,sigp),其中register表明此事務(wù)功能為患者注冊,h(PIp||Nop為患者注冊信息(醫(yī)??ㄌ枴⑸矸菪畔?的摘要,sigp為該患者的唯一身份標(biāo)識符。系統(tǒng)收集注冊事務(wù)后進(jìn)行共識上鏈,最后隨機生成該患者的對稱密鑰Kp。
患者經(jīng)醫(yī)生診斷后,醫(yī)院首先生成患者的明文EMR,并使用國密SM3算法計算得到摘要h(EMR)。然后使用醫(yī)院本地私鑰SKhos并采用國密SM2算法對摘要進(jìn)行數(shù)字簽名得到ESkhos(h(EMR))。最后,將明文EMR與數(shù)字簽名拼接,使用患者密鑰Kp進(jìn)行基于國密SM4的分組對稱加密,得到加密后的病歷數(shù)據(jù)EMRen=EKp(EMR||ESkhos(h(EMR)),存入醫(yī)院本地數(shù)據(jù)庫。區(qū)塊鏈平臺通過企業(yè)服務(wù)總線的接口與醫(yī)院本地數(shù)據(jù)庫交互,自動生成病歷上傳事務(wù)TM=(medical,h(EMRen),sigp,pointer),其中medical表明此事務(wù)功能為病歷信息,h(EMRen)為密文EMR的消息摘要,sigp為患者唯一身份標(biāo)識符,pointer為病歷在本地數(shù)據(jù)庫的索引信息,事務(wù)經(jīng)共識后上鏈。
共享場景一:患者去醫(yī)院2就診并有查看醫(yī)院1歷史病歷的需求,通過身份驗證登錄平臺。由該醫(yī)院前置機啟動區(qū)塊鏈智能合約,根據(jù)sigp查詢區(qū)塊鏈記錄,隨后發(fā)起病歷調(diào)閱請求。待節(jié)點共識存證后,平臺自動根據(jù)pointer檢索患者歷史病歷,并使用PKhos2加密相應(yīng)患者的對稱密鑰EKp,與密文EMRen經(jīng)安全網(wǎng)絡(luò)通道傳輸至醫(yī)院2。醫(yī)院2使用SKhos2解密得到EKp,再使用EKp解密得到具有數(shù)字簽名的明文EMR||ESkhos1(h(EMR))。拆分出后32字節(jié)之后使用PKhos1解密,得到EMR的摘要h(EMR)。同時根據(jù)SM3算法計算出h’(EMR)。若二者比對一致,則表示EMR是完整有效的。
共享場景二:科研機構(gòu)向平臺申請EMR的共享,注冊并獲得相應(yīng)患者的授權(quán)。由于科研機構(gòu)并不具備直接訪問鏈上數(shù)據(jù)的權(quán)限,需要以共識節(jié)點中某一醫(yī)療機構(gòu)為代理,發(fā)起病歷共享申請。與醫(yī)療機構(gòu)間共享過程的區(qū)別在于科研機構(gòu)獲得的EMR會經(jīng)平臺脫敏處理,避免泄露患者敏感信息。
患者病歷數(shù)據(jù)經(jīng)對稱加密后保存在醫(yī)院本地安全區(qū)域,不直接暴露在互聯(lián)網(wǎng)環(huán)境,保證數(shù)據(jù)存儲安全。在病歷共享過程中,密文只有擁有Kp的授權(quán)用戶才能解密。此外,區(qū)塊鏈的去中心化、透明性、信息不可篡改性特點,對病歷共享交互全程數(shù)據(jù)存證,確??尚虐踩?。
假設(shè)攻擊者有能力在區(qū)塊上鏈過程中攔截,并意圖重放該區(qū)塊到區(qū)塊鏈服務(wù)器以修改事務(wù)數(shù)據(jù),則該攻擊者必須要面臨時間戳過期的問題。由于區(qū)塊鏈的特性,元數(shù)據(jù)中的時間戳是不容易被篡改的,一旦某個發(fā)送到區(qū)塊鏈的請求被重放,時間戳一定會發(fā)生變化,影響整個鏈的哈希驗證,以此抵御重放攻擊。
首先,患者在區(qū)塊鏈上的身份信息均經(jīng)過了國密SM3摘要算法處理,避免了敏感信息的直接暴露。其次,與科研機構(gòu)共享的病歷數(shù)據(jù)均進(jìn)行了脫敏處理,去除了患者身份信息,科研機構(gòu)不能從共享的醫(yī)療數(shù)據(jù)中獲取患者隱私。
基于區(qū)塊鏈的EMR共享平臺構(gòu)建了一套完整的用戶授權(quán)、事務(wù)存證、數(shù)據(jù)交換鑒權(quán)、操作審計的監(jiān)管方案。數(shù)據(jù)訪問記錄全流程上鏈,確保數(shù)據(jù)訪問路徑的全程可回溯。當(dāng)發(fā)生數(shù)據(jù)泄露時,能快速定位問題源并處理。
為驗證本文方案的可行性,對整個系統(tǒng)流程進(jìn)行了仿真實驗,實驗平臺為Windows Server 2019,處理器為Intel Xeon Silver 4210R,內(nèi)存為64 GB,基于Hyperledger Fabric[17]框架搭建區(qū)塊鏈系統(tǒng)與云服務(wù)器,采用go語言開發(fā)智能合約應(yīng)用程序接口,實現(xiàn)功能主要包括:用戶節(jié)點管理、區(qū)塊鏈的生成與維護、區(qū)塊查詢、事務(wù)上傳等功能。借助Hyperledger Explorer實現(xiàn)區(qū)塊鏈系統(tǒng)的后臺管理。
選用上海市胸科醫(yī)院醫(yī)院信息系統(tǒng)存儲的真實患者EMR作為測試數(shù)據(jù),涵蓋門診病歷、住院病歷、藥品處方、檢查檢驗報告等,EMR文件的平均大小為32 KB。調(diào)取其中500 000份用于測試不同EMR文件數(shù)量下區(qū)塊鏈消耗的存儲空間,例如,若要通過區(qū)塊鏈系統(tǒng)分享250 000份EMR,則包含相應(yīng)事務(wù)的區(qū)塊鏈共占用119 MB的空間,見圖4。
圖4 不同EMR數(shù)量下區(qū)塊鏈占用空間
定義每秒處理的事務(wù)量為系統(tǒng)吞吐量(transaction per second,TPS),通過仿真實驗測試事務(wù)提交上鏈的吞吐量,運行初始節(jié)點數(shù)量為4,依次新增2個節(jié)點,見圖5。當(dāng)區(qū)塊大小固定為4 MB時,系統(tǒng)的吞吐量最高。由于增加節(jié)點數(shù)量會增加共識過程消耗的時間,當(dāng)區(qū)塊大小固定時,隨著節(jié)點數(shù)量的增加,吞吐量逐漸減少。當(dāng)區(qū)塊大小為4 MB時,吞吐量從17 TPS減少為12 TPS。
圖5 不同節(jié)點數(shù)量下系統(tǒng)吞吐量
本文運用的各種加解密運算消耗時間,見表2。非對稱加密方式的運算消耗遠(yuǎn)大于對稱加密,因此采用前者加密重要信息與數(shù)字簽名,采用后者加密數(shù)據(jù)量較大的EMR文件。
表2 運算時間消耗(毫秒)
為了評估區(qū)塊鏈系統(tǒng)的運行效率,測試不同區(qū)塊數(shù)量(1~10 000)下系統(tǒng)的平均響應(yīng)時間,涵蓋上傳時間與驗證時間,見圖6。測試結(jié)果表明,本文的區(qū)塊鏈系統(tǒng)在面對大量請求的同時能夠達(dá)到較低的延遲,滿足實際場景使用要求。
圖6 不同區(qū)塊數(shù)量下區(qū)塊鏈平均響應(yīng)時間
本文提出一種基于區(qū)塊鏈的EMR安全共享方案,利用區(qū)塊鏈去中心化、透明性、信息不可篡改性等特點,實現(xiàn)醫(yī)療數(shù)據(jù)的安全共享。闡述了方案整體架構(gòu),論證了區(qū)塊鏈系統(tǒng)和國密算法在EMR共享全流程的安全保護作用。通過安全性分析評估了方案在數(shù)據(jù)安全、防御攻擊、隱私保護等安全指標(biāo)的表現(xiàn)。通過實驗分析了方案的吞吐量、響應(yīng)時間等綜合性能水平。區(qū)塊鏈分布式的特性使系統(tǒng)具有可擴展性,可以根據(jù)需求增加或減少節(jié)點數(shù)量。當(dāng)用戶數(shù)量或數(shù)據(jù)量增大時,可添加更多節(jié)點來水平擴展分擔(dān)負(fù)載,提高系統(tǒng)的性能。以下問題待進(jìn)一步研究:一是系統(tǒng)的可推廣性,由于本文方案包含患者自行注冊與身份驗證環(huán)節(jié),有待進(jìn)一步減輕患者使用區(qū)塊鏈平臺的難度;二是數(shù)據(jù)的共享標(biāo)準(zhǔn)問題,擬通過人工智能信息提取技術(shù),采用結(jié)構(gòu)化的病歷共享標(biāo)準(zhǔn),促進(jìn)數(shù)據(jù)的無縫交互。