——王興強(qiáng) 周振宇 孟 娜
隨著信息化水平的逐步提高,電子病歷得到普及,但患者隱私泄露等問題日漸凸顯。2018年10月,騰訊智慧安全發(fā)布《醫(yī)療互聯(lián)網(wǎng)服務(wù)敏感數(shù)據(jù)泄露風(fēng)險(xiǎn)調(diào)查報(bào)告》,指出國內(nèi)多家三甲醫(yī)院接入的第三方醫(yī)療服務(wù)平臺存在嚴(yán)重邏輯漏洞,這可能導(dǎo)致就診患者的個(gè)人信息以及就診信息等泄露。如何保證患者的敏感數(shù)據(jù)不外泄是一個(gè)重要課題。
本研究設(shè)計(jì)了一種敏感數(shù)據(jù)訪問控制模型,該模型采用規(guī)則引擎技術(shù)[1],通過構(gòu)建患者敏感度引擎解決患者的身份、單位、職務(wù)、參與任務(wù)涉密級別、涉密時(shí)間等要素與敏感數(shù)據(jù)的相關(guān)性問題,以提高訪問控制的靈活性和敏感度,滿足不同角色醫(yī)務(wù)人員對患者敏感數(shù)據(jù)的訪問控制需求。
基于角色的權(quán)限訪問控制(Role-Based Access Control,RBAC)模型是一種高效、靈活的訪問控制模型,是對敏感數(shù)據(jù)實(shí)現(xiàn)隱私保護(hù)的重要方法[2]。該模型包括用戶、角色和許可等訪問要素,被授權(quán)許可給角色,角色被授權(quán)給用戶,而用戶不直接與許可關(guān)聯(lián)[3],如圖1所示。
圖1 基于角色的權(quán)限訪問控制模型
例如:用戶是“劉某某”,角色是“住院醫(yī)師”,許可是“書寫病歷”。系統(tǒng)管理員將“創(chuàng)建病歷”“書寫病歷”“瀏覽病歷”“導(dǎo)出病歷”“打印病歷”等權(quán)限授權(quán)給“住院醫(yī)師”,用戶“劉某某”在具有“住院醫(yī)師”角色的同時(shí)擁有了相應(yīng)權(quán)限。
圖2 基于規(guī)則引擎的敏感數(shù)據(jù)訪問控制模型
在醫(yī)院,醫(yī)生、護(hù)士以及醫(yī)技、藥劑、醫(yī)保、質(zhì)管、病案等工作人員都會接觸到電子病歷。其中,醫(yī)生根據(jù)資質(zhì)、職稱等分為住院醫(yī)師、主治醫(yī)師、副主任醫(yī)師、主任醫(yī)師,還可根據(jù)患者所在科室分為本科室醫(yī)師和其他科室醫(yī)師,根據(jù)工作安排分為值班醫(yī)師和會診醫(yī)師等。每種角色的醫(yī)生具有的電子病歷訪問權(quán)限都不相同,同一名醫(yī)生有時(shí)具有多個(gè)角色,因此,電子病歷系統(tǒng)的角色管理較為復(fù)雜[4-5]。
許可授權(quán)分為菜單功能授權(quán)和數(shù)據(jù)訪問授權(quán)。在電子病歷系統(tǒng)中,數(shù)據(jù)訪問授權(quán)是以菜單功能授權(quán)為基礎(chǔ),從敏感數(shù)據(jù)隱私保護(hù)出發(fā),依據(jù)最小權(quán)限原則[6],部分角色具有“瀏覽病歷”權(quán)限,但不具有訪問病歷中某數(shù)據(jù)項(xiàng)權(quán)限。例如,質(zhì)管工作人員可授予“瀏覽病歷”權(quán)限,但不授予瀏覽病歷中身份證號、手機(jī)號、住址等敏感信息權(quán)限。即使是具有訪問患者敏感信息權(quán)限的角色,對于有涉密要求的患者敏感信息,還需要根據(jù)患者的身份、單位屬性、職務(wù)、參與涉密任務(wù)與涉密時(shí)間等信息進(jìn)行綜合判定,從而決定是否授權(quán)訪問。
針對電子病歷系統(tǒng)中的角色管理和許可管理,本研究在RBAC模型基礎(chǔ)上,構(gòu)建了角色引擎和敏感度引擎,設(shè)計(jì)了基于規(guī)則引擎的敏感數(shù)據(jù)訪問控制模型。
基于規(guī)則引擎的敏感數(shù)據(jù)訪問控制模型簡稱RESD-RBAC模型,如圖2所示。
RESD-RBAC模型構(gòu)建了角色引擎,實(shí)現(xiàn)了動態(tài)角色管理,可以根據(jù)用戶身份、用戶職稱、就診信息、排班信息等判定用戶當(dāng)前角色及最大權(quán)限集;同時(shí),構(gòu)建了敏感度引擎,根據(jù)敏感數(shù)據(jù)類型、患者身份信息、患者單位涉密等級、患者職務(wù)涉密等級、參與涉密任務(wù)、涉密起止時(shí)間等判定敏感數(shù)據(jù)項(xiàng)的敏感度等級。該模型進(jìn)行許可授權(quán)分為菜單功能授權(quán)和數(shù)據(jù)訪問授權(quán)兩種情況:一種是根據(jù)角色引擎計(jì)算的最大權(quán)限集,判定哪些菜單功能是被許可的,哪些是無訪問權(quán)限的;另一種是被許可菜單功能中涉及敏感數(shù)據(jù)項(xiàng)的訪問授權(quán),根據(jù)敏感度引擎計(jì)算的敏感數(shù)據(jù)項(xiàng)的敏感度等級以及密鑰對密文數(shù)據(jù)進(jìn)行解密輸出。
該模型有以下實(shí)體集:用戶集(U)、用戶身份集(UI)、用戶職稱集(UT)、就診信息集(VI)、排班信息集(SI)、角色集(R)、操作集(O)、敏感數(shù)據(jù)類型(SC)、患者身份信息(PI)、患者單位涉密等級(PU)、患者職務(wù)涉密等級(PJ)、參與涉密任務(wù)(SM)、涉密起止時(shí)間(ST)、敏感度集(S)、密鑰集(EK)、密文數(shù)據(jù)集(ED)、控制對象集即敏感數(shù)據(jù)項(xiàng)集(SD)。其形式化表示如下:
(1)角色集(R)。
R= {(ui,ut,vi,si)|ui∈UI, ut∈UT, vi∈VI, si∈SI}
(2)敏感度集(S)。
S= {(sc,pi,pu,pj,sm,st)|sc∈SC,pi∈PI,pu∈PU,pj∈PJ,sm∈SM,st∈ST}
(3)敏感數(shù)據(jù)項(xiàng)集(SD)。
SD= {(s,ek,ed)|s∈S,ek∈EK,ed∈ED}
(4)用戶-角色關(guān)系(UR)。
UR?U×R
(5)角色操作授權(quán)(RO)。
RO?R×O
結(jié)構(gòu)化電子病歷的敏感數(shù)據(jù)項(xiàng)訪問控制架構(gòu)如圖3所示。其包含4個(gè)組件:REAC組件、MFAC組件、SEAC組件、SDI組件。該架構(gòu)利用REAC組件實(shí)現(xiàn)用戶的角色請求,利用MFAC組件實(shí)現(xiàn)菜單功能的訪問控制,利用SEAC組件實(shí)現(xiàn)敏感數(shù)據(jù)項(xiàng)的敏感度計(jì)算,利用SDI組件獲取所訪問電子病歷文檔類型的敏感數(shù)據(jù)項(xiàng)列表。
圖3 結(jié)構(gòu)化電子病歷的敏感數(shù)據(jù)項(xiàng)訪問控制架構(gòu)
圖4 電子病歷系統(tǒng)輸出效果
當(dāng)用戶向系統(tǒng)發(fā)出請求訪問某病歷文檔后,REAC組件確定用戶當(dāng)前具有的最大訪問權(quán)限角色,再由MFAC組件根據(jù)角色判斷用戶是否具有訪問病歷文檔的菜單權(quán)限和功能權(quán)限,若沒有則拒絕響應(yīng),若有則將“EMRDOC TYPE”發(fā)送到SDI組件獲取所訪問電子病歷文檔類型的敏感數(shù)據(jù)項(xiàng)列表,將“EMRDOC Request”發(fā)送到EMR數(shù)據(jù)庫獲取經(jīng)過加密處理的電子病歷文檔。SEAC組件計(jì)算該患者電子病歷文檔的每項(xiàng)敏感數(shù)據(jù)項(xiàng)的敏感度后,發(fā)送“Decrypt Request”至解密服務(wù)器,再由解密服務(wù)器根據(jù)敏感度解密敏感數(shù)據(jù)返回相關(guān)信息。
基于規(guī)則引擎的敏感數(shù)據(jù)訪問控制算法是根據(jù)訪問控制架構(gòu)中的訪問控制機(jī)制對敏感數(shù)據(jù)實(shí)施保護(hù),并依據(jù)訪問請求,返回一個(gè)XML電子病歷文檔。敏感數(shù)據(jù)訪問控制算法如下:
Input:用戶請求 Request
Output:返回電子病歷文檔Result.xml。
其中:userInfo為用戶信息,patientInfo為患者信息,schedulInfo為值班信息,action為行為操作,key為密鑰。
算法描述:
role = GetMaxRole(userInfo,patientInfo,schedulInfo);//當(dāng)前用戶具有最大訪問權(quán)限的角色role
If(menufunc in menufuncs(role)) //當(dāng)前進(jìn)行的操作為 menufunc
SDItems = GetSDItems(emrDocType);// emrDocType為文檔類型,SDItems為敏感數(shù)據(jù)項(xiàng)列表
for(SDItem in SDItems)
{
SDLevel=GetSDLevel(SDItem, patientInfo);// SDLevel為敏感數(shù)據(jù)項(xiàng)敏感度等級
SDDecrypted=Decrypt(SDItem, SDLevel, key);// SDDecrypted為解密后的敏感數(shù)據(jù)
Append(SDDecrypted,Result.xml);
}
end if
Return Result.xml。
其中:GetMaxRole()實(shí)現(xiàn)角色的動態(tài)性判定、用戶不同角色授權(quán)以及三級醫(yī)師、值班醫(yī)師、會診醫(yī)師的動態(tài)調(diào)整等,在最小權(quán)限原則前提下,判定用戶多角色狀態(tài)下的最大權(quán)限角色;GetSDLevel()實(shí)現(xiàn)敏感數(shù)據(jù)項(xiàng)的敏感度等級計(jì)算,結(jié)合敏感數(shù)據(jù)類別、患者身份信息、患者單位涉密等級、患者職務(wù)涉密等級、參與涉密任務(wù)、涉密起止時(shí)間等判定敏感數(shù)據(jù)項(xiàng)的敏感度等級。
以某院電子病歷系統(tǒng)應(yīng)用為例,把電子病歷系統(tǒng)數(shù)據(jù)庫作為密鑰的存儲者和管理者,把解密服務(wù)器嵌入電子病歷軟件系統(tǒng)中,把包含加密數(shù)據(jù)的電子病歷文檔文件存儲于醫(yī)院內(nèi)網(wǎng)的病歷服務(wù)器中?;颊哧惸衬骋蛟趫?zhí)行某保密任務(wù)時(shí)意外足跟斷裂就醫(yī),藥劑科工作人員于某某登錄電子病歷系統(tǒng)查看病歷,審核用藥情況?;颊哧惸衬嘲l(fā)生足跟斷裂的時(shí)間、地點(diǎn)、主訴內(nèi)容及陳某某的個(gè)人信息均屬敏感信息,電子病歷系統(tǒng)應(yīng)用該模型輸出效果如圖4所示,圖5則為該病歷文檔結(jié)構(gòu)化存儲片段。
圖5 病歷文檔結(jié)構(gòu)化存儲片段
在電子病歷不斷普及的大背景下,患者敏感信息的保護(hù)得到了普遍關(guān)注。比如:郭子菁等[7]、秦盼盼等[8]從全生命周期視角,分別圍繞醫(yī)療大數(shù)據(jù)和電子健康檔案提出了隱私保護(hù)策略;劉光磊等[9]在改進(jìn)K-匿名算法和L-多樣化匿名算法基礎(chǔ)上,提出了基于敏感屬性聚類的電子病歷隱私保護(hù)算法;李孝利等[10]提出了一種基于角色的時(shí)態(tài)隱私數(shù)據(jù)訪問控制模型和授權(quán)策略,解決了基于XML的時(shí)態(tài)數(shù)據(jù)庫中的隱私數(shù)據(jù)保護(hù)問題;Liu H等[11]、王彤彤等[12]采用區(qū)塊鏈技術(shù),解決了電子病歷共享及隱私保護(hù)問題。本研究在構(gòu)建模型前復(fù)習(xí)了大量文獻(xiàn),發(fā)現(xiàn)目前方法均不適用于多角色用戶條件下不同敏感程度的電子病歷數(shù)據(jù)保護(hù)需求。因此,本研究立足臨床業(yè)務(wù)實(shí)際,構(gòu)建了RESD-RBAC模型,實(shí)現(xiàn)了這一需求。
該模型在RBAC 模型基礎(chǔ)上,增加了對訪問用戶的角色細(xì)化和動態(tài)調(diào)整以及對結(jié)構(gòu)化電子病歷敏感數(shù)據(jù)項(xiàng)的敏感度計(jì)算,符合結(jié)構(gòu)化電子病歷系統(tǒng)的客觀需求。同時(shí),密鑰、加密數(shù)據(jù)及解密服務(wù)三方相互獨(dú)立,確保了加密病歷文件脫離醫(yī)院內(nèi)部環(huán)境就無法解密[13-14]。該模型采用了在電子商業(yè)中被廣泛使用的RSA非對稱加密算法,其特點(diǎn)是加密時(shí)用公鑰,解密時(shí)用私鑰,即使密文被竊取也無法破解。實(shí)踐證明,該模型適合于網(wǎng)絡(luò)環(huán)境下結(jié)構(gòu)化電子病歷信息的安全訪問,提高了訪問控制的靈活性和敏感度,具有良好的可操作性,能夠較好地滿足電子病歷系統(tǒng)中患者敏感信息的訪問控制需求。即使在有保密要求的行業(yè)醫(yī)院或部隊(duì)醫(yī)院,將該模型應(yīng)用于電子病歷系統(tǒng)中,也可以實(shí)現(xiàn)患者敏感數(shù)據(jù)的安全訪問。
但在應(yīng)用該模型時(shí)也需注意,其目前僅在特定醫(yī)院的電子病歷系統(tǒng)中得到應(yīng)用,算法中參與敏感度計(jì)算的內(nèi)容需要根據(jù)不同應(yīng)用環(huán)境進(jìn)一步修訂或調(diào)整,其動態(tài)配置方案也需要深入研究。同時(shí),安全手段的應(yīng)用可能會對業(yè)務(wù)工作效率造成一定影響;算法在不同電子病歷應(yīng)用場景的實(shí)時(shí)性需求也將是下一步研究方向。