国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Virus Database Chain:聯盟式傳染病數據區(qū)塊鏈系統

2019-09-13 03:36黎祖睿陳子豪
計算機應用與軟件 2019年9期
關鍵詞:客戶端傳染病共識

黎祖睿 李 強 張 超 陳子豪

(四川大學計算機學院 四川 成都 610065)

0 引 言

如今對急性突發(fā)傳染病爆發(fā)的預測預警是公共衛(wèi)生領域始終關注的熱點問題,世界各國紛紛把發(fā)展生物醫(yī)學大數據作為國家戰(zhàn)略,從大數據處理、存儲、分析與應用等方面推動生物醫(yī)學大數據研究的發(fā)展。目前國內各大疾病預防控制中心的信息量巨大卻又不能互通,產生了信息孤島。各省市疾病預防控制中心迫切需要一個能夠在各地之間實現傳染病信息共享,并能夠保證信息不會泄露的系統。

在2008年,中本聰[2]在其論文中提出比特幣一詞。與此同時,區(qū)塊鏈技術也逐漸開始推廣。區(qū)塊鏈是由多個獨立節(jié)點參與的分布式數據庫系統[3],它能安全地存儲比特幣的交易信息及各類數據,并保證數據和信息的安全。區(qū)塊鏈是多種已有技術(P2P網絡、密碼學等)的組合。區(qū)塊鏈技術可以幫助疾病控制中心和醫(yī)院等機構快速安全地認證權限,實現自由的數據訪問和共享。因此,區(qū)塊鏈是目前實現傳染病數據存儲和共享的絕佳方式。

根據參與者不同,區(qū)塊鏈可分為公有鏈、聯盟鏈和私有鏈。1) 公有鏈:任何人都可以參與,每個人都可以讀取、發(fā)送交易并得到有效確認,也可以參與區(qū)塊鏈的共識過程。2) 私有鏈:在一個實體內部使用,信息不公開的區(qū)塊鏈。所有參與到區(qū)塊鏈中的節(jié)點都會被嚴格控制。3) 聯盟鏈:由多個實體共同維護、決定,并帶有準入限制的區(qū)塊鏈,其中實體為企業(yè)、銀行或醫(yī)院等任何組織或機構,每個實體可以為一個或多個節(jié)點。聯盟鏈相對于公有鏈,有一定的準入機制和訪問限制條件等約束。聯盟鏈相對于私有鏈則是有多家實體參與,共同維護并能共享信息。

根據傳染病數據敏感性和保密性的特性,使得其必然需要一定的政府監(jiān)管控制。而每個醫(yī)院和疾病控制中心都是一個實體,這些實體同時受到政府的監(jiān)督、管理。并且用戶應有嚴格的分級制度和一定的參與限制。每一個傳染病數據既是一位患者的個人隱私,又涉及到國家機密,因此傳染病數據的訪問帶有嚴格的權限限制。根據以上特點可以看出,傳染病數據區(qū)塊鏈應以聯盟鏈的方式來實現。

目前,多數醫(yī)療數據類區(qū)塊鏈系統采用POX系列共識機制,而聯盟鏈系統大多選擇DPOS與PBFT共識算法。POX系列算法包括:工作量證明、權益證明和股份授權證明。POW算法需要大量算力以防止惡意節(jié)點的出現。其余POX算法通過概率選擇記賬者但降低了潛在的提案者,通過增加提案成本,放寬最終一致性確認的需求,但延長了達成最終一致性的時間。因此都不適合傳染病數據存儲的需求。本文使用實用拜占庭容錯算法,構建了一種只需較少節(jié)點,啟動代價小,且不需要大量算力和代幣來維護的聯盟式傳染病數據區(qū)塊鏈系統——Virus Database Chain(VD Chain)。

1 相關研究

1.1 PBFT共識算法

PBFT算法[1]是在1999年由Miguel Castro和Barbara Liskov所提出,用于解決原始拜占庭容錯算法效率問題。該算法將原始拜占庭容錯算法的復雜度從指數級降低到多項式級,更切合實際運用[1]。

PBFT是在分布式環(huán)境中,解決狀態(tài)機副本復制問題的算法。該算法可以在失效節(jié)點(出現故障或惡意操作)不超過(N-1)/3(N為集群節(jié)點總數)的情況下,依然能正確達成分布式共識。

PBFT的節(jié)點都在一個視圖的輪換中。在某視圖中副本節(jié)點主要包含三種角色:客戶端、主節(jié)點和備份節(jié)點。一個副本為主節(jié)點,其余為備份節(jié)點,其中主節(jié)點主要用來接收客戶端發(fā)送的請求消息。視圖是連續(xù)編號的整數,在編號為v的視圖中,主節(jié)點由公式p=vmod|R|計算選出,這里v表示視圖編號,p表示副本編號,|R|表示存儲副本節(jié)點的個數。當主節(jié)點失效時,需要啟動視圖更換過程,更改當前的視圖編號v,再根據上述公式選出新的主節(jié)點。假設副本節(jié)點集為R,每個節(jié)點的編號分別為:0,1,…,|R|-1,則系統最大惡意節(jié)點個數f與R之間的關系為|R|≥3f+1[3]。

PBFT算法共識過程如圖1所示。

PBFT算法的共識過程基本流程大致為:

步驟1客戶端發(fā)送請求給主節(jié)點。

步驟2主節(jié)點廣播請求給其他節(jié)點,節(jié)點執(zhí)行PBFT算法的三階段共識流程。

步驟3節(jié)點完成三階段共識,返回消息給客戶端。

