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