劉相汝
(四川大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,成都 610207)
信息技術(shù)改變了我們的生產(chǎn)生活方式,信息化深入推進(jìn)使得數(shù)據(jù)激增的同時(shí),也導(dǎo)致了“數(shù)據(jù)孤島”問(wèn)題,這對(duì)于數(shù)據(jù)的共享非常不利,尤其在我國(guó)的醫(yī)療數(shù)據(jù)領(lǐng)域,這種情況更嚴(yán)重。醫(yī)院與醫(yī)院之間的系統(tǒng)來(lái)自不同廠商,數(shù)據(jù)采集的方式和標(biāo)準(zhǔn)不統(tǒng)一,數(shù)據(jù)之間不互通,導(dǎo)致患者在就診時(shí)需要重復(fù)掛號(hào),重新檢查,重新在各醫(yī)院錄入電子病歷。與此同時(shí)另一個(gè)尖銳的問(wèn)題也暴露在醫(yī)院之間,即面對(duì)這些患者的醫(yī)療隱私數(shù)據(jù)所帶來(lái)的數(shù)據(jù)安全問(wèn)題,這是值得研究的。關(guān)于醫(yī)療數(shù)據(jù)的泄露問(wèn)題也是層出不窮,美國(guó)Broward Health醫(yī)療保健系統(tǒng)于2022年初披露了一起該系統(tǒng)數(shù)據(jù)泄露事件,其影響人數(shù)高達(dá)百萬(wàn)。我國(guó)近幾年也對(duì)數(shù)據(jù)安全與個(gè)人信息安全給予高度重視。2021年9月《數(shù)據(jù)安全法》正式施行,其中詳細(xì)闡述了數(shù)據(jù)安全生命周期相關(guān)的內(nèi)容?;谏鲜鲆蛩兀疚脑O(shè)計(jì)了基于面向數(shù)據(jù)體系結(jié)構(gòu)和密文策略屬性基加密的電子病歷安全共享系統(tǒng),其目的在于解決病人的電子病歷在各醫(yī)院之間的使用問(wèn)題,即包括病歷的安全存儲(chǔ)、安全共享等。
面向數(shù)據(jù)體系結(jié)構(gòu)(DOA)是一種在大數(shù)據(jù)上發(fā)展的軟件體系結(jié)構(gòu)。在該體系中,主要的組件有數(shù)據(jù)注冊(cè)中心,即通過(guò)對(duì)數(shù)據(jù)的描述完成注冊(cè);數(shù)據(jù)權(quán)限中心,即完成數(shù)據(jù)的訪問(wèn)控制授權(quán);數(shù)據(jù)異常控制中心,即完成對(duì)異常的監(jiān)測(cè);若干數(shù)據(jù)應(yīng)用單元,即將數(shù)據(jù)的接口開(kāi)放到對(duì)應(yīng)端口。面向數(shù)據(jù)安全體系結(jié)構(gòu)(DOSA)的發(fā)展是在DOA基礎(chǔ)之上添加了數(shù)字水印等相關(guān)內(nèi)容。
SHAMIR提出基于身份的加密機(jī)制(IBE)和簽名方案,如果知道某人的相關(guān)身份信息,可以向他發(fā)送只有他能閱讀的信息,并且可以驗(yàn)證只有他能產(chǎn)生的簽名。SAHAI和WATERS提出基于模糊身份的加密機(jī)制(FIBE),該方案使得用于加密密文的私鑰和公鑰之間的身份具有容錯(cuò)性。GOYAL等提出基于密鑰策略的屬性加密方案(KP-ABE),該方案用屬性描述密文,將私鑰與訪問(wèn)結(jié)構(gòu)聯(lián)系在一起,因?yàn)槊枋雒芪牡膶傩允枪潭ǖ?,所以這種方案中加密模式不夠靈活。BETHENCOURT等提出基于密文策略的屬性加密方案(CP-ABE),與KP-ABE不同的是,在該項(xiàng)方案中用屬性來(lái)描述用戶,將訪問(wèn)結(jié)構(gòu)與密文聯(lián)系在一起,訪問(wèn)結(jié)構(gòu)決定了誰(shuí)可以解密密文,因?yàn)樵L問(wèn)結(jié)構(gòu)會(huì)產(chǎn)生多種多樣的方式,所以這種方案的加密模式更加靈活。
由于現(xiàn)在醫(yī)院之間的系統(tǒng)并不互通,而患者往往會(huì)在多個(gè)醫(yī)院之間進(jìn)行醫(yī)療診治,因此實(shí)際應(yīng)用時(shí)會(huì)出現(xiàn)四點(diǎn)弊端:
(1)患者持有的紙質(zhì)病歷易丟失;
(2)電子病歷不流通,數(shù)據(jù)孤島現(xiàn)象;
(3)重復(fù)檢查和診療;
(4)不利于醫(yī)學(xué)研究的發(fā)展。
與此同時(shí),醫(yī)療數(shù)據(jù)有很高的研究?jī)r(jià)值,且隱私等級(jí)很高,但是安全保護(hù)程度不夠,導(dǎo)致患者個(gè)人信息泄露。因此,在構(gòu)建該系統(tǒng)時(shí)要思考的要點(diǎn)是數(shù)據(jù)安全存儲(chǔ)、安全共享以及保證數(shù)據(jù)細(xì)粒度的訪問(wèn)控制。
因此,本系統(tǒng)的總體需求如下:
(1)打破目前醫(yī)療電子病歷系統(tǒng)中存在的數(shù)據(jù)孤島,建立一個(gè)可以實(shí)現(xiàn)在不同醫(yī)療機(jī)構(gòu)中進(jìn)行數(shù)據(jù)共享的電子病歷共享系統(tǒng),使得患者醫(yī)療信息可以跨醫(yī)療機(jī)構(gòu)共享,提升患者的就醫(yī)體驗(yàn)并節(jié)省醫(yī)療資源,達(dá)到患者和醫(yī)療機(jī)構(gòu)雙贏的目的。
(2)在實(shí)現(xiàn)醫(yī)療數(shù)據(jù)在不同醫(yī)療機(jī)構(gòu)之間互聯(lián)互通的基礎(chǔ)上,確?;颊叩尼t(yī)療數(shù)據(jù)隱私安全。
(3)將醫(yī)療數(shù)據(jù)共享的權(quán)限掌握在患者自己的手中,細(xì)粒度的訪問(wèn)控制權(quán)限可以進(jìn)一步保護(hù)數(shù)據(jù)安全。
本系統(tǒng)的用戶角色主要包括患者、醫(yī)生以及系統(tǒng)的管理人員?;颊叩闹饕δ芫褪翘峁┎v到系統(tǒng)中,醫(yī)生的主要功能是能夠查看患者的病歷,系統(tǒng)管理人員的主要功能是維護(hù)各實(shí)體及系統(tǒng)的正常運(yùn)行。
患者的功能用例如圖1所示。

