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

圖1 患者功能管理用例圖
在本系統中,病人的功能用例組成:
(1)登錄注冊功能。患者進入注冊頁面,在注冊頁面上選擇患者角色,并填寫相關的信息進行注冊。
(2)個人信息管理功能。在該模塊患者可以查看或修改自己的個人信息。還有生成個人密鑰SK的功能,點擊即可按患者角色的相應字段生成個人的密鑰。
(3)個人病歷管理功能。在該模塊患者可以查看自己上傳的病歷信息。并且在上傳病歷的時候對病歷進行對稱加密,然后對加密病歷的對稱密鑰進行密文策略訪問控制加密(CPABE),設置對應的訪問控制結構,即允許誰可以訪問自己的病歷。
醫生的功能用例如圖2所示。

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

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

圖4 總體架構設計圖
3.2.1 用戶注冊
如圖5所示,用戶進入登錄頁面,點擊注冊按鈕,系統會自動跳轉到注冊頁面,用戶選擇自己要注冊的角色完成注冊。

圖5 用戶注冊流程圖
3.2.2 用戶登錄
如圖6所示,用戶登錄系統,輸入相關賬號密碼,判斷該賬號是否已注冊,如果沒有注冊,那么進行注冊后再次進入,輸入賬號密碼;如果已注冊,那么成功進入系統。

圖6 用戶登錄流程圖
3.2.3 生成個人私鑰
如圖7所示,用戶成功登錄系統之后進入系統首頁,點擊右上角的用戶中心,進入用戶信息詳情頁,點擊信息展示下面的生成私鑰按鈕,系統會按角色生成每個用戶獨一無二的私鑰。對于患者,會提取患者的用戶id生成私鑰;對于醫生,會提取醫生的id,醫院,科室,職稱,從業年限生成私鑰。

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

圖8 患者上傳并加密病歷流程圖
3.2.5 醫生訪問病歷
如圖9所示,醫生在搜索欄輸入要查看的病例,找到之后點擊閱讀,系統判斷醫生是否為急救醫生,判斷依據是查看是否是管床醫生或者急救醫生,如果是,醫生可以獲得萬能鑰匙解密;如果不是急救,判斷該醫生的密鑰是否能打開,如果能打開,系統解密獲得SM4對稱密鑰,用SM4密鑰解密病歷,嵌入用戶信息水印;如果不能打開,那么顯示沒有權限。

圖9 醫生訪問病歷流程圖
該系統首先在基于角色的訪問控制之下為患者、醫生和管理員三種角色分別授予對應角色的訪問頁面和操作功能的權限,然后在此基礎上采用對稱加密和密文策略屬性基加密的混合加密方式,即患者可以進一步對上傳的病歷制定訪問控制權限,只有滿足權限的醫生才可以訪問,更好地保障了數據的訪問安全。
圖10給出了系統核心功能實現效果圖,在病歷信息管理頁面根據角色的不同顯示的是不同的操作。患者和管理員進入該信息管理頁面是擁有所有的操作,但是患者登錄時只顯示該患者的所有病歷信息。醫生進入該管理頁面時可以看到所有患者的病歷,但是只擁有下載功能,即醫生只能查看病歷信息,并且在下載的病歷時會嵌入當前醫生的信息。

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