程澤川 沈蘇彬
(1.南京郵電大學計算機學院;2.南京郵電大學通信與網絡技術國家工程研究中心 江蘇南京 210046)
隨著互聯網的快速發展和我國新醫改政策的出臺,電子病歷作為一種新型的患者信息載體,已成為醫療服務不可或缺的工具。它被認為是提高醫療服務質量、加速生物醫學發現和降低醫療成本的有效方法。電子病歷提供的各種范式的模板和輔助工具可以讓醫生從繁重重復的病歷書寫工作中解脫出來,專注于患者的病歷。此外,電子病歷記錄了患者的長期健康數據,為醫生的決策提供了更多的歷史參考,提高了對患者病癥診斷的準確性[1]。因此,醫療服務需要一個足夠安全和靈活的電子病歷管理平臺。傳統電子病歷管理方式是依賴于中心服務器[2-3],電子病歷由中心服務器集中管理,這種方式交互方便易于管理,但同時也存在信任危機的問題,基于服務器的傳統電子病歷管理系統架構受制于傳統信任模式,醫生等高權限用戶的操作缺乏可審計性,無法真正建立用戶可信任的電子病歷操作的監管機制[4]。
區塊鏈技術[5-6]是一種去中心化的信任管理機制,具有去中心化、不可篡改、基于多方共識的信任機制等特點,由于其顯著的特點,這項技術已被應用到了自主交易、行為監管和增強安全方面。此技術可以用來解決基于服務器的傳統電子病歷管理方式所存在的問題。例如:可以通過區塊鏈上的可信交易定義用戶的操作來解決信任危機的問題,將得到驗證和信任的可信操作記錄在公共賬本上[7-8]。由上述可知,基于區塊鏈的電子病歷管理技術的研究具有十分重要的價值。
根據國家衛生健康委員會規定電子病歷的所有權歸患者,但目前基于區塊鏈的電子病歷管理技術方案中[9-11],大多都未解決患者無法根據自身敏感性需求細粒度控制電子病歷操作權限的技術問題。為了解決這個問題,該文設計了基于患者敏感性需求的細粒度控制方式,并基于以上解決方案設計了與其相適應的去中心化電子病歷可信管理方法。最后在以太坊平臺上進行了仿真實驗驗證方法的可行性與正確性。
傳統的基于服務器的電子病歷管理系統功能全面、交互方便,不僅可以方便醫生記錄患者病歷信息,而且便于醫療人員挖掘數據背后的價值,但對電子病歷管理的安全方面缺乏一定的考慮,存在信任危機等亟待解決的技術問題。上述問題隨著區塊鏈技術的興起有了相應的解決思路。目前,國內外將區塊鏈技術應用于電子病歷管理的相關技術方案如下,徐捷等人[9]提出基于以太坊的醫療記錄安全存儲方案,通過設計文件同步合約、授權合約和跨域獲取合約保證用戶隱私和數據分享功能。薛騰飛等人[10]設計了一種基于區塊鏈的醫療數據共享模型,通過提供傳感機制,解決了醫學機構之間數據的檢查、保存和同步問題。Dagher GG等人[11]提出一個Ancile框架,該框架采用以太坊平臺,將電子健康記錄的所有權和控制權交給數據擁有者,開發并利用多種智能合約以及采用代理重加密技術來進一步保護電子健康記錄的隱私。
通過上述方案分析可知,目前大部分基于區塊鏈的電子病歷管理技術方案中尚未解決患者無法根據自身敏感性需求細粒度控制電子病歷操作權限的技術問題。因為國家衛生健康委員會規定,電子病歷涉及患者個人的隱私敏感信息,信息的所有權一定是歸患者所有,要取得電子病歷的操作權限一定要經過患者的知情同意。目前,大部分方案中,首先對獲得電子病歷操作權限的技術方案設計有兩種:第一種對電子病歷的操作無需經過授權,例如:薛騰飛等人提供的方案;第二種對電子病歷的操作權限由患者控制,例如:Dagher GG 等人提供的方案,其控制方案中,如不同主體需要對電子病歷的進行操作,會先向患者申請授權,患者將授權碼發送給主體,獲得授權碼的主體擁有對電子病歷的操作權限,即可以對電子病歷進行查詢、增加、修改的操作。這兩種方案患者都無法細粒度控制電子病歷的操作權限,因為患者細粒度控制電子病歷的操作權限是指根據自身意愿對不同主體控制的是不同的具體的操作權限,而目前要么是直接無法控制,要么控制的是不具體的粗粒度的權限,例如:Dagher GG等人提供的方案中獲得授權碼的主體擁有對電子病歷的所有操作權限,并沒有根據患者意愿控制具體的操作權限;其次未考慮到患者敏感性需求,疾病作為敏感屬性字段具有一定的特殊性,從而決定了不同電子病歷對于個人而言敏感程度大不相同且差異性較大[12],例如:傳染性疾病電子病歷的敏感程度就比非傳染性疾病電子病歷的敏感程度高,所以患者需要根據自身敏感性控制其他主體對于電子病歷的操作,但是目前大部分方案中未根據患者敏感性需求控制電子病歷的操作權限。
針對目前基于區塊鏈的電子病歷管理技術方案中存在患者無法根據自身敏感性需求細粒度控制電子病歷操作權限的技術問題,我們首先研究分析患者敏感性需求和基于區塊鏈的細粒度控制,最后設計了基于患者敏感性需求的細粒度控制方式。
患者敏感性需求,指的是對患者而言,因為不同的電子病歷其敏感程度對患者來說是大不相同的,所以不同用戶能夠訪問敏感度高的電子病歷還是敏感度低的電子病歷,需要患者的知情同意。
接下來對患者敏感性需求所涉及的關鍵對象如何量化表示進行研究。首先不同病歷對患者而言敏感度是不同的,本質是因為病歷中所記錄的是不同的疾病,所以其實是不同疾病記錄對患者而言敏感度是不同的。可以先對不同疾病敏感性進行量化分級。該文選取8種典型且具有明顯差異性的疾病為例來進行疾病敏感性的量化分級。參照世界衛生組織的《國際疾病分類》標準來判斷疾病的嚴重程度以及疾病是否屬于傳染病,將傳染病作為高敏感性等級疾病記錄為I,其余的疾病根據疾病的嚴重程度從高到低排序,然后劃分為3個等級,記錄為II、III、V。
根據上述的疾病敏感性量化分級,對病歷敏感性進行量化分級,不同病歷敏感性等級與病歷記錄的疾病敏感性等級大小一致。為了滿足患者的敏感性需求,由患者控制不同的用戶能夠訪問敏感性等級高的電子病歷還是敏感性等級低的電子病歷,對不同用戶增加等級屬性,并對等級屬性進行量化分級。根據患者敏感性需求定義分析中需要注意的兩點,普通用戶和醫生用戶是不同的,醫生用戶是為醫療服務的執行者。對普通用戶的等級屬性量化分級時,患者按照自身意愿對普通用戶的等級屬性直接進行分級,普通用戶的等級屬性根據患者意愿劃分出I、II、III、IV 這4 種大小等級。對醫生用戶的等級屬性量化分級時,因為患者本身不具備醫療專業知識,所以其無法判斷醫生用戶是需要訪問敏感性等級高的電子病歷還是敏感性等級低的電子病歷。不同醫生負責不同的疾病治療服務,由醫院將醫生所負責治療領域內的最高敏感性等級疾病的級別作為醫生用戶的等級屬性的級別。綜上所述,患者敏感性需求可以理解為,當用戶訪問患者電子病歷時,因為要滿足患者敏感性需求,其只能夠訪問病歷敏感性等級小于等于自身等級屬性級別的電子病歷。
細粒度指的是將對象加以細分,從而得到更科學合理的新對象,在此,為對用戶訪問電子病歷的操作對象加以細分,在去中心化電子病歷可信管理場景中,將其分為增加、查詢和修改這3個新的對象。
細粒度控制指的是根據增加、查詢和修改這3 個新對象維度對用戶的訪問授權進行控制。與粗粒度控制相比,細粒度控制可以減少過度授權(例如使不具備醫療專業知識的普通用戶獲得修改電子病歷的權限)等問題的出現。
基于區塊鏈的細粒度控制是將區塊鏈技術與訪問控制機制相結合。在細粒度控制方面可以根據具體的訪問控制機制對訪問權限和訪問控制策略進行定義設計,訪問權限所包含的操作維度是細粒度的,分別為增加、查詢和修改。利用區塊鏈不可篡改、可追溯等特性,可以將訪問權限和訪問控制策略等信息存儲到區塊鏈上,上鏈的數據是經過多方共識并驗證的,所以可以保證在去中心化的環境中,鏈上的訪問權限和訪問控制策略等信息是公開可信的。通過可信的訪問控制策略授予可信的訪問權限,以此達到基于區塊鏈的細粒度控制。
綜上所述,為了滿足基于區塊鏈的細粒度控制,需要選擇合適的訪問控制機制與區塊鏈技術相結合。常見的訪問控制機制有[13]自主訪問控制(Discretionary Access Control,DAC)、強制訪問控制[14](Mandatory Access Control,MAC)、基于角色的訪問控制[15](Role-Based Access Control,RBAC)和基于屬性的訪問控制[16](Attributed-base Access Control,ABAC)。在去中心化電子病歷管理場景中,區塊鏈用戶間的數據交互大多處于不同的管理域中,因此很難集中制定和管理一套統一標準的訪問控制策略。DAC 模型、MAC 模型和RBAC 模型中,區塊鏈用戶都需要申請一個身份的標識,這對于不同組織來說管理十分復雜,同時隨著區塊鏈用戶的增多,需要維護的數據也會持續增加,但ABAC模型則無上述問題,其對于主體、客體和訪問控制策略,都采用統一的屬性來定義,訪問控制策略會根據區塊鏈用戶的屬性進行統一的處理,無需關注區塊鏈用戶所處管理域和其具體的身份,只要區塊鏈用戶屬性滿足訪問控制策略就可獲得權限,因此ABAC 更適合去中心化電子病歷管理,所以可以選擇基于屬性的訪問控制機制作為基于區塊鏈的細粒度控制中的訪問控制機制。
通過上述研究分析確定了患者敏感性需求和基于區塊鏈的細粒度控制,接下來將其結合設計基于患者敏感性需求的細粒度控制方式。首先,確定控制方式所涉及的相關實體,包括主體、客體、權限、客體擁有者、客體所有權擁有者、環境;其次,確定屬性,包括實體屬性和環境屬性;最后,確定訪問控制策略。
主體為電子病歷的訪問者。客體為電子病歷。權限為主體可以對客體進行的操作。客體擁有者為醫院節點。客體所有權擁有者為患者節點。環境為不同實體所參與的區塊鏈交易。
將用戶等級作為主體的屬性值,醫生主體等級由醫院私鑰加密,患者代理主體等級則由患者私鑰加密,主體屬性值還包括其對客體所請求的具體操作和其發起請求的簽名,以及自身的虛擬ID。客體的屬性值為病歷敏感性等級,病歷敏感性等級由患者私鑰加密,并且與統一的疾病敏感性等級相對應。權限的屬性值為P={p1,p2,…,pn},表示主體可以對客體所做操作的集合,集合元素為具體的操作,由患者私鑰加密。環境的屬性值為不同實體在區塊鏈交易中的對應關系。上述不同實體的屬性值由相關實體私鑰加密意味著將訪問控制的關鍵屬性值與區塊鏈節點進行捆綁,其目的是為了保證訪問控制的關鍵屬性值是區塊鏈節點自身所設置,其他區塊鏈節點也不可對訪問控制的關鍵屬性值“作假”。
訪問控制策略由醫院節點共同制定。訪問控制策略由主體發起的請求交易觸發。首先驗證環境屬性值交易參與方對應關系是否正確等,主體簽名屬性值是否真實;其次驗證權限屬性值是否真實以及主體具體操作屬性值是否存在于權限屬性值中;最后驗證解密后的主體等級屬性是否大于等于客體病歷敏感性等級屬性。訪問控制策略執行完畢返回為真,就將交易作為憑證存入本地區塊鏈。之后主體可根據上鏈后的交易憑證訪問客體,客體擁有者實體通過作為憑證的交易是否為本地區塊鏈交易的子集來判斷主體是否擁有權限。通過此控制方式達到了根據患者敏感性需求細粒度控制電子病歷操作權限的目的。
根據第2章節基于患者敏感性需求的細粒度控制方式的設計,該文在以上前提下設計了與控制方式相適應的基于區塊鏈的電子病歷可信管理方法。
電子病歷可信管理是提供不同主體對電子病歷的可信增加、可信修改和可信查詢的服務。具體的應用場景如下:第一種類型的操作可信增加的應用場景,醫生有新增電子病歷的請求,通過區塊鏈來以去中心化的方式發布可信增加操作請求;第二種類型的操作可信修改的應用場景,醫生有修改患者相關電子病歷請求,通過區塊鏈來以去中心化的方式發布可信修改操作請求;第三種類型的操作可信查詢的應用場景,醫生或患者代理有查看患者相關電子病歷請求,通過區塊鏈來以去中心化的方式發布可信查詢操作請求。上述請求成功發布之后需要在無第三方監管的情況下完成電子病歷的可信使用。
基于區塊鏈的電子病歷可信管理方法設計,首先,需要明確在去中心化的場景中如何將對電子病歷的操作請求表示為區塊鏈上的“信任操作”,以此作為訪問電子病歷請求過程的真實性和合法性驗證依據。其次,需要明確在去中心化的場景中如何將表示操作請求的“信任操作”上鏈,以此保證在電子病歷存儲方醫院節點進行權限驗證的過程中,有可信的驗證依據。
表示對電子病歷操作請求的“信任操作”定義可以參照比特幣中“電子貨幣”交易行為的定義,同時需要注意操作請求需要與區塊鏈節點身份進行捆綁,其目的是區塊鏈節點不可否認是由自身發起的對電子病歷的操作請求的行為,其他區塊鏈節點也不可以冒充“行為發起人”的身份。
參照比特幣系統中未花費交易輸出(Uspent Transaction Output,UTXO)模型的設計,“電子貨幣”的基本定義是一條環環相扣的數字簽名鏈。當“電子貨幣”的所有者想要將“電子貨幣”轉移給他人時,操作過程是在數字簽名鏈的末端連接一個新的數字簽名,簽名的具體內容包括獲取“電子貨幣”最后一筆交易的哈希值和轉移目標賬戶的公鑰。在價值轉移過程中,所有賬戶都可以通過在上一筆交易中對賬戶的錢包地址進行數字簽名來證明其對“電子貨幣”的所有權,其他人可以驗證該數字簽名和公鑰的匹配性。
通過對比特幣系統中的UTXO 模型的分析,接下來對表示對電子病歷操作請求的“信任操作”的數據結構進行設計。在去中心化的電子病歷可信管理場景中,不同區塊鏈用戶根據自身所需發起對電子病歷的操作請求,將電子病歷加密地址作為輸入,其是在新增電子病歷時由醫院提供并用對稱密鑰加密,表明是針對具體的電子病歷的操作請求。同時,用戶為了滿足患者基于自身敏感性需求細粒度控制電子病歷操作權限的需求,需要將第2 章節中基于患者敏感性需求的細粒度控制方式中各個實體的屬性值作為輸出,比如醫院節點、醫生節點、患者節點和患者代理節點等虛擬ID,患者代理節點即為與患者有關的各種利益相關者,如患者的家屬。還有主體等級、病歷敏感性等級、主體對客體所請求的具體操作和權限屬性加密值。最后對上述輸入輸出進行Hash,然后由發起對電子病歷操作請求的區塊鏈節點私鑰進行數字簽名,得到操作請求的唯一數字簽名標識。此過程也就意味著完成了將區塊鏈節點操作請求行為和區塊鏈節點身份的捆綁。
表示操作請求的“信任操作”上鏈需要完成三方面工作。首先是組裝“信任操作”的區塊結構和鏈結構的設計,其次是選定合適共識機制保證多方節點鏈上“信任操作”的一致性,最后是“信任操作”的驗證。
(1)章節完成了對表示操作請求的“信任操作”的數據結構設計,接下來對塊結構進行設計。參照比特幣中區塊結構的設計,將區塊劃分為區塊頭和區塊體。每個區塊頭包含3 組元數據:第一組元數據是前一個區塊的哈希值,用以連接父塊;第二組元數據是隨機數、時間戳以及與記賬權競爭相關的難度值;第三組元數據是Merkle樹的根節點。區塊體存儲經過驗證的交易數據,是以Merkle 樹結構存儲交易的具體內容。為了驗證區塊中某筆交易的存在需要經過大量的哈希計算。由于該文在訪問權限驗證時需要確認區塊中是否存在交易憑證。因此,為了避免在訪問權限驗證時進行大量的哈希計算,在每個區塊中只存放一筆交易也就是3.1章節設計的“信任操作”,同時將區塊結構只分為一個部分區塊頭。從下文可知共識機制采用拜占庭容錯的方式,所以區塊頭中元數據無難度值和隨機數,具體的區塊結構如圖1所示。

