楊白 陳華強


統計表明,2017年僅在美國出現的重大醫療信息泄露事件就有15次,保守估計,共有約300萬名病人的信息被泄露。而在我國,近些年來,這樣的安全事件也頻頻發生。比如2017年9月《法制日報》就報道了一家醫院的服務信息系統遭到黑客入侵,被泄露的公民信息多達7億多條,8000多萬條公民信息被販賣。毫無疑問,衛生醫療信息有著很高的價值,其中包含的患者姓名、年齡、居住地址、電話、病史、銀行賬戶等信息,蘊含著重要的財富價值。正因如此,衛生醫療行業一直是信息竊取的主要目標。另外,衛生醫療信息的爆炸式增長及互聯網的迅速發展,致使衛生醫療機構內網的數據逐漸走向公網,然而衛生醫療行業的信息安全保護起步較晚,導致了衛生醫療信息泄露的事故層出不窮。
衛生醫療信息在傳遞過程中容易被攔截、篡改和泄漏,因此,醫療人員與患者迫切需要一種能夠在各衛生醫療機構之間實現衛生醫療信息共享,并能夠保證患者信息不會泄露。
衛生醫療信息安全設計
基于CA認證的傳統安全機制雖然可以解決大部分環境下的安全問題,但還是存在一定問題。由于其過于依賴CA中心,一旦CA中心被攻破,則無法對人員進行認證,也無法辨別信息真假,將造成不可估量的問題。利用區塊鏈技術信息的去中心化、不可篡改等性質,可以保證衛生醫療信息的安全。因此,本文設計了基于區塊鏈的無中心化安全系統架構。該架構的七層結構分為必須層和可選層,必須層包括數據層、網絡層和共識層,是構建區塊鏈的基礎,可選層包括激勵層、合約層和應用層,分別負責激勵制度的發行和分配、個性化合約的制定和基于區塊鏈技術App的開發,其功能與區塊鏈本身的安全性關系較低。
按照區塊鏈的基礎架構模型,各層的詳細設計如下:
數據層:該層涉及數據存儲的格式和方法。數據層存儲著病人衛生醫療記錄的信息摘要和具體數據在云存儲中的位置,結構相同的區塊通過鏈式結構形成數據的鏈條。系統負責創建創世塊,網絡節點新產生的區塊經過驗證后被加入到主鏈上,形成對交易數據的永久保存。在鏈中通過時間戳來保證各區塊按照時序鏈接,通過哈希函數來保證數據不被篡改,通過公鑰加密實現身份認證,這些技術一起使用保證了安全。
網絡層:整個區塊鏈網絡層可以看作是一個P2P網絡負責節點之間的通信及傳播區塊,同時還包含驗證機制輔助完成區塊的驗證和共識。網絡層的目的是實現網絡中各個節點之間的通信,是一個P2P網絡。
共識層:該層包含系統的共識機制。區塊鏈的一個關鍵優勢是使所有分布式節點達到對數據有效性的一致,這是節點之間相互信任的基礎,因此共識層的設計非常重要。本系統并沒有采用傳統的PoW和PoS機制,而是采取了多重簽名機制。
激勵層:激勵層提供一定的激勵機制鼓勵節點參與區塊鏈的交易驗證工作。區塊鏈的安全性依賴于眾多節點的參與。由于衛生醫療信息系統的區塊鏈不是加密貨幣,所以不能通過挖礦來產生貨幣,以激勵礦工共同維護公共賬本的有效性。在此鏈中法幣將以代幣的形式在鏈中流通,用于支付交易費。在此鏈中,每筆交易都會產生一定量的交易費,交易費由交易的輸入和輸出的差值產生,由在挖礦競賽中獲勝的礦工收集,作為挖礦獎勵。在此鏈中,采用了比特幣的工作量證明機制,每一個固定的時間周期內會產生一個新的區塊。
合約層:合約層繼承了比特幣區塊鏈的設計,封裝了區塊鏈系統的各類腳本代碼、算法。可以利用腳本代碼規定交易的方式和各項細節,通過合約層的腳本技術,可以實現延時支付、擔保交易以及根據外部信息源觸發交易事件等類型的應用。
應用層:在此設計的區塊鏈中,主要是實現病人衛生醫療記錄的發布、保存和共享,實現如下3個主要功能。衛生醫療記錄發布病人在醫院看病或者在醫院等醫療機構做檢查時,醫生會為該病人產生病歷、檢查報告等衛生醫療數據( M)。衛生醫療數據產生后,醫生會為衛生醫療數據生成哈希,并將衛生醫療記錄的摘( Digest) 、哈希用發行方的私鑰( skisser) 簽名后發布到此鏈上。同時將衛生醫療記錄用對稱密鑰( k) 加密,并將加密密鑰用病人的公鑰( pk patient) 加密后一起發送給病人。衛生醫療記錄存儲病人從衛生醫療機構收到了自己的衛生醫療數據后,首先驗證機構的簽名,然后用自己的私鑰解密出衛生醫療數據的加密密鑰,并解密出原始衛生醫療數據及其簽名,然后生成新的加密密鑰將衛生醫療數據及其簽名加密存放到云存儲中保存。衛生醫療記錄共享病人的醫療數據的使用權限完全由用戶自己控制,病人可以通過訪問控制交易授權第3方訪問其部分衛生醫療記錄,并可以隨時收回權限。授權時會將共享記錄在云存儲中的位置、使用權限、使用期限、用第3方使用者公鑰機密的解密密鑰一起寫入區塊鏈中,云存儲管理端會以此設置訪問控制策略。
安全性分析
本文從隱私保護、不可修改性和安全存儲3個方面進行了安全分析。
隱私保護。基于區塊鏈的特性,病人的個人信息將會被唯一哈希值標識,而不像傳統衛生醫療機構中使用用戶姓名或者ID標識。病人的衛生醫療記錄文件訪問權掌握在自己手中,基于密碼學的非對稱加密技術使得用戶可以在每次上傳中重新生成公私鑰對,這樣實現了用戶對每個文件的訪問權限限定。而衛生醫療機構A,則在加入到區塊鏈網絡中時,身份信息已被唯一哈希標識,使其同步的文件具有權威性。本文中區塊鏈網絡本質上是保存文件唯一標識的哈希值,因此即使得到了文件哈希,沒有用戶的私鑰也無法解開任何在區塊鏈網絡中的任何密文信息。
不可修改性。基于區塊鏈的設計,使得上傳到私有網絡中的文件帶有時間戳,任何操作記錄都被同步到所有節點,保證了文件使用透明性。基于區塊鏈特性,每個文件的區塊中保存有上一個所存文件的哈希,要想改變當前文件哈希必須保證私有網絡中超過50%的節點同意,在一個較大規模的區塊鏈網絡中,這幾乎是一件不可能事件。所以,對初始文件的任何改變都會實時顯示在區塊鏈網絡中,保證了本方案私有區塊鏈網絡中文件的不可修改性。
安全存儲。數據的存儲安全是區塊鏈的重要特性,在本文的方案中,病人對自己的衛生醫療記錄具有所有權,并完全控制它的使用。從數據的生產到數據的使用過程都是安全的。衛生醫療記錄的公共信息( 包括衛生醫療記錄元數據、加密記錄的存儲位置、哈希值、存取權限等) 都存儲在區塊鏈上,公共可見無法篡改。衛生醫療機構作為醫療記錄生產方,生成記錄后即對記錄進行哈希,并對哈希值進行簽名,然后用病人的記錄和簽名用病人的公鑰進行加密,并存儲在鏈下的云存儲中,并把記錄的哈希和位置寫入區塊鏈,確保了數據來源的機密性、真實性;云存儲的分布式存儲特點保證數據存儲的安全性。病人收到衛生醫療記錄后,用自己的私鑰解密密文,獲得原始記錄的哈希和簽名,驗證記錄的完整性和真實性,并將原始記錄采用對稱密鑰進行加密,并將其歸集到自己的衛生醫療記錄存儲空間。只有授權用戶才可以獲得解密密鑰,查看真實記錄。敵手即使從存儲中獲得記錄,由于存儲的是記錄的密文,也無法獲得衛生醫療記錄的任何真實信息,確保了衛生醫療記錄數據的安全。
本文設計的區塊鏈為病人的衛生醫療記錄提供了安全的分布式存儲機制,使得病人的衛生醫療記錄的所有權歸病人所有,并由其控制其使用權限,建立起一個共享的、及時的、準確的和廣泛的個人衛生健康數據源。
(作者單位:浙江衛健委信息中心,高博技術與戰略研究所)