步驟4客戶端收到來自f+1個節(jié)點的相同消息后,代表共識已經正確完成。其中步驟2中的三階段共識分別為:預準備階段、準備階段和提交階段。

(1) 預準備階段:主節(jié)點收到客戶端請求后,給請求分配一個序號n,廣播序號分配消息和客戶端請求消息,并構造PRE-PREPARE消息發(fā)送給各備份節(jié)點。

(2) 準備階段:備份節(jié)點接收PRE-PREPARE消息后,對消息進行驗證。若通過驗證則向其他服務節(jié)點廣播PREPARE消息。如果驗證不通過,則丟棄PRE-PREPARE消息。在一定時間范圍內,如果收到超過2f個不同節(jié)點的PREPARE消息,就代表準備階段已經完成。

(3) 提交階段:各節(jié)點對視圖內的請求和次序進行驗證后,廣播COMMIT消息。當收到2f+1個COMMOT消息后(包括自己),代表大多數節(jié)點已經進入提交階段,這一階段已經達成共識,節(jié)點將執(zhí)行請求,寫入數據。

1.2 智能合約

Nick Szabo[4]于1996年初次給出智能合約的定義:智能合約是用于執(zhí)行合同條款的計算交易協議,包括合同當事人和執(zhí)行這些條款的協議。

區(qū)塊鏈的出現使得智能合約的執(zhí)行能夠獲得可信的環(huán)境。比特幣交易中的輸出條件用腳本描述,這是智能合約的雛形,而以太坊首先實現了區(qū)塊鏈和智能合約的結合。通常,智能合約在各方簽署后,以腳本代碼的形式附加到區(qū)塊鏈上,并經過P2P網絡和其余節(jié)點驗證后寫入各自節(jié)點中[5]。其中合約封裝了許多預定義狀態(tài)、轉換規(guī)則、觸發(fā)條件和響應操作等[5]。智能合約的概念模式如圖2所示。

圖2 智能合約概念模式

1.3 傳染病預警

隨著全球經濟一體化和生態(tài)環(huán)境的快速惡化,進一步加大了傳染病疫情的發(fā)生頻率。雖然我國暫未受到全球化疫情的影響和沖擊,但對難以防控的新發(fā)、突發(fā)和全球性傳染病的蔓延仍需提高警惕。傳染病預警是根據收集到的病例、病原體、媒介昆蟲等監(jiān)測資料,對疫情發(fā)生的性質、規(guī)模、地域、影響因素、危害程度等進行綜合評估和預測,以便采取相應級別的預警行動[6]。

傳染病預警方法的理論基礎是基于數學理論形成的傳染病預警理論,主要有信號檢測論和決策理論,這兩大理論提高了檢測和預警系統的及時性、靈敏度和特異度[7]。傳染病預警方法是基于傳染病流行的三間(人群、時間、地區(qū))分布特點,根據分析數據項的類型將預警模型分為時間、空間和時空模型三大類[8]。

基于病例、癥狀、病原學、媒介等監(jiān)測數據建立的傳染病自動預警系統已開始應用于疾病監(jiān)測預警,本文將基于區(qū)塊鏈技術為課題的疾病監(jiān)測預警提供有效的數據支持。

1.4 醫(yī)療類數據區(qū)塊鏈

目前區(qū)塊鏈的實際應用主要在金融方面,因此較為成熟的區(qū)塊鏈應用只有比特幣、以太坊等。區(qū)塊鏈在醫(yī)療數據方面的應用相對較少,而側重于傳染病數據存儲的區(qū)塊鏈系統則暫時沒有。

國內,薛騰飛等[9]使用改進的DPOS共識算法提出了一種醫(yī)療機構聯盟服務器群和審計聯盟服務器群相結合的醫(yī)療區(qū)塊鏈系統MDSM。國外,Azaria等[11]使用以太坊[10]并結合大數據,實現了一個醫(yī)療信息共享平臺MedRec。Ivan等[12]將區(qū)塊鏈作為保護醫(yī)療健康數據存儲的方法并提出了一個基于區(qū)塊鏈存儲病人醫(yī)療記錄的方法。Shrier等[13]結合使用美國麻省理工學院的OPAL/Enigma加密平臺和區(qū)塊鏈技術,創(chuàng)造了一個用于醫(yī)療保健信息存儲和分析的安全環(huán)境。Kuo等[14]使用隱私保護在線機器學習和私有鏈技術,實現了一個跨機構的醫(yī)療健康預測模型。Witchey[15]介紹了醫(yī)療交易單驗證系統。對比發(fā)現國內關于區(qū)塊鏈在醫(yī)療方面的應用與研究相對較少,且大多在應用層面上。

1.5 密碼學基礎

密碼學是區(qū)塊鏈技術的基礎,其中主要包括非對稱加密、哈希函數、數字簽名和Merkel數等。

非對稱加密使用一對公私鑰進行加密、解密操作。這對密鑰中,公鑰對外公開。不對外公開、自己持有的密鑰稱為私鑰。假設A與B之間互相通信,A給B發(fā)消息的時候,會將消息的內容用B的公鑰加密。同理,在B收到A發(fā)送的加密消息之后,會用自己的私鑰對消息進行解密。由于B的私鑰只有B擁有,所以即便消息被C接收到,C也無法知曉消息的內容。

數字簽名利用非對稱加密來保證數據的完整性、不可否認性和防偽性[16]。假設A與B之間通信,其詳細過程如圖3所示。

圖3 數字簽名原理

