劉榮管,王兆棟,鄧蘭華,陳長源,陳佩江
(1. 臨沂億通軟件有限公司產品開發部,臨沂 276000;2. 臨沂市大數據協會,臨沂 276000;3. 臨沂大學機械與車輛工程學院,臨沂 276000)
近年來,隨著計算機和信息技術的快速發展,電子病歷已基本取代紙質文本,給患者就醫、醫院管理都帶來了極大便利。病歷的電子化既解決了紙質文本的存放和丟失問題,也為科學研究提供了寶貴資源。然而,隨著智慧醫療和醫療大數據應用的快速發展,仍存在一些障礙。一是醫療數據的安全存儲,電子病歷一般由醫療機構集中存儲在單位數據庫,容易受到單點攻擊,導致患者數據丟失和隱私泄露[1];二是醫療數據共享,各醫療機構的信息系統不兼容,溝通不暢,擔心信息泄露,不愿分享信息,形成數據孤島;三是數據所有權,患者是電子病歷的所有者,希望有權管理個人數據,并可以根據請求者身份和內容決定是否授予相應權限。
醫療數據的共享和訪問新技術主要有兩種方法:云計算和區塊鏈。云計算是指把醫療數據上傳到云端實現存儲和共享,有效減少本地存儲成本,方便用戶訪問數據,但這種方法的隱患是如果云端服務器出現故障或受到惡意攻擊,會引起數據丟失或泄露[2]。區塊鏈是一種由許多節點通過一致性協議進行維護的分布式賬本,具備去中心化、可追溯、不可篡改、集體維護等特點,醫療數據可以在互不信任的環境下保證安全和使用的可追溯性,電子病歷等數據可以在眾多醫療機構之間安全傳輸和共享,實現醫療體系的互聯互通,提高醫療服務質量和準確的遠程會診[3],為醫療數據共享所面臨的問題提供了新的解決方法。
電子病歷等醫療數據的共享與應用具有極其重要的意義,本文基于區塊鏈技術,提出一個電子病歷的訪問控制方案,實現醫療數據的共享和隱私保護,促進醫療大數據的應用。
區塊鏈是一種鏈式數據結構,以時間為順序把數據區塊相連接,其核心是分布在P2P 網絡中的賬本,用于存儲交易公共記錄,對所有用戶共享以及驗證交易。
作為一種數據結構,區塊由區塊內結構與區塊間鏈式結構組成。一個區塊結構含有頭信息和體信息。頭信息是元數據,包括時間戳、前區塊哈希值、隨機數、Merkle 根值等,用于驗證區塊,并把其前驅和后繼區塊聯系起來;體信息用于交易序列[4]。哈希值作為區塊的唯一標識,把區塊鏈接起來,前區塊哈希值決定了所鏈接的唯一區塊,最終構成一種鏈狀數據結構。
作為分布式系統,為讓所有主機都能達到一致性,區塊鏈利用了共識機制,常用算法包括:權益證明(PoS)、工作量證明(PoW)、委托權益證明(DPoS)和實用拜占庭容錯算法(PBFT)等。
在委托權益證明區塊鏈中,節點能根據其權益來選擇證人[5],獲得最高票數的前N個節點具有記賬權利,至少有50%的投票利益相關者才有足夠的權力下放。DPoS 的每個客戶端都有權利選擇可信任節點[6],被選中節點可輪流記賬,有效地減少了驗證節點的個數,既能保證網絡安全,又提高共識驗證效率,降低運行成本,更高效、節能和去中心化[7]。
智能合約被定義為是可以自動執行的電子版合同,其實智能合約就是代碼程序,它被部署在區塊鏈區塊中,當一個預先編制好的條件被觸發時,智能合約自動執行該工作,目的是用于驗證和執行合約。智能合約協商簽訂后,如果有用戶發起交易,會向區塊鏈網絡提交智能合約,經網絡傳輸和礦工驗證存儲在特定區塊,向用戶返回地址和接口等信息,可調用合約[8]。合約代碼檢查信息、判斷是否滿足觸發條件,并執行響應、更新狀態。
智能合約適用于各種不同的區塊鏈網絡,并可應用在電子商務、供應鏈優化等具體場景中,智能合約執行的自動化和智能性提高了交易的安全性和效率。
在基于區塊鏈的電子病歷系統中,產生新區塊的醫院賬號、患者號碼和加密的病歷內容寫入區域數據庫。如果某患者在多個機構就診,區域數據庫將存儲若干條記錄。電子病歷類型多樣,文本內容豐富,涉及的數據既有健康數據,也有非健康數據,前者與個人身體狀況相關。有些數據涉及患者隱私,比如個人屬性數據、健康狀況數據、醫療應用數據、醫療資金和支付數據等,這些數據的隱私情況不同,利用價值也有區別。
為有效控制電子病歷訪問,按數據敏感程度把患者隱私信息分為三個等級:一級敏感度最高,對應權值最大,二級、三級的相應權值依次減小。一級隱私信息主要是病人的身份信息,比如:姓名、性別、身份證號、家庭住址等;二級隱私信息主要為患者醫療記錄;三級隱私信息主要為患者診斷輔助數據。將患者的各級隱私逐條分塊處理,加密存儲。
為了實現電子病歷的共享和訪問控制安全,基于區塊鏈設計一個電子病歷共享模型,其中主要有四個實體。
(1)權威中心,即密鑰生成中心。由區塊鏈中的醫院、醫學研究院等機構聯合組成,負責系統主密鑰的生成,并和各機構協商生成對應私鑰[9]。
(2)數據擁有者,即數據的所有者。患者擁有自己的電子病歷數據,一般授權醫生生成病歷,加密存儲在區塊鏈中。在數據共享過程中,負責生成代理重加密密鑰,并發送給代理者[10]。
(3)數據用戶,即各醫療機構。醫療機構如有需求,經授權后發送請求,獲取重新加密電子病歷文本,并可利用私鑰來解密閱讀。
(4)代理者,即執行重加密的節點。根據委托權益證明共識算法所推舉出來的礦工節點作為代理節點,對數據擁有者發送的密文重新加密。
醫療信息化系統擁有大量用戶,各有其特點,可利用用戶特點制定訪問控制模型,更好地滿足醫療電子病歷系統的要求。此模型主要有如下幾個基本要素:用戶、角色、權限和會話;為用戶分配角色,角色具備相應權限,在系統應用中,角色把用戶與權限之間聯系起來,用戶通過其所處角色具有了相應權限。
為做好電子病歷的隱私信息保護,基于用戶角色實現電子病歷的訪問控制,主要過程如下:①根據要求的安全參數,進行系統初始化;②根據系統初始化結果,生成主密鑰,得到主公鑰和主私鑰;③根據主密鑰,生成用戶私鑰;④對電子病歷文本進行加密;⑤對電子病歷文本進行解密。
將制定的訪問控制流程用智能合約來實現,降低了管理員的工作量,提高了隱私數據安全性[11]。本智能合約定義了一系列角色與相關訪問權限,不同角色有不同權限,不同權限用戶可操作不同的數據檢索指令。當數據訪問者的角色滿足權限要求,經身份認證后,方能滿足醫療信息訪問請求。
基于角色的電子病歷訪問控制流程如圖1所示,主要有六個步驟:身份驗證、處理訪問信息、訪問權限驗證、信息量計算、訪問控制策略和訪問記錄修改等。