圖1 基于區塊鏈的電子病歷可信管理的區塊結構
完成上述區塊的設計,接下來對區塊所組的鏈結構進行設計分析,同樣參照比特幣的鏈結構,比特幣中的鏈結構是由前后區塊的哈希值鏈接而成并且每個區塊都被加蓋時間戳,根據比特幣鏈結構的特點,利用上述區塊中的父哈希值將區塊鏈接成為鏈,如圖2所示。

圖2 鏈結構
3.2.2 共識機制的選擇
隨著交易量的不斷增多鏈的長度也會不斷地延伸,那么如何解決多方節點鏈上“信任操作”數據的一致性?比特幣是通過多方共識機制來解決的。目前已經提出并可以落地使用的共識機制如下:比特幣使用的工作量證明(Proof of Work,PoW)的共識機制,此工作量證明的共識機制隨著鏈的不斷增加較大的消耗CPU 算力;權益證明(Proof of Stake,PoS)機制;授權股份證明機制(Delegated Proof of Stake,DPoS);拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)機制。考慮到該文中所提出的基于區塊鏈的電子病歷可信管理中所構造的區塊鏈是私鏈,并且大量的節點身份是患者或患者代理,其具有的CPU算力不強大,要考慮以較小的代價維持區塊鏈系統的運行,所以該文選用拜占庭容錯的共識機制來解決多方節點鏈上數據的一致性。
3.2.3 “信任操作”的驗證
根據上文可知,每個區塊中只有一個“信任操作”行為,所以對其進行真實性和合法性的驗證工作可以直接放在對區塊的真實性驗證過程中進行。第一種“信任操作”是由醫生節點創建的對患者電子病歷操作請求的交易;第二種“信任操作”是由患者代理節點創建的對患者電子病歷操作請求的交易。以上兩種“信任操作”組裝成的區塊上鏈和驗證的流程不完全一樣,接下里對其分別闡述、解析。
為了符號化描述以下區塊真實性驗證方法的步驟其所用的相關符號定義如表1所示。
不吃早餐:一日三餐,早餐最重要。老祖宗傳下的養生規律告訴我們,早餐要吃而且要豐富,除了蛋白質、礦物質、微量元素還要有維生素。因為維生素可以促進肝組織修復,早餐不可過飽否則也會傷肝。