2 基于PBFT算法的聯盟式傳染病數據區(qū)塊鏈系統

VD Chain架構自上而下分為應用層、合約層、共識層、網絡層與數據層。系統架構圖如圖4所示。

圖4 系統架構

2.1 數據層

數據層是VD Chain的基礎,其功能包括數據存儲和數據處理。

2.1.1數據處理模塊

數據處理模塊中使用非對稱加密、哈希函數、數字簽名和時間戳等技術,其中:哈希函數將區(qū)塊或交易單的相關內容作為輸入,計算出摘要,生成區(qū)塊ID或交易單ID;非對稱加密用以驗證交易的合法性,并使通信各方的信息安全傳遞;數字簽名用以確認被簽名數據的完整性以及簽署人的身份;時間戳是標識某一時刻的技術,表明數據是在什么時間存在的[17]。

區(qū)塊鏈是結合上述技術的一種安全可靠的分布式存儲技術。區(qū)塊鏈系統的安全性拋棄了傳統意義上的“信用”而完全基于密碼學算法[18]。其中包括:

1) 利用哈希算法(HASH256)來防止交易信息被篡改和驗證交易信息的完整性;

2) 利用現代密碼學中的非對稱加密技術[19]對交易進行簽名,防止交易被偽造;

3) 在交易寫入區(qū)塊鏈之前,為防止個別節(jié)點的惡意破壞,全網節(jié)點需要通過共識算法達成一致。

區(qū)塊鏈系統中數據的修改時,需要系統中半數以上的節(jié)點同意,才能進行。即使部分節(jié)點的數據損壞、丟失,或者遭到其他惡意節(jié)點的攻擊,也不會影響整個區(qū)塊鏈系統數據的記錄和更新,從而確保系統數據的完整性[20]。

2.1.2數據存儲模塊

VD Chain區(qū)塊鏈主要由兩部分構成:區(qū)塊與交易單。一條區(qū)塊鏈由若干個記錄著前一個區(qū)塊ID的區(qū)塊組成,這樣一個接一個構成邏輯上的“鏈”結構。而每個區(qū)塊又包含了若干交易單,交易單則是實際數據的載體。一個區(qū)塊的結構如圖5所示。

圖5 區(qū)塊結構

一個區(qū)塊主要由塊頭和塊身構成,塊頭是需要進行數字簽名的部分。區(qū)塊頭包含上一個區(qū)塊的HASH值、由區(qū)塊下各交易單生成的Merkle根[21]、生成區(qū)塊的難度指標和生成區(qū)塊的時間戳等信息。塊身主要包括區(qū)塊生成者對于區(qū)塊頭的數字簽名、區(qū)塊ID等信息。其中數字簽名保證了區(qū)塊內容不被篡改,并保證惡意區(qū)塊無法抵賴,確保了區(qū)塊的真實性。另外,區(qū)塊中僅保存交易單的ID(即索引),以便降低每個區(qū)塊的大小,便于同步與備份。區(qū)塊和交易單在實際中是存儲在數據庫中,在邏輯上以區(qū)塊鏈的形式來存儲。

交易單內容如圖6所示。交易單類型是該交易所需進行的操作(增、刪、查、改),驗證器集群根據不同的類型進行相應的操作。在增、刪、查、改的操作中使用交易單是為了防止某一節(jié)點可能的惡意操作。使用者在進行任意操作時需要對交易單進行數字簽名,將操作記錄在區(qū)塊鏈中,使得使用者對于自己進行的操作無法抵賴。交易單內容是該交易單中所存儲的內容,如傳染病數據信息等。對于哈希算法和編碼算法可以選擇SHA-256[22]哈希算法或BASE64[21]編碼算法保證系統的安全。

圖6 交易單結構

2.1.3交易單存儲的內容

交易單中存儲的內容包括傳染病信息、用戶信息、各節(jié)點的信息等,交易單內容主要有如下幾類:

1) 實體信息類。主要用于記錄用戶實體的詳細信息,如名稱、簡介、權限等級,以及所擁有的密鑰中的公鑰信息等。主要的用戶群體有疾病控制中心、醫(yī)院、衛(wèi)生部等機構。對于實體中的隱私信息,如名稱、簡介等,在存儲到區(qū)塊鏈之前,會采用非對稱加密技術,使用實體公鑰對這些信息進行加密,但不加密其公鑰信息,方便實體檢索自己的信息。在需要查看這些信息時,經實體授權,使用實體自己的私鑰進行解密,獲取這部分信息。

2) 傳染病信息類。主要用于記錄區(qū)塊鏈上相關傳染病信息,如某醫(yī)院P在某時上傳到區(qū)塊鏈上的一條傳染病病例,包括:病因、宿主、傳播途徑、地點、時間和信息所屬機構等。若包括了圖片或視頻等信息時,則對產生的圖片或視頻進行哈希運算獲得哈希值,存入到交易單里。這樣,當圖片或視頻被篡改時,其哈希值就會發(fā)生變化,與存儲在區(qū)塊鏈中的哈希值不符,從而保證多媒體資料的防篡改。該條傳染病信息所在交易單ID即為該條傳染病信息的ID。圖片或視頻等較大的數據存儲在生成節(jié)點。

3) 增加、刪除、修改、查詢類。

增加:交易類型為“增加”,交易單內容為要增加的數據,如傳染病信息、病歷信息等。

刪除:交易單類型為“刪除”,交易單內容為被“刪除”的交易單ID?!皠h除”并不是將該交易單從區(qū)塊鏈中直接刪除,而是進行查詢操作,同時檢索刪除類型交易單,排除該刪除交易單中所存儲交易單ID所對應的交易單,從而實現“刪除”操作。

