張利華,付東輝,萬源華
(華東交通大學(xué)1. 軟件學(xué)院;2.電氣與自動(dòng)化工程學(xué)院,江西 南昌330013)
個(gè)人健康信息和電子醫(yī)療記錄已成為可能影響個(gè)人生活質(zhì)量的資產(chǎn)。 世界衛(wèi)生組織的報(bào)告已經(jīng)將個(gè)人健康信息確定為資產(chǎn)[1],電子醫(yī)療記錄(electronic medical records,EMR)的共享遠(yuǎn)遠(yuǎn)超出了其基本醫(yī)療用途。然而,由于醫(yī)院和醫(yī)療保健提供者網(wǎng)絡(luò)中的個(gè)人健康數(shù)據(jù)的碎片化和隔離[2],受行業(yè)和政府法規(guī)保護(hù),充分把這些數(shù)據(jù)進(jìn)行共享非常困難。 最早出現(xiàn)的一種解決方案是建立數(shù)字健康信息交換機(jī)構(gòu),使護(hù)理人員和機(jī)構(gòu)之間的患者病歷數(shù)字化傳輸成為常態(tài)。 這已經(jīng)解決了一些問題,包括多余的測(cè)試和相關(guān)成本,更好地協(xié)調(diào)患者護(hù)理,降低了總體管理成本且改善了患者的生活質(zhì)量。
然而,盡管有一些解決措施,但仍然存在一些挑戰(zhàn),并沒有辦法解決,其中一些涉及到互操作性[3],數(shù)據(jù)的安全性和私密性以及傳輸?shù)秸?qǐng)求者后的數(shù)據(jù)控制。 當(dāng)前的方法幾乎不能控制所請(qǐng)求的數(shù)據(jù)進(jìn)行操作或計(jì)算。 對(duì)于錯(cuò)誤或不道德地使用所請(qǐng)求信息會(huì)受到法律制裁,當(dāng)該行為被監(jiān)管部門檢測(cè)到,但此時(shí),對(duì)個(gè)人利益的損害可能已無法彌補(bǔ)。再者,盡管存在異構(gòu)數(shù)據(jù)源的挑戰(zhàn),但醫(yī)療領(lǐng)域的網(wǎng)絡(luò)化趨勢(shì)仍將繼續(xù)存在[4]。區(qū)塊鏈?zhǔn)潜忍貛偶用茇泿诺幕A(chǔ),是分布式賬本技術(shù),為共享后的數(shù)據(jù)和操作提供了控制機(jī)會(huì)。 有效巧妙地使用密碼學(xué)加密技術(shù)和共識(shí)機(jī)制相結(jié)合,為在多個(gè)領(lǐng)域中的應(yīng)用提供了執(zhí)行計(jì)算的安全平臺(tái)[5]。
近年來,由于區(qū)塊鏈在數(shù)據(jù)管理方面的優(yōu)勢(shì),即區(qū)塊鏈的不變性和內(nèi)在自治性,其在電子健康領(lǐng)域能夠保障個(gè)人健康數(shù)據(jù)的安全性和隱私性越來越受到人們的關(guān)注。
軟件服務(wù)平臺(tái)Patientory,通過向患者提供個(gè)人檔案,患者可以安全地訪問自己的醫(yī)療記錄。醫(yī)療信息存儲(chǔ)在符合HIPAA 的區(qū)塊鏈平臺(tái)上,為患者和護(hù)理人員提供安全的數(shù)據(jù)點(diǎn)。 通過使用Patientory,護(hù)理人員可以審查醫(yī)療計(jì)劃、 患者的醫(yī)療信息, 并與患者進(jìn)行交流, 而患者又可以與其他病情相似的患者建立聯(lián)系。Xiao 等[6]提出了一個(gè)基于區(qū)塊鏈的健康信息系統(tǒng)架構(gòu),通過引入的健康數(shù)據(jù)網(wǎng)關(guān),旨在使患者能夠通過區(qū)塊鏈控制和共享其醫(yī)療數(shù)據(jù)。 夏琦等[7]提出了一種針對(duì)敏感醫(yī)療數(shù)據(jù)存儲(chǔ)庫池的安全醫(yī)療數(shù)據(jù)訪問與共享框架BBDS,他們使用區(qū)塊鏈網(wǎng)絡(luò)作為訪問控制層,只有授權(quán)用戶才能對(duì)數(shù)據(jù)執(zhí)行操作,存儲(chǔ)每個(gè)交易的副本并將其附加到區(qū)塊鏈。 然而,只有在Xia[8]的研究中討論了實(shí)現(xiàn)數(shù)據(jù)來源和審計(jì),作者調(diào)查了智能合約和區(qū)塊鏈技術(shù)的使用。 MeBoice 的設(shè)計(jì)是BBDS 的一個(gè)邏輯擴(kuò)展,它集成了現(xiàn)有的無信任的云提供商和其他數(shù)據(jù)監(jiān)護(hù)人,它們希望以防篡改的方式將數(shù)據(jù)從一個(gè)實(shí)體傳輸?shù)搅硪粋€(gè)實(shí)體。MedRec[9]是另一個(gè)使用區(qū)塊鏈技術(shù)的分散記錄管理系統(tǒng),MedRec 是一個(gè)模塊化設(shè)計(jì),用于管理身份驗(yàn)證、機(jī)密性、責(zé)任性和數(shù)據(jù)共享。 與MedRec 類似,Ancile[10]是另一個(gè)記錄管理系統(tǒng),它利用智能合約和基于以太坊的區(qū)塊鏈來提高訪問控制和數(shù)據(jù)混淆。 盡管使用區(qū)塊鏈技術(shù)在改進(jìn)醫(yī)療數(shù)據(jù)訪問、共享和許可管理方面具有巨大潛力,但仍缺乏以數(shù)據(jù)為中心的研究, 缺乏對(duì)網(wǎng)絡(luò)中從一個(gè)實(shí)體傳輸?shù)搅硪粋€(gè)實(shí)體后的數(shù)據(jù)控制的明確研究。 為了遵守行業(yè)相關(guān)規(guī)定, 確?;颊邤?shù)據(jù)安全和隱私對(duì)于健康信息交換的持續(xù)維持至關(guān)重要。 從請(qǐng)求數(shù)據(jù)到系統(tǒng)發(fā)送應(yīng)開始響應(yīng)用戶對(duì)系統(tǒng)中交互的監(jiān)視。 只有當(dāng)數(shù)據(jù)達(dá)到了用戶提出請(qǐng)求的目的或檢測(cè)到違規(guī)行為時(shí),這種監(jiān)視才應(yīng)終止。
區(qū)塊鏈技術(shù)具有去中心化、不易篡改的特點(diǎn),提出了一種基于區(qū)塊鏈的醫(yī)療記錄安全共享方案,其底層機(jī)制可以監(jiān)控和執(zhí)行附加到患者數(shù)據(jù)的可接受使用策略。 系統(tǒng)中的患者在注冊(cè)時(shí)創(chuàng)建策略,以確定對(duì)其個(gè)人健康信息的允許操作。 這些策略存儲(chǔ)在系統(tǒng)中,并與智能合約一起咨詢,以確定何時(shí)可以共享數(shù)據(jù)或以其他方式共享數(shù)據(jù)。 參與的醫(yī)療機(jī)構(gòu)的處理節(jié)點(diǎn)、智能合約和安全監(jiān)視器進(jìn)行合作,以確?;颊邤?shù)據(jù)安全免受未經(jīng)授權(quán)的訪問和計(jì)算。
方案主要涉及的變量符號(hào)和意義如表1 所示。
系統(tǒng)由患者(Patient)、醫(yī)療機(jī)構(gòu)(Hospital)、區(qū)塊鏈(Blockchain)3 個(gè)部分構(gòu)成,如圖1 所示。
患者:電子醫(yī)療記錄的產(chǎn)生者,并對(duì)這些記錄擁有所有權(quán)與控制權(quán),患者可以在多個(gè)醫(yī)療機(jī)構(gòu)間進(jìn)行診斷治療。
醫(yī)療機(jī)構(gòu):為醫(yī)生與病人提供治療的平臺(tái),負(fù)責(zé)保管醫(yī)療記錄,同時(shí)可以跟其它醫(yī)療機(jī)構(gòu)維持?jǐn)?shù)據(jù)共享的關(guān)系。
區(qū)塊鏈:將保存患者的醫(yī)療記錄在分布式數(shù)據(jù)庫當(dāng)中的存儲(chǔ)地址。 區(qū)塊鏈中的每筆交易都會(huì)返回一個(gè)標(biāo)識(shí)符。 交易標(biāo)識(shí)符將幫助用戶進(jìn)一步訪問數(shù)據(jù)。
表1 方案中的變量符號(hào)和意義Tab.1 Symbols and its notions in our scheme
圖1 基于區(qū)塊鏈的電子醫(yī)療記錄共享模型Fig.1 Blockchain-based electronic health record sharing model
根據(jù)提出的系統(tǒng)模型,采用一種基于證書的代理重新加密方案來做為電子醫(yī)療記錄共享協(xié)議。 具體的電子醫(yī)療記錄共享協(xié)議由以下幾個(gè)步驟組成:系統(tǒng)初始化,患者注冊(cè),加密醫(yī)療數(shù)據(jù),數(shù)據(jù)共享,數(shù)據(jù)恢復(fù)。
1) 系統(tǒng)初始化:系統(tǒng)服務(wù)器給定特定的安全參數(shù)k。 首先,系統(tǒng)選擇一個(gè)k 位素?cái)?shù)q。 接下來,生成階數(shù)為q 的ECC,并且定義相應(yīng)的生成元點(diǎn)P,用G 表示ECC 點(diǎn)組。 選擇一個(gè)隨機(jī)值α∈Fq*并計(jì)算Pα=αP。 選取4 個(gè)不同的哈希函數(shù)。H1:G×{0,1}32→Fq*,H2:Fq*×{0,1}64→Fq*,H3:G×{0,1}64→Fq*,H4:Fq*×{0,1}64→Fq*,輸出公共參數(shù)params={G,q,P,Pα,H1,H2,H3,H4}和主密鑰msk=α。
2) 患者注冊(cè):如果有新患者到達(dá)醫(yī)院接受治療,則患者必須先進(jìn)行注冊(cè),然后再去看醫(yī)生。 由于這是一次注冊(cè),因此他們需要使用他們的移動(dòng)設(shè)備提供其詳細(xì)信息,例如其身份IDp,其公鑰PKp和治療他們的醫(yī)生PKd的公鑰。為了便于解釋,我們只考慮一位醫(yī)生。并且親戚也可以參與其中,其方式與醫(yī)生相同,但僅具有閱讀權(quán)限。 接下來,系統(tǒng)將患者的IDp和公鑰PKp發(fā)送給區(qū)塊鏈。 患者的證書和密鑰生成采用一種基于橢圓曲線證書機(jī)制算法,包括以下三個(gè)階段:
第一階段:患者注冊(cè)獲得自己唯一的身份標(biāo)識(shí)符IDU并生成一個(gè)隨機(jī)數(shù)rU∈Fq*,并且計(jì)算RU=rUG。 接下來,將元組(IDU,RU)發(fā)送給系統(tǒng)。
第二階段:系統(tǒng)收到(IDU,RU)后,將檢查IDU的合法性。接下來,它還會(huì)選擇一個(gè)隨機(jī)值rt∈Fq*并且計(jì)算Rt=rtP。 然后得出證書患者的證書CertU=RU+Rt。 最后,通過rα=H1(CertU||IDU)rt+α 計(jì)算得出有關(guān)實(shí)體的私鑰的輔助信息。 將元組(rα,CertU)發(fā)送給患者。
第三階段:患者收到元組(rα,CertU)后,根據(jù)等式SU=H1(CertU||IDU)rU+rα計(jì)算出其私鑰。 由私鑰得出患者的公鑰為PU=SUP。 如果PU=H1(CertU||IDU)CertU+Pα。 則患者接受密鑰對(duì)(SU,PU)。
3) 加密醫(yī)療數(shù)據(jù):為電子醫(yī)療數(shù)據(jù)EMR 生成元數(shù)據(jù)meta=(IDU||T0)。 接下來計(jì)算,進(jìn)行以下計(jì)算
得到醫(yī)療記錄的密文CA,該算法的輸出結(jié)果為C,C=(CA,meta,hA,sA)。將CA存儲(chǔ)在分布式云服務(wù)器當(dāng)中。 患者作為EMR 的擁有者對(duì)其進(jìn)行簽名,并將簽名的EMR、EMR 的哈希值,云存儲(chǔ)地址和訪問控制策略等寫入?yún)^(qū)塊鏈交易,然后將交易進(jìn)行全網(wǎng)廣播。由審核節(jié)點(diǎn)驗(yàn)證交易且驗(yàn)證通過后把該交易寫入?yún)^(qū)塊鏈當(dāng)中。
4) 數(shù)據(jù)共享:當(dāng)醫(yī)療機(jī)構(gòu)A 想讀取醫(yī)療機(jī)構(gòu)B 的某一份EMR 時(shí),醫(yī)療機(jī)構(gòu)A 作為數(shù)據(jù)請(qǐng)求方,在區(qū)塊鏈當(dāng)中發(fā)布請(qǐng)求信息{askEMR},醫(yī)療機(jī)構(gòu)B 收到{askEMR}后,驗(yàn)證醫(yī)療機(jī)構(gòu)A 的身份是否合法,并且檢查請(qǐng)求信息的訪問控制策略,如果醫(yī)療機(jī)構(gòu)A 的身份合法且擁有電子醫(yī)療記錄的讀取權(quán)限。 進(jìn)行以下操作。 首先,r=H2(SA||meta)由C 導(dǎo)出。 然后IDB的公鑰PB=H1(CertB||IDB)CertB+Pα。 得到電子醫(yī)療記錄共享密鑰rkAB=H3(meta||rPA)⊕H3(meta||rPB)。 此后,醫(yī)療機(jī)構(gòu)B 會(huì)將共享密鑰、EMR 的云存儲(chǔ)地址傳送給代表節(jié)點(diǎn),代表節(jié)點(diǎn)根據(jù)云存儲(chǔ)地址提取分布式云存儲(chǔ)數(shù)據(jù)庫上的加密EMR 文件。 接著,代表節(jié)點(diǎn)使用共享密鑰rkAB對(duì)加密的EMR 文件再次進(jìn)行加密,將密文CA轉(zhuǎn)換為CB(其中CB=rkAB⊕CA)。 最后代表節(jié)點(diǎn)將CB發(fā)送給醫(yī)療機(jī)構(gòu)A。
5) 數(shù)據(jù)恢復(fù):當(dāng)醫(yī)療機(jī)構(gòu)A 收到CB時(shí),使用自己的私鑰SB對(duì)CB進(jìn)行解密,解密后就可以得到EMR 的的明文文件M。 具體解密過程如下:首先醫(yī)療機(jī)構(gòu)A 計(jì)算R=SAP+hAPA,然后計(jì)算M=CB⊕H3(meta||SBR),計(jì)算所得M 即為EMR 的明文文件。 如果患者想要查看自己的電子醫(yī)療記錄,獲取EMR 的明文和上面類似,還需要進(jìn)行以下計(jì)算
患者進(jìn)行上面兩步計(jì)算就可以獲得自己的EMR 文件的明文。
2.3.1 患者密鑰對(duì)的正確性
SMRSBC 方案在患者注冊(cè)階段,把患者的證書和身份標(biāo)識(shí)進(jìn)行哈希加密生成患者的私鑰,然后用患者的私鑰計(jì)算出患者的公鑰。 患者可以驗(yàn)證等式PU=H1(CertU||IDU)Cert+Pα是否成立,如果成立,則患者接受密鑰對(duì)(SU,PU),否則這拒絕接受密鑰對(duì)。
2.3.2 密文的正確性
在SMRSBC 方案中,由于患者的電子醫(yī)療記錄是存儲(chǔ)在云服務(wù)器當(dāng)中,患者的醫(yī)療記錄雖然經(jīng)過加密處理,但是云環(huán)境并不是可信的安全環(huán)境。 惡意的攻擊者可能會(huì)篡改加密之后的電子醫(yī)療數(shù)據(jù),這樣就會(huì)導(dǎo)致醫(yī)療機(jī)構(gòu)B 解密獲得的明文并不是正確的。 代表節(jié)點(diǎn)通過驗(yàn)證等式hA=H4(CA||meta)是否成立,如果等式成立,則密文沒有被篡改,否則密文已經(jīng)被篡改過了。
1) 防篡改
在SMRSBC 中,EMR 是不可變的,不能任意修改。 由于每個(gè)數(shù)據(jù)塊都包含當(dāng)前時(shí)間戳和前一個(gè)塊的哈希,因此按時(shí)間順序嵌套的塊可確保事務(wù)無法更改,除非有人可以同時(shí)占據(jù)整個(gè)網(wǎng)絡(luò)計(jì)算能力。 此外,每個(gè)訪問請(qǐng)求和訪問活動(dòng)都記錄在區(qū)塊鏈中,對(duì)數(shù)據(jù)的任何更改都可以進(jìn)行審核和跟蹤。 因此,提出的SMRSBC可以確保防篡改特性。
2) 隱私保護(hù)
由于EMR 是患者的高度敏感的私人數(shù)據(jù),因此,它們不希望未經(jīng)許可而被披露。在SMRSBC 中,由于以下功能,確保了隱私屬性:匿名,云儲(chǔ)存。
匿名:每個(gè)參與者都會(huì)生成一個(gè)帶有隨機(jī)公鑰的唯一帳戶。 因此,區(qū)塊鏈上的每筆交易都是匿名的。 另外,用戶對(duì)不同的事務(wù)使用不同的公共密鑰,這使得同一用戶請(qǐng)求的多個(gè)事務(wù)無法鏈接。
云儲(chǔ)存:原始EMR 被加密并存儲(chǔ)在云存儲(chǔ)中。這樣,不僅解決了區(qū)塊鏈存儲(chǔ)容量有限的問題,而且大大降低了原始醫(yī)療記錄泄漏的風(fēng)險(xiǎn)。
3) 數(shù)據(jù)安全存儲(chǔ)和共享
數(shù)據(jù)存儲(chǔ)和共享的安全性是SMRSBC 的重要功能。 在此方案中,患者可以完全控制自己的EMR。 從數(shù)據(jù)獲取到數(shù)據(jù)共享的過程都是安全的。
數(shù)據(jù)存儲(chǔ):患者對(duì)原始EMR 進(jìn)行加密并將其存儲(chǔ)在云中。 在云中使用分布式存儲(chǔ)可確保醫(yī)療數(shù)據(jù)的安全性。
數(shù)據(jù)發(fā)布:首先,EMR 的索引保留在防篡改區(qū)塊鏈中,不能隨意修改。其次,區(qū)塊鏈?zhǔn)且粋€(gè)沒有單點(diǎn)故障的分布式數(shù)據(jù)庫,每個(gè)節(jié)點(diǎn)都有交易記錄的副本。 此外,數(shù)字簽名還為每筆交易提供身份驗(yàn)證,完整性和不可否認(rèn)性。
數(shù)據(jù)共享:在SMRSBC 中,數(shù)據(jù)訪問權(quán)限是在智能合約中預(yù)設(shè)的。 僅授權(quán)用戶或機(jī)構(gòu)可以使用EMR。執(zhí)行的訪問記錄存儲(chǔ)在區(qū)塊鏈中以跟蹤數(shù)據(jù)的行為。 一旦有人違反了訪問規(guī)則或權(quán)限,數(shù)據(jù)所有者便有權(quán)撤銷其訪問權(quán)限。
表2 將SMRSBC 方案和現(xiàn)有其它方案進(jìn)行特性對(duì)比。 從表2 中的特性對(duì)比可以看出,SMRSBC 方案和其它方案相比具有一定的優(yōu)勢(shì)。
表2 方案對(duì)比Tab.2 Scheme comparison
在傳統(tǒng)的方案當(dāng)中,要么把醫(yī)療記錄存放在可信第三方的數(shù)據(jù)庫當(dāng)中,要么把區(qū)塊鏈當(dāng)成一個(gè)數(shù)據(jù)庫,直接把醫(yī)療記錄存放在區(qū)塊鏈當(dāng)中。 把醫(yī)療記錄存放在可信第三方的數(shù)據(jù)庫當(dāng)中,容易發(fā)生單點(diǎn)故障的問題,而直接把醫(yī)療記錄存放在區(qū)塊鏈當(dāng)中,由于區(qū)塊鏈的存儲(chǔ)容量有限,一旦區(qū)塊鏈網(wǎng)絡(luò)當(dāng)中的節(jié)點(diǎn)數(shù)量過多,現(xiàn)有數(shù)據(jù)存儲(chǔ)技術(shù),將存儲(chǔ)不了完整的區(qū)塊鏈賬本,方案的可擴(kuò)展性不強(qiáng)。 而SMRSBC 方案通過用區(qū)塊鏈記錄患者的醫(yī)療記錄在云存儲(chǔ)當(dāng)中的地址,而把加密之后的患者醫(yī)療記錄存儲(chǔ)在分布式云存儲(chǔ)服務(wù)器當(dāng)中,可以很好的解決區(qū)塊鏈存儲(chǔ)數(shù)據(jù)容量有限的問題,并且該方案具有良好的擴(kuò)展性。
區(qū)塊鏈技術(shù)的不斷發(fā)展對(duì)傳統(tǒng)的行業(yè)帶來了較大的沖擊,過于中心化的系統(tǒng)面臨著諸多問題,如容易遭受單點(diǎn)失效、惡意篡改、隱私泄露等威脅。 區(qū)塊鏈技術(shù)的應(yīng)用可以解決這些問題,區(qū)塊鏈擁有跟分布式存儲(chǔ)機(jī)制相當(dāng)?shù)娜蒎e(cuò)與容災(zāi)性能,同時(shí)參與到區(qū)塊鏈網(wǎng)絡(luò)的節(jié)點(diǎn)之間并不需要互相信任,且其中所使用的密碼體制與算法已經(jīng)是在當(dāng)前受到認(rèn)可且足夠安全的, 因此在醫(yī)療記錄的存儲(chǔ)與共享領(lǐng)域具有良好的前景。提出的SMRSBC 方案將醫(yī)療記錄的存儲(chǔ)與共享分開,既減輕了區(qū)塊鏈各個(gè)節(jié)點(diǎn)的負(fù)載,又提高了數(shù)據(jù)的隱私性,為建立一個(gè)保護(hù)病人隱私的醫(yī)療數(shù)據(jù)共享與存儲(chǔ)生態(tài)平臺(tái)奠定了基礎(chǔ)。 雙鏈的使用避免了當(dāng)前很多單鏈設(shè)計(jì)應(yīng)用中吞吐量不高且數(shù)據(jù)較為混亂的現(xiàn)狀, 但在具體的方案實(shí)現(xiàn)中可能會(huì)遇到一些挑戰(zhàn)與問題。此外,當(dāng)前的醫(yī)療記錄共享中還面臨著一些棘手的問題,例如各個(gè)醫(yī)療機(jī)構(gòu)的數(shù)據(jù)不兼容,行業(yè)術(shù)語不統(tǒng)一,病人對(duì)區(qū)塊鏈技術(shù)安全性的不信任等。