韓 剛,呂英澤,羅 維,王嘉乾
西安郵電大學 網絡空間安全學院,西安710000
新冠肺炎作為席卷全球的傳染疾病,對全球人類的生命健康造成了巨大的威脅,極大地影響了社會的正常運行,同時也對世界各國的醫(yī)療系統(tǒng)運行帶來了巨大的挑戰(zhàn)。在中國,疫情雖已得到控制,但仍存在風險,一旦發(fā)現新冠肺炎疑似或確診病例,政府部門和醫(yī)療機構會立即展開行動,對患者的個人信息和最近行程進行統(tǒng)計,并傳遞至下一級部門,下一級部門搜尋密切接觸者,并對密切接觸者進行隔離觀察。政府部門還會以匿名形式向公眾公布新冠肺炎確診患者的最近行程以及接觸人群信息。但在政府或醫(yī)療機構將患者基本信息傳送至下一級部門的過程中,可能會造成患者身份證號碼、家庭住址等個人信息泄露,引發(fā)諸如社會恐慌、對患者歧視等次生災害。此外,政府機構和醫(yī)療機構的患者數據類型不統(tǒng)一、存儲方式不統(tǒng)一,無法實現患者數據信息的安全、實時共享。因此,患者個人信息數據以及醫(yī)療記錄數據的安全問題顯得十分緊迫。
區(qū)塊鏈技術的蓬勃發(fā)展為各個行業(yè)提供了新的發(fā)展方向,區(qū)塊鏈技術在保護患者隱私方面展現出巨大的潛力,世界各國針對區(qū)塊鏈隱私保護進行了大量研究。Nathan 等人提出了一種基于區(qū)塊鏈的個人信息管理系統(tǒng),使用區(qū)塊鏈來儲存、傳遞、下載分析數據。Lazarovich提出使用區(qū)塊鏈技術保護個人隱私,以保護醫(yī)療患者數據為例闡述基于區(qū)塊鏈審計技術的隱形墨水系統(tǒng)。Azaria 等人首次提出了基于區(qū)塊鏈技術的電子病歷系統(tǒng),通過在鏈上部署智能合約來完成病例的修改、刪除、更改權限和信息共享等功能。Chen等人提出利用區(qū)塊鏈和云存儲技術來實現一個患者醫(yī)療數據管理儲存方案。Omar等人提出了一種基于聯盟鏈的患者醫(yī)療數據隱私保護平臺,將數據加密存儲至鏈上,數據擁有者可授權數據訪問者的訪問權限。薛騰飛等人提出了一種區(qū)塊鏈醫(yī)療數據共享模型,根據多維度評價指標,選用股份授權證明機制(delegated proof of stake,DPoS)分配權限。張超等人提出使用基于實用拜占庭容錯算法(practical Byzantine fault tolerance,pBFT)的聯盟鏈醫(yī)療區(qū)塊鏈系統(tǒng),系統(tǒng)可以有效防止醫(yī)療數據被泄露。但是,上述研究依然存在系統(tǒng)性能不夠高效,患者數據安全性無法完全保障的問題。
綜合上述情況,本文提出了結合區(qū)塊鏈的重大疫情患者隱私數據保護方案,該方案可滿足患者隱私數據的完整性、可限制性、不可篡改性以及可審計性等數據安全需求。方案采用聯盟鏈,將重大疫情治理的主要參與者和次要參與者分布在主、側兩鏈上,采用側鏈技術在主鏈和側鏈之間使用智能合約進行信息交互,并對主鏈進行擴容。使用改進的拜占庭容錯機制(delegated Byzantine fault tolerant,dBFT)保障系統(tǒng)的性能同時保證患者的個人隱私安全,實現醫(yī)療數據共享;提出了分級加密方案(hierarchical data encryption scheme,HDES),對患者數據進行加密,保護患者個人隱私。若患者隱私數據遭到泄露,系統(tǒng)可利用區(qū)塊鏈審計技術,追溯數據泄露方,追究泄露方法律責任。
區(qū)塊鏈包含底層交易數據、分布式賬本、共識機制、分布式網絡、分布式應用這幾個要素。區(qū)塊鏈基本架構如圖1 所示。
圖1 區(qū)塊鏈基本架構Fig.1 Blockchain basic architecture
共識機制是系統(tǒng)的核心要素。由于區(qū)塊鏈具有去中心化的性質,在進行信息傳輸時,共識機制保證每一次數據交互在所有記賬節(jié)點上的一致性和正確性。基于區(qū)塊鏈的系統(tǒng)中主流共識算法包括:工作量證明(proof of work,PoW)、權益證明(proof of stake,PoS)、股份授權證明、實用拜占庭容錯機制、改進的拜占庭容錯機制等。
分布式記賬本被稱為狹義的區(qū)塊鏈,由區(qū)塊頭和區(qū)塊體構成。區(qū)塊頭內容一般包含上一區(qū)塊頭的散列值、時間戳、Merkle 的根,并根據不同的共識機制存儲相應的信息。區(qū)塊體則包含了一個區(qū)塊的完整交易信息,以Merkle 樹的形式組織在一起。在一定時間內,多個交易信息形成一個數據塊,將數據塊關聯起來。這些決策規(guī)則的核心就是共識機制,共識機制用來保證分布式賬本的一致性。
“智能合約”的概念在1995 年由密碼學家Szabo首次提出,是對現實中的合約條款執(zhí)行電子化的量化交易協(xié)議。區(qū)塊鏈的出現,支持了可編程合約的數字系統(tǒng)和技術,讓智能合約的理論變?yōu)楝F實。本質上講,智能合約是一段程序,以計算機指令的方式自動化處理了傳統(tǒng)的合約,就是雙方在區(qū)塊鏈資產上交易時,觸發(fā)的一段代碼,去中心化、可信息共享的程序代碼。智能合約一旦啟動就會自動運行,不需要任何合約參與部署方的操作。因此這種技術是在沒有第三方監(jiān)控的情況下進行的可信交易。目前,智能合約已經不僅用于金融領域,并且在分布式計算、物聯網等領域有著廣闊的應用前景。
區(qū)塊鏈根據不同的應用場景和中心化程度,分成三種不同的區(qū)塊鏈,分別是公有鏈、聯盟鏈和私有鏈。
(1)公有鏈
公有鏈為任何節(jié)點都可參與的去中心化區(qū)塊鏈。記賬者為區(qū)塊鏈內的所有節(jié)點,信任機制為工作量證明。代表為比特幣和以太坊。
(2)聯盟鏈
聯盟鏈為預先設定參與者的多中心化區(qū)塊鏈。記賬者由參與者協(xié)商決定,信任機制為共識機制。聯盟鏈所存儲的數據訪問受到參與者的約束。聯盟鏈可以對控制權進行限定,但是聯盟鏈存在匿名性和數據透明性以及審計便利性的綜合問題。假設公司是聯盟鏈的應用場景,若保留匿名性,那么公司內部數據審計無法開展。若聯盟鏈不匿名,那么必須保證數據的透明性低,因為每個公司都不想讓競爭對手知道自己的詳細信息,若將數據進行加密,那么會增加審計的工作量。一般金融領域聯盟會使用到聯盟鏈。代表為Hyperledger Fabric和openchain 等。
(3)私有鏈
私有鏈為中心控制著參與人員的中心化區(qū)塊鏈。信任機制和記賬者都是內部指定。私有鏈無需考慮共識問題,交易量無限制,速度快。所有節(jié)點按內部權限、程序和規(guī)則展開工作。但是私有鏈存在細粒度權限分配問題。對每個節(jié)點的訪問權限都需要詳細規(guī)定。由于私有鏈是中心化區(qū)塊鏈,私有鏈可能存在內部攻擊,區(qū)塊鏈的不可篡改性可能會被破壞。
當醫(yī)療機構或者政府部門發(fā)現患者后,將會立即隔離并對患者進行調查,統(tǒng)計患者的基本信息如姓名、性別、身份證號、家庭住址等隱私信息和近期行程、癥狀表現等基礎數據。并立即將患者的基本信息和近期行程等數據發(fā)送至下一級疫情管理部門,調查近期行程便于找出密切接觸者并及時隔離,對患者經過地點及時進行消殺。疫情管理部門還應立即將患者的近期行程數據匿名公布,使人民群眾產生警惕,注意自身防護,有相似行程并出現類似疫情癥狀表現的民眾應立即報告并緊急隔離。
當政府部門將患者的各項數據下發(fā)至下一級疫情管理部門時,只將患者的近期行程和癥狀表現等數據公布至民眾。但由于管理的疏忽或攻擊者惡意將患者的姓名、身份證號、家庭住址等個人敏感信息公之于眾,造成患者的個人信息泄露,嚴重影響患者正常生活。
根據此,本文提出了一個結合區(qū)塊鏈的重大疫情患者隱私數據保護方案。醫(yī)療機構或政府部門將患者隱私數據上傳至區(qū)塊鏈,各地醫(yī)療機構和疫情管理部門從區(qū)塊鏈上取得信息并及時做出響應。鑒于中國醫(yī)療衛(wèi)生數據系統(tǒng)現狀,重大疫情醫(yī)療信息一般由重點三甲醫(yī)院掌握,選擇各地疫情防控管理部門、政府部門、各地三甲醫(yī)療機構為超級節(jié)點。系統(tǒng)圍繞超級節(jié)點展開一系列患者隱私數據的共享服務,其中政府部門起監(jiān)督管理作用,有權對參與數據共享的機構進行管理。采用聯盟鏈將若干個機構形成聯盟共同管理,每個機構都運行著一個或者多個節(jié)點,系統(tǒng)只允許被授權的機構或者個人查看數據。由于各節(jié)點的權限不同,利用聯盟鏈可以更好地保護隱私數據。共識機制選用dBFT 機制,系統(tǒng)拓撲圖如圖2 所示。
圖2 系統(tǒng)拓撲圖Fig.2 System topology diagram
考慮到患者數據的安全性以及重要性,將政府部門、各地疫情管理部門和各地醫(yī)療機構作為主鏈,三方互相合作,在保證患者個人隱私的前提下進行數據共享。由于將患者數據上傳至主鏈上會增加主鏈壓力,可能會造成較高的確認延遲。為了提高系統(tǒng)效率,本文使用側鏈技術對區(qū)塊鏈進行擴容。并將民眾、科研機構和社區(qū)等節(jié)點加入側鏈,通過側鏈技術與主鏈使用智能合約進行對接,從而實現患者數據信息共享。
若將患者的隱私數據明文text直接上鏈,沒有任何的隱私保護措施,容易造成敏感數據泄露。若僅將患者隱私數據的哈希值Hash上鏈存儲,那么患者真實數據并不在鏈上,鏈下數據存儲容易存在數據丟失、被破壞等安全隱患。因此,患者的隱私數據加密并存放于主鏈上,才能使用智能合約完成對患者隱私數據的保護和分享,才能真正利用區(qū)塊鏈的可追溯、不可篡改等特性。
政府機構_將患者的個人基礎數據和行程數據以及病歷加密上傳至區(qū)塊鏈,其他節(jié)點無法獲得隱私數據DATA的具體內容。區(qū)塊鏈審計機構構建在區(qū)塊鏈上,可對鏈上所有數據操作行為進行審計。該機構將對主鏈和側鏈任何讀寫操作以及更新數據進行記錄,加強了、各方的操作合規(guī)性?;颊咦约阂材苌暾埐榭磪^(qū)塊鏈審計機構的審計結果,增強患者隱私數據傳輸過程的透明度。
、上的各個機構對患者隱私數據傳輸流程如圖3 所示。
圖3 主鏈隱私數據傳輸流程Fig.3 Main chain privacy data transfer process
患者將隱私數據和具體行程告知_。由于、各個機構或者民眾的權限不同,能夠看到患者數據的敏感程度不同。即上的機構不僅可以看到患者的近期行程路線等基本信息,用來對高危場所及時實施消殺,對密切接觸者及時隔離,還可以掌握例如身份信息、家庭住址等患者敏感信息用作記錄檔案。而為了保護患者個人隱私,防止患者因身份泄露而造成影響正常生活的不良后果,上的民眾只能掌握患者近期內的行程路線和病癥,以提示民眾近期不要前往高危地區(qū)??蒲袡C構等可根據醫(yī)療機構提供的病癥以及一些科研所需數據,例如病毒基因序列、病毒分型等進行疫苗研發(fā)以及科研攻關。社區(qū)可根據疫情發(fā)展等綜合因素配合疫情管理部門進行基層工作。因此應采取分級加密的方式對鏈上數據進行加密。
個人數據信息單中應儲存的內容包括患者個人隱私信息DATA、患者醫(yī)療信息DATA、患者行程信息DATA、主治醫(yī)師信息DATA等。
(1)患者個人隱私信息DATA。主要記錄患者的基本資料,如姓名、性別、年齡、地址、單位、電話號碼、手機號碼、身份證號、患者編號等。
(2)患者醫(yī)療信息DATA。主要包括診斷、處方、檢查和檢驗結果、醫(yī)囑、病例等。
(3)患者行程信息DATA?;颊咴诮?4 天之內所去過的所有場所以及患者的密切接觸者。
(4)主治醫(yī)師信息DATA。主要記錄主治醫(yī)師所在的醫(yī)院、醫(yī)院等級、科室以及醫(yī)師的姓名、身份證號等個人信息。
醫(yī)療機構提供DATA和DATA,疫情防控部門提供DATA和DATA。政府機構將整合以上信息并進行對稱加密上傳至區(qū)塊鏈,可供鏈上的任何節(jié)點下載數據,并根據主側鏈權限查看相應數據。系統(tǒng)每隔一段時間會檢查一遍各節(jié)點是否存在同步出錯或者惡意篡改鏈上數據的情況。新節(jié)點加入也需對區(qū)塊鏈上數據進行校驗。為了方便檢索,本系統(tǒng)需要對每一個患者個人數據單設計一個唯一ID,ID的命名規(guī)則為=(ID,ID),其中ID為患者編號,ID為患者個人數據分類編號。具體組成結構如圖4所示?;颊邆€人數據單上鏈時按照如圖4 的層次排序,患者、政府部門以及醫(yī)療機構可以細粒度地控制患者個人數據單。假如某節(jié)點想要搜索101 號患者行程信息,其ID 為(101,4)。此方法可快速查找到所需記錄,將患者的個人數據單信息進行歸納整合。
圖4 ID 結構Fig.4 ID structure
本文采用dBFT 機制完成聯盟鏈的共識過程。患者數據上鏈后,通過聯盟鏈上各個節(jié)點進行共識后,記錄在區(qū)塊中。系統(tǒng)中由_內部選取一個節(jié)點作為主節(jié)點,該節(jié)點只起共識過程的發(fā)起與引導作用,可以將上鏈請求排序。上除主節(jié)點外的其他節(jié)點設置為代理節(jié)點,上的節(jié)點為普通節(jié)點。代理節(jié)點有記賬權,普通節(jié)點可以看到共識過程,并同步賬本信息,但不參與記賬。具體共識過程如下:
(1)患者數據產生后由政府機構節(jié)點ψ經過預處理提取其摘要后,向區(qū)塊鏈網絡中的主、側鏈分別廣播該摘要值記錄,其中D為加密過的患者數據:
(2)主節(jié)點收到足夠多的患者數據摘要后,將這些患者數據排序并上傳至新區(qū)塊上,對新區(qū)塊進行簽名并將其Hash 值(D) 廣播至主鏈網絡中。上的其他代理節(jié)點收到該區(qū)塊后,將區(qū)塊中的患者數據添加至自己的賬本中,再對區(qū)塊中的患者數據進行Hash 運算,與主節(jié)點發(fā)來的新區(qū)塊Hash值(′)比較,若兩Hash值相同,則代理節(jié)點認為該區(qū)塊是正確的,并廣播確認信息至區(qū)塊鏈網絡上。
由上述隱私數據保護方案可知,、的權限不同,允許查看患者隱私數據的敏感程度不同。接觸患者隱私數據的敏感程度高,接觸患者隱私數據的敏感程度低。因此通過采取HDES 分級加密的方法來保護患者隱私數據。
HDES 方案中把患者數據可分為基礎數據和隱私數據兩部分:
(1)隱私數據DATA:患者個人隱私信息DATA、主治醫(yī)師信息DATA。
(2)基礎數據DATA:患者醫(yī)療信息DATA、患者行程信息DATA。
側鏈節(jié)點只允許查看DATA,主鏈節(jié)點允許查看DATA和DATA。加密后的患者數據還需要支持授權共享,例如區(qū)塊鏈系統(tǒng)如何授權新的主鏈機構給予其隱私數據查看權限。
HDES 方案主要包括_提供患者個人數據的加密存儲和上各個患者數據使用方對數據的解密讀取、對新加入節(jié)點授予權限。通過將患者數據分為基礎數據和隱私數據兩部分進行不同級別的保護,達到在區(qū)塊鏈上對數據操作、患者數據隱私保護和新加入節(jié)點數據共享的目的。
_對患者個人數據加密的流程如圖5所示,其加密過程描述如下。
圖5 患者個人數據加密流程Fig.5 Patient personal data encryption process
加密患者數據算法本文方案選擇AES-256 算法,加密對稱加密密鑰選擇RSA-OAEP 算法。假設、為主鏈上的機構MChain、MChain,為側鏈上的機構SChain。且_已經授權并分配給MChain和MChain私鑰_MP、_MP和公鑰_MS、_MS,并分配給SChain私鑰_SP和公鑰_SS。
(1)第一級加密
使用智能合約生成的K對患者的DATA進行逐個對稱加密形成密文text。此時患者的DATA是明文狀態(tài)text。導出類似患者1:text的鍵值對,將text上鏈。
MChain使用_授權分配的_MS對K進行非對稱加密,K-C為使用_MS加密K的密文。
導出類似于MChain:K-C的鍵值對并寫入區(qū)塊鏈上。
(2)第二級加密
以MChain和SChain為例。使用智能合約隨機生成側鏈節(jié)點公鑰_SS=(,)和私鑰_SP=(,)。其中,是兩個隨機大素數之積,1 ≤≤(),且gcd(,())=1,=2 mod(())。
使用K對text和text進行逐個加密,text表示第二級加密密文,此時的DATA是二次加密狀態(tài),DATA是一次加密狀態(tài)。
MChain和SChain使用_授權分配的_MS和_SS對K逐個進行非對稱加密,其中K-C為使用_SS加密K的密文。
導出類似于SChain:K-C的鍵值對并寫入區(qū)塊鏈上。
導出類似于患者1:text的鍵值對并寫入區(qū)塊鏈上。
主、側鏈上患者個人數據使用方解密的流程如圖6 所示,現在MChain對區(qū)塊鏈上患者數據進行解密,具體流程如下:
圖6 患者個人數據解密流程Fig.6 Patient personal data decryption process
(1)主鏈機構第一級解密
MChain向數據系統(tǒng)提出數據獲取請求,發(fā)送當前時間戳并加密,格式如下:request_=(DATA||DATA||)。隨后數據系統(tǒng)驗證MChain的身份時,MChain重新生成一個驗證時間戳并進行加密,格式如下:verify_=(DATA||DATA||′),若數據系統(tǒng)驗證身份成功,則將加密后的患者數據reply_=(text||″)返回至MChain。并由區(qū)塊鏈審計機構進行審計。
MChain使用智能合約從區(qū)塊鏈上讀取_MP:K-C鍵值對,MChain使用_授權分配的私鑰_MP對K-C進行解密。并由區(qū)塊鏈審計機構進行審計,生成數據操作記錄。
MChain使用K對text進行解密,并由區(qū)塊鏈審計機構進行審計。由于K只能解密患者的DATA,此時的DATA依舊是密文狀態(tài)text。
將患者的text與text進行分離,text用于第二層解密。
(2)第二級解密
MChain使用智能合約從區(qū)塊鏈數據系統(tǒng)讀取K-C,MChain使用_授權分配的_MP對K進行解密,并由區(qū)塊鏈審計機構進行審計,生成數據操作記錄。
得到K后,MChain使用智能合約在區(qū)塊鏈數據系統(tǒng)中獲取患者1:text的鍵值對。
MChain使用K對text進行解密,得到text,并由區(qū)塊鏈審計機構進行審計。
側鏈上的民眾或者機構只需要進行第一級解密,就可以得到患者的基礎數據DATA,在此不再贅述。
本文在HDES 方案中還需考慮新加入節(jié)點的數據共享問題。若此時機構D 申請加入區(qū)塊鏈成為一個節(jié)點,假設其加入側鏈,則通過_分配公私鑰對。假設其加入主鏈,則使用pBFT 共識機制,由主鏈上具有投票權的機構進行投票,當超過51%的節(jié)點同意其加入主鏈,達成共識,那么機構D 即可加入主鏈。新加入節(jié)點共享患者數據流程圖如圖7 所示。具體流程如下:
圖7 新加入節(jié)點共享患者數據流程Fig.7 Newly joined nodes share patient data process
假設機構已通過投票成為MChain。
_為MChain分配公私鑰對_MP、_MS。
使用主鏈或者側鏈任意節(jié)點(圖中為MChain)的私鑰_MP解密隨機密鑰密文K-C,得到K的明文。
使用MChain的公鑰_MS加密K,隨后添加進公鑰對應K-C的鍵值對列表。
MChain為主鏈機構,使用主鏈任意節(jié)點(圖中為MChain)的私鑰_MP解密隨機密鑰密文K-C,得到K的明文。
使用MChain的公鑰_MS加密隨機密鑰K,隨后添加進公鑰對應K-的鍵值對列表,增加權限流程結束。
當主鏈或者側鏈上某個節(jié)點退出區(qū)塊鏈,或者_將其節(jié)點強制封禁時需撤銷其權限。但是由于區(qū)塊鏈具有不可篡改性,不可以直接從區(qū)塊鏈賬本上刪除類似:K-的鍵值對來撤銷權限,系統(tǒng)需要通過對區(qū)塊鏈賬本添加撤銷指令,用以撤銷節(jié)點查看信息的權限。將新的撤銷指令添加到區(qū)塊鏈賬本上,由于區(qū)塊鏈上的區(qū)塊以時間順序連接在一起,在查看訪問策略時,先查看最新添加的訪問控制信息,一旦檢索到節(jié)點的訪問控制策略后,隨即停止檢索。即可做到節(jié)點查看患者個人信息權限的撤銷。
本文方案中,當發(fā)現疫情相關患者后,政府機構及時將患者的個人信息、近期行程以及治療細節(jié)加密上傳至鏈上,密文可以保證數據的安全性。全國各地經過政府機構驗證的主鏈節(jié)點和注冊驗證的側鏈,個人或者機構可下載加密數據并使用私鑰進行解密,使得全網可快速、安全地共享患者個人數據而不會泄露患者的隱私。
本文系統(tǒng)為基于聯盟鏈的雙鏈系統(tǒng)。由疾控系統(tǒng)中擔任的角色以及責任劃分為主鏈和側鏈,并將患者數據分為隱私數據DATA和基礎數據DATA。上由_主導,醫(yī)療機構與疫情防控管理部門共同合作共享DATA,則由民眾、科研機構以及社區(qū)組成,可查看DATA。各個節(jié)點之間無需互相信任,每一個節(jié)點都無法控制或者修改患者數據,只攻擊系統(tǒng)中的一個或者一部分節(jié)點不會造成系統(tǒng)網絡癱瘓。本系統(tǒng)將患者數據進行加密后直接存儲在鏈上,首先是為了方便智能合約對數據進行處理;其次,患者個人隱私數據不選擇儲存在第三方中心化云存儲服務器上,更有效地利用區(qū)塊鏈系統(tǒng)的去中心化特點,使系統(tǒng)具有更加良好的抗單點失效攻擊性能。
本系統(tǒng)采用區(qū)塊鏈作為底層架構,節(jié)點? 與數據系統(tǒng)進行交互時均發(fā)送了系統(tǒng)當前時間戳,過程如下所示:
節(jié)點? 向數據系統(tǒng)提出數據獲取請求,并對該時間戳進行了加密_=(DATA||DATA||),此時攻擊者無法獲得該時間戳。
數據系統(tǒng)驗證節(jié)點? 身份時,節(jié)點? 又將重新生成一個時間戳′并進行加密,將_=(DATA||DATA||′) 發(fā)送至數據系統(tǒng)。若數據系統(tǒng)驗證身份成功,則將加密后的患者數據_=(text||″)返回至節(jié)點?。在此過程中,假設攻擊者截獲了{_,_},但是依舊不能獲得患者數據的明文形式。當數據系統(tǒng)解密獲得兩個時間戳{,′}后,只需判斷兩個時間戳之間的時間差,若′->Δ,則說明系統(tǒng)中存在重放攻擊,因此本文方案可以抵抗重放攻擊。
(1)節(jié)點? 向數據系統(tǒng)提出數據獲取請求_=(DATA||DATA||),假設在此過程中,攻擊者獲取了_,但無法解密該密文,因此無法修改其中的身份信息。
(2)假設攻擊者攔截節(jié)點? 向數據系統(tǒng)發(fā)出的數據訪問請求_=(DATA||DATA||),并將此請求發(fā)送至數據系統(tǒng)。此時系統(tǒng)認為是節(jié)點? 發(fā)送的請求,并繼續(xù)截獲_=(DATA||DATA||′)發(fā)送給數據系統(tǒng)。數據系統(tǒng)將加密后的患者個人數據單_=(text||″) 返回,攻擊者先將患者個人數據單text備份存儲至本地,然后將text轉發(fā)給節(jié)點?。此時攻擊者雖然得到加密后的數據,但由于沒有授權的私鑰_,無法解密加密數據text。
區(qū)塊鏈系統(tǒng)本身包含很多個節(jié)點,一旦數據被寫入區(qū)塊鏈,每個節(jié)點都會備份該數據,由于區(qū)塊鏈賬本是分布式儲存的,這種分布式特性使單個節(jié)點無法修改鏈上內容。
假設攻擊者為系統(tǒng)中的一個節(jié)點,其試圖修改患者數據。主節(jié)點_將患者數據的摘要值(,()) 廣播至鏈上,修改患者數據并且廣播修改后的患者數據摘要值′(′,(′))。根據2.3 節(jié)所述的dBPF 共識機制過程,其他正常代理節(jié)點將收到一個否認信息,但是dBPF 共識機制可以容忍不超過整個網絡節(jié)點數目1/3 的節(jié)點誤差,因此其他代理節(jié)點將確認信息結果同步至本地帳本。攻擊者此時并不能修改患者數據。
若攻擊者想要攻擊成功,必須控制系統(tǒng)中超過1/3 的代理節(jié)點。但是,此系統(tǒng)選用的是聯盟鏈,與公有鏈不同,聯盟鏈擁有主節(jié)點,主節(jié)點具有身份認證和權限設置的功能。主鏈上為醫(yī)療機構、政府機構,是社會中公信力較強的機構。因此出現大范圍主動攻擊區(qū)塊鏈系統(tǒng)的可能性極小。故此系統(tǒng)能夠抵抗惡意篡改攻擊。
區(qū)塊鏈系統(tǒng)中每生成一個區(qū)塊,區(qū)塊頭中會寫入區(qū)塊產生的時間戳,區(qū)塊鏈上的區(qū)塊以時間順序連接在一起。本系統(tǒng)將記錄主側鏈上各個節(jié)點查看隱私數據的操作,并以日志的形式存放在鏈上。如果發(fā)生患者隱私數據泄露事件,區(qū)塊鏈審計機構將所有節(jié)點的數據動作進行溯源,追究數據泄露方責任。如果發(fā)生惡意篡改患者隱私數據事件并且惡意篡改的節(jié)點不超過系統(tǒng)總節(jié)點數的1/3,區(qū)塊鏈審計機構將此區(qū)塊的信息進行審計和溯源,對修改區(qū)塊信息的惡意攻擊行為進行責任追究。
本小節(jié)將對基于側鏈技術的重大疫情防控系統(tǒng)使用Ethereum 作為系統(tǒng)的區(qū)塊鏈平臺進行實驗測試,實驗環(huán)境為IntelCorei7-7700HQ CPU@2.80 GHz的CPU,RAM 為8 GB 的服務器,使用docker容器模擬10 個側鏈節(jié)點,向主鏈發(fā)送查看數據的請求。在固定時間內側鏈交易池中確認的數據請求量如表1 所示。從表1 中可以看出吞吐量能夠穩(wěn)定在130 transaction/s 以上,此系統(tǒng)具備承載醫(yī)療應用的能力。
表1 數據請求確認量Table 1 Number of data request confirmation
本文針對現有患者隱私數據進行統(tǒng)計與分析,發(fā)現單個患者個人隱私數據的文件大小約為1 KB,本文使用RSA-OAEP 和AES 分級加密算法對上述數據文件進行加密、解密以及授權仿真,并對第一、二級加密和第一、二級解密的時間進行測試,測試結果如圖8(a)~(c)所示。
圖8 加解密及授權時間Fig.8 Encryption and decryption and authorization time
為了更準確地評估方案的實際加解密性能,本文利用PyCharm 2020.1.1x64 編譯器對患者數據文件進行RSA 和AES 分層加解密實驗仿真。圖9(a)~(c)展示了在不同文件大小下的加解密時間以及第一、二級加密和第一、二級解密的時間,將包含批量患者隱私數據的文件進行加解密,患者文件大小從0 MB到16 MB,每次測試增量為2 MB,觀察到加解密時間是隨著患者隱私數據文件大小的增加而增加的,但在批量加解密16 MB 患者隱私數據文件時,其加解密時間分別為1 779 s與1 678 s,時間均不超過30 min,考慮到單個患者隱私數據為1 KB 級,16 MB 文件大小足以處理16 000 余人的患者隱私數據,在應對重大疫情時,能夠保證數據的吞吐量。
圖9 不同文件大小下的加解密時間Fig.9 Encryption and decryption time for different file sizes
圖10(a)~(c)展示了一次性加解密不同數量患者隱私數據下的時間以及第一、二級加密和第一、二級解密的時間,患者人數從0 人到16 000 人,每次測試增量為2 000 人。觀察到加解密時間是隨著一次性加解密患者總人數的增加而增加的??紤]到一次性加密患者總人數較多,本文還可通過分批加密的方式進一步減少加解密所需時間。將2 000 人及以上的患者加密時分成以千人為單位的患者數據組,每次加密單個患者數據組,實驗結果如圖11 所示。
圖10 不同患者人數下的加解密時間Fig.10 Encryption and decryption time with different number of patients
圖11 分批加解密時間Fig.11 Batch encryption decryption time
本文采取對照分析法評估重大疫情患者隱私保護方案,由于本文系統(tǒng)是結合區(qū)塊鏈而提出的醫(yī)療數據的隱私保護以及共享方案,與文獻[3]、文獻[6]和文獻[7]現有所提出的結合區(qū)塊鏈醫(yī)療數據隱私保護及共享方案進行對比。從各個方案所采用的共識機制、算力需求、鏈結構、所需節(jié)點數、采用區(qū)塊鏈類型以及加密效率來進行比較,對比結果如表2 所示。
表2 方案對比Table 2 Comparison of programs
根據對比結果可知,本文方案使用的dBFT 算法作為共識機制,相對于文獻[3]使用的工作量證明,文獻[6]使用的改進委托權益證明,文獻[7]使用的實用拜占庭容錯機制,本文方案基于共識機制所需的初始節(jié)點數相對較少,且不需要大量的算力去維護區(qū)塊鏈系統(tǒng),具有一定的易維護性。且相對于文獻[6],聯盟鏈的去中心化程度高于私有鏈。文獻[6]中提出使用分布式數據庫存儲患者數據,并用格基算法對患者數據進行加密。與本文方案的加密算法相比,格基算法雖能保證較高的安全性,但是針對醫(yī)療數據,格基算法目前只能實現比特級加密,而在重大疫情發(fā)生時,所需要處理的患者數據量至少是MB 級的,格基算法效率低且不易實現。本文方案還對患者隱私數據在鏈上進行分層加密,方便節(jié)點使用智能合約對患者數據進行操作且安全性較高。綜上所述,本文方案的去中心化程度以及效率在目前的方案當中占有一定的優(yōu)勢。
本文使用實用拜占庭容錯機制的共識算法,采用聯盟鏈并劃分出主側鏈,采用側鏈技術對患者信息進行共享,并提出HDES 分級加密方案,根據主側鏈權限不同,呈現出的患者數據也不同,實現對患者數據的細粒度訪問控制,更好地保護了患者的個人隱私。及時做到醫(yī)療信息和行程信息共享,保障患者個人隱私數據安全、財產安全和社會穩(wěn)定。未來將對本文方案的加解密效率和共識算法進行改進,保證系統(tǒng)的效率,改善系統(tǒng)功能,使得改進后的醫(yī)療信息系統(tǒng)未來能夠應對類似于新冠肺炎這樣的重大疫情。