修改:交易單類型為“修改”,交易單內容為修改前的交易單ID、修改后交易單ID、修改時間和修改原因等內容?!靶薷摹辈⒉皇怯眯碌慕灰讍稳ジ采w舊的交易單,而是修改的時候產生兩個交易單,一個是擁有修改過內容的交易單,另一個是記錄該交易單ID和被修改的交易單的ID。在查詢時,排除被修改的交易單,從而實現“修改”操作。

查詢:交易單類型為“查詢”,交易單的內容為查詢條件。驗證器在接收到查詢交易單時,同時會檢索權限交易單,判斷查詢發(fā)起者是否擁有相應的查詢權限,若有權限則返回查詢信息,若無則丟棄該查詢條件。

4) 權限類。交易單類型為“權限”,交易單內容為具體權限信息,如某疾病控制中心可授權用戶在某段時間內查看屬于自己的傳染病信息,其余時間便不能再查看此類信息。

2.1.4傳染病數據存儲

VD Chain的數據存儲可以同疾病控制中心、醫(yī)院等的傳染病數據系統相結合。利用計算機、網絡、數據庫等,有機結合疾病控制中心、醫(yī)院的業(yè)務信息和管理信息,實現文字、圖像、音頻、視頻等信息的數字化收集、存儲、查詢和修改。系統的數據來源于疾病控制中心、醫(yī)院、衛(wèi)生部等多方,所有數據分別存儲在區(qū)塊鏈或數據庫中,實現數據共享并保證數據安全。數據之間的存儲關系如圖7所示。

圖7 數據存儲

這些數據可分為結構化和非結構化數據。其中結構化數據一般是數值或文字等,這些數據通過添加交易單信息,作為交易單的內容,形成交易單存儲在一般數據庫中,如Oracle Database、DB2、MySQL等。通過收集交易單ID生成的區(qū)塊也存儲在這些數據庫中。通過數據庫分片將海量結構化數據分布式存儲在節(jié)點的各個數據庫服務器上,通過數據庫備份技術備份這些數據。非結構化數據指的是傳染病數據相關的圖片和音頻數據。這些數據本身數據量較大,不適合在共識過程中進行傳輸,因此僅將這些數據的哈希值上鏈。節(jié)點在存儲這些數據時,首先取其哈希值,作為結構化數據存儲起來。

2.1.5一次完整的交易單存儲流程

以傳染病信息為例,將其存儲在一個交易單中最后存儲到區(qū)塊鏈上的過程如下:

1) 用戶使用客戶端登錄,選擇添加傳染病病例,并根據提示添加相關信息。該信息包括病因、宿主、傳播途徑、地點、時間以及信息所屬機構等結構化數據和圖片或視頻等非結構化數據,其中還可能有一些病人個人的隱私信息。

2) 對于交易單中不公開的隱私信息,如個人信息等,用戶可利用自己的公鑰對該數據項進行加密處理。即使其他用戶獲得了該交易單,但沒有該用戶的私鑰也沒有辦法解密被公鑰所加密的數據項。

3) 在用戶提交信息后客戶端將利用哈希算法將所有數據進行哈希運算取得傳染病實體的Hash值,生成時間戳,以及此筆交易單的Hash值,隨后利用該用戶的私鑰對交易單Hash值進行數字簽名,最后將該筆交易單以及傳染病實體發(fā)送至與該客戶端連接的共識網絡中某個共識節(jié)點服務器。

4) 服務器將對該筆交易中的時間戳等信息進行初步驗證后,將該傳染病實體備份在共識節(jié)點的數據庫中,并根據信息所屬機構把圖片或視頻等非結構化數據存儲在該機構的數據庫中,最后將交易單發(fā)送至共識網絡中的主節(jié)點。

5) 主節(jié)點收集一段時間內發(fā)送來的交易單后生成一個區(qū)塊,將這些交易單信息錄入此區(qū)塊中,再將這些交易單與這個區(qū)塊通過P2P模式的共識網絡發(fā)送給所有從節(jié)點,從節(jié)點與主節(jié)點經過共識算法驗證此區(qū)塊以及其包含的所有交易單的合法性后,這筆交易單中的請求將在所有共識節(jié)點上執(zhí)行。

2.2 網絡層

區(qū)塊鏈網絡層是建立在TCP/IP通信協議和對等網絡基礎上的一個分布式系統。與傳統的中心分布式系統不同,它不依靠中心化服務器,而是依靠網絡中的每個節(jié)點。點對點的網絡通信協議、傳播機制和驗證機制共同構成了區(qū)塊鏈網絡層的基石。

P2P網絡自身有多方面優(yōu)點,在與區(qū)塊鏈相結合的應用中它的優(yōu)點如下:

1) 去中心化。區(qū)塊鏈的資源和服務分布在所有參與節(jié)點上,通過共識機制維護區(qū)塊鏈網絡一致性,無須中心系統的存在。

2) 可擴展性。區(qū)塊鏈節(jié)點可以自由加入、退出,網絡系統根據節(jié)點自由擴展。

3) 健壯性。區(qū)塊鏈網絡沒有中心節(jié)點,也就沒有了攻擊對象。參與節(jié)點分布在網絡中,部分節(jié)點遭到破壞對區(qū)塊鏈系統無影響。

4) 高性價比。無須昂貴的設備搭建中央服務器,無須支付昂貴的寬帶費用,普通用戶也可以參與。