圖1 患者功能管理用例圖
在本系統(tǒng)中,病人的功能用例組成:
(1)登錄注冊(cè)功能。患者進(jìn)入注冊(cè)頁(yè)面,在注冊(cè)頁(yè)面上選擇患者角色,并填寫相關(guān)的信息進(jìn)行注冊(cè)。
(2)個(gè)人信息管理功能。在該模塊患者可以查看或修改自己的個(gè)人信息。還有生成個(gè)人密鑰SK的功能,點(diǎn)擊即可按患者角色的相應(yīng)字段生成個(gè)人的密鑰。
(3)個(gè)人病歷管理功能。在該模塊患者可以查看自己上傳的病歷信息。并且在上傳病歷的時(shí)候?qū)Σv進(jìn)行對(duì)稱加密,然后對(duì)加密病歷的對(duì)稱密鑰進(jìn)行密文策略訪問(wèn)控制加密(CPABE),設(shè)置對(duì)應(yīng)的訪問(wèn)控制結(jié)構(gòu),即允許誰(shuí)可以訪問(wèn)自己的病歷。
醫(yī)生的功能用例如圖2所示。

圖2 醫(yī)生功能管理用例圖
在本系統(tǒng)中,醫(yī)生的功能用例組成:
(1)登錄注冊(cè)功能。醫(yī)生進(jìn)入注冊(cè)頁(yè)面,在注冊(cè)頁(yè)面上選擇醫(yī)生角色,并填寫自己的信息進(jìn)行注冊(cè)。
(2)個(gè)人信息管理功能。在該模塊醫(yī)生可以查看或修改自己的個(gè)人信息。還有生成個(gè)人密鑰SK的功能,點(diǎn)擊即可按醫(yī)生角色的相應(yīng)字段生成個(gè)人的密鑰。
(3)查看病歷功能。在該模塊中,醫(yī)生可以看到所有患者的病歷,醫(yī)生可以根據(jù)患者的身份證號(hào)碼或者姓名進(jìn)行病歷搜索,然后查看對(duì)應(yīng)患者的病歷。點(diǎn)擊查看功能時(shí),系統(tǒng)會(huì)驗(yàn)證當(dāng)前醫(yī)生的密鑰是否滿足訪問(wèn)控制結(jié)構(gòu),如果滿足,那么會(huì)獲得解密的病歷,下載病歷的同時(shí)會(huì)生成包含醫(yī)生個(gè)人信息和病歷信息的數(shù)字指紋嵌入解密的病歷中;如果不滿足,則會(huì)彈出沒(méi)有訪問(wèn)控制權(quán)限。
管理員的功能用例如圖3所示。

