劉惠文 鄧小鴻 熊偉志 拜亞萌



摘 要:區塊鏈技術在電子健康記錄安全共享上具有巨大潛力,然而,目前的解決方案存在著如存儲空間大和共識效率低等問題。為此,提出了一種基于區塊鏈和親友節點的新方案。首先,采用分布式文件系統將用戶完整的電子健康記錄存儲在線下服務器,并構建用戶的親友節點集,每個用戶的數據由其親友節點冗余存儲,鏈上僅存儲區塊頭信息,降低了存儲空間;其次,設計了基于多簽名技術的數據訪問機制,采用Shamir秘密共享機制將用戶的私鑰分發給其親友節點,親友節點中的過半數可以利用自己的私鑰重建出用戶私鑰,解決緊急情況下的數據訪問問題;最后提出了基于信用的拜占庭容錯共識機制,將信用值排名前10%的節點作為領導者節點集,采用隨機算法在領導者節點集中生成主節點,提高了共識安全性。實驗結果表明,所提方案所需的鏈上存儲空間是現有方案的1/7,數據訪問效率提高了15倍,同時在保證較好時延和吞吐量的情況下,具有更高的共識安全性。該方案可實現電子健康記錄的安全高效共享,為區塊鏈在醫療領域應用提供案例。
關鍵詞:區塊鏈; 親友節點; 電子健康記錄; 智能合約; 共識算法
中圖分類號:TP311.13 文獻標志碼:A?文章編號:1001-3695(2024)05-006-1321-07
doi:10.19734/j.issn.1001-3695.2023.08.0380
Secure electronic health records sharing scheme based onblockchain and friend and relative nodes
Abstract:Blockchain technology has great potentiality in the secure sharing of electronic health records. However, current solutions face issues such as large storage space and low consensus efficiency. This paper proposed a novel scheme based on blockchain and friend and relative nodes. Firstly, this paper adopted a distributed file system to store users complete electronic health records on offline servers, and constructed a set of users friend and relative nodes. Each users data was stored redundantly by its friend and relative nodes, and only the blocks header information was stored on the chain, reducing sto-rage space. Then, this paper designed a data access mechanism based on multi-signature technology, using Shamir secret sharing mechanism to distribute users private keys to their relatives and friends. More than half of the relatives and friends could use their own private keys to reconstruct users private keys, solving data access problems in emergency situations. Finally, this paper proposed a credit based Byzantine fault-tolerant consensus mechanism, which used the top 10% nodes with credit values as the leader node set and utilized a random algorithm to generate the master node in the leader node set. And it improved consensus security. The experimental results show that compared with existing methods, the proposed scheme reduces the on-chain storage space by 1/7, improves data access efficiency by 15 times, and has higher consensus security while ensuring good latency and throughput. The proposed scheme can achieve secure and efficient sharing of electronic health records, providing a case for the application of blockchain in the medical field.
Key words:blockchain; friend and relative nodes; electronic health records; smart contracts; consensus algorithm
0 引言
電子健康記錄(EHR)作為臨床診斷和構建全民健康大數據的重要基礎,對醫學研究進步起著重要作用。但由于缺乏標準化的數據格式、安全可靠的互操作平臺,不同利益相關者之間的EHR共享仍然具有挑戰性[1,2]。在當前中心化的醫療信息系統中,當患者需要將自己的EHR在不同機構間共享時非常低效,甚至患者并沒有權限操作屬于自己的健康數據,由此引發的隱私泄露等風險劇增。
面對中心化系統暴露出來的問題,研究者提出使用區塊鏈技術來提升醫療信息系統的性能,包括去中心化的數據存儲、基于智能合約的互操作性、身份驗證和數據完整性。此外,研究表明,基于區塊鏈的系統還將降低數據維護和共享成本[3]。當然,區塊鏈無法作為一種解決現有中心化系統問題的萬能方法,因其本身也存在著如共識效率、數據存儲空間、智能合約漏洞等性能或安全方面的隱患,而在設計基于區塊鏈的醫療信息系統解決方案時必須考慮必要的安全因素[4,5]。目前,現有研究主要是利用Hyperledger Fabric和以太坊等平臺構建健康數據共享系統,使用智能合約實現數據的訪問控制。考慮到健康數據的存儲空間問題,鏈上通常是存儲數據的映射關系。因此當系統遭受DoS攻擊和面臨通信瓶頸時,基于區塊鏈的方法與傳統的中心化系統并沒有顯著區別,因為數據存儲和訪問仍然是集中式的。同時,鏈上的映射數據可能會使用戶面臨隱私鏈接攻擊。除此之外,現有研究極少數考慮在患者無法親自提供數據解密私鑰的緊急情況下,醫療機構如何獲取患者的隱私數據而進行及時的救助。
綜上所述,采用區塊鏈來進行EHR安全共享具有諸多優勢,但仍然存在著一些典型的問題需要解決。例如如何降低區塊鏈系統的存儲空間問題、如何保證隱私數據的安全訪問問題、如何進一步提高共識算法效率和解決緊急情況下的數據訪問等。針對上述問題,本文提出了一個基于聯盟鏈和親友節點的EHR共享方案,其中個人用戶(包含患者本人及親友)、醫療服務機構、科研機構和監管部門一起組成聯盟鏈,所有用戶經過身份驗證才能加入到Hyperledger Fabric網絡中。所提系統使用區塊鏈進行數據操作的權限管理,區塊鏈上只存儲鏈下數據的哈希引用索引,而將實際數據采用分布式文件系統(distributed file system,DFS)鏈下存儲在分布式的服務器中。本文的主要工作如下:
a)提出一種基于區塊鏈的去中心化EHR共享架構和相關智能合約設計,結合用于鏈下數據存儲的去中心化文件系統,提供與現有集中式數據庫系統相當的性能,同時提供更好的安全性,保護系統免受DoS攻擊、消除單點故障的影響,并提高數據完整性。
b)設計一種基于親友節點和多簽名技術的數據授權訪問機制,每個用戶在鏈上的數據僅存儲在數量有限的親友節點集中。另外在用戶無法提供自己的私鑰時,通過其親友節點集中過半數的節點共同簽名完成授權訪問,該機制在節省存儲空間的同時較好地解決了緊急情況下隱私數據的訪問問題。
c)設計一種基于信用的實用拜占庭共識協議(practical Byzantine fault tolerance based on credit,CPBFT),利用節點信用值快速挑選可信賴的主節點,與現有共識協議相比,該協議在延遲、吞吐量和安全性方面具有更好的性能。
1 相關工作
Azaria等人[6]較早地提出使用區塊鏈技術來實現醫療健康數據的共享,在提出的共享模型MedRec中,健康數據并不上鏈存儲,而是仍然存儲在數據提供者的數據庫系統中,區塊鏈的引入主要是提供數據訪問的智能合約,提高數據操作的可控性和互操作性。但該模型存在幾個典型問題:a)數據的安全性完全由數據持有者保證,數據被泄露和攻擊的風險較大;b)MedRec采用工作量證明(proof of work,PoW)共識算法,能量消耗大,并且具有高延遲和低吞吐量;c)沒有考慮特殊情況下數據的授權訪問問題。2019年,Daraghmi等人[7]在前人研究的基礎上,提出了一種基于區塊鏈的電子醫療系統的新架構,架構使用了更高效的基于活動證明(proof of activity,PoA)的共識算法,鼓勵節點積極提供有效醫療記錄來完成“挖礦”。另外,新的架構使用代理重加密方案替代了數據共享時需要的對稱密鑰,并設計了新的智能合約來實現更加細粒度的數據訪問控制。但該方法仍然將數據存儲在鏈下傳統的中心化數據庫中,也沒有考慮緊急情況下的數據訪問。2020年,Tanwar等人[8]提出了一種基于聯盟鏈的EHR共享系統,該系統能夠在患者、臨床醫生和護理提供者之間共享數據。系統將健康數據鏈上存儲,并使用Raft共識協議進一步提升共識效率。另外,首次對基于區塊鏈的醫療保健系統的性能評估進行了深入研究,從延遲和吞吐量、內存使用率、CPU和網絡消耗等方面進行了性能對比。該方法的缺點是沒有考慮拜占庭將軍問題,鏈上數據的增長會帶來性能的顯著下降。同年,Huang等人[9]提出一種基于區塊鏈的醫療數據隱私保護和安全共享方案,數據存儲在半可信的云服務器中,采用零知識證明實現在不泄露病人隱私數據的情況下滿足數據訪問需求,代理重加密技術以確保研究機構能夠解密中間密文。該方案的缺點是采用的PBFT共識機制在網絡節點數較多時,系統的性能顯著降低。
文獻[4]提出基于區塊鏈的電子醫療病歷可控共享模型,病歷數據實現鏈上和鏈下的混合存儲,結合聚類算法改進PBFT共識協議獲得更高效的共識效率,同時引入基于屬性的加密方法實現病歷數據的安全可靠共享。Deepika等人[10]提出基于區塊鏈的去中心化安全共享個人健康記錄的方法,采用加密的權益證明(proof of stake,PoS)共識算法來提高系統效率,并將數據加密存儲在代理云服務器中,鏈上存儲數據的存儲位置及哈希值。Rajesh等人[11]提出基于區塊鏈和同態加密的醫學圖像隱私保護聚合模型,為去中心化網絡中的醫學圖像數據共享帶來新的范式。Erikson等人[12]設計了一種基于區塊鏈的安全共享醫學圖像數據的協議,可記錄用戶訪問圖像數據的行為。Shuaib等人[13]提出了一種基于許可區塊鏈的醫療數據共享系統,該系統集成了區塊鏈技術、去中心化文件系統和門限簽名來解決數據鏈下訪問效率和安全授權問題,其共識機制采用了伊斯坦布爾拜占庭容錯算法(Istanbul BFT,IBFT)。為了解決區塊鏈中醫療數據的真實性來源問題,研究者們將物聯網技術融合到醫療區塊鏈中,Sharda等人[14]構建了一個基于區塊鏈的醫療物聯網原型,使用區塊鏈技術來消除匿名數據訪問,確保患者數據的隱私性。Qi等人[15]創新地提出一個集成了深度學習、區塊鏈和IoMT技術的框架,深度學習技術可正確預測病人的壓力級別,區塊鏈中的智能合約確保安全事務和健康檢查,IoMT設備準確獲取病人的多模態數據。上述方法雖然較好地解決了醫療數據共享過程中出現的隱私泄露和安全共享問題,但也存在著共識效率不高和缺乏緊急情況下數據授權訪問的問題。
表1對目前的研究工作做了一個簡單的對比,主要從系統采用的區塊鏈框架、共識算法、數據存儲策略、去中心化訪問和數據授權訪問(緊急情況下)方面進行比較。從表1可以看出,目前絕大部分方法選用了Hyperledger聯盟鏈架構作為系統的底層框架,原因是聯盟鏈更方便對網絡中的節點進行信任管理。采用的共識算法絕大部分采用具有容錯功能的PBFT及其改進算法,原因是該共識算法在節點數量較小時具有高的共識效率和抵抗少數節點作惡的能力。但是,上述方法很少考慮到緊急情況下的數據授權訪問問題,極少數方法采用門限簽名策略來實現。綜上所述,基于區塊鏈的EHR共享系統仍然有關鍵技術需要突破,如更加高效和安全的共識機制,緊急情況下患者隱私數據的授權訪問問題。
2 提出的系統架構
本文提出的基于區塊鏈和親友節點的EHR共享方案由EHR存儲方案和共享方案兩個部分組成,分別如圖1、2所示。考慮到目前EHR保存的實際情況,數據可由機構或者患者本人提出上鏈存儲,存儲步驟如下:a)數據在機構中,機構代表患者上傳數據,需獲得患者同意,得到授權后方可將擁有的數據進行上傳,稱為機構上鏈;b)患者本人可將自己的數據上鏈存儲,稱為自主上鏈;c)將EHR采用數據擁有者的公鑰進行加密,得到加密后的EHR;d)將加密后的EHR存儲到患者的親友節點中,親友節點的構建將在第3章介紹;e)親友節點廣播加密后的EHR數據;f)共識節點集運行CPBFT算法挑選主節點,主節點將親友節點廣播的數據進行打包區塊,構建Merkle tree;g)將Merkle root上鏈存儲,形成區塊頭鏈,區塊頭中包含Merkle樹根、對應的DFS地址、時間戳等信息,相比現有的區塊鏈,并不存儲區塊體信息;h)將Merkle tree存儲到DFS中,實現鏈下存儲。
在本文方案中,由醫院、監管部門和科研機構組成共識節點,負責運行共識算法得到主節點和維持鏈上數據的一致性。共識節點執行如下功能:向DFS系統添加數據,將相應的事務信息上傳到區塊鏈,驗證從外部用戶收到的各種交易,如權限請求和權限授予等。本文采用基于信用的PBFT算法CPBFT,CPBFT在PBFT算法上進行改進,將節點的信用機制引入到主節點產生階段。首先,通過節點信用值評估機制計算節點的信用值,并按照信用值高低進行排序,將信用值排名前10%的節點作為領導者節點集;其次,利用可驗證隨機函數(verifiable random function,VRF)隨機挑選一個節點作為主節點,當發現主節點故障或作惡時,可從領導者節點集中再次快速產生一個主節點。信用值高的節點具有低的作惡概率,能有效降低拜占庭節點對系統性能的影響,另外通過信用值來快速生成領導者節點,能顯著提高共識效率。
EHR存儲方案能將機構或者患者本人擁有的健康數據進行鏈上和鏈下的結合存儲。健康數據被加密后存儲在數據擁有者的親友節點中,并由共識節點選舉出來的主節點完成區塊的生成工作,將生成區塊過程中形成的Merkle根進行鏈上存儲,將Merkle樹存儲在多個DFS中,鏈上和鏈下的數據映射關系和Merkle根一起形成區塊頭鏈存儲在鏈上所有節點中。
在完成電子健康記錄的存儲后,可按照如下步驟完成數據的共享:a)數據訪問者通過向區塊鏈系統提出訪問請求,由許可合約向數據的擁有者提出本次訪問的授權;b)數據擁有者對本次訪問進行授權;c)數據訪問者通過正常訪問方式從DFS中獲取數據;d)數據擁有者在緊急情況下無法實現授權訪問,則改為向其親友節點集提出授權請求,由親友節點聯合授權;e)數據訪問者通過緊急訪問方式,直接從親友節點處訪問數據。
EHR共享方案實現了每一次訪問數據的權限控制功能,在正常情況下,數據訪問者請求訪問數據,許可合約會判斷數據訪問者的權限和是否得到數據擁有者的授權,如果滿足合約執行條件則能從DFS訪問數據。在數據擁有者無法親自授權時,許可合約嘗試從其親友節點中獲得聯合授權,如果滿足合約條件則直接從親友節點中快速獲取數據。
為了實現數據的安全訪問,主要設計了注冊合約、數據合約和許可合約三種類型的智能合約。
1)注冊合約
為了保護系統免受惡意用戶的攻擊,要求所有用戶都在注冊合約上匿名注冊。這些數據包括用戶公鑰及其角色,如患者、醫療機構、科研機構和監管機構。主節點在驗證發送到數據合約和權限合約的交易時,會檢查用戶的合法性。
2)數據合約
數據合約存儲在一個記錄列表,用于指示用戶與其數據之間的映射。列表中的每個數據行都由數據所有者的公鑰、使用公鑰加密的對稱密鑰、數據類型和指向鏈下存儲的原始數據的數據哈希組成。用戶的電子健康記錄數據由主節點,即數據提供者代表用戶上傳至DFS,同時數據合約提供了添加和修改數據的功能接口,用戶可以調用接口修改數據。
3)許可合約許可合約保存數據訪問權限的記錄,顯示用戶對數據具有的不同權限。每個訪問權限由權限授予者的公鑰(數據所有者的身份)、權限請求者的公鑰(數據訪問者的身份)、使用請求者公鑰加密的對稱密鑰(用于保證本次數據訪問的機密性)和數據的哈希四個部分組成。許可合約也提供相關的功能接口,允許系統中的參與者請求權限、授予權限和修改權限。
3 方案具體實現
為了更加方便地描述細節,表2給出相關變量和函數的形式化描述與說明。
3.1 共享方案初始化
1)基本假設
醫院、監管部門和科研機構負責產生主節點,它們中的單個個體可能會存在惡意行為,但選舉出的主節點具有高可信度,生成的區塊數據值得信賴。
a)數據擁有者:擁有自己數據的控制權,想獲取其他用戶的數據。
b)數據訪問者:可能會有惡意行為,試圖破壞數據的機密性或修改、刪除其他用戶的數據。
c)DFS:分布式文件系統是安全的,未經授權的用戶不能修改或刪除數據。
上述假設并不影響方案的實際應用,共識節點中個別節點存在惡意行為本身就在PBFT共識機制的考慮范疇之內。數據擁有者和訪問者具有潛在的非法訪問數據的動機在任何信息系統中均存在,而DFS作為分布式存儲中的主要技術方法,在安全性上具有較好的保障。
2)初始化
a)系統實體身份。每個系統實體都生成一個公鑰-私鑰對{PK, SK},公鑰用于實體在區塊鏈中進行秘密通信,如實體A要向B發送隱秘信息時,用B的公鑰進行加密后發送。私鑰用于實體向注冊合約發送由其私人密鑰簽署的注冊交易,一般用于數字簽名。
b)親友節點集構建。每個節點(數據擁有者)選擇大于等于三個節點作為自己的親友節點集,并將自己加密后的EHR、拆分后的私鑰發給親友節點。
c)智能合約部署。在區塊鏈上部署注冊合約、數據合約和許可合約三個智能合約。
d)數據表示。用戶數據在系統中表示為四元組{PK,HI,DT,ED}。其中:PK是數據所有者的公鑰;HI是數據的哈希;DT是數據類型;ED是數據D的加密形式。
3)親友節點集構建
區塊鏈系統的數據存儲方式是讓系統中的所有節點來存儲區塊的信息,即讓每個節點存儲所有個體的健康數據,這對于存儲代價和運行效率均是挑戰。一個可行的方案是每個節點均存儲若干個體的數據信息,因為從人類社會關系網絡來看,每個人的社交圈涉及的個體是有限的。個體A的健康數據由A的N(N≥3)個親友節點和其本身存儲,個體A的親友節點集如圖3所示。節點A的外圍是其N個親友節點,負責存儲節點A的記錄備份,節點間具有p2p網絡中典型的對等關系。
4)基于多簽名技術的數據授權訪問方法
在本文方案中,每個個體擁有對自己健康數據的直接訪問和授權訪問的權限。當數據訪問者(如醫療服務機構)需要訪問個體的健康數據時,個體提供自己的私鑰解密后發給醫療服務機構;但是,當個體無法提供私鑰時,醫療機構如果需要授權訪問數據,可以通過個體的親友節點授權來完成。為了避免親友節點中個體擁有私鑰產生信息泄露的問題,醫療機構需要獲得親友節點中的過半數的節點共同授權才能訪問。基于多簽名技術的數據授權訪問模型如圖4所示,其工作步驟如下:
a)節點A將自己的私鑰分成N份(圖中假設N=3,N為節點A親友節點的個數),如SK_A1、SK_A2和SK_A3;
b)節點A分別用N個節點的公鑰對劃分的私鑰進行加密,得到EPK_1(SK_A1)、EPK_2(SK_A2)和EPK_3(SK_A3);
c)節點A將步驟b)的結果采用Shamir秘密共享方式[16]分別發送給N個親友節點;
d)數據訪問者(如醫療機構)需要訪問節點A的健康記錄明文時,在不能直接從A處獲得私鑰SK_A時,通過向A的親友節點發出請求以獲得A的私鑰;
e)親友節點中過半數的節點用自己的私鑰簽名后,可以合成A的私鑰SK_A;
f)數據訪問者得到私鑰后,可以從節點A的任一親友節點中訪問其健康數據。
由于節點A的私鑰重建需要參與親友節點的私鑰簽名,可以判斷本次授權訪問是哪些節點參與了授權。
3.2 基于信用的PBFT共識機制
節點的信用值計算是CPBFT的基礎,采用筆者前期所提的節點信用值計算的通用模型[17],描述如下:
Ci=F(Ti)(1)
其中:Ci代表節點i的信用值;F為信用值計算函數,可表示為線性計算公式或神經網絡訓練函數;Ti為節點i參與系統行為的特征向量。F函數如筆者之前提出的基于BP神經網絡的節點信用值評估機制[18],可更為準確地評價節點信用,解決線性算法無法有效對節點的行為特征進行描述的問題。具體的實現細節可參考文獻[17,18],本文不再重復介紹。
PBFT算法可大致分為主節點選取、請求、預準備、準備和提交五個階段。CPBFT算法對主節點選取階段進行改進,引入節點信用值和VRF挑選主節點,具體描述如算法1所示。在主節點生成后,客戶端向其發送請求消息(請求階段),然后主節點生成預準備消息并廣播給跟隨者節點(預準備階段),跟隨節點將帶有自己簽名的投票消息廣播給其他節點(準備階段),主節點收到來自2f+1個誠實節點的反饋后,將消息打包反饋給客戶端(提交階段)。在預準備階段,一旦發現主節點作惡,將作惡主節點從領導者節點集中剔除,并重新選擇主節點。
算法1 CPBFT中主節點選取算法
輸入:所有節點集合N={n1,n2,…,ni};節點私鑰SKi;公鑰PKi;隨機種子seed;抽簽閾值NUM。
輸出:主節點nj。
N′={n1′,n2′,…,ni′}←sort(N) //對節點集合進行信用值排序
l←i×10% //前l個節點作為領導者節點集
L={n1′,n2′,…,ni′} //領導者集合
function selection(L,l,SKi,PKi,seed)
j←1
while j≤L.length do
Y←VRF_hash(SKj,seed) /*在領導者集合中使用VRF產生隨機數Y*/
proof←VRF_proof(SKj,seed) //生成證明
if Y>NUM && VRF_verify(PKj,seed)==true then /*驗證抽簽結果*/
return nj //返回主節點
j++
end if
end while
leader←selection(L,l,SKi,PKi,seed) /*確定主節點,準備開始PBFT后續階段*/
3.3 智能合約設計
1)數據合約
EHR數據可以由兩種方式添加到共享系統中,一種是由主節點代為上傳,另一種是由數據擁有者自己上傳。
a)主節點上傳用戶數據。假設主節點m想要上傳屬于用戶u的數據,m一方面要將數據加密存儲在DFS上,另外還要將等效事務發送到區塊鏈上。其操作時序如圖5所示,詳細操作步驟如下:
(a)加密原始數據RD,m生成對稱加密密鑰key,加密RD,得到Ekey(RD)。
(b)生成哈希索引,m為加密數據生成哈希,HI=hash(Ekey(RD))。
(c)將數據存儲在DFS上,發送到DFS進行數據存儲的消息表示為SD=PK_u‖DT‖HI‖Ekey(RD)。
(d)得到用戶u的公鑰PK_u。
(e)m使用PK_u加密key,得到EPK_u(key);使用用戶的公鑰對對稱密鑰key進行加密,允許用戶稍后解密并獲得密鑰。因此,只有用戶u才能訪問對稱密鑰。
(f)生成區塊鏈交易BT,BT=PK_u‖DT‖HI‖EPK_u(key)。
(g)數字簽名BT,m使用其私鑰對BT進行簽名,如SigSK_m(BT)。
(h)分發BT和驗證簽名。m將BT發送給其他參與共識的節點進行簽名,并從N個節點中收集至少t個簽名,表示為SKS。
(i)發送交易到區塊鏈,發送到區塊鏈的最終交易是SigSSK(BT)‖BT。
b)數據擁有者上傳個人數據。過程與前面所述的主節點上傳用戶數據類似,但更為簡潔,只需要用自己的私鑰進行加密或者簽名。設用戶u上傳自己的個人數據,其步驟如下:
(a)將數據上傳到DFS。該步驟與前面步驟(a)~(c)相似,不再贅述。
(b)將交易發送到區塊鏈。創建區塊鏈交易,區塊鏈交易的內容為BT=PK_u‖DT‖HI。簽署并發送交易,要發送到區塊鏈的交易被簽署為SigSK_u(BT)‖BT。
2)許可合約
對于數據擁有者本身,當交易被發送到區塊鏈時,系統會向其發送通知。一旦用戶接收到通知,他就從數據合約中下載元數據,包括哈希索引和加密的對稱密鑰key。接下來,使用用戶的私鑰對對稱密鑰進行解密。然后,通過向附近的DFS節點之一發送由哈希索引組成的查詢來檢索加密數據。一旦用戶接收到加密數據,就使用對稱密鑰對原始數據進行解密。
對于其他用戶,他們可以看到誰擁有什么數據。任何對數據感興趣的人都可以通過發送請求訪問到許可合約,許可合約對請求者的身份進行驗證,并向數據的請求者發送訪問請求,得到其授權后可以同意本次數據訪問請求。請求訪問數據表示為SigSK_i(HI)‖HI,其中i是請求數據訪問的用戶。
數據所有者收到數據訪問的授權請求通知后,可以批準或拒絕該請求。如果同意本次訪問,則發送一個事務,該事務包括請求數據的HI、請求者的公鑰以及用請求者公鑰加密的解密數據用的對稱密鑰。權限授予數據表示為SigSK_j(HI,PK_i),EPK_i(key))‖{HI, PK_i,EPK_i(key)},其中i是許可請求者,j是批準請求的數據所有者。一旦許可被批準,用戶就下載加密的密鑰并解密對稱密鑰(滿足一次一密原則)。然后可以通過使用HI從附近的DFS節點檢索數據,并使用對稱密鑰解密數據。
4 方案安全性分析
4.1 機密性、完整性和可用性
1)機密性
在本文方案中,所有EHR在上傳到DFS之前,都由主節點或者用戶自己使用安全加密算法進行加密。安全加密算法保證了EHR數據的機密性。假設某醫療機構A想在沒得到患者D授權的情況下獲取D的數據,如果A不是主節點,從3.3節中介紹的方案可以看出,只有主節點或用戶自己可以訪問原始數據,所以A只看到散列和加密的數據。如果A通過許可合約來申請訪問數據,只有獲得D的私鑰才能解密數據,在公私鑰密碼體制中,從公開的公鑰獲得私鑰在計算上是不可能的。從以上分析可以得出,本文方案具有高的數據機密性。
2)完整性
在本文方案中,不論是主節點還是用戶自己將數據添加到鏈上存儲時都需要加他們的數字簽名,而數字簽名的私鑰只能由他們自己保存,其他實體無法獲得,這確保了簽名驗證的真實性和不可抵賴性。區塊鏈中的交易數據一旦通過CPBFT算法達成共識并上鏈存儲后,區塊的順序和交易將受到哈希鏈的保護,每個區塊的哈希值是唯一的,一旦鏈下數據進行了更改,必然會造成鏈上哈希鏈數據的不一致。假設攻擊者Alice修改了DFS中存儲的數據信息,那么Merkle樹的樹根值必然會發生變化,這與區塊頭鏈中存儲的Merkle根值不一致,此功能可確保數據的完整性。
3)可用性
在本文方案中,只有授權實體才能使用其用戶的私鑰來解密其EHR。當用戶自己能提供私鑰時,許可合約能保證本次數據訪問的正常進行;當用戶在緊急情況下不能提供私鑰時,可以通過其親友節點構造出用戶的私鑰來完成數據訪問。假設患者Bob無法提供自己的私鑰,數據訪問的許可合約會從Bob的親友節點中去嘗試聯合授權,如果授權成功,可直接從Bob的某個親友節點中獲取數據,此功能可確保數據的可用性。
4.2 容錯性
a)拜占庭節點數。本文提出的CPBFT基于PBFT改進,在抗拜占庭節點數量上保持一致,假設共識節點的總數為3f+1,那么允許的拜占庭節點的最大數為f。
b)主節點作惡。當出現主節點作惡行為時,將會重新在領導者節點集中隨機再次選出一個主節點,由于領導者節點集為信用值排名前10%的節點,具有高的可靠性,一定程度上保證了系統的安全性。另外從領導者節點集中快速產生新的主節點,也避免了由原始PBFT算法的視圖切換帶來的性能下降。
c)單點失效。本文方案采用了去中心化存儲系統結構,能有效地解決單點故障問題。首先,用戶在鏈上的數據會重復存儲在其親友節點中;其次,鏈下的數據存儲在分布式的文件系統DFS中,均避免了因單個節點失效而帶來的數據丟失問題。值得注意的是,本文方案中每個區塊數據不是由鏈上的所有節點存儲,而是存儲在少數節點中,這將大大減小存儲壓力。
d)可追蹤性。本文方案中,所有個體通過統一的許可合約訪問數據,并且均需要提供請求訪問者的私鑰,一旦發生隱私數據的泄露,都能唯一定位到曾經訪問數據的個體。另外在緊急情況下,親友節點可以構造出用戶的私鑰,該過程也需要每個親友節點的私鑰參加,也就是能確定哪些個體參與到了本次操作,說明本文方案具有可追蹤性。
4.3 存儲效率與時間效率
a)存儲效率。本文方案對EHR的存儲仍然使用的是鏈上+鏈下的方式,典型的區別在于一個用戶的EHR數據會冗余地存儲在其鏈上的親友節點中,而現有方法是讓所有節點存儲數據的映射關系,并不存儲完整的數據。為了節省存儲空間,本文方法鏈上存儲僅僅只存儲區塊頭,而一般的方法是包含了區塊頭和區塊體的,在鏈上節點數量較大時,本文方法所需的總存儲空間仍然占有優勢。
b)時間效率。通常情況下,現有鏈上+鏈下方法在訪問數據時,要先通過鏈上訪問,遍歷區塊頭,再找到區塊體,從區塊體中找到鏈下存儲的DFS服務器地址,最終找到數據。本文方法是先遍歷區塊頭,再找到DFS,從DFS存儲的區塊體中找到所需的數據。可以理解為通常方法是區塊頭→區塊體→DFS,本文方法是區塊頭→DFS→區塊體,在時間效率上和現有方法基本一致。
5 仿真實驗與性能評估
本文采用Hyperledger Fabric聯盟鏈框架來實現提出的電子健康記錄安全共享原型系統,使用DFS來進行去中心化的數據存儲。編程語言采用Python,前端展示采用Vue框架,傳統數據庫使用MySQL和Redis,操作系統采用Windows 10。在學校實驗室環境中配置了15個區塊鏈節點,其中醫療機構4個,科研機構3個,監管部門1個,患者及親友7個。經實際運行,構建的原型系統能較為快捷有效地完成數據的鏈上鏈下混合存儲,并沒有顯著增加鏈上節點的存儲空間,數據共享訪問所需的時間在可接受范圍內。另外,為了更加方便對比本文方法的性能,在Ubuntu虛擬機上進行一系列的仿真實驗,該虛擬機配置120 GB的內存、16個CPU內核,每個內核的速度為2 GHz。為了評估本文算法的可擴展性,實驗中模擬了不同數量的節點,分別為50、100、150、200、250、300、350和400。每個節點都運行Hyperledger Fabric區塊鏈客戶端軟件的一個實例。本文使用Python編程實現了用戶客戶端應用程序,并為每個用戶分配了公鑰和私鑰。實驗中EHR數據采用了某醫院外科提供的100份脫敏后的EHR。
5.1 存儲空間
為了評估本文方法在存儲空間上的性能,記錄區塊鏈系統在寫入不同份數EHR記錄時所需的存儲空間,區塊鏈中的節點數設置為50個。實驗中將本文方法與傳統鏈上+鏈下結合存儲的方式進行性能對比,實驗結果如圖6所示。從圖6中可以看出,隨著上鏈存儲的EHR數量越多,區塊鏈系統所需的存儲空間越大,并且傳統鏈上+鏈下存儲方法的增長速度較大,而本文方法增長較為平緩,在全部100份EHR記錄上鏈存儲時,傳統方法所需的存儲空間在3.2 MB左右,而本文方法僅需0.46 MB。其原因是傳統鏈上+鏈下的存儲方式將完整的電子健康記錄存儲在鏈下的數據庫中,而鏈上存儲鏈下數據的映射關系,并且鏈上的每個節點都需要存儲完整的區塊鏈信息(含區塊頭和區塊體),雖然區塊體中不再包含具體的交易信息,而是一些數據存儲關系映射,但當節點數增多時,鏈上存儲壓力仍然較大。而本文方法中鏈上的每個節點都只需要存儲其親友節點的數據和區塊頭信息,在節點數較多和需存儲的EHR增多時具有顯著優勢。實驗中,親友節點數設置為10,雖然隨著親友節點數的增大,其存儲空間會增大,但增長幅度非常小。從存儲空間的實驗結果來看,本文方法可大大節省鏈上存儲空間,具有較好的可擴展性。當然本文方法需限制親友節點數大小,因為親友節點會冗余存儲完整數據。
5.2 時延
在時延的仿真實驗中,主要對比了系統中數據的訪問時延和系統在執行不同共識算法時的時延。數據的訪問時延對比了文獻[9]的云服務器存儲方法和本文采用的分布式文件系統,記錄了系統在處理不同并發訪問次數時的耗時(所有訪問全部成功執行所需的時間),實驗結果如圖7所示。
從圖7可以看出,隨著系統中并發訪問數增多,兩種方法的數據訪問所需時延都在增大,但文獻[9]明顯大于本文方法,在并發訪問數達到100時,文獻[9]所需的時延約為16 min,而本文方法僅需0.5 min左右。特別注意的是,當并發訪問數達到60后,文獻[9]的訪問時延增長速度明顯增大。其原因是文獻[9]將所有EHR都存儲在中心化的云服務器中,當并發訪問數增大,云服務的處理壓力將會顯著增大,雖然目前的云服務器都有任務負載均衡的機制,但當處理請求達到云服務器的處理瓶頸時,系統的訪問時延將會受到較大影響。而本文方法將EHR數據分布式地存儲在不同的服務器中,當并發訪問數增多時,所需的時延雖然會增大,但分布式的服務器較大程度緩解了集中式的訪問瓶頸問題。
圖8給出了模擬不同共識算法在不同節點數量下達成共識所需的時延,分別比較了本文方法(CPBFT)和(PBFT)[4]、PoS[10]和IBFT[13]。從圖8中可以看出,三種基于PBFT的共識算法比PoS具有更低的時延,這是因為PoS是基于PoW共識機制進行改進的,雖然不再需要消耗大量的能量去“挖礦”,在一定程度上縮短了共識達成的時間,但本質上仍然需要“挖礦”取得代幣,通過“幣齡”來確定參與共識的節點。IBFT和CPBFT共識均是在PBFT基礎上進行改進的,在共識時延上具有明顯改進。值得注意的是,本文CPBFT時延低于IBFT,這是因為前者需要額外計算參與共識節點的信用值,在每輪共識結束后,都要進行節點信用值和領導者節點集的更新。當然,CPBFT共識算法在共識流程中還有待進一步的優化,特別是引入節點信用值后,可以將算法的五階段流程進行精簡,提高共識效率。
5.3 吞吐量
本文設置系統并發事務量為200 筆/s,吞吐量對比實驗如圖9所示。從圖9可以看出,四種不同共識算法的吞吐量隨著參與共識節點的數量增多而緩慢下降,原因是在固定的交易數量下,共識所需的時延在增大。四種方法中PoS的吞吐量最低,在138~150 TPS,PBFT次之,吞吐量在235~221 TPS,IBFT和本文CPBFT的吞吐量較為接近,其中IBFT略高于CPBFT。原因在于,PoS共識需要花費最多的時間來選取主節點,PBFT共識在選取主節點上進行了優化,能大大加快主節點生成時間,CPBFT增加了節點信用值的計算,所需的時間略高于IBFT。
5.4 主節點作惡
雖然本文CPBFT在時延和吞吐量上相比IBFT不具有優勢,但在主節點選擇的安全性上具有更好的性能。圖10給出了四種不同的方法在不同的共識次數后,發現惡意節點作惡的概率。實驗中限定50個共識節點,其中從第5輪共識開始,隨機從50個節點中選擇10%的節點作惡。從圖10可以看出,所有的共識算法隨著共識次數的增大,可以逐漸發現惡意節點。其中,PoS具有非常低的惡意節點驅逐概率,基本沒有抗拜占庭節點的能力;三種類PBFT算法具有較好的抗拜占庭節點能力,在共識次數超過60次時,可以排除70%的惡意節點,其中本文CPBFT具有最好的性能,明顯高于PBFT和IBFT,在共識次數達到70次時,能識別所有作惡節點。原因在于:PoS共識算法沒有考慮拜占庭容錯問題;PBFT支持拜占庭容錯但需要一定時間的視圖切換才能定位故障節點;IBFT在PBFT基礎上改進,優化了共識流程,能更快地發現故障節點;CPBFT引入了信用機制,通過節點信用值能有效驅逐惡意節點。
6 結束語
本文提出了一種基于區塊鏈和親友節點的EHR安全共享方案。采用鏈上+鏈下結合存儲的方式確保了數據的安全性和訪問效率,鏈下采用DFS分布式文件系統存儲電子健康記錄,鏈上采用聯盟鏈存儲電子健康記錄的映射關系。首次提出親友節點集和多簽名技術的數據存儲和訪問方法,節點的EHR數據僅存儲在其親友節點中,鏈上僅存儲區塊頭信息,大大節省了存儲空間,通過多簽名技術構造出用戶私鑰,解決了緊急情況下的授權訪問問題。另外,設計了基于信用的拜占庭容錯算法,提升了共識效率和安全性。實驗結果表明,本文方案相比現有基于區塊鏈的解決方案表現更好,同時提供了更好的數據安全性和訪問效率。下一步將在CPBFT基礎上進行優化,精簡共識流程,并設計結構化的拓撲結構來進一步提升共識算法的效率。
參考文獻:
[1]Valeria M, Gianvito P, Francesco G, et al. On the exploitation of the blockchain technology in the healthcare sector: a systematic review[J]. Expert Systems with Applications, 2023, 213: 118897.
[2]Kumar A, Krishnamurthi R, Nayyar A, et al. A novel smart healthcare design, simulation, and implementation using healthcare 4.0 processes[J]. IEEE Access, 2020, 8: 118433-118471.
[3]王利朋, 關志, 李青山, 等. 區塊鏈數據安全服務綜述[J]. 軟件學報, 2023,34(1):1-32. (Wang Lipeng, Guan Zhi, Li Qingshan, et al. Survey on blockchain-based security services[J]. Journal of Software, 2023,34(1): 1-32.)
[4]張磊, 鄭志勇, 袁勇. 基于區塊鏈的電子醫療病歷可控共享模型[J]. 自動化學報, 2021,47(9): 2143-2153. (Zhang Lei, Zheng Zhiyong, Yuan Yong. A controllable sharing model for electronic health records based on blockchain[J]. Acta Automatica Sinica, 2021,47(9): 2143-2153.)
[5]陳友榮, 陳浩, 韓蒙, 等. 基于信用等級劃分的醫療數據安全共識算法[J]. 電子與信息學報, 2022,44(1): 279-287. (Chen Yourong, Chen Hao, Han Meng, et al. Security consensus algorithm of medical data based on credit rating[J]. Journal of Electronics & Information Technology, 2022,44(1): 279-287.)
[6]Azaria A, Ekblaw A, Vieira T, et al. MedRec: using blockchain for medical data access and permission management[C]//Proc of the 2nd International Conference on Open and Big Data. Piscataway, NJ: IEEE Press, 2016: 25-30.
[7]Daraghmi E, Daraghmi Y, Yuan S. Medchain: a design of blockchain-based system for medical records access and permissions management[J]. IEEE Access, 2019,7: 164595-164613.
[8]Tanwar S, Parekh K, Evans R. Blockchain-based electronic healthcare record system for healthcare 4.0 applications[J] . Journal of Information Security and Applications, 2020,50: 102407.
[9]Huang Haiping, Zhu Peng, Xiao Fu, et al. A blockchain-based scheme for privacy-preserving and secure sharing of medical data[J]. Compu-ters & Security, 2020, 99:102010.
[10]Deepika K M, Sanjay H A, Mohan M M K. Blockchain-based decentralized security using crypto-proof of stake for securing sensitive personal health care records[J]. Advances in Engineering Software, 2022,173: 103235.
[11]Rajesh K, Jay K, Abdullah A K, et al. Blockchain and homomorphic encryption based privacy-preserving model aggregation for medical images[J]. Computerized Medical Imaging and Graphics, 2022,102: 102139.
[12]Erikson J A, Alyson J S, Rodolfo I M, et al. A blockchain-based protocol for tracking user access to shared medical imaging[J]. Future Generation Computer Systems, 2022,134: 348-360.
[13]Shuaib K, Abdella J, Sallabi F, et al. Secure decentralized electro-nic health records sharing system based on blockchains[J]. Journal of King Saud University-Computer and Information Sciences, 2022,34(8): 5045-5058.
[14]Sharda T, Namrata D, Harsh D. A real time secured medical management system based on blockchain and Internet of Things[J]. Measurement: Sensors, 2023, 25: 100630.
[15]Qi Pian, Chiaro D, Giampaolo F, et al. A blockchain-based secure Internet of medical things framework for stress detection[J]. Information Sciences, 2023, 628: 377-390.
[16]Priyanka S, Balasubramanian R. Reversible data hiding based on Shamirs secret sharing for color images over cloud[J]. Information Sciences, 2018,422: 77-97.
[17]劉惠文, 謝才炳, 鄧小鴻. 基于信用的區塊鏈共識算法對比研究[J]. 計算機應用研究, 2023,40(2): 321-327. (Liu Huiwen, Xie Caibing, Deng Xiaohong. Comparative research on blockchain consensus algorithm based on credit[J]. Application Research of Computers, 2023,40(2): 321-327.)
[18]Deng Xiaohong, Li Kangting, Wang Zhiqiang, et al. A novel consensus algorithm based on segmented DAG and BP neural network for consortium blockchain[J]. Security and Communication Networks, 2022, 2022: 1060765.