5) 隱私保護。區(qū)塊信息采用廣播機制,無法定位廣播初始節(jié)點,防止用戶通信被監(jiān)聽,保護其隱私。

6) 負載均衡。區(qū)塊鏈通過限制節(jié)點連接數等配置,避免資源負載、網絡阻塞。

在最原始的P2P網絡中,至少一個Tracker(一臺服務器地址)信息和文件的分割記錄信息,用戶從中心服務器里獲得Tracker后根據Tracker返回的信息直接跟其他節(jié)點建立聯系,開始數據傳輸。而在去中心化的應用中則需要使用DHT技術。

分布式哈希表(DHT)是一個分布式系統,它提供了一個類似哈希表一樣的查詢服務。它把鍵值對存儲在DHT中,鍵值對的映射由網絡中所有的節(jié)點維護,每個節(jié)點負責一小部分路由和數據存儲。這樣即使有節(jié)點加入或者離開,對整個網絡造成的影響很小,于是DHT可以擴展到非常龐大的節(jié)點。

DHT廣泛應用于各種點對點系統,用來存儲節(jié)點的元數據。比如:BTC系統使用Mainline DHT來維護節(jié)點。

本文采用分布式哈希表實現結構化的P2P網絡。DHT將P2P網絡節(jié)點通過Hash算法散列為標準長度數據,整個網絡構成一個巨大的散列表。每個參與節(jié)點都有一部分散列表,并儲存維護自身數據,散列表分布在P2P網絡各個節(jié)點上。任何接入網絡的節(jié)點都有散列表中的ID,可以通過DHT尋找更多節(jié)點,也可以被其他節(jié)點根據ID值精確查找。

2.3 共識層

在一個去中心化的分布式系統中,如何使各節(jié)點達成共識這是分布式系統所需解決的問題。共識層則是解決這個問題的關鍵,本文采用PBFT共識算法使系統各節(jié)點達成共識。

2.3.1共識算法

采用PBFT算法作為傳染病區(qū)塊鏈中的共識算法,是因為PBFT算法是一種適用于聯盟鏈的共識算法,其特點在于:

(1) PBFT算法與POX系列算法達成一致的方式不同,不需要使用大量的算力,不靠代幣作為衡量投票權的標準。

(2) PBFT算法在系統中存在小于或等于(N-1)/3個故障或惡意節(jié)點時才能保證一次共識過程的正常執(zhí)行[27]。即系統的節(jié)點中,每次共識中至少有(2N+1)/3個正常節(jié)點,因此這些節(jié)點所運行的環(huán)境必須是相對安全、穩(wěn)定的。

(3) 傳染病區(qū)塊鏈是聯盟鏈,參與到傳染病區(qū)塊鏈中的實體大多為醫(yī)院或政府部門,具有一定公信力,并由中國疾病控制中心、衛(wèi)生局等多個管理部門嚴格監(jiān)管,出現惡意行為的情況遠小于其他區(qū)塊鏈系統。同時各省市的疾病控制中心及醫(yī)院具有較為完備的網絡、服務器和數據庫系統?,F有傳染病系統能提供一個相對安全、穩(wěn)定的運行環(huán)境供PBFT算法正常運行,因此PBFT算法十分適合傳染病區(qū)塊鏈。

2.3.2節(jié)點管理

一個區(qū)塊鏈系統中各節(jié)點間最重要的是達成一致的共識算法,除去各節(jié)點間的共識過程,它們還分別扮演著重要的功能:驗證器,驗證交易單和區(qū)塊;打包器,生成交易單和區(qū)塊。與比特幣的區(qū)塊鏈組件類似,VD Chain區(qū)塊鏈系統中的節(jié)點主要有客戶端、驗證器和打包器三個組件,如圖8所示。

圖8 節(jié)點管理

1) 客戶端。客戶端是用來生成交易單的組件。VD Chain鏈中的刪除和修改都不直接操作對應的交易單,而是重新生成一個新的交易單,以覆蓋原有的。這是因為區(qū)塊鏈中為了保證其可追溯性,所有生成的區(qū)塊將無法被修改或者刪除,只能通過添加新區(qū)塊來說明對前面區(qū)塊的修改或刪除??蛻舳酥饕譃閮深悾?/p>

(1) 管理員客戶端。管理員客戶端主要擁有的功能是增刪改查,醫(yī)院、疾病控制中心和監(jiān)督機構均使用此類客戶端。在增加方面,可以增加傳染病記錄。在刪除和修改方面,可以刪除有錯誤的傳染病記錄,或者修改傳染病記錄中存在問題的地方。在查詢方面,可以查詢鏈上所有傳染病數據。這些對數據的增加、修改、刪除和查看等操作需要在系統授權情況下,且在一定期限內進行。未經授權或授權過期情況下,系統將拒絕執(zhí)行這些操作,并根據其公鑰與數字簽名,將其加入到黑名單中。若在授權期間,個別疾病控制中心出現惡意行為,這些惡意行為是極難在區(qū)塊鏈中抹除的,此時系統中所存儲的錯誤數據將作為證據,通過國家相關部門進行處理。

(2) 查詢信息客戶端。查詢信息客戶端僅具有查詢的功能。一些機構可能需要查看傳染病數據的相關信息。如研究機構獲得審批需要閱讀數據時;又或者個別醫(yī)院、疾病控制中心出現惡意行為時,公安機關或法院需要查看此類記錄等,以此為依據做出合理的判斷,這時候就需要授予相應的查看權限。

