孫彥棨,張正道,2+
(1.江南大學 物聯網工程學院,江蘇 無錫 214122;2.江南大學 教育部物聯網技術應用工程中心,江蘇 無錫 214122)
工業(yè)控制系統(tǒng)(Industrial Control System, ICS)是工業(yè)物聯網的主要形式之一,已廣泛應用于航天、能源、運輸等領域[1-3]。隨著ICS的開放性與日俱增,其面臨的安全隱患也大大增加,主要是攻擊者通過內部攻擊破壞數據的完整性以達到操控工業(yè)過程的目的。因此,與其他工業(yè)物聯網系統(tǒng)相比,工業(yè)控制系統(tǒng)受到攻擊后,不僅會造成其信息系統(tǒng)部分的破壞,還將導致其物理系統(tǒng)部分出現嚴重故障,進而造成人員和財產損失[4]。因此,工業(yè)控制系統(tǒng)的安全性保護是一個值得研究的問題。
目前,數據完整性攻擊包括:虛假數據注入攻擊(False Data Injection attack, FDI)、拒絕服務攻擊(Denial-of-Service attack, DoS)、中間人攻擊(Man-in-the-Middle attack, MITM)和重放攻擊(Replay Attacks),是工業(yè)控制系統(tǒng)面臨的主要攻擊類型[5]。現有的數據完整性保護方案則可以分為基于模型的方案、基于數據的方案和基于密碼學的方案3類。其中基于模型的方案需要對ICS建立精確的數學模型;基于數據的方案一般需要大量精確而有效的系統(tǒng)采樣數據,易受系統(tǒng)和環(huán)境噪聲的影響;而基于密碼學的方案則要求設備具有足夠的計算資源以執(zhí)行復雜的密碼學運算。而ICS不但精確建模困難,數據受噪聲影響大,而且計算資源有限?,F有方案在應用時均存在局限性。
區(qū)塊鏈技術是一種全新的去中心化基礎架構和分布式計算范式[6],且具有不可篡改的特性,因此可實現數據完整性保護[7]。文獻[8]將區(qū)塊鏈與車輛和電網(V2G)相結合,提出一種能源交易認證方案。通過哈希函數與非對稱密鑰對交易實體進行多方認證。文獻[9]提出一種私有的區(qū)塊鏈架構管理工業(yè)物聯網數據,將數據通過非對稱密鑰進行加密并存儲在區(qū)塊鏈上以保證數據的完整性。然而,上述方案需要大量計算資源,難以在ICS中進行部署。文獻[10]結合區(qū)塊鏈與無證書密碼學技術提出一種物聯網數據分布式存儲方案,利用區(qū)塊鏈礦工存儲與審計物聯網數據,消除了傳統(tǒng)的中心服務器,避免了單點故障問題。文獻[11]提出一種名為ICS-BlockOpS的新型區(qū)塊鏈架構,以保護智能工廠中歷史數據的安全性,并通過完整性檢查機制和數據冗余提高了歷史數據的安全性與魯棒性。然而上述方案沒有考慮數據傳輸過程中的安全性,無法保證數據在存儲到區(qū)塊鏈分類賬之前的真實性。文獻[12]提出一種基于區(qū)塊鏈的移動邊緣計算物聯網數據存儲與共享方案,通過邊緣節(jié)點管理區(qū)塊鏈網絡,采用鏈上鏈下雙重存儲模式,將數據存儲地址與其數字簽名存儲在區(qū)塊鏈中,數據以分布式的方式存儲在鏈下數據庫中,提高了數據的安全性與容錯性。結合基于屬性的數字簽名算法,文獻[13]提出一種霧環(huán)境下的基于區(qū)塊鏈的物聯網數據安全分享方案,通過將區(qū)塊鏈操作卸載到霧節(jié)點上,提高了方案的可用性與可拓展性,增強了數據傳輸過程中的可信性。上述方案雖然考慮了物聯網設備資源的受限性并作了相應的改進,然而方案所需的通信量較大,在達成共識時存在較大的延遲,難以滿足工業(yè)生產的實時性要求。
目前區(qū)塊鏈在工業(yè)控制系統(tǒng)安全的研究主要集中于控制臺到服務器的網絡級,很少涉及從控制臺到現場單元的現場級。相比較而言,從控制臺到現場單元的部分具有以下特點:①計算資源更為受限。工業(yè)控制系統(tǒng)中的設備普遍存在計算資源受限問題。而在現場級,參與運行的主要是傳感器、智能儀表、可編程邏輯控制器和少量工業(yè)控制計算機,它們擁有的計算資源無法支持復雜計算。②通信能力受限?,F場級的通信一般依托現場總線完成,不但缺乏安全性措施,而且通信速率低、通信延時大。因此,現有區(qū)塊鏈方案難以滿足ICS中的安全性需求與可用性需求。為此,本文提出一種用于保護ICS數據完整性的區(qū)塊鏈方案。首先,為降低系統(tǒng)的計算與通信開銷,提出一種隨機驗證機制,從網絡中隨機選擇部分節(jié)點參與區(qū)塊鏈共識過程。該機制利用隨機局部節(jié)點取代了全體節(jié)點參與共識過程,在降低計算與通信開銷的同時還給攻擊者帶來了不確定性。其次,提出一種新型共識模型,按照共識節(jié)點的狀態(tài)采用不同的共識策略。該模型進一步節(jié)約了系統(tǒng)通信資源,有效避免了節(jié)點之間的無效通信,最大程度降低了共識過程的延遲與通信量。通過安全分析以及在半實物仿真平臺進行性能仿真驗證了本文方案對于ICS的有效性。
本文討論的工業(yè)控制系統(tǒng)模型如圖1所示,其中現場級主要包括現場儀表與傳感器、控制器和控制臺3類實體。具體描述如下:
(1)現場儀表與傳感器 由各種控制儀表或傳感器組成,用于獲取實時工業(yè)數據并上傳控制器。
(2)控制器(Control Unit, CU) 如可編程邏輯控制器(Programmable Logic Controller, PLC)等,獲取現場儀表與傳感器的測量數據,并進行數據預處理。
(3)控制臺(Industrial Control Console, ICC) 一般為工業(yè)控制計算機,是擬議模型的中心節(jié)點。通過現場總線網絡與控制器相連接,并接收控制器預處理測量數據與下達控制命令。
由于傳統(tǒng)區(qū)塊鏈方案資源要求高、通信量大,不適用于資源有限、實時性要求高的工業(yè)生產環(huán)境。對此,本文基于授權的方式構建了一個許可的私有區(qū)塊鏈網絡[14]。根據設備資源的多少,設置資源較少的控制器作為輕節(jié)點,資源較強的控制臺作為全節(jié)點?,F場儀表與傳感器僅用于采集工業(yè)數據,并不實現區(qū)塊鏈邏輯。在許可的私有區(qū)塊鏈網絡中,輕節(jié)點負責將所屬現場儀表與傳感器上傳的數據生成區(qū)塊鏈交易并在網絡中廣播,同時驗證網絡中廣播的區(qū)塊鏈交易。全節(jié)點負責驗證網絡中廣播的區(qū)塊鏈交易,并生成區(qū)塊鏈賬本。
本文提出的基于區(qū)塊鏈數據完整性保護方案主要包括區(qū)塊鏈網絡初始化、區(qū)塊鏈交易生成、動態(tài)隨機驗證、共識過程以及區(qū)塊鏈分類賬更新5個階段,方案的具體執(zhí)行邏輯如算法1所示。
算法1擬議方案的執(zhí)行邏輯。
1:for all CUs, ICC do
2: 執(zhí)行區(qū)塊鏈網絡初始化過程
3:end for
4:for CUs do
5: 執(zhí)行區(qū)塊鏈交易生成過程
6: for VNs, ICC do//驗證節(jié)點(VNs)
7: 執(zhí)行動態(tài)隨機驗證過程與共識過程
8: for ICC do
9: 執(zhí)行區(qū)塊鏈賬本更新過程
10: end for
11: end for
12:end for
擬議方案首先需要初始化。ICC為注冊中心,節(jié)點在加入區(qū)塊鏈網絡之前,需要在ICC進行注冊以獲取數字證書。假設網絡中有N個節(jié)點,即{ICC,CU1,CU2,…,CUN-1}。采用文獻[15]的密鑰分發(fā)機制,每個節(jié)點需要一對非對稱密鑰來收發(fā)信息。因此,在初始化之前,網絡中的節(jié)點在本地生成一對公私鑰,其中CUi的密鑰對表示為(PKi,SKi),ICC密鑰對表示為(ICCPK,ICCSK)。
首先,CUi(i=1,…,N-1)利用自身MAC地址和隨機數組合的哈希值生成唯一的身份標識符OIDi。然后,CUi向ICC發(fā)送注冊請求(Mi),即
Mi=EncICCPK{signSKi(OIDi,TS,noncei)}。
(1)
式中:EncICCPK表示Mi通過ICC的公鑰ICCPK進行加密;signSKi表示CUi的私鑰簽名;TS表示時間戳;noncei表示隨機值,其用于發(fā)起回應挑戰(zhàn),如果ICC可以回應正確的隨機值,則認為ICC已經成功解密了Mi。隨后,ICC接收Mi并解密。若CUi尚未注冊,則ICC將為CUi生成數字證書Certi=ICCSK(OIDi);否則,ICC將忽略CUi的注冊請求。ICC在完成所有CUi注冊后,基于各CUi的Mi和Certi生成白名單Whitelist。如表1所示,其主要包括OIDi,Certi,Timei,其中Timei表示CUi生成的最新區(qū)塊鏈交易的時間戳。在初始化階段,由于區(qū)塊鏈交易還未生成,因此Timei設置為0。ICC的數字證書設置為Cert0=ICCSK(OID0),其中OID0為ICC的身份標識符,生成機制與OIDi相同。由于ICC不參與生成區(qū)塊鏈交易,白名單中ICC對應的Timei設為null。
表1 白名單
接著,ICC發(fā)送AMi到網絡中的CUi,即
AMi=EncPKi{signICCSK(Whitelist,noncei,
TS,nonceb)}。
(2)
式中nonceb同樣是一個回應挑戰(zhàn)。CUi解密AMi并從中提取白名單,白名單將保存在CUi的本地,并隨著區(qū)塊鏈交易的生成而實時更新。之后,CUi通過FMi向ICC反饋nonceb以完成初始化,其中
FMi=EncICCPK{signSKi(TS,nonceb)}。
(3)
由于初始化僅執(zhí)行一次,其中涉及到的密碼學操作也僅執(zhí)行一次,不會影響擬議方案整體性能。
CUi依據數據采集周期從現場儀表與傳感器獲取測量數據并進行預處理。之后,CUi基于測量數據生成區(qū)塊鏈交易。區(qū)塊鏈交易結構為:
TXi={OIDi,indexk,TStx,data,
HASH(OIDi,indexk,TStx,data,Certi)}。
(4)
式中:indexk為交易索引,TStx為交易時間戳,data為測量數據,HASH(OIDi,indexk,TStx,data,Certi)為交易哈希值,HASH()表示MD5哈希函數。CUi將TXi在區(qū)塊鏈網絡中廣播。
接收到廣播的區(qū)塊鏈交易之后,輕節(jié)點將執(zhí)行驗證過程。為了降低驗證過程的計算與通信開銷,本文提出一種動態(tài)隨機驗證機制。具體來說,每個輕節(jié)點在本地維護一個定時器。當節(jié)點執(zhí)行驗證過程時,若在定時器時間范圍內完成驗證,則節(jié)點被視為驗證節(jié)點;若超出了定時器時間范圍,節(jié)點沒有完成驗證,則節(jié)點直接丟棄交易。由于節(jié)點的驗證速度與區(qū)塊鏈交易傳輸時間和節(jié)點實時可用資源有關,上述機制可以動態(tài)地隨機選擇部分節(jié)點參與交易驗證過程,節(jié)約開銷的同時也給攻擊者引入了不確定性。
由于網絡中所有數據都需要發(fā)送至ICC。因此,ICC將驗證網絡中廣播的所有交易且不受定時器的約束。區(qū)塊鏈交易校驗規(guī)則如下:
規(guī)則1交易中的時間戳(TStx)與白名單中的Timei之差應大于預設的閾值Te,即
TStx-Whitelist(Timei)>Te。
(5)
規(guī)則2交易中的時間戳(TStx)與驗證節(jié)點的系統(tǒng)當前時間戳(TSC)之差小于系統(tǒng)最大延遲ΔT,即
TSC-TStx<ΔT。
(6)
規(guī)則3交易中的哈希值應滿足:
RHash=HASH(OIDi,indexk,TStx,
data,Certi)。
(7)
式中RHash為驗證節(jié)點重新計算的交易哈希值。
規(guī)則1用于限制CUi生成交易的速度,防止攻擊者不斷生成虛假的交易而淹沒網絡;規(guī)則2規(guī)定了交易廣播的最大延遲時間,可防止攻擊者發(fā)起重放攻擊;規(guī)則3通過重新計算交易哈希值RHash以驗證交易完整性。驗證節(jié)點檢索白名單獲取CUi的數字證書Certi,并利用交易中的信息重新計算RHash。若RHash與交易中的哈希值相等,則驗證通過。若區(qū)塊鏈交易滿足以上驗證規(guī)則,則交易有效;否則,交易無效。
假設驗證過程中驗證節(jié)點的數量為P,則驗證節(jié)點集表示為{VN1,VN2,…,VNi,…,VNP-1,ICC}。ICC依據多數節(jié)點的驗證結果判定交易合法性以達成共識。根據區(qū)塊鏈交易驗證結果,共識過程可分為以下4種情況,根據不同的情況將采取不同的策略。
情況1驗證節(jié)點集{VN1,VN2,…,VNi,…,VNP-1,ICC}中的節(jié)點均驗證成功。
此時,{VN1,VN2,…,VNi,…,VNP-1}無需向ICC反饋驗證結果。ICC等待預設時間閾值TW后,未收到驗證失敗的結果反饋,則執(zhí)行交易更新過程。
情況2ICC驗證失敗,{VN1,VN2,…,VNi,…,VNP-1}驗證成功。
此時,ICC在等待預設時間閾值TW之后,未收到反饋。因此,ICC廣播一則交易轉發(fā)請求Req,即
Req={TSm,OIDi,indexk,Oid=1,
HASH(TSm,OIDi,indexk,Oid=1,Cert0)}。
(8)
式中:TSm為時間戳,Oid表示操作標識符,1表示轉發(fā)操作。
VNi接收Req并驗證其合法性。首先,VNi生成當前時間戳(TSC)并與Req中的時間戳TSm做差。若兩者之差小于系統(tǒng)最大延遲ΔT,即TSC-TSm<ΔT,則驗證通過。接著,VNi利用Req中的信息重新計算哈希值RHash,即
RHash=HASH(TSm,OIDi,
indexk,Oid=1,Cert0)。
(9)
式中Cert0為ICC的數字證書,可通過檢索本地白名單獲得。若RHash與Req中的哈希值相等,則驗證通過。若Req滿足以上兩條驗證規(guī)則,則Req有效;否則,Req無效。本文中所有信息的驗證均遵循上述規(guī)則。
若Req驗證成功,VNi根據其中的身份標識符OIDi和交易索引indexk轉發(fā)對應的區(qū)塊鏈交易;否則,VNi忽略Req。當VNi執(zhí)行轉發(fā)操作時,將構建一則反饋信息(Feedback)發(fā)送給ICC。Feedback數據結構如下:
Feedback={TSm,TXi,
(10)
Stop={TSm,OIDi,indexk,Oid=0,
HASH(TSm,OIDi,indexk,Oid=0,Cert0)}。
(11)
式中Oid=0表示停止轉發(fā)操作。VNi接收并驗證Stop的有效性。若驗證通過,VNi停止轉發(fā)交易到ICC;否則,驗證節(jié)點忽略Stop。若Feedback驗證失敗,ICC忽略Feedback,等待其余的驗證節(jié)點轉發(fā)交易。
情況3ICC驗證成功,{VN1,VN2,…,VNi,…,VNP-1}中存在節(jié)點驗證失敗。
此時,驗證失敗的節(jié)點將驗證結果(Fail)反饋給ICC。Fail的數據結構如下:
Fail={TSm,OIDi,indexk,VR=00,
(12)
式中:VR表示驗證結果,00表示驗證失敗。ICC接收并驗證Fail。若驗證通過,ICC廣播一則信息(Report),要求其余驗證節(jié)點反饋驗證結果,即
Report={TSm,OIDi,indexk,Rt=01,
HASH(TSm,OIDi,indexk,Rt=01,Cert0)}。
(13)
式中Rt=01表示驗證節(jié)點需要向ICC報告驗證結果。驗證節(jié)點接收Report并驗證。若驗證通過,則驗證節(jié)點發(fā)送信息(Success1)到ICC,即
Success1={TSm,OIDi,indexk,VR=11,
(14)
式中VR=11代表交易驗證成功。ICC驗證Success1的有效性并統(tǒng)計驗證節(jié)點的數量P,即
P=number(Fail)+number(Success1)+1。
(15)
式中:number(Fail)和number(Success1)分別表示ICC接收并驗證通過的Fail與Success1的數量,1表示ICC自身的驗證結果。若滿足number(Success1)>P/2,則交易合法,ICC執(zhí)行交易更新過程;否則,ICC將丟棄該交易。
情況4ICC驗證失敗,{VN1,VN2,…,VNi,…,VNP-1}中也存在節(jié)點驗證失敗。
與情況3類似,唯一不同的地方在于驗證節(jié)點向ICC報告驗證結果時,報告信息Success2的結構變化如下:
Success2={TSm,OIDi,indexk,VR=11,TXi,
(16)
ICC接收并驗證Success2。與式(15)類似,驗證節(jié)點的數量
P=number(Fail)+number(Success2)+1。
(17)
式中number(Success2)表示ICC驗證通過的Success2的數量。若滿足number(Success2)>P/2,則交易合法。ICC從Success2中提取TXi以執(zhí)行交易更新過程。
ICC判定區(qū)塊鏈交易為合法交易之后,將其放入交易池中,并執(zhí)行交易更新過程。首先,ICC廣播一則更新信息(Update),即
Update={OIDi,TStx,TSm,
HASH(OIDi,TStx,TSm,Cert0)}。
(18)
網絡中所有輕節(jié)點接收Update并驗證。若Update有效,輕節(jié)點從中提取TStx,以更新白名單中OIDi對應的Timei;若驗證失敗,則直接忽略Update。同時,ICC也利用TXi中的TStx更新其本地白名單。
當交易池中的交易數量達到預設的閾值時,ICC將交易池中的交易打包成一個區(qū)塊,其結構如圖2所示。區(qū)塊由頭與主體組成。區(qū)塊頭中包含5個參數,即區(qū)塊版本號(version number)、前一個區(qū)塊的哈希值(PreHASH)、區(qū)塊哈希值(BlockHASH)、時間戳(TSBlock)和區(qū)塊簽名(SignSK=ICCSK(Block))。區(qū)塊體用于存儲交易列表。生成區(qū)塊之后,ICC將區(qū)塊添加到區(qū)塊鏈中,并清空交易池,完整的區(qū)塊鏈將存儲在ICC的本地磁盤中。
現有區(qū)塊鏈技術都存在51%攻擊的問題[14]。本文方案中,攻擊者可對網絡中廣播的信息進行惡意操作,如攔截并篡改驗證節(jié)點反饋給控制臺的驗證結果,重放控制臺的轉發(fā)請求等。但是受攻擊的信息將被合法節(jié)點識別而不會被計入共識過程。然而,若攻擊者對廣播的區(qū)塊鏈交易進行惡意攻擊而導致其無法通過合法節(jié)點的驗證,此時被攻擊的區(qū)塊鏈交易的驗證結果將計入區(qū)塊鏈交易的投票過程,從而干擾區(qū)塊鏈共識。為此,若網絡中的區(qū)塊鏈節(jié)點接收到的交易無法通過其合法性校驗,則認為該交易為虛假交易。此時,該區(qū)塊鏈節(jié)點為受損節(jié)點。若驗證節(jié)點集{VN1,VN2,…,VNi,…,VNP-1,ICC}中超過一半的節(jié)點為受損節(jié)點,區(qū)塊鏈方案將失效。
若區(qū)塊鏈網絡中節(jié)點數量為N,受損節(jié)點數量為CA,驗證節(jié)點數量為P,受損驗證節(jié)點的數量為PA,則:
PA≤CA≤N,PA≤P≤N。
(19)
區(qū)塊鏈失效的下限可以表示為:
P*=P/2。
(20)
式中P/2為上取整函數。若滿足PA≥P*,此時區(qū)塊鏈方案將失效。利用離散概率分布中的超幾何分布原理,區(qū)塊鏈方案失敗率fd可由以下4種情況計算得出:
(1)CA
由式(19)可知PA≤CA,因此有PA
(2)P*≤CA
在該情況下,區(qū)塊鏈失效所需的受損驗證節(jié)點數最小為P*。又因為CA
(21)
(3)P≤CA≤N-P*
此時,受損驗證節(jié)點數最大為P。區(qū)塊鏈方案失敗率
(22)
(4)N-P* 由于N-P* 對于大規(guī)模的ICS網絡,其滿足P≤CA 表2 區(qū)塊鏈方案成功率sd % (1)虛假數據注入攻擊(FDI)和中間人攻擊(MITM) 攻擊者通過向ICS中注入虛假數據或截獲并篡改測量數據達到破壞工業(yè)過程的目的。例如,在擬議方案中,攻擊者可能會通過構建虛假區(qū)塊鏈交易以將惡意數據注入到網絡中,或攔截并篡改網絡中廣播的Req,Feedback,Stop,Verify,Report和Update信息以干擾方案共識過程。 本文中,網絡中廣播的交易和信息都包含唯一的哈希值,該哈希值是通過將交易或信息與數字證書拼接在一起獲得的。例如,區(qū)塊鏈交易的哈希值為HASH(OIDi,indexk,TStx,data,Certi),Req的哈希值為HASH(TSm,OIDi,indexk,Oid=1,Cert0)。由于節(jié)點的數字證書(Certi)保存在本地白名單中,攻擊者無法獲取,也就無法計算有效的哈希值。攻擊者對交易或信息的任何更改都將造成哈希值變化,從而被合法節(jié)點識別。因此,擬議方案可有效防止虛假數據注入與中間人攻擊。 (2)拒絕服務攻擊(DoS) 攻擊者可能會在網絡中廣播大量無效區(qū)塊鏈交易,消耗節(jié)點的計算與通信資源,致使其無法處理合法的區(qū)塊鏈事務,從而使網絡癱瘓。在擬議方案中,區(qū)塊鏈網絡中每個節(jié)點均在本地維護一份白名單,其中包含區(qū)塊鏈節(jié)點生成的最新交易的時間戳(Timei)。當區(qū)塊鏈節(jié)點執(zhí)行交易驗證過程時,首先檢查當前交易的時間戳(TStx)與白名單(Whitelist)中對應的最新交易時間戳Timei的差是否大于預設的閾值Te,若滿足TStx-Whitelist(Timei)>Te,節(jié)點繼續(xù)執(zhí)行驗證過程;否則,節(jié)點將直接忽略該交易。該規(guī)則規(guī)定了節(jié)點廣播交易的頻率,可防止攻擊者不斷生成虛假的區(qū)塊鏈交易而淹沒網絡。因此擬議方案可有效緩解DoS攻擊。 (3)重放攻擊 攻擊者可能記錄并重放網絡中廣播的交易或信息。例如,攻擊者可能會假扮CUi在網絡中重放先前記錄的區(qū)塊鏈交易,假扮ICC重放Req,Stop,Report和Update,假扮VNi重放Feedback,Fail,Success1和Success2,從而使節(jié)點接收不準確的結果,降低ICS性能。然而,時間戳的存在將有效地防止重放攻擊。在擬議方案中,網絡中廣播的每條交易和信息中都包含時間戳,只有當交易或信息中的時間戳與當前系統(tǒng)時間戳的差小于系統(tǒng)最大延遲ΔT時,驗證節(jié)點才認定該交易或信息是正常狀態(tài);否則,即認為發(fā)生了重放攻擊。 為了檢測本文方案的性能,在一個半實物仿真平臺上進行了區(qū)塊鏈部署。仿真平臺由1臺筆記本計算機和6個樹莓派Raspberry 3B組成,模擬了一個鍋爐控制系統(tǒng)。其中,6個樹莓派分別作為6個控制器,筆記本模擬控制臺,其主要配置Intel(R) Core(TM) i5-5200U處理器,4 GB RAM。現場總線協(xié)議為Modbus-TCP協(xié)議。仿真中1次數據采集的數據量為32字節(jié)。 半實物仿真平臺測量不同區(qū)塊鏈操作的時間如表3所示。從表中可以看出,區(qū)塊鏈操作的時間成本與區(qū)塊鏈操作中需要傳輸的數據量有關。傳輸數據量越大,其操作所需的時間成本越高。例如,Req操作包含的數據量較少,其時間成本約為68.57 ms;Success2操作需要傳輸的數據量較大,其時間成本高達141.35 ms;而Verify操作無需通信,其時間成本最低,為1.43 ms。 表3 不同區(qū)塊鏈操作的時間成本 設置仿真中驗證節(jié)點的個數為3,表4列舉了本文4種共識過程情況的時間開銷。在情況1中,共識過程需要執(zhí)行1次TXi,1次Verify和1次Update,時間成本約為167.42 ms;在情況2中,共識過程比情況1增加1次Req,1次Feedback和1次Stop,時間開銷為417.59 ms;對于情況3,設置驗證節(jié)點集中有1個受損驗證節(jié)點,與情況1相比,共識過程需增加1次Fail,1次Report和1次Success1,時間開銷為377.05 ms;對于情況4,仿真過程中除設置控制臺為受損節(jié)點之外,還設置1個受損驗證節(jié)點,此時共識過程比情況1增加了1次Fail,1次Report和1次Success2,時間開銷為446.87 ms。從仿真結果可以看出,共識過程中包含的區(qū)塊鏈操作越復雜,傳輸的數據量越多,時間成本就越高。 表4 不同共識過程情況下的時間開銷 為評估擬議方案性能,與文獻[9]、文獻[11]和文獻[12]所提方案的安全性能、時間與通信成本進行比較。 (1)安全性能 表5展示了4種方案的安全性能比較。文獻[9]和文獻[11]僅可防御拒絕服務攻擊,對于其余的攻擊類型不提供防御機制。而文獻[12]除可抵御拒絕服務攻擊外還可抵御虛假數據注入攻擊與中間人攻擊。本文方案除了可抵御工控系統(tǒng)中常見的4種攻擊類型之外,還有可能抵御51%攻擊。因此,本文方案安全性能優(yōu)于現有方案。 表5 安全性能比較 (2)時間和通信成本 利用仿真平臺模擬采集1次數據后執(zhí)行相應區(qū)塊鏈操作并達成共識的時間成本,并與文獻[9]、文獻[11]和文獻[12]方案的時間成本比較,結果如圖3所示。文獻[11]采用輕量級的數據驗證框架,其系統(tǒng)延遲較低,為569.41 ms。而文獻[9]利用非對稱密鑰對數據進行加密并存儲到區(qū)塊鏈,計算復雜,時間成本最高,為837.53 ms。本文方案采用動態(tài)隨機驗證機制和新型共識模型,減少了共識過程中的驗證開銷與通信次數,共識過程最高時間成本為446.87 ms,最低時間成本為167.42 ms。時間開銷低于同類方法,且區(qū)塊鏈網絡規(guī)模越大,本文方案的時間成本優(yōu)勢越明顯。 如圖4所示為不同區(qū)塊鏈方案中共識過程的通信成本。本文定義共識過程中節(jié)點廣播的數據包的數量為其通信成本。仿真過程中節(jié)點總數量N=7,擬議方案驗證節(jié)點的數量P=3。本文采用一種新型共識模型,根據共識節(jié)點的狀態(tài)選擇不同的共識策略。由于共識情況1中沒有數據包傳輸,ICC僅需等待預定時間之后執(zhí)行交易更新過程,其通信成本為0;共識情況2中需要執(zhí)行1次Req,1次Feedback和1次Stop,因此其通信成本為3;共識情況3與4中僅有廣播的數據包數據結構不同,其余均相同,因此,其通信成本為P,即共識情況3與共識情況4的通信成本驗證節(jié)點數均為3。然而,文獻[9]、文獻[11]和文獻[12]中均采用了傳統(tǒng)的區(qū)塊鏈共識機制,即網絡中的所有節(jié)點都參與共識,因此其通信成本節(jié)點總數為7。顯然,本文方案相較于同類型方法,具有較低的通信成本。而且,新型共識模型保證了擬議方案的通信成本不會隨著區(qū)塊鏈網絡規(guī)模的增加而顯著增加,進一步保證了擬議方案的可用性。 本文針對計算資源與通信帶寬有限的工業(yè)控制系統(tǒng)提出一種基于區(qū)塊鏈的數據完整性保護方案。為降低設備計算與通信開銷,采用一種私有區(qū)塊鏈網絡,并根據節(jié)點的計算資源與通信能力分配不同的區(qū)塊鏈職能。采用一種動態(tài)隨機驗證機制和一種新型共識機制,很大程度上降低了擬議區(qū)塊鏈方案達成共識的計算開銷與通信延遲。安全分析與仿真結果表明,本文方案在滿足工業(yè)控制系統(tǒng)安全性的前提下,與同類型方法相比具有較低的時間成本與較少的通信量。未來將探討工業(yè)控制系統(tǒng)中現場級與網絡級交互的區(qū)塊鏈方案,以構建完整的工業(yè)控制系統(tǒng)區(qū)塊鏈架構,為工業(yè)數據完整性提供更加完善的保護機制。3.2 抗攻擊能力分析
4 仿真實驗分析
4.1 擬議方案性能
4.2 性能比較
5 結束語