康寧


摘要:醫療數據對患者有著重要的作用,有助于患者的跨機構就醫。為了安全高效地共享醫療數據,提出了一個以患者為中心的醫療數據共享模型。利用區塊鏈技術構建可信的網絡環境;使用變色龍哈希函數連接區塊,實現數據的可編輯性。患者的醫療數據全部存儲于一個區塊中,消除了數據的碎片化。通過醫療數據共享模型,可以實現醫療數據安全高效地共享。
關鍵詞:區塊鏈;醫療數據;數據共享;變色龍哈希函數
中圖分類號:TP311? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)07-0030-04
Abstract: Medical data plays an important role in patients, which is helpful for patients to seek medical treatment across institutions. In order to share medical data safely and efficiently, a patient-centered medical data sharing model is proposed. Using blockchain technology, a trusted network environment is constructed. The chameleon hash function is used to connect blocks to realize the data editing. Patients' medical data are all stored in a block, eliminating the fragmentation of data. Through the medical data sharing model, medical data can be shared safely and efficiently.
Keywords:Blockchain;medical data;data sharing;chameleon hash function
醫療數據貫穿了患者所有的就醫過程,是患者健康狀況的體現,也可以為之后的就醫提供便利,是患者寶貴的財富。醫療數據不能及時共享,造成了醫療資源浪費,醫療效率低下等諸多問題,醫療數據迫切地需要高效共享。
區塊鏈是比特幣[1]的底層技術,巧妙地結合和使用對等網絡[2]、時間戳、加解密[3]、共識機制[4]等多種技術,構造了一個安全可信的分布式環境。區塊鏈擁有去中心化、時序數據、不可篡改、可追溯等特性,為醫療數據共享面臨的隱私安全等問題提供了解決方案。區塊鏈能夠保護醫療數據不被未經授權的查看和修改,還可以避免患者的醫療數據受到可能導致停機的攻擊。區塊鏈技術在醫療領域的應用越來越廣泛。MedRec系統[5]為了改進電子病歷的處理和交換,設計了三種合約來處理數據查詢,并在病人和管理員之間建立連接。Patientory[6]為患者的醫療記錄提供存儲,使用智能合約讓患者控制對其醫療記錄的訪問。MedicalChain[7]使用超級賬本結構來為其系統提供動力,提供一個平臺,使患者有機會與第三方協商訪問或使用他們的醫療數據,系統保護患者的身份且患者可以控制誰訪問他們的醫療數據。
區塊鏈應用于醫療數據的共享仍存在很多問題,如醫療數據的碎片化以及隱私問題,嚴重影響了數據共享的效率。為了實現醫療數據安全高效地共享,本文提出了一個以患者為中心的醫療數據共享模型。利用變色龍哈希函數,實現哈希可修改的區塊——患者塊。患者塊存儲了該患者相關的所有醫療數據信息,集中了患者的醫療數據,由患者完全控制。患者塊的修改以及新醫療數據的生成都會被記錄在日志塊中,日志塊不可修改。
1相關技術
1.1區塊鏈
區塊鏈是一種分布式賬本技術,一種新的信息技術形式,其核心特性是去中心化及共識機制,使得鏈上的信息公開透明、安全可信[8]。區塊鏈主要有三種類型:公有鏈、私有鏈和聯盟鏈。
公有鏈,對公眾開放,任何人都可以加入區塊鏈網絡發送事務請求。當一個節點嘗試執行一個操作,例如添加新區塊,網絡上的所有節點都會得到通知,并參與決策過程。公有鏈一個典型的例子就是比特幣。
私有鏈,一個組織構建,只對組織內員工有效。組織外部的用戶被限制加入這些區塊鏈。然而,由于區塊鏈只存在于組織內部,因此可以認為這種區塊鏈是集中式的。
聯盟鏈,比私有鏈更開放,對公眾的可用性有限。在聯盟鏈中,一組選定的實體參與事務的驗證或區塊的管理。根據管理部門配置的權限,公眾用戶可能具有讀權限,但可能不能參與決策。
1.2 變色龍哈希函數
變色龍哈希函數[9]是一種帶陷門的單向哈希函數。掌握陷門信息的用戶可以容易地計算出一個碰撞,即可以在不改變函數輸出的情況下,隨意改變函數的輸入。而對于沒有陷門信息的人來說,則無法計算出碰撞。
一個變色龍哈希方案由四個算法組成:
系統參數生成算法:輸入一個安全參數λ,輸出系統參數pp。
密鑰生成算法:輸入系統參數pp,輸出一個公私鑰對(PK,SK),其中PK為公鑰,SK為私鑰,也稱為陷門信息。
哈希值生成算法:輸入用戶的公鑰PK,一條消息m和一個隨機值r,輸出一個哈希值h,h=Hash(PK,m,r)。
一個有效的碰撞計算算法:輸入與用戶公鑰PK相關聯的私鑰(陷門信息)SK,一條消息m和一個隨機值r,以及另外一條不同的消息m,輸出一個隨機值r,使得Hash(PK,m,r)=Hash(PK,m,r)。
與傳統哈希函數相比,變色龍哈希函數具有以下特性:
(1)掌握陷門信息的人面對任何給定輸入都可以非常輕易地計算出與原始消息不同的一個碰撞;
(2)對于不知道陷門信息的人而言,變色龍哈希函數通常都是抗碰撞的。
1.3共識算法
1.3.1 POW
工作量證明(Proof Of Work, POW)機制的核心思想是,通過分布式節點的算力競爭來保證數據的一致性和共識的安全性。節點通過解決一個數學難題計算出目標值來獲得記賬的權利。這種機制能夠保證數據的一致性和安全性,但是交易確認效率低并且會浪費大量的算力資源。
1.3.2 POS
權益證明(Proof of Stake,POS)機制一定程度上緩解了POW中資源浪費的問題。計算預定值的難度是基于節點擁有的資產,擁有更多資產的節點將更有可能獲得記賬權。權益證明機制緩解了算力浪費的問題,提高了交易確認效率。但是其本質仍需與POW結合,交易量沒有實質性改善,且由于計算難度的不公平性,可能促使擁有較少權益的節點嘗試攻擊網絡,影響系統穩定性。
1.3.3 PBFT
實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)共識機制[10]的主要目標是解決拜占庭將軍問題,在這個問題中,網絡上可能存在一些惡意節點。PBFT算法要求在有3f+1個節點的分布式系統中,失效節點不超過f。PBFT算法較好地解決了分布式系統中的共識問題,提升了系統效率,比較適用于聯盟鏈。
1.4智能合約
智能合約是在滿足協議規定的條款時自動執行協議的程序。這種合約的產生源于在一個本質上不值得信任的環境中產生信任的需要。智能合約在達到條件時自動執行且不需要任一參與方的干預,進一步增強了網絡的去中心化。智能合約提供了高效的執行效率,在金融、電子商務、醫療保健等領域都有著廣泛應用。
2醫療數據共享模型
系統建立在一個P2P網絡上,連接了所有的醫療服務提供者。網絡中包含兩種類型的對等節點:超級節點和邊緣節點。只有超級節點(如大型醫療機構)參與系統的共識,共同維護一條醫療鏈。
模型架構自底向上可分為數據層、網絡層、共識層、合約層和應用層,如圖1所示。
2.1數據層
2.1.1數據存儲
醫療鏈上有兩種類型的區塊:患者區塊和日志區塊。區塊的結構如圖2所示。
區塊由區塊頭和區塊體構成。區塊頭包括版本號、前區塊哈希、區塊類型、患者標識、時間戳以及Merkle樹根。其中區塊類型用來標識此區塊是患者塊還是日志塊,對于患者塊需要給出患者標識。區塊體保存交易數據的實體。
患者塊允許被修改,但是一旦添加到區塊鏈,區塊的哈希值就不能改變,否則就會使鏈斷掉。因此患者塊不能使用傳統哈希函數(如SHA-256等)來生成標識該區塊的哈希值。變色龍哈希函數使得陷門信息的擁有者(患者自身)能夠找到同一哈希值的不同輸入,因此該模型中使用一種安全的變色龍哈希函數,即公共硬幣變色龍哈希(public-coin chameleon hashing,PCCH)[9]。
隨著數據量的加大,保存區塊鏈的完整副本會給節點帶來巨大的存儲負擔。可以使用數據副本分配策略來將完整的區塊鏈分成若干部分,分布存儲[11]。
2.1.2數據處理
數據處理主要是使用加解密技術、編碼技術、哈希函數、時間戳等來完成索引的生成、用戶賬戶的生成、數據加密、身份標識、區塊的封裝等任務。
(1)索引的生成:使用哈希函數來生成索引,主要包括使用傳統哈希函數對每筆交易進行哈希運算后的交易索引以及使用變色龍哈希函數對區塊進行哈希運算后的區塊索引。
(2)用戶賬戶的生成:首先利用隨機函數生成用戶的私鑰,進而生成公鑰;然后對公鑰進行哈希運算得到哈希值;之后添加校驗碼保證其存在性;最后進行base58編碼得到賬戶地址。用戶的賬戶可以作為其ID對用戶進行唯一標識。
(3)數據加密:使用混合加密來保證數據信息在網絡傳輸中的安全性。混合加密結合了對稱加密和非對稱加密,兼具了二者效率高和安全性高的優勢。
(4)身份標識:使用非對稱加密技術和哈希函數對傳輸的數據進行數字簽名來標識自身身份,防止數據被偽造。
(5)區塊封裝:對區塊體的交易逐層哈希生成Merkle樹根,加上時間戳、公鑰等構成區塊頭,加上數字簽名保證數據可信。
哈希函數防止了數據的修改,為數據完整性的驗證提供了支持;加解密技術保證了數據傳輸過程中私密信息不會泄露;數字簽名保證了數據的原始性。數據處理基于密碼學保證了數據信息的安全性。
2.2網絡層
醫療數據的共享基于P2P網絡。通過P2P網絡,可以在沒有中心服務器的情況下快速同步數據。采用Gossip[12]作為P2P網絡的傳播協議,用以維護信息更新、節點列表更新等。
Gossip有三種通信模式:
(1)Push:A將信息推送給B,B對比自身信息,更新本地信息。
(2)Pull:A向B發送請求,B收到后返回相應信息給A,A對比后更新本地信息。
(3)Push/Pull:在Pull的基礎上,A再將本地比B新的信息Push給B。
系統需要保持穩定的網絡接入,這就需要做到良好的節點發現。共享模型中設立種子節點來支持節點發現。種子節點采用文件的形式進行配置,可以采用Viper[13]作為配置文件加載方案。Viper由計算機愛好者開發,可以在系統運行時動態加載配置信息并完成更新。
在共享模型中存在超級節點,超級節點可以被用作種子節點。因為普通用戶不能參與到數據的一致性共識,數據上鏈等工作需要通過超級節點來完成,所以普通用戶只需要接入超級節點,每次從超級節點獲取地址即可。超級節點需要完成地址數據庫的工作,定時與連接的其他節點通信,并將未響應的節點加入離線列表內,完成節點列表的更新。
2.3共識層
2.3.1共識算法
共識機制是區塊鏈技術的基礎和核心。醫療數據共享模型中參與共識的節點承擔著數據的驗證、傳播和存儲的職責,各節點間需要高效地達成共識,同步數據。共識層封裝了區塊鏈的共識算法,醫療數據共享模型選擇PBFT作為系統的共識算法,該算法的適用性在于:
(1)PBFT算法在吞吐量以及交易確認時間方面有著巨大的優勢,適用于聯盟鏈。醫療數據共享模型維護的醫療鏈屬于聯盟鏈,系統對于交易效率有著較高的要求。
(2)PBFT算法不需要大量的算力,由有限的節點來維護鏈上數據。醫療數據共享模型只由超級節點參與系統共識,普通用戶可以享受區塊鏈服務而不需要參與系統的維護。
(3)PBFT算法要求系統中有超過三分之二的正常節點,醫療數據共享模型中的超級節點都是大型醫療機構和醫療服務提供者,能提供相對安全穩定的運行環境。
2.3.2節點管理
共識層保證了數據的一致性,各節點主要是完成區塊生成工作。日志塊是針對區塊鏈操作的歷史記錄,且不包含敏感信息。患者塊包含了加密的患者數據和智能合約。
2.4合約層
智能合約允許有條件的信息交換。由于患者塊的可修改性,使得存儲于患者塊內的智能合約可以修改和撤銷,從而不會在鏈上保留重復、沖突或脆弱的合約。醫療數據共享模型利用智能合約來實現安全可信的數據共享。
2.5應用層
應用層主要是信息的查詢、新數據的入鏈、患者塊數據的修改等,這些都通過客戶端來實現。客戶端分為管理員客戶端、患者客戶端和查詢客戶端。
(1)管理員客戶端:管理員客戶端管理本地數據(包括醫療鏈副本以及具體的醫療數據),可以增加新的醫療數據等待入鏈。可以通過本地或網絡獲取到醫療鏈信息。可以在得到授權的情況下,查看到患者的加密信息。
(2)患者客戶端:患者客戶端可以通過區塊鏈網絡查詢到鏈上信息,以便于支持數據的驗證。可以對自身患者塊進行編輯,編輯智能合約完成授權信息的修改,編輯加密的醫療信息完成共享數據的修改。編輯后的結果通過請求超級節點來完成對醫療鏈上患者塊的修改。
(3)查詢客戶端:查詢客戶端僅具有查詢功能,可以獲取到醫療鏈上的數據,在得到授權的情況下,可以得到患者的醫療數據。
3結語
區塊鏈技術展現出了巨大的優勢,使得其被廣泛應用于多個領域。本文針對醫療數據共享問題,提出了一種基于區塊鏈的醫療數據共享模型,詳細描述了數據層、網絡層、共識層、合約層以及應用層的實現方法。該醫療數據共享模型可以實現以患者為中心的醫療數據的安全高效共享。
參考文獻:
[1] Nakamoto S. Bitcoin: APeer-to-Peer Electronic Cash system[OL]. https://bitcoin.org/bitcoin.pdf.
[2] Donet J a D, Perez-Sola C, Herrera-Joancomarti J. The bitcoin P2P network[C]. International Conference on Financial Cryptography and Data Security, 2014: 87-102.
[3] 康彥博. 基于區塊鏈的數據安全關鍵技術研究[D].電子科技大學,2020.
[4] Mattila J. The Blockchain Phenomenon-The Disruptive Potential of Distributed Consensus Architectures[J]. ETLA Working Papers, 2016.
[5] Azaria A, Ekblaw A, Vieira T, et al. MedRec: Using blockchain for medical data access and permission management[C]. International Conference on Open and Big Data, 2016: 25-30.
[6] McFarlane C, Beer M, Brown J, Prendergast N. Patientory: A Healthcare Peer-to-Peer EMR Storage Networkv1.1[OL]. https://patientory.com/patientory_whitepaper.pdf
[7] Medicalchain[OL]. https://medicalchain.com/Medicalchain-Whitepaper-EN.pdf
[8] 王超,包先雨,邢軍,等.基于區塊鏈技術的跨境電商貿易鏈與聯盟鏈研究[J].現代電子技術,2018,41(21):169-172.
[9] Ateniese G, Magri B, Venturi D, et al. RedactableBlockchain - Or - Rewriting History in Bitcoin and Friends[C]. IEEE European Symposium on Security and Privacy, 2017: 111-126.
[10] Castro M, Liskov B. Practical Byzantine Fault Tolerance and Proactive Recovery[J]. ACM Transactions on Computer Systems, 2002, 20(4): 398-461.
[11] 賈大宇,信俊昌,王之瓊,等.區塊鏈的存儲容量可擴展模型[J].計算機科學與探索,2018,12(4):525-535.
[12] 武岳,李軍祥.區塊鏈P2P網絡協議演進過程[J].計算機應用研究,2019,36(10):2881-2886.
[13]Viper:Go configuration with fangs[OL]. https://github.com/spf13/viper.
【通聯編輯:代影】