2) 驗證器。驗證器為PBFT算法中的副本節(jié)點,主要用于驗證客戶端和打包器發(fā)來的消息。所有的消息結構如圖9所示。驗證器接收到消息后,首先校驗該消息數字簽名是否正確,然后校驗其是否符合規(guī)定,例如一個用戶在未獲得授權情況下無法查看傳染病數據。校驗后,所有節(jié)點開始PBFT三階段共識,完成共識過程后,將該交易單存入自己的數據庫中。

圖9 消息管理

在一般區(qū)塊鏈中,“挖礦”節(jié)點(即Virus Database Chain中的驗證器節(jié)點)分為全節(jié)點和輕量級節(jié)點。全節(jié)點保存了區(qū)塊鏈上面所需存儲的所有數據,而輕量級節(jié)點只保留了部分數據。在VD Chain中,驗證器節(jié)點均為輕量級節(jié)點,每個驗證器節(jié)點保存所有產生自該疾病控制中心的數據,按照三級存儲方式進行存儲。對于來自其他疾病控制中心的數據,每個驗證器僅保存半年左右。同時每個節(jié)點完整地保存區(qū)塊鏈的信息。所有傳染病數據均同步至各數據管理部門,以備各節(jié)點校驗時使用。此方式對中心化的傳染病數據管理部門有一定程度上的依賴,但減小了每個節(jié)點的存儲壓力。

3) 打包器。打包器將收集來的交易單的ID生成默克爾樹(Merkle Tree)打包成區(qū)塊,再發(fā)送給驗證器集群。打包器生成區(qū)塊時需要獲得當前區(qū)塊鏈最后一個區(qū)塊的ID,因此一段時間內僅有一個區(qū)塊生成。在VD Chain鏈中,每生成一個區(qū)塊都要經過驗證器的校驗,若出現惡意區(qū)塊,則不予接受并生成區(qū)塊。另外,本區(qū)塊鏈部署在各疾病控制中心,網絡相對穩(wěn)定,不會時刻都有節(jié)點的加入與退出,并有專門的管理人員,惡意操作的情況較少。因此本區(qū)塊鏈系統通過以下的方式來生成一個區(qū)塊:

(1) 首先將驗證器和打包器部署在一個疾病控制中心或醫(yī)院節(jié)點上,一個節(jié)點包含若干臺服務器與數據庫。部署在一起是因為每個疾病控制中心節(jié)點的數據庫中保存著驗證過的交易單信息,可以減少不必要的網絡傳輸。

(2) 每個節(jié)點根據公式B=L%(N-1)來判斷是否由自己來生成當前區(qū)塊。其中B為生成區(qū)塊的節(jié)點,L為區(qū)塊鏈的長度。因主節(jié)點需要處理來自客戶端的請求,因此其不參與區(qū)塊的生成,以實現各節(jié)點任務的負載均衡。

(3) 若某一中心節(jié)點根據(2)中公式檢測到當前需要自己生成區(qū)塊,則收集一定量的校驗過的交易單ID,生成Merkle樹,打包成區(qū)塊,發(fā)送給主節(jié)點。經過PBFT算法三階段過程后,將該區(qū)塊加入到個節(jié)點的區(qū)塊鏈鏈尾。

通過上面三種組件,可以保證在惡意或故障的節(jié)點小于等于(N-1)/3時,正常完成共識過程。其驗證過程請參見文獻[23]。

2.4 合約層

區(qū)塊鏈每個區(qū)塊可編程、可嵌入代碼,合約層通過腳本、算法以及智能合約,可以簡單地自定義一份電子合同。稱之為智能合約,是因為這份合約可以在達到約束條件自動觸發(fā)執(zhí)行,不需人工干預,也可以在不滿足條件時自動解約,理論上可以觸發(fā)執(zhí)行事先約定好的一切條款。這也是區(qū)塊鏈能夠解放信用體系核心的技術之一。

智能合約是合約層的核心,通過嵌入區(qū)塊鏈的合約代碼實現。參與方事先擬定合約內容和觸發(fā)機制,以代碼形式嵌入系統,一旦滿足觸發(fā)條件,合約自動執(zhí)行,外界無法干擾。

傳統的疾病預警系統中由于各機構數據互不相通,使得預警精度不足或數據整合時間過長延遲預警時間,并且在中心化管理下,中心系統完全控制數據的寫入權,使得操作無法被很好地監(jiān)管。當前網絡和信息化技術高度發(fā)達,各種網絡攻擊層出不窮,信息的收集整合并不是在一個完全的內部系統,因此在運行過程中會遭受到不法分子的惡意攻擊,無論是針對應用服務器還是數據服務器的攻擊都有可能導致應用或數據異常。相較于傳統中心化疾病預警系統,VD Chain上通過共識機制加快了傳染病信息的錄入過程,數據處理模塊中的非對稱加密與數字簽名技術保證了數據的真實性,共識節(jié)點上的數據存儲分散了傳染病信息的價值,降低被黑客集中入侵中心節(jié)點的風險,而將傳統的傳染病預警與區(qū)塊鏈相結合可使數據利用更加得安全、高效。

智能合約如同計算機編程語言中的if-then語句,一旦預先定義的條件被觸發(fā),合約就會智能地執(zhí)行,對數字財產進行交換。而在傳染病鄰域,患者、醫(yī)療機構、疾病控制中心之間組成了一個三角關系。每一個交互中,都存在效率低下和服務復雜的問題。因此智能合約也適合在VD Chain中使用。

