王甜宇 張柯欣
(遼寧中醫(yī)藥大學(xué)信息工程學(xué)院 沈陽(yáng) 110847)
近年來(lái)隨著我國(guó)醫(yī)療信息化發(fā)展的不斷深入以及人工智能、物聯(lián)網(wǎng)、云計(jì)算、可穿戴設(shè)備的廣泛應(yīng)用,醫(yī)療健康數(shù)據(jù)呈指數(shù)級(jí)增長(zhǎng)。醫(yī)療健康數(shù)據(jù)是醫(yī)學(xué)研究的寶貴資源,對(duì)于疾病預(yù)測(cè)、診斷、治療與康復(fù)具有重要價(jià)值,目前分別存儲(chǔ)于各級(jí)醫(yī)療機(jī)構(gòu)醫(yī)院信息系統(tǒng)、電子病歷系統(tǒng)、影像存儲(chǔ)與傳輸系統(tǒng)、通信系統(tǒng)及實(shí)驗(yàn)室信息管理系統(tǒng)中[1],分散在不同醫(yī)療機(jī)構(gòu)的中心式數(shù)據(jù)庫(kù),沒有實(shí)現(xiàn)區(qū)域內(nèi)醫(yī)療機(jī)構(gòu)之間、醫(yī)療機(jī)構(gòu)與養(yǎng)老機(jī)構(gòu)之間、醫(yī)療機(jī)構(gòu)與政府監(jiān)管部門之間、醫(yī)療機(jī)構(gòu)與保險(xiǎn)公司之間、醫(yī)療機(jī)構(gòu)與患者之間、醫(yī)療機(jī)構(gòu)與第3方科研機(jī)構(gòu)之間數(shù)據(jù)流通與共享[2],造成信息孤島。區(qū)域醫(yī)療健康數(shù)據(jù)共享能夠有效改善醫(yī)療機(jī)構(gòu)服務(wù)質(zhì)量、減少醫(yī)療差錯(cuò)、降低患者醫(yī)療成本、提高患者滿意度[3],也可以使保險(xiǎn)公司獲得真實(shí)可靠的醫(yī)療健康數(shù)據(jù)。但是醫(yī)療健康數(shù)據(jù)中含有的患者隱私數(shù)據(jù)高度敏感,容易遭到倒賣和篡改,因此安全共享區(qū)域內(nèi)醫(yī)療健康數(shù)據(jù)已成為亟待解決的問題。
Vazirani A A,O’Donoghue O和Brindley D等[4]通過區(qū)塊鏈技術(shù)創(chuàng)建高效和可互操作的基礎(chǔ)架構(gòu)管理電子病歷中的醫(yī)療記錄,以改善醫(yī)療結(jié)果,保持患者數(shù)據(jù)所有權(quán)及敏感數(shù)據(jù)隱私性、安全性;Kaur H,Alam M A和Jameel R等[5]提出在云環(huán)境中搭建基于區(qū)塊鏈的異構(gòu)醫(yī)療數(shù)據(jù)平臺(tái),用于存儲(chǔ)和管理電子病歷;Kim M H,Yu S J和Lee J Y等[6]設(shè)計(jì)了基于區(qū)塊鏈的云輔助電子病歷系統(tǒng)安全協(xié)議,以防止遭受攻擊;Zhang Y L,Wen L和Zhang Y J等[7]提出基于區(qū)塊鏈技術(shù)的醫(yī)學(xué)圖像數(shù)據(jù)共享加密方案,確保圖像數(shù)據(jù)不可篡改。
梅穎[8]基于區(qū)塊鏈技術(shù)提出個(gè)人醫(yī)療記錄的分布式安全存儲(chǔ)和共享方案,使得個(gè)人對(duì)醫(yī)療記錄共享具有使用權(quán)和控制權(quán);張超、李強(qiáng)和陳子豪等[9]設(shè)計(jì)多節(jié)點(diǎn)共同維護(hù)和共享的聯(lián)盟即醫(yī)療區(qū)塊鏈系統(tǒng),用來(lái)防止數(shù)據(jù)泄露和篡改;楊明、丁龍和許艷[10]提出基于區(qū)塊鏈技術(shù)的醫(yī)療云數(shù)據(jù)共享方案,使用公開審計(jì)確保醫(yī)療數(shù)據(jù)完整性;成麗娟、祁正華和史俊成[3]提出基于聯(lián)盟鏈的電子健康記錄安全存儲(chǔ)共享方案,以實(shí)現(xiàn)數(shù)據(jù)安全存儲(chǔ),提高下載效率;生慧、周揚(yáng)和馬金剛[11]基于聯(lián)盟區(qū)塊鏈和非結(jié)構(gòu)化數(shù)據(jù)庫(kù)MongoDB設(shè)計(jì)中醫(yī)藥海量異構(gòu)數(shù)據(jù)存儲(chǔ)共享方案;宋波、劉錚和馮云霞等[12]基于區(qū)塊鏈技術(shù)提出醫(yī)聯(lián)體系統(tǒng)架構(gòu),以解決醫(yī)聯(lián)體醫(yī)院間數(shù)據(jù)安全問題;黃敬英和蔣勤勤[13]介紹區(qū)塊鏈在醫(yī)聯(lián)體中的具體應(yīng)用并提出面臨的挑戰(zhàn)及應(yīng)對(duì)措施。本文基于聯(lián)盟鏈提出區(qū)域醫(yī)療健康數(shù)據(jù)安全共享模型、技術(shù)框架以及共享過程,為實(shí)現(xiàn)區(qū)域醫(yī)療健康數(shù)據(jù)安全共享提供參考和借鑒。
3.1.1 定義及特征 區(qū)塊鏈?zhǔn)且粋€(gè)分布式、去中心化的共享賬本或數(shù)據(jù)庫(kù)。其使用加密鏈?zhǔn)絽^(qū)塊結(jié)構(gòu)存儲(chǔ)數(shù)據(jù),應(yīng)用共識(shí)算法產(chǎn)生、驗(yàn)證和更新數(shù)據(jù),利用智能合約操作數(shù)據(jù),在去信任的條件下通過分布式系統(tǒng)實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)交易和協(xié)作,有效解決互聯(lián)網(wǎng)上信任與價(jià)值可靠性傳遞難題[14]。區(qū)塊鏈網(wǎng)絡(luò)上的節(jié)點(diǎn)都是平等的,沒有中心服務(wù)器;區(qū)塊鏈中的數(shù)據(jù)公開透明,交易數(shù)據(jù)通過加密技術(shù)進(jìn)行驗(yàn)證和記錄,無(wú)需第3方信任機(jī)構(gòu)參與;區(qū)塊鏈由全網(wǎng)節(jié)點(diǎn)共同參與維護(hù),某一節(jié)點(diǎn)數(shù)據(jù)更新需要全網(wǎng)其他節(jié)點(diǎn)驗(yàn)證,不受少數(shù)節(jié)點(diǎn)控制;區(qū)塊鏈中每個(gè)節(jié)點(diǎn)都保存全網(wǎng)數(shù)據(jù),單個(gè)節(jié)點(diǎn)故障不會(huì)影響整個(gè)系統(tǒng);在區(qū)塊鏈上用一串唯一數(shù)字代表一個(gè)身份,使用數(shù)字簽名進(jìn)行身份認(rèn)證,具有匿名特點(diǎn),能夠更好地保護(hù)個(gè)人隱私[15]。根據(jù)區(qū)塊鏈開放程度不同,可以分為私有鏈、聯(lián)盟鏈和公有鏈。本文基于聯(lián)盟鏈實(shí)現(xiàn)區(qū)域醫(yī)療健康數(shù)據(jù)安全共享。
3.1.2 私有鏈 對(duì)單獨(dú)組織機(jī)構(gòu)開放,如醫(yī)院、養(yǎng)老院、保險(xiǎn)公司內(nèi)部等使用,私有鏈上的讀寫權(quán)限以及記賬權(quán)限由私有組織決定。私有鏈除增強(qiáng)數(shù)據(jù)安全性與網(wǎng)絡(luò)運(yùn)行可靠性外,與傳統(tǒng)中心化技術(shù)相比并沒有明顯優(yōu)勢(shì)。
3.1.3 聯(lián)盟鏈 僅限聯(lián)盟成員使用,如已被授權(quán)的各級(jí)醫(yī)療機(jī)構(gòu)、養(yǎng)老院等,可以對(duì)成員開放鏈中功能,聯(lián)盟鏈讀寫權(quán)限和記賬規(guī)則由聯(lián)盟制定。聯(lián)盟鏈?zhǔn)箙⑴c主體的共識(shí)邊界由原來(lái)的主體私有范圍擴(kuò)展至整個(gè)聯(lián)盟范圍。
3.1.4 公有鏈 對(duì)外公開,任何個(gè)體或組織機(jī)構(gòu)都可以參與、完全去中心化。通過加密技術(shù)能夠保證交易及鏈上數(shù)據(jù)不可被篡改,在不可信的網(wǎng)絡(luò)環(huán)境下建立共識(shí),形成去中心化的信用機(jī)制[16]。
3.2.1 非對(duì)稱加密 由1對(duì)唯一的公開密鑰(公鑰)和私有密鑰(私鑰)組成,任何持有公鑰的用戶都可以使用公鑰對(duì)信息進(jìn)行加密,以實(shí)現(xiàn)安全交互。只有持有該公鑰對(duì)應(yīng)私鑰的用戶才能正常解密該信息,任何不持有公鑰對(duì)應(yīng)私鑰的用戶都無(wú)法將信息解密。
3.2.2 哈希算法 也稱數(shù)據(jù)摘要或散列算法,是將1段信息映射成1個(gè)固定長(zhǎng)度的二進(jìn)制值(哈希值),給定1個(gè)輸入,能夠很容易計(jì)算對(duì)應(yīng)哈希值,但是對(duì)于給定的哈希值,很難計(jì)算其對(duì)應(yīng)的輸入;對(duì)于同一個(gè)輸入,無(wú)論計(jì)算多少次都會(huì)得到相同哈希值;輸入值的微小變化會(huì)引起輸出哈希值巨大變化[17]。典型的哈希算法有MD5、SH1、SH256和SM3。本文采用中國(guó)國(guó)家密碼管理局發(fā)布的SM3,符合國(guó)家安全和監(jiān)管要求。
云計(jì)算的存儲(chǔ)可用性、可伸縮性和按需服務(wù)等特性為區(qū)域醫(yī)療健康數(shù)據(jù)存儲(chǔ)、共享和管理提供便利,但是需要選擇值得信任的第3方才能確保數(shù)據(jù)安全性和完整性。醫(yī)療健康數(shù)據(jù)包含較多隱私數(shù)據(jù),較易受到非法用戶攻擊而導(dǎo)致數(shù)據(jù)泄露。區(qū)塊鏈技術(shù)以去中心化、透明性、開放性、自治性、不易篡改性和匿名性等特征保證了云服務(wù)器中醫(yī)療健康數(shù)據(jù)安全性、完整性和可追溯性?;诼?lián)盟鏈和云計(jì)算建立區(qū)域醫(yī)療健康數(shù)據(jù)安全共享模型,見圖1。該模型中共有7個(gè)實(shí)體,即患者、醫(yī)生、醫(yī)院、保險(xiǎn)公司、養(yǎng)老院、第3方科研機(jī)構(gòu)和政府監(jiān)管部門。將聯(lián)盟鏈和分布式數(shù)據(jù)庫(kù)分別部署在云平臺(tái)上,對(duì)于聯(lián)盟鏈來(lái)說(shuō),患者醫(yī)療健康數(shù)據(jù)需要加密后存儲(chǔ)到區(qū)塊中,包括關(guān)鍵醫(yī)療記錄、治療結(jié)論、核心賬單、存儲(chǔ)信息哈希值及云存儲(chǔ)鏈接地址等。將患者在醫(yī)院診療的完整記錄信息加密后存儲(chǔ)到云平臺(tái)中的數(shù)據(jù)庫(kù)上,同時(shí)還存儲(chǔ)個(gè)人穿戴設(shè)備提供的傳感器數(shù)據(jù)、患者在養(yǎng)老院采集的健康數(shù)據(jù)。醫(yī)療健康數(shù)據(jù)結(jié)構(gòu)復(fù)雜,包括患者基本資料(姓名、年齡、性別、身份證號(hào)、手機(jī)號(hào))、檢驗(yàn)和影像數(shù)據(jù)、電子病歷、賬單以及個(gè)人傳感器數(shù)據(jù),不適合將所有數(shù)據(jù)存儲(chǔ)在聯(lián)盟鏈中,在鏈下適合使用分布式數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ),本文采用MongoDB在云服務(wù)器上存儲(chǔ)完整的患者健康數(shù)據(jù)。
圖1 基于聯(lián)盟鏈的區(qū)域醫(yī)療健康數(shù)據(jù)共享模型
4.2.1 概述 區(qū)塊鏈基礎(chǔ)架構(gòu)分為數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層、激勵(lì)層、合約層和應(yīng)用層[8]。在區(qū)塊鏈基礎(chǔ)架構(gòu)基礎(chǔ)上結(jié)合現(xiàn)有醫(yī)聯(lián)體區(qū)塊鏈分層架構(gòu)[12]設(shè)計(jì)基于聯(lián)盟鏈的區(qū)域醫(yī)療健康數(shù)據(jù)共享架構(gòu),見圖2。
圖2 基于聯(lián)盟鏈的區(qū)域醫(yī)療健康數(shù)據(jù)安全共享分層架構(gòu)
4.2.2 數(shù)據(jù)層 用來(lái)存儲(chǔ)區(qū)域醫(yī)療共享鏈中的區(qū)塊信息,包括區(qū)塊頭和區(qū)塊體。利用“區(qū)塊+鏈”數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)醫(yī)療記錄,通過Merkle存儲(chǔ)狀態(tài)數(shù)據(jù),鏈上每個(gè)節(jié)點(diǎn)均保存一份數(shù)據(jù)的完整備份,在區(qū)塊鏈中的數(shù)據(jù)不易被篡改并能回溯到任意時(shí)刻醫(yī)療記錄。區(qū)域醫(yī)療共享鏈?zhǔn)锹?lián)盟鏈,其中每個(gè)節(jié)點(diǎn)都保存前1個(gè)區(qū)塊的哈希值,按照時(shí)間順序加入鏈中,對(duì)于被授權(quán)用戶來(lái)說(shuō)鏈上數(shù)據(jù)是公開的,但只保存患者元數(shù)據(jù)、對(duì)應(yīng)醫(yī)療記錄數(shù)據(jù)摘要和該條記錄在云平臺(tái)中的索引。
4.2.3 網(wǎng)絡(luò)層 聯(lián)盟鏈基于點(diǎn)對(duì)點(diǎn)(Peer to Peer,P2P)網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)節(jié)點(diǎn)間的數(shù)據(jù)交換與同步,無(wú)中心節(jié)點(diǎn),不受單一節(jié)點(diǎn)或少數(shù)節(jié)點(diǎn)控制,保證網(wǎng)絡(luò)開放性、安全性和穩(wěn)定性。網(wǎng)絡(luò)層主要完成節(jié)點(diǎn)和節(jié)點(diǎn)之間通信,包括P2P協(xié)議、TCP/IP協(xié)議、傳播機(jī)制和驗(yàn)證機(jī)制。聯(lián)盟鏈中的節(jié)點(diǎn)分為產(chǎn)生數(shù)據(jù)的節(jié)點(diǎn)、驗(yàn)證節(jié)點(diǎn)和審計(jì)節(jié)點(diǎn),其中三級(jí)甲等醫(yī)院作為產(chǎn)生數(shù)據(jù)的節(jié)點(diǎn)、二級(jí)乙等醫(yī)院和養(yǎng)老機(jī)構(gòu)作為驗(yàn)證節(jié)點(diǎn),政府監(jiān)管部門作為審計(jì)節(jié)點(diǎn)。
4.2.4 共識(shí)層 共識(shí)機(jī)制是區(qū)塊鏈技術(shù)的核心技術(shù)之一,決定了區(qū)塊鏈中區(qū)塊的生成規(guī)則。常見共識(shí)機(jī)制主要有算力證明(Proof-of-Work,PoW)共識(shí)機(jī)制,權(quán)益證明(Proof of Stake, PoS)共識(shí)機(jī)制,委托權(quán)益證明(Delegate Proof of Stake,DPoS)共識(shí)機(jī)制,實(shí)用拜占庭容錯(cuò)算法(Practical Byzantine Fault Tolerance,PBFT)等。本文采用改進(jìn)的DPoS共識(shí)機(jī)制,由區(qū)域內(nèi)三級(jí)甲等醫(yī)院作為產(chǎn)生數(shù)據(jù)的節(jié)點(diǎn),為醫(yī)療機(jī)構(gòu)、養(yǎng)老機(jī)構(gòu)、保險(xiǎn)公司、第3方科研機(jī)構(gòu)設(shè)置信用積分,存在違規(guī)操作會(huì)扣除相應(yīng)積分,按照規(guī)定正常操作會(huì)獲得積分獎(jiǎng)勵(lì),根據(jù)積分變化對(duì)產(chǎn)生數(shù)據(jù)的節(jié)點(diǎn)和驗(yàn)證節(jié)點(diǎn)進(jìn)行調(diào)整。
4.2.5 合約層 又稱擴(kuò)展層,通過2次開發(fā)或編程提供擴(kuò)展性功能,包括腳本代碼、算法機(jī)制和智能合約。區(qū)塊鏈中的智能合約可視為一段部署在區(qū)塊鏈上、由事件驅(qū)動(dòng)、具有狀態(tài)且獲得多方承認(rèn)、可自動(dòng)運(yùn)行、無(wú)需人工干預(yù)、能夠根據(jù)預(yù)設(shè)條件自動(dòng)執(zhí)行的程序[14]。由系統(tǒng)管理員設(shè)置智能合約執(zhí)行條件,包括向聯(lián)盟鏈中上傳醫(yī)療記錄、下載醫(yī)療記錄、訪問對(duì)應(yīng)云平臺(tái)中的完整醫(yī)療記錄的條件。當(dāng)滿足執(zhí)行條件時(shí)智能合約被觸發(fā)執(zhí)行,完成相應(yīng)操作。
4.2.6 應(yīng)用層 在該層醫(yī)療機(jī)構(gòu)可以實(shí)現(xiàn)醫(yī)療記錄上傳、共享;患者可實(shí)現(xiàn)個(gè)人醫(yī)療記錄查看與授權(quán);政府監(jiān)管部門可實(shí)現(xiàn)醫(yī)療記錄監(jiān)管;保險(xiǎn)公司和第3方科研機(jī)構(gòu)通過查詢客戶端查看共享的醫(yī)療健康數(shù)據(jù)。
4.3.1 數(shù)據(jù)發(fā)布 首先,醫(yī)療機(jī)構(gòu)提出醫(yī)療健康數(shù)據(jù)發(fā)布請(qǐng)求,將發(fā)布的數(shù)據(jù)用私鑰進(jìn)行簽名,請(qǐng)求內(nèi)容包括發(fā)布的數(shù)據(jù)、簽名和公鑰;即將存儲(chǔ)在聯(lián)盟鏈中的數(shù)據(jù)請(qǐng)求廣播到聯(lián)盟鏈中,聯(lián)盟鏈中的其他節(jié)點(diǎn)均收到數(shù)據(jù)發(fā)布請(qǐng)求。其次,由具有確認(rèn)權(quán)限的其他機(jī)構(gòu)進(jìn)行確認(rèn),驗(yàn)證要發(fā)布的數(shù)據(jù)、地址、簽名和公鑰計(jì)算是否匹配,發(fā)布數(shù)據(jù)請(qǐng)求得到確認(rèn)后將醫(yī)療健康數(shù)據(jù)添加到區(qū)塊中。最后,將區(qū)塊添加到聯(lián)盟鏈中完成數(shù)據(jù)發(fā)布,見圖3。
圖3 聯(lián)盟鏈上數(shù)據(jù)發(fā)布過程
4.3.2 數(shù)據(jù)共享 在聯(lián)盟鏈中已注冊(cè)機(jī)構(gòu)均可共享聯(lián)盟鏈中的數(shù)據(jù),如果聯(lián)盟鏈中的數(shù)據(jù)不能滿足其需求,提出共享云平臺(tái)中的數(shù)據(jù)請(qǐng)求,觸發(fā)智能合約自動(dòng)執(zhí)行,檢查請(qǐng)求者簽名及請(qǐng)求者查看的該條醫(yī)療記錄對(duì)應(yīng)在云平臺(tái)中的鏈接地址,找到該條記錄,通過公鑰加密后返回給數(shù)據(jù)請(qǐng)求者,見圖4。
圖4 醫(yī)療數(shù)據(jù)共享過程
醫(yī)療健康是人民群眾最根本的需求之一,實(shí)現(xiàn)區(qū)域內(nèi)醫(yī)療健康數(shù)據(jù)安全共享對(duì)于改善醫(yī)療資源供需不平衡、緩解醫(yī)患緊張關(guān)系、優(yōu)化區(qū)域內(nèi)相關(guān)機(jī)構(gòu)業(yè)務(wù)流程、提高醫(yī)療健康服務(wù)能力具有重要意義[18]。區(qū)塊鏈?zhǔn)且环N全網(wǎng)串行計(jì)算機(jī)制,是一種完全去中心化、分布式的結(jié)構(gòu),將區(qū)塊鏈應(yīng)用在區(qū)域醫(yī)療健康數(shù)據(jù)共享中能夠有效解決數(shù)據(jù)隱私保護(hù)、共享、安全管理以及數(shù)據(jù)可信度等問題。但是區(qū)域醫(yī)療健康數(shù)據(jù)發(fā)布頻率高,區(qū)塊鏈中每次交易都需要得到各個(gè)節(jié)點(diǎn)認(rèn)可,處理效率有限,同時(shí)還會(huì)受到網(wǎng)絡(luò)限制導(dǎo)致?lián)矶潞脱舆t,降低交易效率,如何提高處理效率是亟待解決的問題。