關鍵詞:智能合約;訪問控制;電子健康記錄(EHRs) ;智慧康養(yǎng);醫(yī)療信息系統(tǒng)
0 引言
通過身體可穿戴設備和無線傳感器網(wǎng)絡(WSNs) ,醫(yī)療信息系統(tǒng)可以獲得精細化的個人電子健康記錄(EHRs) 。在智慧康養(yǎng)的大背景下,EHRs中包含全面、多層次的健康監(jiān)測信息,醫(yī)生或專家可以分析患者的健康軌跡,做出科學和合理的診斷。EHRs普遍用于配藥、疾病診斷、科學研究等多個醫(yī)療場景[1]。為了最大限度利用患者的EHRs,不同醫(yī)療機構之間EHRs交換和共享是不可避免的。雖然個人EHRs的收集、共享和分析對個人醫(yī)療和流行病預防至關重要,但是在數(shù)據(jù)存儲和共享方面仍存在許多關于EHRs保密性和訪問控制的問題[2]。數(shù)據(jù)所有者失去了對數(shù)據(jù)管理的權限,從而很難保護個人隱私。因此,研究如何實現(xiàn)個體中心的細粒度數(shù)據(jù)訪問控制是有意義的。目前,基于公鑰密碼學的方案被廣泛應用于訪問控制和數(shù)據(jù)交換。橢圓曲線密碼學(ECC) 被用在VANETs中來實現(xiàn)數(shù)據(jù)訪問控制的保密性。非對稱加密還與邊緣計算相結合,實現(xiàn)跨域消息交換。密文策略屬性加密(CP-ABE) [3]是實現(xiàn)細粒度訪問控制最合適的方法,因為它允許數(shù)據(jù)所有者定義數(shù)據(jù)的訪問規(guī)則。然而,CP-ABE存在一些固有缺點,例如依賴復雜的雙線性映射運算以及生成大尺寸的密文?;诮巧脑L問控制(RBAC) [4]和基于屬性的訪問控制(ABAC) 模型[5]是最常用的模型,但是這些模型依賴于半信任的權限驗證器,并且缺乏跟蹤和審計惡意行為的能力。目前智能合約因具有透明性和不可變更性,為改善數(shù)據(jù)訪問控制的可靠性提供了一種前景廣闊的方法。
1 相關工作
區(qū)塊鏈技術為構建安全、可靠的醫(yī)療信息系統(tǒng)提供了一種新穎的解決方案,可用于電子健康記錄(EHRs) 的存儲和安全共享。在文獻[6]中,作者提出了一種去中心化的存儲架構,該存儲架構利用Hyperledger-fabric和可擴展的星際文件系統(tǒng)(IPFS) 來實現(xiàn)電子健康記錄的可靠存儲。但是該方案并未考慮到隱私保護,沒有采用任何針對EHRs的隱私保護方法。為了提高醫(yī)療系統(tǒng)的安全性,Wang等人[7]提出了一種基于區(qū)塊鏈的醫(yī)療系統(tǒng),該系統(tǒng)與無線體域網(wǎng)絡(WBAN) 相互作用,通過Zigbee網(wǎng)絡將病人身上的傳感器連接到醫(yī)院的信息中心,進一步利用區(qū)塊鏈作為數(shù)據(jù)傳輸和存儲方法。為了解決個人EHRs共享服務中缺乏安全性和可靠性的問題,Zhang等人[8]提出了一種區(qū)塊鏈輔助的數(shù)據(jù)共享框架(BHDSF) 以提供細粒度的訪問控制和高效的密文檢索。然而,該方案包含了大量的雙線性映射操作,這將導致大量的計算資源消耗。Guo等人[9]提出了一種使用基于屬性的訪問控制(ABAC) 模型和圖靈完備智能合約的細粒度數(shù)據(jù)訪問控制方案。考慮到隱私保護,甘臣權等人[10]將同態(tài)加083f6049e6d94ddb5c4aecd886f8126d09ee16c6e08b9dc469617130a418b41d密、基于屬性的訪問控制(ABAC) 和智能合約結合起來,設計了一個保護隱私的訪問控制模型。此外,文獻[11]提出了一個基于智能合約的方案,該方案使用三種不同的訪問控制模型整合為一個適用于物聯(lián)網(wǎng)醫(yī)療系統(tǒng)的通用框架中,上述方案并未提供一個實際的方法來整合這三種訪問控制方案。
2 系統(tǒng)的設計與實現(xiàn)
如圖1所示,本文方案的系統(tǒng)架構主要包括幾個組件,例如患者、醫(yī)療保健設備和云服務器。在這里,涉及的組件可以進一步分為三部分:數(shù)據(jù)提供者、基于區(qū)塊鏈的訪問控制單元和數(shù)據(jù)請求者,現(xiàn)對這些組件做如下簡要介紹。
數(shù)據(jù)提供者主要由以下組成部分構成:1) 患者是電子健康記錄(EHRs) 的真實擁有者,將被授予管理其醫(yī)療記錄的權力。2) 智能醫(yī)療設備是可穿戴和便攜式設備,它們被部署用來監(jiān)測患者的生理信息。3) 在本文的方案中,醫(yī)院不僅包括公立醫(yī)院,還包括私立醫(yī)療機構。實際上,電子健康記錄(EHRs) 是由醫(yī)院自行維護與保存的。
數(shù)據(jù)存儲和訪問控制模塊由以下部分構成:1) 云服務器可以分為由醫(yī)療機構維護私有云和由政府維護的公共云,云服務器被部署用來存儲和管理來自數(shù)據(jù)提供者的加密電子健康記錄(EHRs) 。2) 區(qū)塊鏈可以用來將數(shù)據(jù)請求者的訪問請求轉換為區(qū)塊鏈交易,便于對惡意行為進行審計,考慮到隱私保護,本文采用聯(lián)盟區(qū)塊鏈作為底層區(qū)塊鏈平臺。
數(shù)據(jù)請求者主要包括以下角色:1) 醫(yī)療機構可能需要從其他合作機構請求電子健康記錄(EHRs) ,醫(yī)療保健機構通常需要從不同機構獲取同一患者的醫(yī)療保健信息,以便于進行有效診斷。2) 藥劑師和研究人員可能需要獲取診斷和治療記錄以便進行藥物選擇和病理研究。
2.1 系統(tǒng)實現(xiàn)
在該方案中,設計了三種基于智能合約的方法來實現(xiàn)醫(yī)療系統(tǒng)中數(shù)據(jù)所有者和請求者之間的訪問控制。這種訪問控制范式基于RBAC,它能夠準確地將用戶角色與特定訪問權限相關聯(lián)。因此,本章從權限設置和訪問匹配兩個方面詳細闡述這一過程。
1) 權限設置:為了提供靈活的數(shù)據(jù)訪問控制,該方案允許數(shù)據(jù)所有者通過智能合約定義電子健康記錄EHRs的訪問規(guī)則。為了實現(xiàn)細粒度的隱私保護,本文將醫(yī)療記錄R中的屬性轉換為JSON格式的元組(I,P,D),其中I是個人信息部分(如姓名、年齡、地址),P代表生理測量數(shù)據(jù)(如心率、脈搏、血壓),D是診斷結果。該方案允許數(shù)據(jù)所有者對電子健康記錄EHRs 中包含的個人信息進行加密,以保護隱私。需要注意的是,使用對稱加密算法(即AES) 來加密醫(yī)療記錄,即Ens(sk,R) → CT(R)。圖2 展示了EHRs 的一般結構,包括明文和密文格式。此外,我們設計了一個智能合約角色權限管理合約RPMC(Roles PermissionManagement Contract,RPMC) 以實現(xiàn)對系統(tǒng)角色的細粒度權限設置,相應的處理流程可以描述為以下步驟:
(1) Ei (健康監(jiān)測數(shù)據(jù)擁有者)構建權限設置請求PS(Ei ) = {FileId: < #FD > ,Rights:[ < Role ? (i,p,d) >](1 ???n) },其中FileId 是醫(yī)療記錄R 的唯一標識,Rights ∈ PS(Ei ) 代表系統(tǒng)角色的相應權限。此外,PS(Ei)可以格式化為JSON,i ∈ Rights(pord)表示角色Role對R中的I(PorD)部分的訪問權限。
(2) PS(Ei)將作為輸入?yún)?shù)提交給setFilePermission(?) 方法(算法1) ,在算法1 中,定義一個映射變量FilesRoleAccess =< FileId ? (Role,Permission)(1 ???n) >來維護角色與權限之間的關系(第3行)。
(3) PS(Ei) 迭代輸入數(shù)據(jù)集以初始化映射變量FilesRoleAccess且FilesRoleAccess將作為區(qū)塊鏈交易被存儲(第12-13行),從而可以對醫(yī)療記錄R的訪問權限進行細粒度設置。
2) 訪問匹配:當Ei (電子健康記錄請求者)提交Req = {Role,F(xiàn)ileId,Sig,TS(now) }訪問請求時,將調(diào)用權限驗證程序AccessReq(Role,F(xiàn)ileId) 來執(zhí)行訪問匹配操作,相應的工作流程如圖3所示。該算法的后續(xù)步驟可以描述如下:
(1)RMC.VerifyRoleByPubk(Role,Pubk(Ei ) )被AccessReq(?)用以調(diào)用定義的智能合約ABI,使用公鑰Pubk(Ei ) 進行查詢定義的分布式賬本RolesLedger,確認Ei 的系統(tǒng)角色是否為Role。(2) 在Req.{Role}被驗證之后,為了獲取Ei 訪問權限AccessReq(?) 會調(diào)用方法RPMC.getFilePermission(?),以便訪問帶有FileId 標識的記錄。(3) AccessReq(?)通過對象序列化方法,進一步將調(diào)用智能合約RPMC的結果轉換為JSON格式的憑證Proof(access),并將它返回給調(diào)用者。
RPMC 使用方法getFilePermission(?) 提供權限查詢服務。該方法接收FileId和Role作為輸入?yún)?shù)。該方法調(diào)用權限分類賬本FilesRoleAccess來獲取對應的數(shù)據(jù)訪問權限,具體過程如下所示:H(FileId) → Fid,F(xiàn)ilesRoleAccess[Fid] → RoleAccess。之后,程序將進一步迭代RoleAccess來搜索與Role相對應的權限對象perm,然后將匹配的權限perm返回給方法調(diào)用者,將上述過程總結為算法2。
此外,RPMC.obtainFile(?)的設計目的是根據(jù)Ei 的訪問權限來處理目標醫(yī)療記錄。obtainFile(?) 接收Proof(access) 和FileId作為輸入?yún)?shù),以實現(xiàn)基于角色的訪問控制,相應的程序可以描述為以下步驟:
(1) 驗證Proof(access) = {FileId,Rights: < i,p,d > ,Sig }并提交給云服務器以獲取目標記錄CT(R)。(2) 迭代Rights ←< i,p,d > 來設置CT(R) 的可見性。若Rights.{I} == 0,使用哈希函數(shù)將CT(R) 中的單個字段設置為不可見。如果Rights.{I} == 1則表示CT(R) 中的生理信息可以向Ei 展示。需要注意的是,obtainFile(?)對加密的電子健康記錄EHRs執(zhí)行操作,確保個人隱私。(3) Ei 通過調(diào)用RPMC.obtainFile(?)獲得處理后的EHR CT*(R),并通過安全通道從DO請求解密密鑰sk- - ---DO。Ei解密CT*(R)中的字段作為Dec(sk- - ---DO,Section ∈ CT*(R) )。由于智能合約RPMC.obtainFile(?)對CT(R) 中Ei 無法訪問的字段進行哈希處理,意味著原始密文被哈希值所替換。因此,這些字段在解密過程中無法被實體Ei 獲取,保障了數(shù)據(jù)的機密性。
3 系統(tǒng)實現(xiàn)
測試方案依托于自建的集群設備,系統(tǒng)使用以太坊和Docker 2.0在兩臺臺式電腦(Intel(R) Core(TM) i5-11300H 3.10 GHz,RAM 16 GB) 的基礎上構建了一個包含10個對等節(jié)點的區(qū)塊鏈網(wǎng)絡。原型系統(tǒng)由一個物聯(lián)網(wǎng)支持的健康感知模塊、基于區(qū)塊鏈的訪問控制框架和云數(shù)據(jù)處理服務組成。此外,系統(tǒng)還提供了一個基于Node.js的區(qū)塊鏈訪問服務,為調(diào)用已部署的智能合約提供接口。系統(tǒng)利用傳感器設備(即MAX30102心率信號傳感器)來采集用戶的心率數(shù)據(jù),通過程序進行接收和處理,實現(xiàn)了設備終端與用戶的交互作用(如圖4所示)。
用戶通過使用傳感器生成個人的心率監(jiān)測數(shù)據(jù),數(shù)據(jù)采集完成后,通過數(shù)據(jù)串口通信,將Ardunio端的感知數(shù)據(jù)上傳至上位機服務程序,確保了健康感知數(shù)據(jù)的質量與可用性。此外,本文將從云服務的部署、智能合約代理服務部署、數(shù)據(jù)權限控制模塊以及數(shù)據(jù)訪問共享模塊闡述系統(tǒng)的功能實現(xiàn)。
1) 云服務的部署:云數(shù)據(jù)處理服務,旨在實現(xiàn)電子健康記錄(EHRs) 及其相應訪問權限文件的存儲。在這個原型中,我們采用HTTP協(xié)議和第三方網(wǎng)絡庫來構建RESTful API。通過這些已部署的API,醫(yī)療記錄和訪問控制策略可以被同步到區(qū)塊鏈并存儲在云服務器上,圖5展示了云服務的運行狀態(tài)。
2) 合約代理服務:訪問控制框架由智能合約(即RMC、RPMC) 和區(qū)塊鏈代理服務組成。由于該以太坊框架中的智能合約只能由基于Web3.js的JavaScript 程序調(diào)用,系統(tǒng)進一步采用Web3.js智能合約通信庫,調(diào)用部署的智能合約執(zhí)行數(shù)據(jù)存儲和檢索服務。
3) 權限控制模塊:一旦數(shù)據(jù)采集完成,系統(tǒng)能夠通過上位機軟件對數(shù)據(jù)進行確認和分析,并根據(jù)需要進行角色的權限設置(如圖6所示),從而確保數(shù)據(jù)的安全性和受限訪問。
4) 數(shù)據(jù)訪問共享模塊:智能合約RPMC由Solidity 語言編寫被部署與以太坊(Ethereum) 中,執(zhí)行數(shù)據(jù)訪問權限的寫入和讀取操作(如圖7所示)。系統(tǒng)通過Web瀏覽器進行健康數(shù)據(jù)進行訪問。
作品使用8080端口作為通信端口,具體訪問路徑為:http://127.0.0.1:8080/obtainFile?role=?&fileid=?。role 標簽的選取取決于訪問角色,不同role標簽將導向不同的數(shù)據(jù)內(nèi)容,這表示用戶可以根據(jù)具體需求,定制化地訪問和獲取健康數(shù)據(jù)的權限。fileid參數(shù)則對應于所需獲取的數(shù)據(jù)記錄ID。圖8是相同數(shù)據(jù)ID下不同用戶角色的數(shù)據(jù)訪問結果,個人信息對主治醫(yī)生進行公開,對藥劑師公開診斷信息和生理監(jiān)測數(shù)據(jù),而對于外部研究人員只公開診斷信息。
通過上述訪問控制方案,系統(tǒng)不僅能夠確保數(shù)據(jù)的精確檢索還能夠對被訪問數(shù)據(jù)的安全性進行有效控制。
4 結束語
本文設計了一個基于智能合約的訪問控制方案以用于醫(yī)療信息系統(tǒng)中電子健康記錄(EHRs) 。本文將ABAC模型與智能合約相結合,構建了基于屬性機制的用戶角色設置機制。其次,將基于RBAC的訪問控制模型與腳本驅動的訪問控制策略相結合,實現(xiàn)了以用戶為中心的數(shù)據(jù)訪問控制。最后,我們開發(fā)了基于訪問控制框架的原型系統(tǒng),并進一步評估該系統(tǒng)的功能和性能優(yōu)勢。