本文針對傳統的傳染病預警模式以及區(qū)塊鏈技術智能合約的發(fā)展,將智能合約與傳染病預警相結合,設置了一個實時可行的傳染病預警合約,提出一種基于區(qū)塊鏈智能合約的傳染病預警方法。預警合約的執(zhí)行流程圖如圖10所示。

圖10 預警合約執(zhí)行流程

2.5 應用層

2.5.1客戶端

客戶端分為管理員和查詢信息客戶端。疾病控制中心和醫(yī)院在使用管理員客戶端登錄后,可操作自己的相關數據,而要查看其他機構的數據則需獲得對方權限許可,在獲取限權后的一段時間里可查詢所需數據。對于查詢信息客戶端登錄的用戶在查詢數據時,都需要向數據擁有方提出查詢申請,在獲得權限后方可查看相應的數據。

2.5.2傳染病預警

傳染病預警合約是自動運行的合約腳本。用戶在應用層所能體驗到的則是基于該合約的兩類傳染病預警,分別為單病例自動預警和移動百分位數法自動預警。

單病例預警的特殊病種包括鼠疫、霍亂、傳染性非典型肺炎等11種急性傳染病[24]。單病例自動預警的過程如下:

1) 各醫(yī)院節(jié)點實時把各自醫(yī)院當前的傳染病病例信息通過客戶端上傳到VD Chain系統中。

2) 每當有新病例加入,系統合約開始自動檢查是否是特殊病種。若是,系統及時發(fā)出預警信號。

移動百分位數法自動預警的病種包括麻疹、流行性腦脊髓膜炎等19種急性傳染病[24]。移動百分位數法的過程如下:

1) 根據鏈上的已有數據。合約使用移動百分位數法動態(tài)計算傳染病的歷史基線(閾值)。

2) 系統合約自動把當前觀察周期(7天)內病例數與閾值進行實時比較。

3) 若觀察周期內發(fā)生的病例數大于或等于閾值后,系統將在24小時內發(fā)出預警信號。

上述兩種預警合約預警在觸發(fā)預警信號后的預警過程的工作流程如圖11所示。

圖11 預警工作流程

本文預警機制僅為基于智能合約的簡單預測,同時VD Chain還提供一個數據接口為課題其他的項目提供數據支持,實現更加完善的傳染病預警。

2.6 用戶管理

用戶管理主要用來管理參與到Virus Database Chain中用戶的賬號、密鑰和權限,是實現身份認證與訪問控制的模塊。

2.6.1賬戶管理

賬戶管理主要用來管理用戶登錄、注銷、密碼找回等功能。其中普通用戶可以選擇不參與鏈上共識,只需使用客戶端。在獲得授權條件下,可以查看區(qū)塊鏈中的傳染病數據信息,使得數據達到共享。為了更好地管理鏈上共識節(jié)點權限,目前將鏈上共識參與者節(jié)點角色分為三類:普通用戶,疾病控制中心,監(jiān)督者。這些節(jié)點以及連接在節(jié)點上的客戶端在區(qū)塊鏈上的行為同樣是受到權限限制的,也正是因為權限的限制使平臺更加安全可靠。

2.6.2權限管理

權限管理功能是VD Chain中十分重要的部分,它直接關系到VD Chain的安全性及傳染病數據的共享性。VD Chain的參與者大致分為三類:監(jiān)督部門、疾病控制中心和普通用戶。監(jiān)督部門主要包括中國疾病控制中心和衛(wèi)生部。存儲節(jié)點是各省市疾病控制中心和醫(yī)院等機構。普通用戶是所有獲得權限的使用者,包括醫(yī)療機構、政府相關部門等。針對這種特點,VD Chain采用基于角色的訪問控制模型(Role-Based Access Control,RBAC)來實現權限管理,RBAC將用戶映射到角色,用戶通過角色享有許可[25]。通過定義不同角色、角色繼承關系、角色之間的聯系以及相應的限制,動態(tài)或靜態(tài)地規(guī)范用戶行為[25]。角色與權限控制如圖12所示。

圖12 角色與權限控制

1) 監(jiān)督部門:負責VD Chain運行中的監(jiān)管活動,由中國疾病控制中心和衛(wèi)生部控制節(jié)點,在三類角色中管理權限最高。其中,中國疾病控制中心擁有最高的管理權限,可以賦予省級管理部門權限。省級管理部門可以在自己的權限范圍內賦予市級管理部門權限。公安、法院等政府部門在需要介入到系統中或者需要系統中的信息時,需要通過衛(wèi)生部授權。但是此類節(jié)點的所有操作仍會在鏈上留下記錄,以監(jiān)督防止其內部人員出現違規(guī)行為。

2) 疾病控制中心:由各省市疾病控制中心負責此類節(jié)點,是VD Chain中主要的節(jié)點。其中包含從業(yè)人員和管理人員兩類角色。從業(yè)人員可以在授權的期限內,查看、修改、添加以及修改傳染病信息。管理人員可以在授權的期限內,查看、修改、添加以及修改傳染病信息,并能夠管理和授權所屬的從業(yè)人員。

3) 普通用戶:醫(yī)療機構、政府相關部門和醫(yī)院等獲得權限的用戶。在授權的期限內只允許查看傳染病信息,不能進行其他操作。該類用戶并不負責節(jié)點的管理,只需要通過查詢客戶端就能完成所有操作。

2.7 安全與隱私

VD Chain在隱私與安全保護上主要通過人為干預和系統安全模塊來保證。

在人為干預方面:① 嚴格選聘系統管理人員。② 對系統管理人員進行權限劃分。③ 管理人員相互監(jiān)督。④ 設置清晰、明確的管理和維護規(guī)則。