圖3 管理員功能管理用例圖
在本系統(tǒng)中,管理員的功能用例組成:
(1)賬號(hào)管理功能。這個(gè)模塊主要包括對(duì)系統(tǒng)內(nèi)部賬戶的注銷,用戶信息的修改功能。
(2)授權(quán)中心管理,生成CP-ABE的PK和MSK,生成SM4對(duì)稱加密密鑰。
(3)關(guān)于本系統(tǒng)基本實(shí)體的管理,包括對(duì)各實(shí)體內(nèi)容進(jìn)行增刪改查的操作。
如圖4所示,該系統(tǒng)基于B/S模式設(shè)計(jì),加密、授權(quán)中心和解密是其主要功能。加密模塊調(diào)用SM4算法為患者上傳的病歷進(jìn)行對(duì)稱加密,然后對(duì)SM4的密鑰進(jìn)行CP-ABE加密。解密模塊為醫(yī)生要查看的病歷進(jìn)行解密操作。首先進(jìn)行CP-ABE解密,如果解密成功則能進(jìn)行下一步SM4解密,如果CP-ABE解密失敗則彈出沒(méi)有權(quán)限,然后用獲取的SM4密鑰進(jìn)行解密獲取病歷,用戶下載的是添加了當(dāng)前用戶信息水印的病歷。授權(quán)中心即生成PK,MSK,SK保證用戶的操作。用戶通過(guò)頁(yè)面操作可以實(shí)現(xiàn)對(duì)應(yīng)的功能。

圖4 總體架構(gòu)設(shè)計(jì)圖
3.2.1 用戶注冊(cè)
如圖5所示,用戶進(jìn)入登錄頁(yè)面,點(diǎn)擊注冊(cè)按鈕,系統(tǒng)會(huì)自動(dòng)跳轉(zhuǎn)到注冊(cè)頁(yè)面,用戶選擇自己要注冊(cè)的角色完成注冊(cè)。

圖5 用戶注冊(cè)流程圖
3.2.2 用戶登錄
如圖6所示,用戶登錄系統(tǒng),輸入相關(guān)賬號(hào)密碼,判斷該賬號(hào)是否已注冊(cè),如果沒(méi)有注冊(cè),那么進(jìn)行注冊(cè)后再次進(jìn)入,輸入賬號(hào)密碼;如果已注冊(cè),那么成功進(jìn)入系統(tǒng)。

圖6 用戶登錄流程圖
3.2.3 生成個(gè)人私鑰
如圖7所示,用戶成功登錄系統(tǒng)之后進(jìn)入系統(tǒng)首頁(yè),點(diǎn)擊右上角的用戶中心,進(jìn)入用戶信息詳情頁(yè),點(diǎn)擊信息展示下面的生成私鑰按鈕,系統(tǒng)會(huì)按角色生成每個(gè)用戶獨(dú)一無(wú)二的私鑰。對(duì)于患者,會(huì)提取患者的用戶id生成私鑰;對(duì)于醫(yī)生,會(huì)提取醫(yī)生的id,醫(yī)院,科室,職稱,從業(yè)年限生成私鑰。

