






摘 要: 基于區塊鏈的醫療數據共享能夠有效地提升醫療數據的可信性,但是面臨著鏈上存儲容量有限、缺乏數據隱私保護等問題。針對這些問題,提出一個基于多層次區塊鏈的醫療數據共享模型。對個人醫療數據進行加密后上傳到鏈下的分布式存儲中,并將數據索引信息上傳到鏈上,利用多層次區塊鏈協同技術和鏈上鏈下混合存儲方式提高存儲效率;引入差分隱私保護聯邦學習中模型參數提升數據的隱私安全。實驗結果表明,相對于以太坊而言,該方案機構存儲開銷平均下降了60%左右,用戶存儲開銷平均下降30%左右。
關鍵詞: 多層次區塊鏈; 醫療數據共享; 分布式存儲; 聯邦學習
中圖分類號: TP391"" 文獻標志碼: A
文章編號: 1001-3695(2022)05-004-1307-06
doi:10.19734/j.issn.1001-3695.2021.10.0426
Multi-level blockchain-based model for medical data sharing
Liu Yang1,2, Hu Xuexian2, Zhou Gang2, Wei Jianghong2
(1.School of Cyber Science amp; Engineering, Zhengzhou University, Zhengzhou 450001, China; 2.The PLA Strategic Support Force Information Engineering University, Zhengzhou 450001, China)
Abstract: Blockchain-based medical data sharing method can effectively enhance the credibility of medical data.However,the limitation of storage capacity on blockchains and the lack of privacy protection in data have restricted the development of medical blockchains.This paper introduced a multi-level blockchain-based model for medical data sharing.Through encrypting personal medical data and their index information,it uploaded the encrypted data to the off-chain distributed storage and on-chain storage respectively.By utilizing both on-chain and off-chain hybrid storage technology and multilevel blockchains,the model improved the efficiency of data storage obviously.Moreover,the model enhanced the protection of data privacy by employing differential privacy technique in transferring parameters of federated learning module.The experimental result of the model demonstrates that the storage costs on the institution side are reduced by about 60%,and the storage costs on the user side are reduced by about 30% on average in comparison with Ethereum.
Key words: multi-level blockchain; medical data sharing; distributed storage; federated learning
0 引言
近年來,隨著信息技術的快速發展,以及云計算、新型網絡技術、物聯網設備的廣泛使用等,使得醫療健康逐漸向數字化、信息化轉型,電子醫療數據呈爆發式的增長,數據類型呈多樣化發展,不僅包括診斷數據、身體健康數據,還包括醫療保險數據、歷史就診記錄等。醫療數據也逐漸成為推動醫療智能化的重要基石,醫療機構能夠通過用戶的電子病歷或者物聯網設備上傳的健康數據[1]更快捷、準確地制定治療計劃[2],同時也在推動臨床科研、臨床決策支持以及藥物研發等方面都起到了積極的作用[3,4]。現階段的醫療數據共享主要分為兩類:a)機構共享,醫療機構之間使用聯邦學習技術并通過云服務器進行聯合建模,從而達到數據共享的目的[5];b)個人共享,用戶與醫療機構之間通過具有強大存儲和計算能力的云服務器進行電子病歷、身體素質等數據的共享[6]。目前,通過云服務器進行數據共享已成為個人或機構的主要手段。云服務器輔助醫療數據共享提高了共享效率并且降低了存儲代價,但是依舊存在著許多問題:a)云作為具有高計算和存儲能力的集中式服務器,當云服務器崩潰或受到攻擊時,用戶數據會遭受數據不可用的風險;b)醫療數據具有隱私性和高度敏感性,需要保證其安全性、機密性以及完整性,然而攻擊者可偽裝成云服務器,導致數據的泄露或更改等;c)用戶作為數據的擁有者,應對數據擁有完全控制權,當數據存儲于云服務器時,用戶喪失了對數據的控制權。
為了防止云服務器的中心化特點所帶來的安全隱患,區塊鏈技術就如何去除可信第三方的問題提供了有效的解決思路。區塊鏈作為防竄改的、透明的分布式賬本,已經被廣泛用于比特幣[7]、以太幣[8]等加密貨幣中,同時,隨著區塊鏈技術的不斷發展,Hyperledger、FISCO等許可鏈平臺也在蓬勃發展,為數據共享提供了更多的關鍵技術。區塊鏈技術的去中心化、去信任、匿名性等特點較好地契合了個人數據共享領域的安全與隱私保護需求。智能合約的出現使得區塊鏈成為具有計算能力的分布式賬本,用戶可通過智能合約按照固定的計算范式進行運算。對于聯邦學習而言,參與方可通過編寫智能合約完成參數聚合、分發等操作,避免第三方服務器在全局建模階段出現單點故障等問題[9]。
近年來,鑒于區塊鏈對于醫療數據共享的優勢,多位學者相繼提出了針對不同問題的解決方案。文獻[10]提出一種多層次醫療區塊鏈架構,該框架由公鏈和聯盟鏈構造,公鏈上由所有醫療機構進行維護,主要承擔用戶與系統交互的任務,同時醫療機構根據類型形成不同的聯盟鏈,結合屬性基加密保證醫療數據的隱私性;但是數據完全存儲在區塊鏈內,對機構造成了巨大的存儲壓力。Xu等人[4]為了降低區塊鏈存儲節點壓力,提出將電子病歷和診斷數據存儲于鏈下的星際文件傳輸系統(inter planetary file system,IPFS)[11]中,得到相應的哈希地址后分別在公鏈構造Userchain,聯盟鏈構造的Docchain進行交易,同時通過數字信封技術保證密鑰的可撤銷;但隨著鏈上交易的不斷增多,依舊會對Docchain中機構造成巨大的存儲壓力。牛淑芬等人[12]提出了一種基于區塊鏈的電子病歷數據共享方案,實現了用戶對數據的安全訪問,該方案在私有鏈和許可鏈上進行構造,每個醫院維護一條私鏈,鏈內存儲病歷密文的哈希,在聯盟鏈中利用可搜索加密技術和代理重加密技術完成電子病歷的安全共享,但是相對于公鏈和聯盟鏈而言,私鏈具有很大的可操作性,無法保證醫療數據是否被竄改,并且該方案主要針對個人的數據共享。文獻[13]提出一種基于區塊鏈的聯邦學習框架,參與方使用卷積神經網絡(CNN)對本地數據集進行訓練,利用智能合約替代協調服務器實現聯邦學習算法,達成醫療機構之間的數據共享,但是參與方將模型參數以明文的形式上傳至區塊鏈,最新研究表明基于這些模型參數,使用隱私攻擊方法[14]依然可以推測出用戶數據的部分隱私信息。
基于區塊鏈的醫療數據共享的最大優勢就是防止醫療數據被竄改,但是對維護區塊鏈的醫療機構造成了巨大的存儲壓力。針對此類問題,本文提出基于多層次區塊鏈的醫療數據共享模型,該模型不但可以降低機構和用戶的存儲壓力,還能夠保證在個人共享和機構共享過程中數據的隱私性。本文提出了多層次醫療數據共享方案,用于大規模醫療數據共享。該方案分別利用公鏈構建用戶層,利用許可鏈構造機構層和聯邦層,并在機構層中根據機構類型的不同將其分為多條區塊鏈,用戶和機構可在用戶層和機構層中讀取并上傳數據,機構可在聯邦層中進行聯邦學習,利用區塊鏈的特性保證了數據不可竄改,避免了醫療糾紛。醫療機構之間通過聯邦學習進行數據共享,并通過本地差分隱私保護聯邦學習中模型參數的隱私性。個人與機構之間使用屬性基加密和AES加密對用戶醫療數據進行加密,保護用戶隱私。針對機構和用戶的存儲壓力過大的問題,通過鏈上鏈下混合存儲方式降低機構存儲壓力。鏈下存儲中,引入IPFS,將數據加密存儲在IPFS中,在保證隱私的同時有效減低通信開銷和計算開銷。鏈上存儲中,醫療機構只需維護機構層中與其類型相同區塊鏈,相對于單鏈結構而言,不再需要維護所有數據,從而大幅降低醫療機構的存儲開銷。
1 預備知識
1.1 區塊鏈
區塊鏈本質是一個去中心化且不可竄改的分布式賬本[15],區塊以默克爾樹為數據結構存儲交易,并使用哈希指針按照時間戳順序將區塊鏈接在一起,保證網絡內交易的完整性和可追溯性,如圖1所示。在區塊鏈網絡中由全節點和輕節點兩類參與者進行維護[16],全節點需要記錄區塊鏈內部的所有交易,維護區塊鏈全局狀態;輕節點需要對區塊鏈頭部進行維護,維護區塊鏈局部狀態。
區塊鏈按照訪問和管理權限分為公鏈、許可鏈(包含私鏈和聯盟鏈)。公鏈即鏈上每個用戶都有權限讀取查看任何一個節點的信息,任何用戶都可以在區塊鏈網絡內發送并查找交易。鏈上所有用戶權限平等,共同維護。許可鏈是由若干機構或組織共同參與管理的區塊鏈,具有區塊鏈網絡內節點的管理權限。
1.2 聯邦學習
聯邦學習是由Google在2016年率先提出的概念[17],其本質是一種分布式機器學習框架。在中央服務器的協調下,每個用戶根據本地數據獨立計算當前模型參數的更新值并傳到中央服務器S中,服務器聚合用戶更新以計算新的全局模型,從而完成數據共享的目的。在聯邦學習中,用戶Qi持有本地數據集Di,所有用戶共享模型架構θ,參與方數目為m,具體步驟如下所示:a)用戶Qi基于本地隱私數據Di訓練模型架構θ,計算得到Qi的局部模型參數更新值為Δwi=train(θ,Di);b)用戶Qi將本地模型參數Δwi上傳至服務器S;c)服務器S聚合所有用戶上傳的模型參數,并得到全局模型參數w′=∑mi=1Δw;d)服務器S將w′返還給所有參與方,參與方計算均值,更新本地模型;e)重復步驟a)~d),直至模型收斂。
盡管聯邦學習在數據共享中不需要原始數據,但是為了構建聯合模型,參與方仍然需要上傳模型參數或梯度,這些數據本質上是原始數據的映射,攻擊者可偽裝成參與方或者服務器竊取模型參數[18]。針對此類問題,主要通過引入同態加密[19]、差分隱私[20]、安全多方計算保護聯邦學習中的模型參數。其中差分隱私定義為:設有隨機化算法A,對于兩個至多有一條數據不同的數據集D和D′以及任意可能的輸出S,若算法A滿足Pr[A(D)∈S]≤eεPr[A(D′)∈S]+δ,則稱隨機化算法A滿足(ε,δ)差分隱私保護,其中Pr[·]表示算法A暴露信息的概率,ε代表隱私保護預算,一般來說ε越小D和D′輸出的概率分布越接近,隱私保護級別越高,其中δ是算法允許的誤差,通常為較小的常數。
1.3 屬性基加密
屬性基加密[21]方案分為基于密鑰策略的屬性基加密(key-policy attribute-based encryption,KP-ABE)和基于密文策略的屬性基加密(ciphertext-policy attribute-based encryption,CP- ABE)兩類。為了使用戶能夠在數據交易過程中對數據達到細粒度控制,本文中引入CP-ABE,將解密策略嵌入到密文中,而用戶的屬性在密鑰生成時嵌入其私鑰中,即訪問策略與密文相關聯。CP-ABE通常情況下包括以下四種算法:
a)Setup(1λ),除了隱式安全參數1λ外,Setup算法不接受任何輸入,輸出為公共參數PK和主密鑰MK。
b)KeyGeneration(MK,S),密鑰生成算法以主密鑰MK和一組屬性集S作為輸入,輸出私鑰SK。
c)Encrypt(PK,M,A),加密算法以公共參數PK、消息M和屬性域上的訪問結構A作為輸入。該算法將加密M并生成密文CT,只有擁有滿足訪問結構的屬性集的用戶才能解密消息。
d)Decrypt(PK,CT,SK),解密算法以公共參數PK、包含訪問策略A的密文CT和私鑰SK作為輸入,私鑰SK是對應屬性集S的私鑰。如果屬性集S滿足訪問結構A,那么算法將解密密文并返回消息M。
2 系統模型
本文考慮了一個五層架構,分別是設備層、存儲層、用戶層、機構層以及聯邦層,如圖2所示。
a)設備層。設備層中以物聯網設備為主,主要負責向用戶發送健康數據。隨著物聯網技術的不斷發展,越來越多的物聯網設備集成到醫療中,例如運動手環時刻監控用戶的睡眠、血氧飽和度等健康數據,由于物聯網設備的輕量性特點,所以每個物聯網設備都需要一個聚合節點作為其管理方,并定期向聚合節點發送各種收集的有關數據。在本系統中,用戶扮演聚合節點的角色在區塊鏈網絡中進行數據交易。
b)存儲層。本系統通過鏈上鏈下混合式存儲的方式提高區塊鏈存儲效率,在鏈下存儲中使用分布式數據庫IPFS對加密的物聯網數據、電子病歷以及診斷數據等進行存儲,并將唯一的哈希地址發送給用戶,用戶可通過哈希地址定位并下載數據;鏈上存儲中主要通過用戶層、機構層對加密的哈希地址進行存儲。
c)用戶層。用戶層使用以太坊作為公共區塊鏈,主要用于用戶向醫療機構上傳醫療數據,任何人都可以隨時加入用戶層進行交易讀取、發送需求交易等。用戶層中分為輕節點和全節點兩類節點。輕節點主要為管理物聯網設備的用戶節點以及接收醫療數據的機構部門節點,用戶節點搜集物聯網設備所產生的健康數據并將其加密上傳至IPFS中。機構部門節點由醫療機構進行背書,接受用戶節點的交易請求。全節點主要是具有較強存儲和計算能力的服務器,負責對用戶層進行全局維護,具體來說,全節點需要對所有的交易進行維護,存儲完整的區塊鏈結構,全節點可以在區塊鏈網絡內生成、發送、驗證和協助輕節點查詢交易。
d)機構層。機構層中使用FISCO作為許可區塊鏈,使用FISCO群組技術創造區塊鏈,每條區塊鏈由相同類型的醫療機構進行維護,主要用于醫療機構向用戶發送診斷數據。在系統中假設機構層中存在三條區塊鏈分別為保險區塊鏈、醫療設備區塊鏈以及醫院區塊鏈。在機構層區塊鏈內分為共識節點和觀察節點兩種。共識節點是區塊鏈內為交易和區塊進行共識的節點,主要由機構服務器進行維護;觀察節點維護區塊鏈所有數據,主要由機構部門進行維護。同時,本文將觀察節點分為交易節點和詢問節點,機構通過交易節點對用戶發送交易,用戶通過調用詢問節點查找鏈內交易,詢問節點無權限在鏈內發送交易。
e)聯邦層。聯邦層也以FISCO作為許可區塊鏈,主要為機構之間的醫療數據進行共享。當機構成為機構層區塊鏈的共識節點才可進入聯邦層。在聯邦層中,機構可根據自身算力選擇成為共識節點或者觀察節點,所有節點都有權在鏈內發送聯邦學習請求并進行聯邦學習。
不同層級之間的關系如圖2所示。物聯網設備定期向IPFS上傳加密健康數據,用戶將IPFS返回的哈希地址作為交易數據上傳至用戶層,機構節點接收到交易后,對加密數據進行解密并進行診斷,然后將診斷數據加密上傳至IPFS并在機構層發起交易,用戶節點通過詢問節點在機構層進行交易讀取獲得診斷數據。各機構可將收集的用戶醫療數據整合并發起聯邦學習請求,然后在本地進行模型訓練,將局部模型參數上傳至聯邦層的智能合約中,智能合約執行模型聚合,并將聚合結果下發到參與聯邦學習的各機構節點。
3 基于多層次區塊鏈的數據共享模型設計理念
3.1 身份管理
身份的生成和驗證機制在任何數據管理系統中都是非常重要的,因為它直接關系到系統的安全性和隱私性。在設計理念上,用戶應使用公鑰生成的地址唯一標志區塊鏈網絡中的實體,通過數字簽名技術保證區塊鏈網絡內用戶的身份認證和授權。在本模型中,為了防止攻擊者對于用戶的行為軌跡進行分析,用戶的身份應當是保密的。同時為了證明醫療機構的真實性,用戶應能在區塊鏈網絡內直接查詢機構地址以及屬性等信息,所以機構的身份應該能被所有用戶查詢。
3.2 分布式賬本的設計
分布式賬本的內容主要反映了區塊鏈網絡內所維護的賬本中所記錄的歷史信息和當前狀態。由于醫療數據的高度隱私性以及為了防止醫療糾紛,本模型要求:a)賬本應是防竄改的、透明的、可追溯的;b)不論是用戶節點還是機構節點,在發起交易時應記錄數據哈希保證數據完整性,并且需對交易進行數字簽名證明自己的身份。
3.3 智能合約的設計
在用戶層中,本文制定了以下兩個系統智能合約對醫療機構進行判定:
a)機構共識節點判定智能合約(ICNSC)。為了保證醫療機構的真實性,新醫療機構成為機構層中對應區塊鏈共識節點之前,需要通過ICNSC中其他同類型的醫療機構的驗證。驗證成功后,醫療機構會將本身地址寫入ICNSC并成為驗證方的一員。
b)機構部門節點判定智能合約(IDNSC)。為了保證用戶對機構部門節點的查詢,IDNSC通過機構節點信息存儲模塊存儲各機構部門節點地址、屬性等信息。該合約只能被經過ICNSC驗證的機構進行存儲調用,任何節點都可進行查詢調用。
3.4 共識算法
本系統中區塊鏈架構共分為用戶層、機構層和聯邦層三層,因為用戶層是公鏈,機構層和聯邦層是許可鏈,所以具有不同的共識算法。
a)用戶層使用以太坊作為底層的公鏈,由于注冊簡單并且任何人都可以發送交易,存在惡意節點對區塊鏈進行女巫攻擊[22],其他用戶無法判別,所以采用工作量證明(proof of work,POW)作為用戶層的共識機制。全節點根據本身算力計算出POW設定的目標值,增大惡意節點攻擊的成本。全節點解決相應的POW難題,獲得生成塊的資格,并且得到相應的獎勵。
b)機構層、聯邦層作為以FISCO為底層的許可鏈,機構可對鏈內節點進行驗證,相對于用戶層而言,減少了惡意節點攻擊的可能性,所以共識算法采用FISCO本身提供的實用拜占庭容錯(practical Byzantine fault tolerance,PBFT)算法[23]。
3.5 安全目標
a)數據安全。在用戶層和機構層中,通過密碼學中加密和數字簽名技術以及區塊鏈本身特點保證了數據的機密性、完整性和可用性,即實現了數據安全。用戶和醫生訪問數據時,通過屬性基加密進行識別、認證和授權等以實現訪問控制。
b)隱私保護。本文利用區塊鏈的匿名性和不可鏈接性來實現用戶的隱私保護。區塊鏈中的假名不僅保證了用戶身份的匿名性,而且與用戶真實身份信息解關聯,使得攻擊者無法判斷鏈內交易是否為同一用戶發起,從而保證了用戶的隱私保護。區塊鏈的去中心化特性使得攻擊者無法偽裝成中心服務器對聯邦學習發起攻擊,從而實現了聯邦學習中模型參數的隱私保護。
4 具體流程
模型共享方案分為機構認證流程、用戶醫療數據共享流程和機構醫療數據共享流程三個階段。為了使得系統更為直觀的表現,本文將物聯網場景下的物聯網數據作為醫療數據,醫院區塊鏈作為機構層,醫生作為機構部門。具體符號說明如表1所示。
4.1 機構認證流程
醫院在進入醫院區塊鏈前需在用戶層中證明其機構身份的真實性,即在用戶層中調用ICNSC向其他已經過驗證的機構發送請求,當超過一半機構認同后才可被寫入ICNSC中。
假設ICNSC中已存在2N所醫院,新的醫院(簡稱醫院A)進入系統時,首先在用戶層通過橢圓曲線加密技術生成公私密鑰對并生成相應地址,之后通過調用ICNSC將身份信息向醫院區塊鏈中已存在的2N所醫院發起驗證交易。所有的醫院收到請求后,驗證醫院A的身份信息。當醫院A通過N個醫院驗證成功后才可被寫入ICNSC并將醫院部門節點信息存儲于IDNSC中。具體如算法1所示。
算法1 機構系統認證流程
輸入:新醫院機構共識節點newCN(consensus node of new hospital);新醫院部門節點newDN(department node of new hospital);已有的醫院機構共識節點oldCN(consensus node of old hospital)且數量為2N,已驗證數M=0。
輸出:ICNSC,IDNSC。
打包新醫院機構的信息:
datanewCN=(informationnewCN‖AnewCN);
新醫院機構調用ICNSC并生成交易:
TxnewCN=(datanewCN,signnewCN);
signNewCN=(PrinewCN,H(datanewCN));
oldCN對newCN信息進行驗證:
while Mlt;N do
for(i=0;ilt;2N;i++)
if oldCN′iverification=1
M++;
end
end
end
ICNSC寫入newCN信息:
ICNSC+=(informationnewCN‖AnewCN);
新醫院機構將newDN信息以及地址打包并存儲于IDNSC:
IDNSC+=(informationnewDN‖AnewDN);
return ICNSC,IDNSC
4.2 用戶醫療數據共享流程
用戶醫療數據共享主要由系統初始化、數據存儲與共享兩階段組成,在該流程中,將對稱加密算法AES和CP-ABE相結合,在保證數據機密性的同時實現細粒度訪問控制。
4.2.1 系統初始化
醫生在用戶層生成公私鑰對(Pubrole,Prirole),并根據公鑰生成地址Arole。醫院A執行CP-ABE初始化算法Setup(1λ)產生主密鑰MK和公共參數PK。每個醫生向醫院A提交相關注冊信息(身份信息、科室、職位等),醫院A驗證醫生身份資質后,根據其身份定義屬性集合SD,并運行密鑰生成算法KeyGene-ration(MK,SD)生成醫生的屬性私鑰SKD。醫院A對該醫生進行背書并將屬性集SD、公鑰PubD、地址AD存儲于IDNSC中。
4.2.2 數據存儲與共享
當用戶與醫生之間進行數據共享時,為降低節點存儲壓力需要先將醫療數據通過AES加密存儲在IPFS中并得到哈希地址Hlocation,然后利用CP-ABE對Hlocation進行加密并生成交易,醫生節點接收交易后對醫療數據進行診斷,并將使用用戶產生的AES密鑰將診斷結果加密上傳至IPFS得到哈希地址H′location并生成交易。具體流程如圖3所示。
首先,物聯網設備收集用戶健康數據M,如心跳、血壓、溫度等,并將M發送給用戶。用戶使用AES算法,從密鑰空間中隨機選取對稱密鑰KU加密健康數據M,將得到的密文上傳至IPFS并獲得數據訪問地址Hlocation,為確保IPFS中的健康數據不被竄改和偽造,需要對健康數據進行哈希計算得到HM。由于醫院已在IDNSC中存儲醫生信息,用戶可在ICNSC中查找醫院A的地址并從IDNSC中查找由醫院A背書的醫生節點地址AD以及其屬性集SD。用戶根據醫生屬性集生成訪問策略A,并與公共參數PK、健康數據的哈希值HM、對稱密鑰KU以及數據地址Hlocation為輸入,利用加密算法Encrypt(PK,M,A)得到密文CTA。使用醫生公鑰PubD對密文CTA進行加密得到EnvD,生成交易,并使用私鑰PriU對交易的哈希計算結果進行簽名,如圖3中步驟a)~d)所示。
TXU→D={AU,TS1,signU,EnvD}(1)
其中:signU=Sign(PriU,H(AU,TS1,EnvD)),EnvD=Enc(PubD,CTA),CTA=Encrypt(PK,Hlocation,HM,KU,A)。
醫生節點在用戶層收到用戶發起的交易后首先對簽名的合法性進行驗證,驗證成功后使用私鑰PriD和屬性密鑰SKD對交易進行解密得到HM、KU、Hlocation;隨后醫生節點根據Hlocation從IPFS讀取加密數據,并使用對稱密鑰KU進行解密得到健康數據M。為保證數據的完整性,醫生利用HM對健康數據進行驗證,驗證成功后對用戶進行診斷,如圖3中步驟e)f)所示。
醫生對用戶數據診斷結束后生成診斷數據Dd,并進行哈希計算得到HDd,之后使用用戶選取的對稱密鑰KU對Dd進行加密,將得到的密文上傳至IPFS獲得其對應的數據訪問地址H′location;之后使用用戶公鑰PubU對H′location進行加密生成EnvU,隨后醫生在鏈內發起交易并利用私鑰PriD對該交易進行簽名。
TXD→U={AD,TS2,signD,EnvU,H(TXU→D)}(2)
其中:signD=Sign(PriD,H(AD,TS2,EnvU,H(TXU→D)));EnvU=Enc(PubU,H′location)。
醫生在機構層中向用戶發起交易后,用戶向詢問節點發送請求信息,并將AD、AU、H(TXU→D)作為索引發送至詢問節點,詢問節點將索引對應的信息EnvU取出并發還給用戶,用戶在接收到數據后用戶使用私鑰PriU進行解密,從IPFS處下載密文得到診斷數據。如圖3中步驟g)~k)所示。
4.3 機構數據共享流程
聯邦層由通過用戶層中的ICNSC判定的機構進行維護,鏈中合法機構通過聯邦層進行聯邦學習,實現數據共享。在聯邦層中有發起者、參與者兩類實體,發起者將機器學習模型θ上傳至IPFS之前,需在聯邦層內廣播訓練所需醫療數據類型。區塊鏈網絡內機構通過廣播判斷是否參與本次聯合建模,發起者也可通過ICNSC判斷請求者真實身份,決定是否同意機構成為此次聯邦學習的參與者。在發起者確定參與者后,利用對稱密鑰K將模型參數進行加密上傳至IPFS中,并將返回的地址、密鑰K以及聚合算法寫入智能合約中。當參與者調用合約獲取密鑰K和地址時,合約首先判斷該機構是否為此次聯邦學習的參與者后,再將密鑰K和地址返回給參與者。假設X個參與機構,參與者Qi獲得機器學習模型θ后,利用本地醫療數據Di進行訓練,計算得到模型參數更新至Δwi=train(θ,Di),并利用本地差分隱私技術對模型參數加噪聲生成Δw′i,之后將模型參數Δw′i發送至機構層智能合約中進行聚合,獲取聚合參數w′=∑Ui=1Δw′i。為防止在聯邦學習中模型推理攻擊,本文將在線參與方數量U、參與方參與迭代次數P以及時間Δt作為限制條件,根據上述條件的滿足情況判斷是否進行聚合,具體如算法2所示。
算法2 聯邦層聚合算法
輸入:參與方i地址APi;模型參數Δw′i;已參與迭代次數APi[P];模型已迭代總次數r。
輸出:全局模型w′模型已迭代總次數r。
判斷機構是否為參與者require(APi);
判斷參與方參與次數P,確定是否能夠上傳參數并參與聚合,require(r-2lt;APi[P]lt;=r);
接受參與方i的模型參數Δw′i;
判斷是否達到聚合條件:require((Qgt;X/2)and(Tgt;Δt));
模型參數進行聚合,w′=∑Ui=1Δw′i;
迭代次數更新r=r+1;
向參與方i發送 r,w′。
5 安全性分析
5.1 數據安全
1)數據機密性 針對于個人數據共享,用戶利用AES方案將醫療數據加密上傳至IPFS中,并使用屬性密鑰對返回的哈希地址進行加密,只有滿足屬性策略的機構才可對數據進行解密,保證了個人數據的機密性。針對機構數據共享而言,各機構在將本地模型參數Δwi=train(θ,Di)上傳區塊鏈之前,需先在本地使用差分隱私得到擾動后的模型參數Δw′i,隨后將其上傳至聯邦層,滿足聯邦層中的合約條件后才可對模型參數進行聚合。由于模型聚合的整個過程都由智能合約執行,且參與方上傳至合約中的模型參數是經差分隱私擾動后的,攻擊者不能以模型反演的方式威脅用戶隱私,保證了機構數據的機密性。
2)數據完整性 針對數據的完整性主要從鏈上鏈下存儲進行分析,鏈下存儲中使用IPFS存儲用戶數據和機構數據,根據IPFS的去中心化存儲以及按址存儲特性,有效地防止第三方竄改數據;鏈上存儲中,能夠實現用戶與機構之間數據流轉過程的可追溯,在用戶與醫生之間產生數據交易時需對交易內容進行哈希運算并對交易進行簽名,從而保證數據的完整性。
3)數據可用性 針對于數據可用性主要依托區塊鏈以及IPFS本身特性,區塊鏈和IPFS作為分布式系統能對單點故障有較強的魯棒性,能夠保證系統的正常運行;此外區塊鏈保證了存儲在區塊鏈鏈上數據的不可竄改,除非攻擊者擁有大于用戶層區塊鏈系統中51%以上的計算能力,機構層中首先需要通過用戶層的機構判定對機構進行篩選,并利用許可鏈對節點的管理權限降低區塊鏈內部出現惡意節點的可能性。
5.2 隱私保護
針對醫療領域而言,為了防止醫療糾紛的發生,現實中醫療機構及其工作人員在區塊鏈網絡內的身份信息應被所有用戶熟知。用戶的偽身份是注冊系統時所產生的地址,攻擊者無法推測出用戶的真實身份,并且用戶可多次注冊偽身份,所產生的地址無任何關聯,攻擊者無法判斷數據交易是否來自同一用戶,從而保證了用戶的身份以及數據的不可鏈接性。
在用戶層和機構層中,由用戶利用AES密鑰將醫療數據加密上傳至IPFS,而后使用機構屬性對醫療數據的哈希地址以及密鑰K進行屬性基加密并生成交易,只有擁有滿足訪問結構的機構才可對交易中密文進行解密,因此本文方案能夠保證用戶醫療數據的隱私性。
在聯邦層中,使用區塊鏈代替中心服務器去除了半誠實的第三方,杜絕了第三方服務器作惡的可能性。聯邦層中通過聯邦學習實現了機構之間的數據共享,避免了用戶隱私數據的直接流轉,同時結合本地差分隱私技術,各機構在將局部模型參數上傳至區塊鏈前,需向本地模型參數加入拉普拉斯噪聲使其滿足差分隱私,保護模型參數隱私性。結合智能合約編寫聚合約束條件,在一定程度上能夠抵御模型反演攻擊。
6 實驗分析
為了評估方案的實際性能,本文對CP-ABE算法、機構和用戶的存儲壓力以及聯邦學習進行了實驗驗證。實驗的硬件環境為IntelCoreTM" i7-6700 CPU@3.60 GHz,32 GB RAM。實驗環境為VMware Workstation 16 Pro中安裝的Ubuntu 20.04,分配4 GB內存和兩個核心處理器。
6.1 訪問控制開銷
在對性能進行測試時,為了降低區塊鏈節點本地存儲壓力,將醫療數據經過AES加密后上傳至IPFS中,然后對返回哈希地址數據進行屬性基加密并上鏈交易。考慮到數據文件大小的影響,在實驗仿真中,主要以CP-ABE算法對大小6 KB的文件進行加/解密,通過更改屬性個數判斷加/解密時間是否滿足平臺需求,如圖4所示。
通過更改屬性個數觀察到加/解密時間是隨著屬性數量的增加而增加的,但都在1s內完成,操作實現的時間在可接受范圍內,可保證醫療數據安全的同時又能夠及時地獲取摘要數據。
6.2 存儲性能
為了有效驗證該模型的存儲性能,本文采用“一問一答”的形式,即用戶向機構發送一次加密健康數據的存儲地址Hlocation,機構便向用戶發送一次加密診斷數據的存儲地址H′location。用戶和機構將IPFS返回的哈希地址作為交易,通過多筆交易對機構和用戶的存儲壓力進行分析,并與相同交易量下以太坊存儲消耗進行對比實驗。當總交易量為M次,機構層中有N條區塊鏈時,ML為以太坊輕節點存儲大小,存儲區塊鏈頭部信息;MF為以太坊全節點存儲大小,存儲區塊鏈內部所有交易,則本文模型中機構存儲開銷為ML/2+MF/2N,用戶存儲開銷為ML/2。本文在機構層建立三條區塊鏈,并以總交易量為1 500次時對機構和用戶進行存儲性能分析,如圖5所示。
從圖5中可得出,當機構層區塊鏈為三條時,相對于以太坊中節點而言,本文方案中機構存儲開銷下降約60%,用戶存儲開銷下降約30%。機構節點存儲開銷為ML/2+MF/2N,其初始配置文件在機構節點存儲開銷占比較小,所以相對于以太坊全節點存儲開銷減小較大,然而用戶節點存儲開銷為ML/2,其初始配置文件存儲開銷占比較大,所以相對而言存儲開銷下降較小,由此證明本文方案有效地減少了機構和用戶的存儲開銷。
6.3 聯邦學習性能比較
為了驗證聯邦層中聚合算法條件的有效性,在聯邦層中,PyTorch環境下,本文使用改進的CNN算法對MedMNIST[24]數據集中的OrganMNISTAxial進行實驗,該數據集有35 000訓練集以及18 000測試集。其中改進CNN算法即本文所提使用差分隱私機制在訓練過程中對計算得到的梯度進行擾動。實驗中共有X=10個機構,通過更改參與方數量U=3、5、8、10進行模型測試準確率的比較,并與加上滿足差分隱私的ε=0、1、1.5、2進行對比,結果如圖6所示。
從參與聯邦學習模型更新在線參與方數量U角度分析,可以得到U的取值會直接影響到聯邦學習的測試準確率。U的數量越多模型準確率越高,說明聯邦學習中模型更新參與人數的增加提高了模型的測試準確率。從差分隱私角度分析,聯邦學習中參與方是否在本地進行差分隱私以及差分隱私的隱私預算ε的改變并不會影響模型收斂情況,但是進行差分隱私的聯邦學習的模型準確率低于無差分隱私的聯邦學習。從差分隱私中隱私預算ε的大小分析得到,改變ε可在一定范圍內保護模型參數△wi的隱私性,并且ε越小,隱私保護效果越好,模型準確率越低,這與差分隱私的理論一致。
為了證明本文方法的有效性,本文在ε=2、U=10的條件下,將所提模型中使用的改進CNN在OrganMNISTAxial數據集上識別的準確率與文獻[13]進行對比,結果如圖7所示。本文的改進CNN算法采用差分隱私機制對訓練過程中計算得到的梯度進行擾動實現了隱私保護,而文獻[13]的方法未添加任何隱私保護機制。
從實驗結果可得,在醫療數據集OrganMNISTAxial上,本文模型性能與文獻[13]能夠實現幾乎相同的準確率,但在本文中,聯邦學習參與方上傳局部模型參數前,向本地模型參數加入拉普拉斯噪聲來保護模型參數的隱私性,為用戶數據提供了良好的隱私保護。相較于微小的性能損失,為用戶數據提供的隱私保護顯得更有價值。
7 結束語
本文針對大規模醫療數據的存儲與共享問題,提出了一種基于多層次區塊鏈的醫療數據共享模型,該方案使用鏈上多層次存儲,鏈下IPFS混合存儲的方式,保證了醫療數據的安全性,同時提高了區塊鏈的擴展性。個人數據共享中,通過CP-ABE和AES對醫療數據進行加密,防止惡意攻擊者竊取數據,同時用戶可自定義訪問策略,以達到對醫療數據的細粒度訪問控制;針對機構數據共享問題,各機構可自由選擇是否參與聯邦學習,并在模型參數發送前使用本地差分隱私技術向模型參數中添加擾動,在模型聚合階段,通過智能合約進行聚合降低惡意攻擊的成功率。實驗表明,本文方案能夠有效地降低區塊鏈節點存儲開銷,提高數據共享效率。在下一步工作中將對聯邦學習算法進行改進,在保證聯邦學習中模型參數的隱私性的前提下提高模型的準確率。
參考文獻:
[1]郭子菁,羅玉川,蔡志平,等.醫療健康大數據隱私保護綜述[J].計算機科學與探索,2021,15(3):389-402. (Guo Zijing,Luo Yuchuan,Cai Zhiping,et al.Overview of privacy protection technology of big data in healthcare[J].Journal of Frontiers of Computer Science amp; Technology,2021,15(3):389-402.)
[2]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.Washington DC:IEEE Computer Society,2016:25-30.
[3]Obermeyer Z,Emanuel E J.Predicting the future-big data,machine learning,and clinical medicine[J].The New England Journal of Medicine,2016,375(13):1216-1219.
[4]Xu Jie,Xue Kaiping,Li Shaohua,et al.Healthchain:a blockchain-based privacy preserving scheme for large-scale health data[J].IEEE Internet of Things Journal,2019,6(5):8770-8781.
[5]Kim Y,Sun Jimeng,Yu H,et al.Federated tensor factorization for computational phenotyping[C]//Proc of the 23rd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining.New York:ACM Press 2017:887-895.
[6]Zhang Chuan,Zhu Liehuang,Xu Chang,et al.PPDP:an efficient and privacy-preserving disease prediction scheme in cloud-based e-healthcare system[J].Future Generation Computer Systems,2018,79(2):16-25.
[7]Nakamoto S.Bitcoin:a peer-to-peer electronic cash system[EB/OL].(2008-10-23).https://bitcoin.org/bitcoin.pdf.
[8]Wood G.Ethereum:a secure decentralised generalised transaction ledger[R/OL].(2016-10-15).http://gavwood.com/Paper.pdf.
[9]Ramanan P,Nakayama K.BAFFLE:blockchain based aggregator free federated learning[C]//Proc of IEEE International Conference on Blockchain.Washington DC:IEEE Computer Society,2020:72-81.
[10]Malamas V,Kotzanikolaou P,Dasaklis T K,et al.A hierarchical multi blockchain for fine grained access to medical data[J].IEEE Access,2020,8:134393-134412.
[11]Benet J.IPFS:content addressed,versioned,P2P file system[EB/OL].(2014-07-14).https://arxiv.org/pdf/1407.3561.pdf.
[12]牛淑芬,陳俐霞,李文婷,等.基于區塊鏈的電子病歷數據共享方案[J/OL].自動化學報.(2019-11-25).https://doi.org/10.16383/j.aas.c190801. (Niu Shufen,Chen Lixia,Li Wenting,et al.Electronic medical record data sharing scheme based on blockchain[J/OL].Acta Automatica Sinica.(2019-11-25).https://doi.org/10.16383/j.aas.c190801.)
[13]El Rifai O,Biotteau M,De Boissezon X,et al.Blockchain-based fede-rated learning in medicine[C]//Proc of the 18th International Confe-rence on Artificial Intelligence in Medicine.Cham:Springer,2020:214-224.
[14]Fredrikson M,Jha S,Ristenpart T.Model inversion attacks that exploit confidence information and basic countermeasures[C]//Proc of the 22nd ACM SIGSAC Conference on Computer and Communications Security.New York:ACM Press,2015:1322-1333.
[15]劉明達,陳左寧,拾以娟,等.區塊鏈在數據安全領域的研究進展[J].計算機學報,2021,44(1):1-27. (Liu Mingda,Chen Zuo-ning,Shi Yijuan,et al.Research progress of blockchain in data security[J].Chinese Journal of Computers,2021,44(1):1-27.)
[16]曾詩欽,霍如,黃韜,等.區塊鏈技術研究綜述:原理、進展與應用[J].通信學報,2020,41(1):134-151. (Zeng Shiqin,Huo Ru,Huang Tao,et al.Survey of blockchain:principle,progress and application[J].Journal of Communication,2020,41(1):134-151.)
[17]McMahan B,Moore E,Ramage D,et al.Communication-efficient learning of deep networks from decentralized data[C]//Proc of the 20th International Conference on Artificial Intelligence and Statistics.2017:1273-1282.
[18]楊庚,王周生.聯邦學習中的隱私保護研究進展[J].南京郵電大學學報,2020,40(5):204-214. (Yang Geng,Wang Zhousheng.Survey on privacy preservation in federated learning[J].Journal of Nanjing University of Posts and Telecommunications:Natural Science,2020,40(5):204-214.)
[19]Wang Hongtao,Li Ang,Shen Bolin,et al.Federated multi-view spectral clustering[J].IEEE Access,2020,8:202249-202259.
[20]Song Shuang,Chaudhuri K,Sarwate A D.Stochastic gradient descent with differentially private updates[C]//Proc of IEEE Global Confe-rence on Signal and Information Processing.Piscataway,NJ:IEEE Press,2013:245-248.
[21]Bethencourt J,Sahai A,Waters B.Ciphertext-policy attribute-based encryption[C]//Proc of IEEE Symposium on Security and Privacy.Washington DC:IEEE Computer Society,2007:321-324.
[22]Douceur J R.The Sybil attack[C]//Proc of International Workshop on Peer-to-Peer Systems.Berlin:Springer,2002:251-260.
[23]Castro M,Liskov B.Practical Byzantine fault tolerance and proactive recovery[J].ACM Trans on Computer Systems,2002,20(4):398-461.
[24]Yang Jiancheng,Shi Rui,Ni Bingbing.MedMNIST classification decathlon:a lightweight AutoML benchmark for medical image analysis[C]//Proc of the 18th IEEE International Symposium on Biomedical Imaging.Piscataway,NJ:IEEE Press,2021:191-195.