在系統安全模塊方面:① 利用“權限管理”模塊來保證參與到VD Chain中各方能夠在規(guī)定權限下,正常使用其所需功能,實現有效的權限監(jiān)管與分配。② 通過VD Chain中的驗證器和打包器組件,采用PBFT共識算法,保證系統能夠處理節(jié)點的惡意行為與運行故障,且確保區(qū)塊鏈中的數據不被篡改。

3 評 估

本平臺使用區(qū)塊鏈技術管理傳染病數據,在保障數據信息安全可靠的前提下實現各節(jié)點間的數據共享,并與現有醫(yī)療類區(qū)塊鏈系統進行對比評估。

3.1 系統評估

經過多年信息數字化發(fā)展,我國傳染病信息化已較為成熟,但在保密性和共享性上仍面臨諸多問題。下面列舉了一些傳染病數據存儲面臨的問題,闡述VD Chain應對這些問題的方案,如表1所示。

表1 面臨的問題與應對方案

3.2 對比評估

采用對比分析的方式對比已有醫(yī)療信息類區(qū)塊鏈系統與本傳染病信息區(qū)塊鏈系統,目前主要的醫(yī)療區(qū)塊鏈系統有MDSM[9]、MedRec[11]與Model Chain[14]。對比結果如表2所示。

表2 與現有醫(yī)療類區(qū)塊鏈對比

由表2使用PBFT共識算法的VD Chain:

1) 與MDSM系統相比較,VD Chain所需節(jié)點個數遠少于MDSM,且MDSM需要人為設定投票權重比例,在這兩方面VD Chain都更為簡單。

2) 與MedRec系統相比較,VD Chain所需維護節(jié)點數遠少于MedRec,且無代幣激勵機制,也不需要大量算力來維護系統。

3) 與Model Chain相比較,Model Chain采用私有區(qū)塊鏈形式,所需節(jié)點個數不確定。但POI算法容易受到“51%攻擊”,因此需要較多的節(jié)點維護系統[5]。所以VD Chain所需的節(jié)點數要少于Model Chain。

3.3 性能評估

本文實驗使用美國Virus Pathogen Database and Analysis Resource(ViPR)[26]網站的傳染病數據,實驗環(huán)境為實驗室內局域網,實驗使用6臺Windows系統的臺式機器作為共識網絡中的共識節(jié)點。

3.3.1共識速度實驗

在VD Chain平臺上測試共識算法速度,在實驗環(huán)境下測試不同節(jié)點數的單次共識速度。首先保證實驗機器中可能的故障節(jié)點和惡意節(jié)點都是相同的節(jié)點f個。選擇3組對比試驗,分別使用4個、5個和6個節(jié)點作為共識節(jié)點。多次實驗4個共識節(jié)點的共識耗時并計算平均值,如表3所示。

表3 4節(jié)點共識耗時 ms

多次實驗5個共識節(jié)點的共識耗時并計算平均值,如表4所示。

表4 5節(jié)點共識耗時 ms

多次實驗6個共識節(jié)點的共識耗時并計算平均值,如表5所示。

表5 6節(jié)點共識耗時 ms

實驗中共識算法的共識過程耗時如圖13所示。

圖13 共識算法耗時

3.3.2數據存儲實驗

實驗數據采用ViPR網站的數據進行存儲,節(jié)點數4個,分別存儲100、500、1 000、5 000和10 000個傳染病數據,運行結果如圖14所示。

圖14 數據存儲耗時

由圖14可知,VD Chain在各節(jié)點日常數據存儲時可達到毫秒級,性能接近普通數據庫。由于節(jié)點共識需要時間,在進行大量數據存儲時如上萬條記錄同時生成,在保證數據安全共享的前提下系統需要一定的處理時間,這樣的時間開銷是必不可少的。

4 結 語

本文結合傳染病存儲系統和區(qū)塊鏈技術,設計了一個聯盟式傳染病數據區(qū)塊鏈系統。該系統有效地保護了數據安全并打破信息孤島使數據能更簡單地共享使用,同時通過引入智能合約,設計了一個簡單的預警合約,使得傳染病預警自動化。系統評估和實驗結果證明了系統的有效性和實用性。

目前,隨著國內區(qū)塊鏈技術的發(fā)展,將為海量數據提供數據共享性與安全可靠性等多方面做出貢獻。VD Chain仍然處于實驗階段,鏈上節(jié)點角色與權限還需要細化,未來我們將會增加數據對外接口以及數據脫敏性處理,為本課題的其余子項目提供數據支持等功能,并為將來的DAPP開發(fā)做準備。同時,鏈下實體數據的管理也需要進行優(yōu)化,考慮使用IPFS[27]的存儲方式分布式的管理與存儲鏈下的非結構化數據實體,來保證鏈下數據的安全存儲。另一方面,對于智能合約,考慮實現自己的虛擬機,使用戶能夠在平臺提供的接口下自定義智能合約,使用戶體驗更加友好。

猜你喜歡
客戶端傳染病共識
你的手機安裝了多少個客戶端
“人民網+客戶端”推出數據新聞
——穩(wěn)就業(yè)、惠民生,“數”讀十年成績單
《傳染病信息》簡介
傳染病的預防
3種傳染病出沒 春天要格外提防
共識 共進 共情 共學:讓“溝通之花”綻放
論思想共識凝聚的文化向度
商量出共識
媒體客戶端的發(fā)展策略與推廣模式
新華社推出新版客戶端 打造移動互聯新聞旗艦