陳友榮 陳 浩 韓 蒙 劉半藤 王章權(quán) 任條娟
①(浙江樹人大學(xué)信息科技學(xué)院 杭州 310015)
②(常州大學(xué)計算機與人工智能學(xué)院 常州 213164)
③(浙江大學(xué)計算機科學(xué)與技術(shù)學(xué)院 杭州 310013)
④(美國肯尼索州立大學(xué)計算與軟件工程學(xué)院 瑪麗埃塔 30060)
隨著科學(xué)技術(shù)和通信技術(shù)的發(fā)展,智慧醫(yī)療憑借交互式醫(yī)療保健服務(wù)的特點,正逐漸成為未來醫(yī)療發(fā)展中不可或缺的一部分。其中,醫(yī)院信息系統(tǒng)是智慧醫(yī)療的重要組成部分,可將電子病歷、住院記錄、處方、私人健康信息等醫(yī)療數(shù)據(jù)電子化[1,2],并具有管理便捷和高效的特點。但是目前醫(yī)院信息系統(tǒng)大多采用集中式構(gòu)架,且各個醫(yī)療機構(gòu)建設(shè)自身的醫(yī)院信息系統(tǒng),不僅存在數(shù)據(jù)孤島問題,同時還面臨被人為篡改、隱私信息泄露、政府監(jiān)管困難等安全問題,因此需要一種新的醫(yī)療數(shù)據(jù)共享安全技術(shù)。區(qū)塊鏈技術(shù)是一種無限冗余去中心化的共享賬本式分布數(shù)據(jù)庫,具有不可篡改的特性,因此可將區(qū)塊鏈引入醫(yī)院信息系統(tǒng)中,實現(xiàn)去中心化和安全的醫(yī)療數(shù)據(jù)共享系統(tǒng),解決患者的隱私信息保護、電子病歷篡改的快捷可追溯等醫(yī)療數(shù)據(jù)共享問題[3,4]。在區(qū)塊鏈技術(shù)中,共識算法是決定區(qū)塊鏈能否有效應(yīng)用的關(guān)鍵。但目前主流共識算法存在以下兩個問題,較難直接應(yīng)用到當(dāng)前的醫(yī)院信息系統(tǒng):(1)雖然區(qū)塊鏈能一定程度抵御惡意攻擊,但惡意節(jié)點仍可以通過干擾區(qū)塊共識的方式發(fā)動攻擊,實現(xiàn)降低共識效率、竊取隱私信息等目的。由于醫(yī)療數(shù)據(jù)共識需要具有隱私性、高效性等要求,因此需要及時發(fā)現(xiàn)惡意節(jié)點,盡早降低惡意節(jié)點對共識的影響。但目前主流共識算法較少考慮惡意節(jié)點的攻擊。(2)由于大量患者選擇在白天到醫(yī)療機構(gòu)進行治療,因此醫(yī)療數(shù)據(jù)的區(qū)塊共識需要較高的交易吞吐量和較低的交易時延。但目前主流共識算法的共識效率較低,無法應(yīng)對醫(yī)療數(shù)據(jù)的交易。
因此針對上述問題,本文基于數(shù)據(jù)節(jié)點、共識節(jié)點和監(jiān)管節(jié)點組成的醫(yī)療區(qū)塊鏈模型,提出一種基于信用等級劃分的醫(yī)療數(shù)據(jù)安全共識算法(Security Consensus Algorithm of Medical Data based on credit rating, SCA_MD)。本文的具體貢獻如下:(1)針對數(shù)據(jù)節(jié)點與共識節(jié)點存在身份被盜用的風(fēng)險,SCA_MD提出一種新穎的節(jié)點身份驗證機制,從而實現(xiàn)快速驗證。(2)考慮到現(xiàn)有節(jié)點的信用等級劃分較難發(fā)現(xiàn)惡意節(jié)點,SCA_MD根據(jù)節(jié)點的當(dāng)前累積信用值、歷史信用等級、成為代表節(jié)點次數(shù)和提供無效區(qū)塊次數(shù)等信息,提出一種基于海洋掠食者的自我優(yōu)化信用等級劃分算法(Self-optimizing Credit Rating Division algorithms,SCRD)實現(xiàn)等級劃分,從而盡可能限制惡意節(jié)點共識權(quán)力,降低惡意節(jié)點對共識的影響。(3)考慮節(jié)點的類型情況,提出一種代表節(jié)點選舉機制,并簡化實用拜占庭容錯(Practical Byzantine Fault Tolerance, PBFT)共識算法原有的一致性協(xié)議,且在視圖切換協(xié)議中采用備用代表節(jié)點,以應(yīng)對代表節(jié)點故障等情況,從而盡可能避免存在惡意節(jié)點成為主節(jié)點的同時提高共識的效率。因此SCA_MD不僅能快速完成惡意節(jié)點的剔除,避免惡意節(jié)點對區(qū)塊共識所帶來的效率降低等危害,而且降低交易時延,提高交易吞吐量,從而提高共識效率。
目前,具有中心化、集體維護和不可篡改等性質(zhì)的區(qū)塊鏈廣泛應(yīng)用于智能金融、智能家居、智能醫(yī)療和智慧交通等領(lǐng)域[5,6]。Azaria等人[7]首次將區(qū)塊鏈技術(shù)用于患者的醫(yī)療記錄,提出基于區(qū)塊鏈的醫(yī)療數(shù)據(jù)共享系統(tǒng),從而保證數(shù)據(jù)共享的安全性。其中,該系統(tǒng)采用工作量證明(Proof Of Work,POW)共識算法保證區(qū)塊共識的可靠性,但對節(jié)點的設(shè)備要求過高,且需要耗費大量的計算資源,因此部分學(xué)者研究應(yīng)用到醫(yī)療領(lǐng)域的共識算法。有些學(xué)者側(cè)重將主流的共識算法應(yīng)用于分布式醫(yī)療數(shù)據(jù)管理系統(tǒng)和模型,如文獻[8]為減少共識節(jié)點的算力負擔(dān),選擇委托權(quán)益證明(Delegated Proof Of Stake, DPOS)共識算法來保證區(qū)塊的一致性,并提出基于區(qū)塊鏈的并行醫(yī)療系統(tǒng)框架,建立包括患者、醫(yī)院和政府監(jiān)管部門的醫(yī)療聯(lián)盟鏈。文獻[9]將PBFT共識算法應(yīng)用于醫(yī)療區(qū)塊鏈系統(tǒng),提出一種聯(lián)盟式醫(yī)療區(qū)塊鏈系統(tǒng),實現(xiàn)系統(tǒng)安全穩(wěn)定的運行。但是上述文獻[7—9]沒有考慮主流共識算法存在一定的安全隱患,如難以應(yīng)對“富者更富”與累積攻擊等問題[10]。這些共識算法無法直接適用于實際的醫(yī)療領(lǐng)域,因此部分學(xué)者側(cè)重改進主流的共識算法,建立醫(yī)療數(shù)據(jù)管理系統(tǒng)和模型,如文獻[11]在權(quán)益證明(Proof Of Stake, POS)共識算法基礎(chǔ)上,根據(jù)節(jié)點的惡意行為制定懲罰機制來限制其收益,并提出一種醫(yī)療數(shù)據(jù)的授權(quán)全框架,合理分配不同用戶的訪問級別。為了避免部分節(jié)點權(quán)力過大,文獻[12]在PBFT共識算法的基礎(chǔ)上,通過節(jié)點投票的方式選取主節(jié)點,并提出一種基于區(qū)塊鏈的信息管理系統(tǒng),提高節(jié)點數(shù)據(jù)共享的效率。但上述文獻[11,12]中節(jié)點的信用值與投票計算方式過于簡單且代表節(jié)點存在被惡意入侵的風(fēng)險。同時部分學(xué)者側(cè)重研究面向智能醫(yī)療領(lǐng)域的安全共識算法,如文獻[13]提出權(quán)值認證拜占庭容錯共識算法。該算法根據(jù)節(jié)點的身份認證情況設(shè)置不同的權(quán)重,并通過輪盤賭的方式隨機選擇節(jié)點負責(zé)當(dāng)前區(qū)塊的共識。文獻[14]提出一種基于以太坊的未來可證明的疾病證明共識算法。該算法由醫(yī)療專家組擔(dān)當(dāng)?shù)V工角色,驗證并確認結(jié)果,最后提交到區(qū)塊鏈中。文獻[15]提出一種適用于醫(yī)療環(huán)境的身份證明共識算法。該算法在不同醫(yī)療機構(gòu)中隨機選擇代表節(jié)點來實現(xiàn)區(qū)塊的驗證,并在節(jié)點間建立相互監(jiān)督關(guān)系,防止代表節(jié)點被惡意節(jié)點攻擊。雖然上述文獻[13—15]可以在一定程度上有效降低惡意節(jié)點的攻擊,但存在惡意節(jié)點難以識別和剔除、共識效率低等問題,難以安全且高效地實現(xiàn)醫(yī)療數(shù)據(jù)的共識。
如圖1所示,SCA_MD考慮由數(shù)據(jù)節(jié)點、共識節(jié)點和監(jiān)管節(jié)點組成的醫(yī)療共識模型。其中,數(shù)據(jù)節(jié)點能夠產(chǎn)生醫(yī)療數(shù)據(jù),但是其算力無法實現(xiàn)快速區(qū)塊共識。監(jiān)管節(jié)點不產(chǎn)生任何醫(yī)療數(shù)據(jù),但是其算力和防護等級較高,能夠?qū)崿F(xiàn)快速區(qū)塊共識和監(jiān)管醫(yī)療數(shù)據(jù)。共識節(jié)點能夠產(chǎn)生醫(yī)療數(shù)據(jù)且其算力能夠?qū)崿F(xiàn)快速區(qū)塊共識,但是其防護等級較低。在上述共識模型的基礎(chǔ)上,SCA_MD的原理如圖2所示。首先各節(jié)點經(jīng)過節(jié)點身份驗證,獲得自身節(jié)點身份信息。其次節(jié)點根據(jù)其表現(xiàn)分情況,計算出各自的信用值,并結(jié)合其具體行為表現(xiàn),通過SCRD算法將其信用等級劃分為3類中的某一類,并獲得其共識過程中相應(yīng)的權(quán)利。接著,通過代表節(jié)點選舉,確定代表節(jié)點和備用代表節(jié)點。最后,實現(xiàn)醫(yī)療數(shù)據(jù)共識。但是SCA_MD仍需要解決以下4個問題:一是如何考慮對共識節(jié)點和數(shù)據(jù)節(jié)點進行身份驗證問題,實現(xiàn)節(jié)點的快速身份驗證。二是如何結(jié)合節(jié)點的信用值等信息,合理安排信用等級劃分與共識權(quán)限給予。三是如何考慮節(jié)點的累積信用值、節(jié)點類型等因素,實現(xiàn)代表節(jié)點選舉,從而快速剔除惡意節(jié)點。四是如何選舉代表節(jié)點和改進其共識機制,提高共識效率。這4個問題的具體解決如下。
圖1 醫(yī)療區(qū)塊共識模型
圖2 SCA_MD共識算法原理
由于數(shù)據(jù)節(jié)點和共識節(jié)點負責(zé)醫(yī)療數(shù)據(jù)的產(chǎn)生,因此這兩類節(jié)點存在容易被惡意節(jié)點假冒的風(fēng)險。SCA_MD提出節(jié)點的身份驗證機制,通過隨時間動態(tài)變化的驗證組成員快速驗證數(shù)據(jù)節(jié)點和共識節(jié)點。首先節(jié)點嘗試與周圍節(jié)點進行通信,若成功建立通信過程,則將成功通信的節(jié)點添加到可通信列表中,并從可通信列表中隨機選擇?個節(jié)點作為實際通信節(jié)點,其剩下的節(jié)點作為備用可通信節(jié)點。同時,為保證驗證組的可靠性,由代表節(jié)點隨機挑選N個信用等級為good的節(jié)點與M個監(jiān)管節(jié)點組成驗證組。其中,已經(jīng)入選成為驗證組的節(jié)點在下次隨機組合過程中將不會被考慮,直到遍歷過所有可能的組合。針對共識節(jié)點和數(shù)據(jù)節(jié)點的身份驗證描述如下:代表節(jié)點向驗證組內(nèi)的全部節(jié)點發(fā)送驗證請求。其中,驗證組中只要1個監(jiān)管節(jié)點或n1個節(jié)點的可通信列表能夠查詢到該節(jié)點信息,即認為通過驗證。若該節(jié)點通過驗證,則表明該節(jié)點具有唯一性,該節(jié)點可以參與區(qū)塊的共識流程。若未能滿足上述情況,則該節(jié)點停止其參與區(qū)塊共識的權(quán)利,并過一段時間重復(fù)上述驗證過程直到完成該節(jié)點的身份驗證。
由于醫(yī)療數(shù)據(jù)包含醫(yī)生根據(jù)自身經(jīng)驗所作出的醫(yī)療決策與醫(yī)療檢查所產(chǎn)生的個人隱私數(shù)據(jù),因此在選擇節(jié)點來完成區(qū)塊共識時需要綜合考慮節(jié)點的歷史行為,從而保證節(jié)點的可靠性。
3.2.1 獎懲機制
每當(dāng)有區(qū)塊成功上鏈后,根據(jù)節(jié)點的區(qū)塊共識行為執(zhí)行獎懲機制,通過式(1)計算每一個節(jié)點的累積表現(xiàn)分
其中,x(t)表示當(dāng)前時刻t的累計得分,κ表示當(dāng)前輪的獎勵分,φ表示當(dāng)前輪的扣除分,η表示本輪區(qū)塊共識成功的情況下,對代表節(jié)點投出贊成票的節(jié)點獎勵其表現(xiàn)分,λ表示本輪區(qū)塊共識失敗的情況下,對代表節(jié)點投出反對票的節(jié)點獎勵其表現(xiàn)分,μ表示對參與并完成節(jié)點身份驗證的節(jié)點獎勵其表現(xiàn)分,γ表示本輪區(qū)塊共識成功的情況下,對代表節(jié)點投出反對票的節(jié)點扣除其表現(xiàn)分,σ表示本輪區(qū)塊共識失敗的情況下,對代表節(jié)點投出贊成票的節(jié)點扣除其表現(xiàn)分,且γ與σ的值都遠大于η,λ和μ。
為增加節(jié)點參與區(qū)塊共識的積極性和提供節(jié)點等級劃分的評價標(biāo)準(zhǔn),提出一種信用值模型,即
其中,y(t)表示當(dāng)前時刻t的每一個節(jié)點累積信用值,ι1與ι2表示模型參數(shù)。
3.2.2 信用等級劃分
在完成上述的節(jié)點信用值計算后,需要對節(jié)點進行等級劃分。首先,代表節(jié)點采集具體包括當(dāng)前累積信用值、歷史信用等級、成為代表節(jié)點次數(shù)和提供無效區(qū)塊次數(shù)等評估要素。定義如式(3)所示的節(jié)點信用等級與數(shù)值的對應(yīng)關(guān)系,重新計算節(jié)點的歷史等級數(shù)值
其中,QR表示信用等級集合。
由于代表節(jié)點需要處理大量的數(shù)據(jù)信息,而常規(guī)聚類算法[16]對半徑等關(guān)鍵參數(shù)過于敏感,且需要通過主成分分析(Principal Components Analysis,PCA)和線性判別分析(Linear Discriminant Analysis,LDA)等算法進行特征降維[17],導(dǎo)致其聚類效果不夠理想和算法運行時間過長,無法滿足信用等級劃分的實時性需求。海洋掠食者算法(Marine Predators Algorithm, MPA)[18]在整體優(yōu)化過程中可劃分多個階段并模擬布朗運動的方式來避免陷入局部最優(yōu)解,且采用模擬萊維(Lévy)運動提高尋找全局最優(yōu)解的能力,但是其在優(yōu)化過程中僅根據(jù)當(dāng)前迭代次數(shù)實現(xiàn)不同的優(yōu)化階段,無法保證算法的收斂速度。因此改進節(jié)點間距離計算方法、判斷半徑的適應(yīng)度值和不同優(yōu)化階段的切法方法,并提出一種基于改進海洋掠食者的自我優(yōu)化信用等級劃分算法(SCRD),實現(xiàn)節(jié)點信用等級的快速劃分。
為了能更好地區(qū)分惡意節(jié)點,SCRD考慮到不同的評估要素所帶來的影響,在計算樣本間的差異距離時,設(shè)置不同的權(quán)重參數(shù),從而使得惡意節(jié)點與正常節(jié)點間表現(xiàn)出明顯的差異,具體公式為
在獲得半徑最優(yōu)解的基礎(chǔ)上,SCRD算法通過式(12)計算每個節(jié)點的評價值,從而將樣本分別劃分為bad, normal和good等級。當(dāng)節(jié)點的信用等級為good時,代表節(jié)點給予其被選舉權(quán)、投票權(quán)和身份驗證權(quán)。當(dāng)節(jié)點的信用等級為normal時,代表節(jié)點給予其被選舉權(quán)和投票權(quán)。若節(jié)點信用等級為bad,則代表節(jié)點認為該節(jié)點為惡意節(jié)點,不給予其任何權(quán)利,從而避免其影響區(qū)塊共識。當(dāng)完成上述權(quán)利給予后,代表節(jié)點將節(jié)點的累積信用值和累積得分進行清除,開始新一輪的累積得分獲取。
由于醫(yī)療數(shù)據(jù)區(qū)塊的共識存在時效性要求,因此SCA_MD通過節(jié)點選舉的方式選擇代表節(jié)點來達成區(qū)塊共識,提高區(qū)塊共識效率。在代表選舉過程,需要執(zhí)行代表候選節(jié)點確定和投票統(tǒng)計兩個階段。在代表候選節(jié)點確定階段,上一輪的代表節(jié)點通過式(13)計算每個節(jié)點的得分,并從高到低選取e個節(jié)點成為代表候選節(jié)點。
其中,scorel表示第l個節(jié)點的得分情況。如果出現(xiàn)多個節(jié)點的得分情況相同,則隨機選擇一個節(jié)點成為代表候選節(jié)點。在投票統(tǒng)計階段,為了在投票過程中加強對惡意節(jié)點的剔除,允許節(jié)點通過廣播的方式投出贊成票與反對票。同時考慮到不同類型的節(jié)點所代表的重要性不同,節(jié)點通過式(14)采用不同的權(quán)重統(tǒng)計票數(shù),獲得投票結(jié)果。
雖然通過代表節(jié)點來達成區(qū)塊共識能夠提高區(qū)塊共識效率,但隨著代表節(jié)點數(shù)量增加,醫(yī)療數(shù)據(jù)區(qū)塊的共識效率會逐漸無法滿足時效性要求,而且代表節(jié)點被惡意入侵的風(fēng)險也會明顯提高。因此在PBFT共識算法的基礎(chǔ)上,SCA_MD改進一致性協(xié)議和視圖切換協(xié)議,從而在保證節(jié)點可靠性的同時提高區(qū)塊共識效率。在一致性協(xié)議的改進方面,SCA_MD從代表節(jié)點中選擇信用值最高的τ(1<τ<<NRN)個節(jié)點組成主節(jié)點群,并通過隨機的方式完成區(qū)塊構(gòu)建。而主節(jié)點群主要負責(zé)將預(yù)準(zhǔn)備消息發(fā)送到其他代表節(jié)點,統(tǒng)一收集其返回的認可消息。若主節(jié)點群收到的認可消息超過2f個(f為NRN的1/3),則統(tǒng)一發(fā)送認可消息到其他代表節(jié)點進行驗證。若其他代表節(jié)點的驗證通過,則共識達成,并將區(qū)塊寫入到全局主鏈,否則重新執(zhí)行協(xié)議。而在視圖切換協(xié)議的改進方面,當(dāng)代表節(jié)點出現(xiàn)問題時,SCA_MD立刻從備用代表節(jié)點中隨機選擇節(jié)點進行替換。
本共識算法在盡可能提高共識效率的同時避免惡意節(jié)點對區(qū)塊共識的影響,如表1。其中,令全網(wǎng)節(jié)點數(shù)量為θ,數(shù)據(jù)節(jié)點和共識節(jié)點數(shù)量為c,獲得選舉權(quán)節(jié)點數(shù)量為b和候選節(jié)點數(shù)量為e。在SCA_MD中,每一個節(jié)點的偽代碼如下所示:首先初始化全網(wǎng)節(jié)點數(shù)量θ等關(guān)鍵參數(shù);然后,本節(jié)點廣播自身投票信息。若本節(jié)點收到全部節(jié)點的投票信息,則根據(jù)投票結(jié)果,選擇NAN個代表節(jié)點,并將選擇結(jié)果進行廣播;其次,當(dāng)本節(jié)點無法成為代表節(jié)點時,本節(jié)點僅從網(wǎng)絡(luò)中同步區(qū)塊信息,并根據(jù)網(wǎng)絡(luò)要求進行投票,否則本節(jié)點對c個節(jié)點執(zhí)行節(jié)點身份驗證機制,確定節(jié)點的身份;緊接著,當(dāng)本節(jié)點成為代表節(jié)點時,若為第1次區(qū)塊共識,則直接采用改進一致性協(xié)議和視圖切換協(xié)議完成區(qū)塊共識,否則根據(jù)前一次共識結(jié)果,執(zhí)行獎懲機制,并采集每個節(jié)點的評估要素,利用自我優(yōu)化信用等級劃分算法實現(xiàn)節(jié)點的信用等級劃分;接著,當(dāng)本節(jié)點成為代表節(jié)點且需要重新進行代表節(jié)點選擇時,則根據(jù)式(13)分別計算b個節(jié)點的得分,并將自身投票信息與候選節(jié)點信息進行廣播。若本節(jié)點收到全部節(jié)點的投票信息,則根據(jù)式(14)分別計算e個節(jié)點的投票結(jié)果,選擇NAN個代表節(jié)點,并廣播其信息;最后,本節(jié)點采用改進一致性協(xié)議和視圖切換協(xié)議完成區(qū)塊共識。
表1 基于信用等級劃分的醫(yī)療數(shù)據(jù)安全共識算法 (SCA_MD)
為了驗證SCA_MD的性能,選擇實驗環(huán)境為Intel i5-9400F CPU 2.20 GHz, 16 GB內(nèi)存和GTX1660顯卡,并使用Golang語言實現(xiàn)一個由醫(yī)療機構(gòu)、政府監(jiān)管部門和患者組成的電子病歷數(shù)據(jù)共享原型系統(tǒng)。在該原型系統(tǒng)中,考慮到不同醫(yī)療機構(gòu)的設(shè)備性能差異較大,醫(yī)療機構(gòu)以數(shù)據(jù)節(jié)點與共識節(jié)點的方式參與區(qū)塊共識,并通過該系統(tǒng)的區(qū)塊鏈獲得患者的歷史電子病歷數(shù)據(jù),對患者的新電子病歷數(shù)據(jù)進行區(qū)塊共識,保證患者醫(yī)療數(shù)據(jù)的實時更新。政府監(jiān)管部門監(jiān)督各醫(yī)療機構(gòu)對醫(yī)療數(shù)據(jù)的使用情況,以監(jiān)管節(jié)點的方式參與區(qū)塊共識,保證患者電子病歷數(shù)據(jù)的安全性?;颊咦鳛獒t(yī)療數(shù)據(jù)的擁有者,可通過該系統(tǒng)的區(qū)塊鏈查詢到自身的所有電子病歷數(shù)據(jù)。
在實驗中,結(jié)合上述醫(yī)療環(huán)境下的電子病歷數(shù)據(jù)共享原型系統(tǒng),并選擇以下參數(shù):共識成功表現(xiàn)分獎勵η為80,共識失敗表現(xiàn)分獎勵λ為80,身份驗證表現(xiàn)分獎勵μ為20,共識成功表現(xiàn)分扣除γ為180,共識失敗表現(xiàn)分扣除σ為180,共識節(jié)點投票權(quán)重ε1為1,監(jiān)督節(jié)點投票權(quán)重ε2為0.8,數(shù)據(jù)節(jié)點投票權(quán)重ε3為0.5,評價值參數(shù)ψ1為0.5,評價值參數(shù)ψ2為0.5,評價值參數(shù)ψ3為4,評價值參數(shù)ψ4為2。研究信任值模型系數(shù)對交易吞吐量的影響,研究惡意節(jié)點攻擊下的惡意節(jié)點查準(zhǔn)率與查全率,同時分別采用POS[10], DPOS[19], CDBFT(Credit-Delegated Byzantine Fault Tolerance)[20]和SCA_MD,研究惡意攻擊下的交易吞吐量、平均交易時延和平均節(jié)點通信開銷。其中,查全率定義為SCA_MD檢測出的真實惡意節(jié)點數(shù)量與網(wǎng)絡(luò)中存在的惡意節(jié)點總量的百分比。查準(zhǔn)率定義為SCA_MD檢測出的真實惡意節(jié)點數(shù)量與算法認為是惡意節(jié)點總數(shù)量的百分比。交易吞吐量定義為交易發(fā)起到寫入?yún)^(qū)塊鏈中的總交易數(shù)除以總時間。平均交易時延定義為全部交易從發(fā)起到寫入?yún)^(qū)塊鏈的總時間(包括交易廣播傳輸時間、共識算法的執(zhí)行時間和區(qū)塊廣播時間)除以交易數(shù)。平均節(jié)點通信開銷定義為完成所有交易數(shù)時平均每個節(jié)點需要發(fā)送的通信包數(shù)量。由于在真實的環(huán)境中正常節(jié)點存在被惡意節(jié)點身份盜用的風(fēng)險,因此惡意節(jié)點可通過身份盜用的方式發(fā)起累積攻擊或信任值攻擊,即考慮到POS與DPOS主要通過幣齡來完成區(qū)塊共識,因此選擇惡意節(jié)點發(fā)起累積攻擊。CDBFT與SCA_MD是考慮節(jié)點的信任值來給予區(qū)塊共識權(quán)利,實現(xiàn)區(qū)塊共識,因此選擇惡意節(jié)點發(fā)起信任值攻擊。
5.2.1 參數(shù)選擇分析
選擇信用值模型參數(shù)ι1為選取范圍0~500的6個典型值為0, 100, 200, 300, 400, 500,參數(shù)ι2為選取范圍0~250的5個典型值50, 100, 150, 200,250,節(jié)點數(shù)量為350,惡意節(jié)點數(shù)量為30,分析信任值模型參數(shù)對交易吞吐量的影響。如圖3所示,隨著模型參數(shù)ι1和ι2的增加,SCA_MD的交易吞吐量在前期逐漸上升,且當(dāng)模型參數(shù)ι1和ι2分別為400和200時達到最大值(5.32)。這是因為:隨著模型參數(shù)ι1的增加,信用值模型擁有更高的上下限,導(dǎo)致惡意節(jié)點更容易被區(qū)分,且便于后期綜合評價節(jié)點的信用等級,因此SCA_MD的交易吞吐量逐漸上升。同時隨著模型參數(shù)ι2的增加,信用值模型在前期的上升速度放緩,導(dǎo)致惡意節(jié)點以合理的速率完成節(jié)點的累積信用值,且有效鼓勵正常節(jié)點參與多輪區(qū)塊的積極性,降低交易的時間,因此SCA_MD的交易吞吐量逐漸上升。但當(dāng)SCA_MD模型的參數(shù)ι1為500時,會導(dǎo)致信任值模型的上下限過高。當(dāng)參數(shù)ι2為250時,其信任值模型的上升速度過緩,因此上述參數(shù)設(shè)置均會影響節(jié)點參與區(qū)塊共識的積極性,交易吞吐量出現(xiàn)一定程度的下降。因此在后續(xù)實驗中,我們選擇信用值模型的參數(shù)ι1為400,參數(shù)ι2為200。
圖3 信任值模型參數(shù)對交易吞吐量的影響
選擇惡意節(jié)點數(shù)為10, 20, 30, 40, 50, 60,節(jié)點數(shù)為350,分析惡意節(jié)點數(shù)量對查全率與查準(zhǔn)率的影響。如圖4所示,隨著惡意節(jié)點數(shù)量的增加,SCA_MD的查全率與查準(zhǔn)率基本維持在一個較高的水平,且惡意節(jié)點的查全率略低于查準(zhǔn)率。這是因為:SCA_MD在區(qū)塊共識過程中,采用節(jié)點身份驗證機制,盡可能剔除發(fā)起攻擊的惡意節(jié)點,且在信用等級劃分方面,不僅結(jié)合獎懲機制與信用值模型,同時根據(jù)當(dāng)前累積信用值、歷史等級數(shù)值、成為代表節(jié)點次數(shù)、提供無效區(qū)塊次數(shù)和提供分叉區(qū)塊次數(shù),完成節(jié)點等級的綜合評價,從而實現(xiàn)惡意節(jié)點與正常節(jié)點的區(qū)分。但由于該算法采用代表節(jié)點來完成區(qū)塊共識,因此網(wǎng)絡(luò)中部分惡意節(jié)點沒有獲得直接攻擊的機會,其行為沒有表現(xiàn)出與正常節(jié)點的差異,導(dǎo)致其在共識過程中沒有被認為是惡意節(jié)點。
圖4 惡意節(jié)點數(shù)量對查全率與查準(zhǔn)率的影響
5.2.2 算法性能比較
選擇惡意節(jié)點數(shù)為10, 20, 30, 40, 50, 60,節(jié)點數(shù)為350,分析惡意節(jié)點數(shù)量對交易吞吐量的影響。如圖5所示,隨著惡意節(jié)點數(shù)量的增加,DPOS,CDBFT和POS的交易吞吐量逐漸下降,而SCA_MD基本保持不變且明顯高于DPOS, CDBFT和POS。這是因為:在DPOS和CDBFT中,由于進行投票選擇代表節(jié)點,當(dāng)惡意節(jié)點數(shù)遠小于代表節(jié)點數(shù)時,算法被成功攻擊次數(shù)較少,但隨著惡意節(jié)點數(shù)上升且接近代表節(jié)點數(shù)量,成功攻擊次數(shù)逐漸增加,因此DPOS和CDBFT的交易吞吐量逐漸下降。而POS根據(jù)幣齡選擇構(gòu)建區(qū)塊的節(jié)點,隨著惡意節(jié)點數(shù)量上升,其受到攻擊次數(shù)一直上升,因此其交易吞吐量逐漸下降。SCA_MD不僅采用節(jié)點身份驗證機制,剔除身份盜用的惡意節(jié)點,并針對惡意節(jié)點采用SCRD實現(xiàn)共識權(quán)利限制,盡可能由正常節(jié)點來完成區(qū)塊共識,降低了惡意節(jié)點的成功攻擊次數(shù),因此其交易吞吐量基本保持不變且始終高于DPOS, CDBFT和POS。
圖5 惡意節(jié)點數(shù)量對交易吞吐量的影響
選擇惡意節(jié)點數(shù)10, 20, 30, 40, 50, 60,節(jié)點數(shù)為350,分析惡意節(jié)點數(shù)量對平均交易時延的影響。如圖6所示,隨著惡意節(jié)點數(shù)量的上升,DPOS, CDBFT和POS的平均交易時延逐漸上升,而SCA_MD基本保持不變且低于DPOS, CDBFT和POS。這是因為:在POS中,隨著惡意節(jié)點數(shù)量增加,成功攻擊次數(shù)逐漸上升,且成功攻擊后每個節(jié)點均需要重新參與區(qū)塊共識,因此其平均交易時延也逐漸上升。而在DPOS和CDBFT中,通過代表節(jié)點完成共識,當(dāng)惡意節(jié)點數(shù)量增加時,成功攻擊次數(shù)也逐漸上升,且攻擊成功后需要重新發(fā)起投票選舉,因此其平均交易時延同樣出現(xiàn)上升。SCA_MD不僅引入節(jié)點身份驗證機制與節(jié)點信用等級劃分來限制惡意節(jié)點的權(quán)利,同時在代表選舉中設(shè)置反對票與投票系數(shù),盡可能避免了惡意節(jié)點成為代表節(jié)點,降低了成功攻擊次數(shù),因此其平均交易時延基本保持不變且低于DPOS, CDBFT和POS。
圖6 惡意節(jié)點數(shù)量對平均交易時延的影響
選擇惡意節(jié)點數(shù)為10, 20, 30, 40, 50, 60,節(jié)點數(shù)為350,分析惡意節(jié)點數(shù)量對平均節(jié)點通信開銷的影響。如圖7所示,隨著惡意節(jié)點數(shù)量的增加,DPOS,CDBFT和POS的平均節(jié)點通信開銷逐漸上升,而SCA_MD基本保持不變且低于DPOS, CDBFT和POS。這是因為:在POS中,隨著惡意節(jié)點數(shù)增加,惡意節(jié)點攻擊成功次數(shù)上升,使得每個節(jié)點需要多次廣播交易和幣齡等信息,因此其在平均節(jié)點通信開銷方面的效果最差。而在C D B F T 和DPOS中,當(dāng)惡意節(jié)點數(shù)量大于50時,其成功攻擊次數(shù)急劇上升,且每個節(jié)點需要重新廣播投票與信譽值等信息,因此其平均節(jié)點通信開銷同樣出現(xiàn)明顯上升。但是SCA_MD不僅針對一致性協(xié)議進行簡化,避免了大量節(jié)點的廣播過程,有效減少節(jié)點的網(wǎng)絡(luò)通信開銷,同時在視圖切換協(xié)議中設(shè)置備用代表節(jié)點的措施,避免惡意節(jié)點持續(xù)影響區(qū)塊共識,提高了區(qū)塊共識效率,因此其平均節(jié)點通信開銷基本保持不變且低于DPOS, CDBFT和POS。
圖7 惡意節(jié)點數(shù)量對平均節(jié)點通信開銷的影響
該文提出一種基于信用等級劃分的醫(yī)療數(shù)據(jù)安全共識算法(SCA_MD)。首先,將節(jié)點分為數(shù)據(jù)節(jié)點、共識節(jié)點和監(jiān)管節(jié)點3類??紤]到數(shù)據(jù)節(jié)點與共識節(jié)點存在身份被盜用的風(fēng)險,提出一種節(jié)點身份驗證機制。其次,根據(jù)節(jié)點的參與區(qū)塊共識情況,提出獎懲機制、信用值模型和基于海洋掠食者的自我優(yōu)化信用等級劃分算法(SCRD)??紤]節(jié)點的類型情況,提出一種代表節(jié)點選舉機制。接著,改進一致性協(xié)議和視圖切換協(xié)議,提出代表節(jié)點共識機制。實驗結(jié)果表明:不管與惡意節(jié)點數(shù)量如何變化,SCA_MD能夠避免惡意節(jié)點對區(qū)塊共識的影響,從而提高交易吞吐量,降低平均交易時延和平均節(jié)點通信開銷,比POS, DPOS和CDBFT更優(yōu)。但是SCA_MD沒有考慮到節(jié)點的數(shù)據(jù)存儲能力有限且異構(gòu),因此下一階段的目標(biāo)是研究醫(yī)療環(huán)境下異構(gòu)節(jié)點存儲空間中的區(qū)塊更新,提出適用于醫(yī)療環(huán)境的區(qū)塊有效存儲和更新算法。