圖1 基于角色的EMR訪問控制流程
電子病歷訪問控制模型對不同用戶進行了角色和權限的劃分,利用區塊鏈技術,電子病歷數據分塊存儲,具有文件存儲安全、防止數據篡改和盜竊,制定動態訪問策略,可以實現對醫療數據的完全控制,有效保護患者隱私。
為測試電子病歷訪問控制模型的性能,利用訪問行為的準確率來驗證安全性,主要指標有正常訪問行為準確識別率、非法訪問行為準確識別率和總訪問行為準確識別率。
測試數據為公司所用電子病歷數據庫,在實驗中,選取120 次電子病歷訪問行為進行測試。在每次測試中,設置為不同角色,既包括本科室的合法訪問,也有跨部門的非法訪問,其中,符合訪問控制策略的行為,即正常訪問數量為40;不符合控制策略,即非法訪問數量為80。電子病歷訪問控制的測試結果如圖2所示。

圖2 電子病歷訪問行為識別結果
根據圖2 測試結果,經分析可知:正常訪問、非法訪問和總訪問的行為識別準確率分別為97.5%、96.25%、96.7%。同時可發現,盡管電子病歷訪問行為正確識別率不是100%,但由于對每次訪問都有記錄,可以有效約束訪問行為,防止醫療數據隱私泄露。
鑒于醫療大數據應用的意義,電子病歷等醫療數據需要在各醫療機構中傳輸和共享,醫療數據的安全性和患者隱私保護是重要的研究熱點??紤]到區塊鏈的去中心化和防篡改等特點,基于用戶角色,提出了一種電子病歷訪問控制方案,提高醫療信息的隱私保護。
區塊鏈的信息安全以私鑰安全為前提,患者私鑰一旦丟失,就需要重新考慮隱私安全性;本方案是以DPoS 算法為基礎實現的,其效率和應用效果有待進一步提高。此外,由于性能測試采用的公司測試數據庫,電子病歷規模比較小,測試結果難免會受到一定影響,在后面研究中,需要改進算法和模型,增加測試數據集,提高訪問控制效果。