表1 驗證符號定義
(1)醫生節點發起操作請求,創建“信任操作”組成區塊并驗證的流程如下。
步驟1:某一區塊鏈參與節點患者實體入院檢查身體時,由醫院實體將患者虛擬ID 為PID 還有自身虛擬ID 為HID 以及為患者分配的醫生的虛擬ID 為DID聯合成Msg廣播。
步驟2:醫生節點對電子病歷發起操作請求,創建“信任操作”,將其組裝成區塊,廣播該區塊。
步驟3:其他參與方監聽到廣播的區塊后,首先根據區塊中的交易觸發訪問控制策略。執行訪問控制策略內容,根據醫生的DID 作為主鍵來在本地保存的集合Mp 中獲取其公鑰PkDID的值,根據公鑰去解密交易簽名看是否能解密成功。符號化如公式(1)所示。
步驟4:驗證交易參與方之間的對應關系是否正確,即驗證交易字段中的患者PID 以及醫院HID 和醫生DID 是否在本地Msgs 集合中也存在。符號化如公式(2)所示。
步驟5:驗證權限屬性,主要驗證權限屬性是否由患者私鑰加密,根據交易中患者PID 作為主鍵來在本地保存的集合Mp 中獲取其公鑰PkPID的值,利用患者公鑰PkPID解密權限屬性加密值,解密成功則可以證明權限屬性具有真實性,同時驗證交易中的具體操作是否存在于權限屬性值中。符號化如公式(3)所示。
步驟6:驗證醫生等級是否符合患者敏感性級別需求,即根據交易中醫院HID 作為主鍵來在本地保存的集合Mp
以上步驟所描述的是醫生節點執行可信操作并且創建“信任操作”組裝成區塊和驗證區塊真實性的所有流程,在驗證都通過后,則認為區塊中的“信任操作”可以作為可信的權限憑證,附上簽名,將收到的區塊和簽名再次廣播。根據實用拜占庭容錯機制,若新區塊通過至少2/3 參與方的驗證,就保證多方節點鏈上“信任操作”的一致性。比如:醫生節點的操作請求是查詢或修改,則在區塊上鏈之后,醫生根據區塊中的交易憑證查詢或修改電子病歷,存儲電子病歷的醫院節點判斷權限憑證是否為本地區塊鏈交易的子集,通過則用醫生節點公鑰加密對稱密鑰并和電子病歷加密地址聯合廣播,醫生節點根據私鑰獲取對稱密鑰解密電子病歷地址,并根據地址發起訪問請求,醫院節點操作數據庫滿足醫生節點查詢或修改電子病歷的請求。如醫生節點的操作需求是增加,則在區塊上鏈之后,醫生節點根據區塊中的交易憑證增加電子病歷,交易中的醫院節點判斷交易憑證是否為本地區塊鏈交易的子集,通過則持久化存儲電子病歷滿足醫生節點新增電子病歷的請求。
(2)患者代理節點發起操作請求,創建“信任操作”組成區塊并驗證的流程如下。
步驟1:當某一患者代理查看患者電子病歷時,創建“信任操作”并組裝成區塊,廣播該區塊。
步驟2:其他參與方監聽到廣播的區塊后,首先根據區塊中的交易觸發訪問控制策略。執行訪問控制策略內容,根據患者代理的PGID作為主鍵來在本地保存的集合Mp 中獲取其公鑰PkPGID的值,根據公鑰去解密交易簽名看是否能解密成功。符號化如公式(5)所示。
步驟3:驗證權限屬性,主要驗證權限屬性是否由患者私鑰加密,利用患者公鑰PkPID解密權限屬性加密值,解密成功則可以證明權限屬性具有真實性,同時驗證交易中的具體操作是否存在于權限屬性值中。符號化如公式(6)所示。
步驟4:驗證患者代理等級是否符合患者敏感性級別需求,即利用患者代理公鑰PkPGID和患者公鑰PkPID以及患者代理等級和病歷敏感性等級驗證解密后的患者代理等級是否大于等于病歷敏感性等級。符號化如公式(7)所示。最后,驗證區塊指向前區塊的哈希值是否正確。
以上步驟所描述的是患者代理節點查看患者電子病歷并且創建“信任操作”組裝成區塊和驗證區塊真實性的所有流程,在驗證都通過后,則認為區塊中的“信任操作”可以作為可信的權限憑證,附上簽名,將收到的區塊和簽名再次廣播。根據實用拜占庭容錯機制,若新區塊通過至少2/3參與方的驗證,就將該區塊加入鏈中。患者代理節點根據區塊中的交易憑證查詢電子病歷,存儲電子病歷的醫院節點判斷權限憑證是否為本地區塊鏈交易的子集,通過則用患者代理節點公鑰加密對稱密鑰并和電子病歷加密地址聯合廣播,患者代理節點根據私鑰獲取對稱密鑰解密電子病歷地址,并根據地址發起訪問請求,醫院節點操作數據庫滿足患者代理節點查詢電子病歷的請求。
該節目的是根據第2 節和第3 節基于患者敏感性需求的細粒度控制方式和電子病歷可信管理方法的設計在具體的區塊鏈實驗平臺上進行仿真測試。
該文基于區塊鏈的電子病歷可信管理系統中,核心功能為病歷管理,即給用戶提供對電子病歷的可信查詢、可信增加和可信修改等服務,整體是以去中心化的方式進行的。主流的區塊鏈開發平臺有以太坊平臺和超級賬本。以太坊平臺最突出的特色是智能合約,給以太坊平臺增加了圖靈完備的特性。該課題實驗需要利用到智能合約來執行電子病歷可信管理方法,因此選擇以太網作為開發平臺,實驗環境是基于Ubuntu18.0.4 系統,使用Ganache 客戶端快速生成一個擁有10個節點的本地私有區塊鏈網絡,以便于測試。
基于第3 節總體方法的設計可知,兩種交易憑證可以在該文所提供的區塊真實性驗證方法下保證其可信,實驗是根據第3章節的具體流程來操作。
在訪問控制策略驗證通過返回true后包含交易憑證的區塊在本地首先上鏈,并且將區塊簽名廣播到區塊鏈網絡,方法采用實用拜占庭容錯的共識機制,當至少2/3 節點都驗證通過后,區塊就可完成真正的上鏈,只有上鏈后的區塊所包含的交易憑證才會受到醫院節點的信任,同樣也才能成功獲得訪問授權并執行后續的訪問操作。例如:醫生節點操作患者電子病歷時創建合法請求交易并組裝成區塊,區塊通過驗證并最終完成上鏈,醫生節點才能獲得訪問授權,并執行后續的訪問操作。
當用戶節點等級小于電子病歷敏感性等級時,對電子病歷進行具體操作,創建請求交易組裝成區塊并廣播,區塊無法通過驗證,最終無法完成上鏈,在系統交互界面會顯示其無權操作病歷如圖3所示。結果證明方案解決了患者無法根據自身敏感性需求細粒度控制電子病歷操作權限的技術問題。

圖3 基于患者敏感性需求的細粒度控制效果圖
以上仿真實驗說明了該文基于區塊鏈的電子病歷可信管理方法的可行性與正確性。
該文針對目前去中心化電子病歷管理方案中尚未解決的技術問題,設計了基于患者敏感性需求的細粒度控制方式和與控制方式相適應的基于區塊鏈的電子病歷可信管理方法,通過區塊真實性驗證方法的正確性證明和在以太坊平臺上進行的仿真實驗,最終驗證了所提出的基于患者敏感性需求的細粒度控制方式和基于區塊鏈的電子病歷可信管理方法的可行性與正確性。下一步準備針對共識算法進行研究,設計更加適用于該方法的共識機制,從而完善該文所設計的去中心化電子病歷可信管理方法。