圖7 用戶生成個(gè)人私鑰流程圖
3.2.4 患者上傳并加密病歷
如圖8所示,患者進(jìn)入病歷中心,點(diǎn)擊新增病歷,上傳成功之后,在病歷列表中對(duì)病歷點(diǎn)擊加密,系統(tǒng)對(duì)該病歷使用SM4對(duì)稱加密,患者制定訪問(wèn)控制策略(選擇醫(yī)生的屬性),即系統(tǒng)用CP-ABE加密SM4的密鑰,生成以.cpabe結(jié)尾的加密文件(加密的對(duì)稱加密密鑰),即只有滿足這些屬性的醫(yī)生才能獲得SM4對(duì)稱加密的密鑰。

圖8 患者上傳并加密病歷流程圖
3.2.5 醫(yī)生訪問(wèn)病歷
如圖9所示,醫(yī)生在搜索欄輸入要查看的病例,找到之后點(diǎn)擊閱讀,系統(tǒng)判斷醫(yī)生是否為急救醫(yī)生,判斷依據(jù)是查看是否是管床醫(yī)生或者急救醫(yī)生,如果是,醫(yī)生可以獲得萬(wàn)能鑰匙解密;如果不是急救,判斷該醫(yī)生的密鑰是否能打開(kāi),如果能打開(kāi),系統(tǒng)解密獲得SM4對(duì)稱密鑰,用SM4密鑰解密病歷,嵌入用戶信息水??;如果不能打開(kāi),那么顯示沒(méi)有權(quán)限。

圖9 醫(yī)生訪問(wèn)病歷流程圖
該系統(tǒng)首先在基于角色的訪問(wèn)控制之下為患者、醫(yī)生和管理員三種角色分別授予對(duì)應(yīng)角色的訪問(wèn)頁(yè)面和操作功能的權(quán)限,然后在此基礎(chǔ)上采用對(duì)稱加密和密文策略屬性基加密的混合加密方式,即患者可以進(jìn)一步對(duì)上傳的病歷制定訪問(wèn)控制權(quán)限,只有滿足權(quán)限的醫(yī)生才可以訪問(wèn),更好地保障了數(shù)據(jù)的訪問(wèn)安全。
圖10給出了系統(tǒng)核心功能實(shí)現(xiàn)效果圖,在病歷信息管理頁(yè)面根據(jù)角色的不同顯示的是不同的操作?;颊吆凸芾韱T進(jìn)入該信息管理頁(yè)面是擁有所有的操作,但是患者登錄時(shí)只顯示該患者的所有病歷信息。醫(yī)生進(jìn)入該管理頁(yè)面時(shí)可以看到所有患者的病歷,但是只擁有下載功能,即醫(yī)生只能查看病歷信息,并且在下載的病歷時(shí)會(huì)嵌入當(dāng)前醫(yī)生的信息。

圖10 系統(tǒng)核心功能實(shí)現(xiàn)效果圖
本文給出了關(guān)于電子病歷安全共享系統(tǒng)的設(shè)計(jì)。根據(jù)面向數(shù)據(jù)軟件體系結(jié)構(gòu),結(jié)合密文策略屬性加密,本文進(jìn)行了相關(guān)研究。以電子病歷共享為背景,從功能需求出發(fā),梳理患者、醫(yī)生和管理員的功能用例圖,從基于角色訪問(wèn)控制到密文策略屬性基加密細(xì)化對(duì)數(shù)據(jù)的訪問(wèn),從整體架構(gòu)到各個(gè)用戶角色對(duì)于主要功能的使用流程圖詳細(xì)闡述了該系統(tǒng)的功能。后續(xù)的工作方向是就目前的設(shè)計(jì),研究關(guān)于數(shù)據(jù)泄露之后溯源以及訪問(wèn)權(quán)限撤銷等。