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