黃兆軍
(珠海城市職業(yè)技術(shù)學(xué)院,廣東 珠海 519090)
當(dāng)今世界正在經(jīng)歷著一場新的技術(shù)革命,特別是智能制造技術(shù)和新一代信息技術(shù)的出現(xiàn),極大地促進(jìn)了工業(yè)化和信息化的融合,由此引發(fā)了傳統(tǒng)工業(yè)系統(tǒng)的變革:生產(chǎn)工廠的現(xiàn)場設(shè)備層、現(xiàn)場控制層、過程監(jiān)控層、生產(chǎn)管理層和企業(yè)資源層之間,越來越多的通過網(wǎng)絡(luò)進(jìn)行互聯(lián),不再是物理隔離的。企業(yè)的人員、設(shè)備、生產(chǎn)物料、工藝和環(huán)境之間,以及企業(yè)與外部正在進(jìn)行越來越多和越來越豐富的信息交換,傳統(tǒng)的計(jì)算機(jī)領(lǐng)域的網(wǎng)絡(luò)互聯(lián)的理念正逐步向工業(yè)控制系統(tǒng)領(lǐng)域滲透,“工業(yè)控制系統(tǒng)網(wǎng)絡(luò)”的雛形漸見形成??梢哉f工業(yè)化和信息化的融合極大地推動了工業(yè)控制系統(tǒng)向信息化、網(wǎng)絡(luò)化的方向發(fā)展,從而為傳統(tǒng)工業(yè)轉(zhuǎn)型升級向智能化的方向發(fā)展,奠定了堅(jiān)實(shí)的技術(shù)基礎(chǔ)。然而,既然有“網(wǎng)絡(luò)”那就必然存在著“安全”,也就是說傳統(tǒng)計(jì)算機(jī)領(lǐng)域的網(wǎng)絡(luò)安全問題,同樣也會出現(xiàn)在工業(yè)控制系統(tǒng)網(wǎng)絡(luò)中。而且由于工業(yè)控制系統(tǒng)大量的應(yīng)用于石油、電力、石化、交通、供水、航空、工業(yè)生產(chǎn)等與人們生活密切相關(guān)的國家基礎(chǔ)設(shè)施領(lǐng)域,一旦工控網(wǎng)絡(luò)被攻擊,將會產(chǎn)生嚴(yán)重甚至是災(zāi)難性的后果。
2014年12月,德國一家鋼鐵廠遭受高級持續(xù)性威脅(APT)網(wǎng)絡(luò)攻擊,導(dǎo)致工控系統(tǒng)的控制組件和整個(gè)生產(chǎn)線被迫停止運(yùn)轉(zhuǎn),造成重大物理損傷和財(cái)產(chǎn)損失。2015年6月,波蘭航空公司的地面操作系統(tǒng)遭遇黑客攻擊,導(dǎo)致長達(dá)5h的系統(tǒng)癱瘓,造成10個(gè)航班和1400名旅客滯留,造成重大的經(jīng)濟(jì)損失。2018年8月,全球知名半導(dǎo)體廠商臺積電感染勒索病毒,導(dǎo)致其三大工廠全部停產(chǎn),造成直接經(jīng)濟(jì)損失19億元。2019年3月19日,挪威海德魯公司的工控系統(tǒng)受到攻擊,該公司位于歐洲和美洲的多家工廠被迫關(guān)閉,公司的全球網(wǎng)絡(luò)處于癱瘓狀態(tài),造成重大經(jīng)濟(jì)損失。
近年來日益增多的工控網(wǎng)絡(luò)安全事件,逐步凸顯出“攻擊手段多樣化、攻擊時(shí)間不規(guī)律性、攻擊對象無差別化”的特征,嚴(yán)重威脅著與人們生產(chǎn)生活密切相關(guān)的工業(yè)控制系統(tǒng)網(wǎng)絡(luò)安全。因此,在當(dāng)面的新形勢背景下,如何有效的應(yīng)對工控系統(tǒng)網(wǎng)絡(luò)安全問題,成為了擺在我們目前的重要任務(wù)。當(dāng)前也有一些學(xué)者和研究機(jī)構(gòu)對工控系統(tǒng)網(wǎng)絡(luò)安全風(fēng)險(xiǎn)和模型搭建等方面進(jìn)行了探索和研究,例如董浩等人[1]通過KPCA法和BP網(wǎng)絡(luò)進(jìn)行工控系統(tǒng)安全風(fēng)險(xiǎn)評估模型的搭建;李鑫[2]提出了一種基于小波神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)安全風(fēng)險(xiǎn)實(shí)時(shí)預(yù)測方法;王作廣等人[3]提出了一種基于攻擊樹和CVSS的工控系統(tǒng)風(fēng)險(xiǎn)量化評估方法。然后這些研究成果一定程度上存在著算法復(fù)雜、需要大量異常數(shù)據(jù)等不足,具體實(shí)用起來還有一定的難度
因此,針對上述問題,本文結(jié)合工業(yè)控制系統(tǒng)網(wǎng)絡(luò)模型和計(jì)算機(jī)軟件技術(shù)領(lǐng)域的廣度優(yōu)先遍歷算法(Breadth-First-Search,簡稱 BFS)[4],基于工控網(wǎng)絡(luò)的節(jié)點(diǎn)狀態(tài)建立狀態(tài)函數(shù)和攻擊模型,從而對工業(yè)控制系統(tǒng)網(wǎng)絡(luò)安全風(fēng)險(xiǎn)進(jìn)行分析;最后還以具體的實(shí)例進(jìn)行了仿真,驗(yàn)證了該算法和模型的有效性。該算法簡單易懂,可操作性強(qiáng),希望能為工控系統(tǒng)網(wǎng)絡(luò)安全風(fēng)險(xiǎn)決策提供可靠的技術(shù)支持。
工業(yè)控制系統(tǒng)是多種類型控制系統(tǒng)的總稱,主要包括數(shù)據(jù)采集與監(jiān)視控制系統(tǒng)(SCADA)、分布式控制系統(tǒng)(DCS)、PLC控制系統(tǒng)和其它控制系統(tǒng)。不同的行業(yè)其工控網(wǎng)絡(luò)的結(jié)構(gòu)會存在差異,但是從功能上來說,一般可以劃分為5個(gè)層級[5],如圖1所示。
基于圖1所示的工控系統(tǒng)層次模型可以建立相應(yīng)的工控系統(tǒng)安全框架[6],如圖2所示。在這個(gè)安全框架中,每一層都有相應(yīng)的保護(hù)對象,這些受保護(hù)的具體對象都可以看作是工業(yè)控制系統(tǒng)網(wǎng)絡(luò)中的“結(jié)點(diǎn)”,結(jié)點(diǎn)與結(jié)點(diǎn)之間存在大量的信息交互,任何一個(gè)節(jié)點(diǎn)受到攻擊,都會影響整個(gè)工控系統(tǒng)的運(yùn)行,因此整個(gè)工控網(wǎng)絡(luò)安全防護(hù)首先是圍繞著這些節(jié)點(diǎn)展開。這些受保護(hù)的各層次 “結(jié)點(diǎn)”具體包括:1)生產(chǎn)管理層。主要包括與生產(chǎn)制造有關(guān)的的倉儲管理、先進(jìn)控制、工藝管理等系統(tǒng)軟件。2)過程監(jiān)控層。主要包括各個(gè)操作員站、工程師站、OPC服務(wù)器等,以及運(yùn)行在這些物理設(shè)備上的軟件和數(shù)據(jù)。3)現(xiàn)場控制層。主要包括各類控制器、控制單元、記錄裝置等,以及運(yùn)行在這些設(shè)備上的軟件和數(shù)據(jù)。4)現(xiàn)場保護(hù)層。主要包括各類保護(hù)裝置、傳感器、執(zhí)行結(jié)構(gòu)等。
圖1 工業(yè)控制系統(tǒng)層次模型
圖2 工業(yè)控制系統(tǒng)安全框架
“圖”是計(jì)算機(jī)軟件領(lǐng)域中一種比較復(fù)雜的非線性數(shù)據(jù)結(jié)構(gòu),可以廣泛的應(yīng)用于多個(gè)技術(shù)領(lǐng)域。“圖”結(jié)構(gòu)中的基本組成元素是結(jié)點(diǎn)(數(shù)據(jù)元素),各個(gè)結(jié)點(diǎn)之間的關(guān)系用邊來表示,結(jié)點(diǎn)之間是多對多的關(guān)系,如圖3所示。
圖3 無向圖(示例)
BFS算法的基本思想是假設(shè)初始狀態(tài)圖中各個(gè)結(jié)點(diǎn)均未被訪問過。從“圖”中任意結(jié)點(diǎn)v出發(fā),首先訪問結(jié)點(diǎn)v,并將其標(biāo)注為已訪問;接著依次訪問v的所有未被訪問過的鄰接點(diǎn)v1,v2……vn,并都標(biāo)注為已被訪問;然后按照v1,v2……vn的次序依次訪問鄰接點(diǎn)的鄰接點(diǎn)(訪問順序應(yīng)按照同步優(yōu)先的方式),以此類推,直到“圖”中所有和初始結(jié)點(diǎn)v有路徑相通的結(jié)點(diǎn)都被訪問完為止,且每個(gè)結(jié)點(diǎn)僅被訪問一次。按照此算法,對圖3所示的“圖”進(jìn)行BFS,可以得到其訪問序列為:v1,v2,v3,v4,v5,v6。其遍歷過程如下圖4所示。
圖4 無向圖的BFS過程
本研究把圖1所示的工業(yè)控制系統(tǒng)網(wǎng)絡(luò)當(dāng)做是一個(gè)無向圖,而無向圖的結(jié)點(diǎn)即為圖2所示層次模型中的具體保護(hù)對象,例如傳感器、執(zhí)行結(jié)構(gòu)、PLC、OPC服務(wù)器等;采用BFS算法對工控網(wǎng)絡(luò)中的每個(gè)結(jié)點(diǎn)進(jìn)行訪問,保證每個(gè)結(jié)點(diǎn)僅被訪問一次,并且訪問每個(gè)結(jié)點(diǎn)時(shí)要采集其原始數(shù)據(jù),把結(jié)點(diǎn)間實(shí)際進(jìn)行的信息交換關(guān)系和結(jié)點(diǎn)狀態(tài)變化的一致性兩個(gè)方面結(jié)合起來,通過綜合考慮“結(jié)點(diǎn)本身是否受到攻擊”和“結(jié)點(diǎn)間的信息傳輸路徑是否受到攻擊”2個(gè)方面的情況,分析哪些結(jié)點(diǎn)是否存在安全風(fēng)險(xiǎn),而且綜合所有被訪問結(jié)點(diǎn)的安全風(fēng)險(xiǎn)可以判斷整個(gè)工控系統(tǒng)網(wǎng)路的安全形勢。
以某加工型企業(yè)的加熱環(huán)節(jié)(3個(gè)現(xiàn)場設(shè)備層的“結(jié)點(diǎn)”和1個(gè)上層“結(jié)點(diǎn)”)為例來進(jìn)行分析,如圖5所示。
對于工控系統(tǒng)安全風(fēng)險(xiǎn)問題,可以用一個(gè)四元組來進(jìn)行闡述。
其中:
1)Node為對工控網(wǎng)絡(luò)中所有結(jié)點(diǎn)進(jìn)行BSF(廣度優(yōu)先遍歷)之后獲得的結(jié)點(diǎn)訪問序列。以圖4為例來說,則Node=( Nodev1, Nodev2, Nodev3,Nodev4, Nodev5, Nodev6)。
2)Date為現(xiàn)場控制層接收到的現(xiàn)場設(shè)備層的實(shí)際數(shù)據(jù),即圖1中的溫度傳感器、流量控制開關(guān)和天然氣流量計(jì)的原始數(shù)據(jù),包括最大值、最小值和平均值等。如果有任何一個(gè)結(jié)點(diǎn)的實(shí)際值小于最小值或者大于最大值,或者某一段時(shí)間內(nèi)的平均值不等于正常運(yùn)行時(shí)的平均值,都可以看做是該結(jié)點(diǎn)異常。
4)Sr為最終的風(fēng)險(xiǎn)判斷函數(shù),Nodeatc用于評估系統(tǒng)內(nèi)是否存在被攻擊的結(jié)點(diǎn),Ar為當(dāng)前風(fēng)險(xiǎn)分析的結(jié)果。
圖5 工控系統(tǒng)網(wǎng)絡(luò)安全風(fēng)險(xiǎn)分析模型示意圖
筆者以圖5中所示的溫度傳感器所在的單回路閉環(huán)控制系統(tǒng)為例,來研究其受到完整性攻擊時(shí)的攻擊模型,如圖6所示。
圖6 溫度傳感器所在單回路閉環(huán)控制系統(tǒng)示意圖
根據(jù)自動控制理論[7]可知在整個(gè)工控系統(tǒng)的運(yùn)行時(shí)間TICS內(nèi),在正常情況下,控制器接收到的傳感器反饋值s(t)與傳感器檢測控制對象的實(shí)際值ys(t)之間的偏差為0;而傳感器受到攻擊時(shí),反饋值s(t)與實(shí)際值ys(t)之間會存在一個(gè)不為0的偏差信號r(t),從而影響疊加后的凈輸入,導(dǎo)致輸出偏離設(shè)定值。
其中c(t)的具體取值取決于攻擊信號。
根據(jù)現(xiàn)代控制理論中提到的方法,可以知道當(dāng)傳感器在時(shí)間t內(nèi)受到攻擊時(shí)傳遞到輸入端的傳感器輸入值為[8]:
其中a(t)與b(t)為攻擊信號函數(shù),當(dāng)其取不同的值時(shí)可以建立各種不同的完整性攻擊模型。
說明:以下文中所述的i,k……n取值為從1開始的任意正整數(shù),具體取值由工控系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)和BFS過程的起始結(jié)點(diǎn)有關(guān)。
1)首先根據(jù)BFS算法對工控系統(tǒng)網(wǎng)絡(luò)中的結(jié)點(diǎn)進(jìn)行訪問,獲得結(jié)點(diǎn)訪問序列:
2)根據(jù)Node中的結(jié)點(diǎn)序列順序,在規(guī)定的時(shí)間周期內(nèi)依次采集每個(gè)結(jié)點(diǎn)的實(shí)際運(yùn)行參數(shù)(實(shí)際值):
3)把每個(gè)結(jié)點(diǎn)的規(guī)定周期內(nèi)實(shí)際參數(shù)值平均值與該結(jié)點(diǎn)在正常狀態(tài)運(yùn)行時(shí)的平均值做比較,如果大于正常運(yùn)行時(shí)的平均值,則該結(jié)點(diǎn)的狀態(tài)值SVi=1,記為異常。否則該結(jié)點(diǎn)的狀態(tài)值SVi=0,記為正常。按照Date中的參數(shù)序列把所有的結(jié)點(diǎn)進(jìn)行此類處理,得到狀態(tài)函數(shù):
4)結(jié)合工控系統(tǒng)本身的運(yùn)行要求,對任意2個(gè)結(jié)點(diǎn)之間狀態(tài)變化的一致性進(jìn)行判斷。根據(jù)自動控制理論可知,大多數(shù)實(shí)際工業(yè)應(yīng)用場合都為閉環(huán)控制系統(tǒng),通常的情況是2個(gè)結(jié)點(diǎn)之間在同一時(shí)刻或同一時(shí)間段內(nèi)其狀態(tài)變化趨勢有一致或者不一致。以圖6所示的單回路閉環(huán)控制系統(tǒng)來說明:
根據(jù)該工控系統(tǒng)的設(shè)計(jì)要求,溫度傳感器和流量控制開關(guān)這2個(gè)結(jié)點(diǎn)的狀態(tài)變化應(yīng)是不一致的,即傳感器檢測到溫度上升時(shí)(SV1=1),流量控制開關(guān)的開度減?。⊿V2=0),那么這2個(gè)結(jié)點(diǎn)的狀態(tài)值就要進(jìn)行邏輯上的同或運(yùn)算。
根據(jù)該工控系統(tǒng)的設(shè)計(jì)要求,流量控制開關(guān)和天然氣容量計(jì)這2個(gè)結(jié)點(diǎn)的狀態(tài)變化應(yīng)是一致的,即流量控制開關(guān)的開度減小時(shí)(SV2=0),天然氣容量計(jì)數(shù)值也應(yīng)該變?。⊿V3=0),那么這2個(gè)結(jié)點(diǎn)的狀態(tài)值就要進(jìn)行邏輯上的異或運(yùn)算。
5)綜合分析,風(fēng)險(xiǎn)判定。仍以圖6所示的單回路閉環(huán)控制系統(tǒng)為例,按照第4步的方法,進(jìn)行結(jié)點(diǎn)之間的狀態(tài)一致性判定。
則式(4)中的最終風(fēng)險(xiǎn)分析結(jié)果為:
若Nodeatc為1,說明系統(tǒng)的結(jié)點(diǎn)受到了完整性攻擊,而且Ar中狀態(tài)一致性判定值為1的結(jié)點(diǎn)即為受到攻擊的結(jié)點(diǎn);反之,系統(tǒng)正常,Ar中的3個(gè)狀態(tài)一致性判定值皆為0。
最后將上述操作擴(kuò)展到所有的結(jié)點(diǎn),可以根據(jù)受威脅或攻擊的結(jié)點(diǎn)的數(shù)量多少,人為的給工控系統(tǒng)網(wǎng)絡(luò)安全風(fēng)險(xiǎn)劃分不同的級別(需要時(shí)),然后采取不同級別的應(yīng)對策略。
具體的算法流程如下圖7所示。
圖7 算法流程
以某加工廠的原材料處理溫度控制環(huán)節(jié)為例[9],如圖8所示。爐內(nèi)溫度T爐內(nèi)為系統(tǒng)的主要變量,實(shí)線表示的是工藝部分,虛線表示的是信號部分。T設(shè)定代表系統(tǒng)工藝要求的設(shè)定溫度,T設(shè)定為溫度傳感器檢測到的爐內(nèi)實(shí)際溫度,F(xiàn)gas表示天然氣的流量,Kf表示控制閥門的開度(取值0%~100%)。
圖8 原材料處理溫度控制環(huán)節(jié)
溫度傳感器能夠?qū)t內(nèi)的溫度進(jìn)行檢測,閥門控制器對溫度實(shí)測值和設(shè)定值進(jìn)行比較,通過計(jì)算兩者的偏差r(t)(見公式5)對氣體閥門進(jìn)行開度控制,使閥門的開度Kf在0%~100%之間進(jìn)行變動,調(diào)節(jié)天然氣的流量Fgas,從而最終對爐內(nèi)的溫度實(shí)現(xiàn)自動調(diào)節(jié)。在仿真時(shí)對T實(shí)測、Kf和Fgas4個(gè)參數(shù)進(jìn)行檢測。
在正常運(yùn)行情況下,主要是原材料不斷的加入導(dǎo)致爐內(nèi)溫度的變化,因此可以在原材料入口環(huán)節(jié)增加一個(gè)幅度為30的擾動,系統(tǒng)會進(jìn)行正常的溫度自動調(diào)節(jié)。如下圖9為3個(gè)結(jié)點(diǎn)的輸出狀態(tài)及實(shí)驗(yàn)結(jié)果統(tǒng)計(jì)。
圖9 正常狀態(tài)下運(yùn)行
利用MATLAB軟件對系統(tǒng)正常運(yùn)行時(shí)某結(jié)點(diǎn)受到的攻擊情況進(jìn)行仿真,假設(shè)攻擊每次只針對1個(gè)結(jié)點(diǎn),時(shí)間設(shè)定為[0,300],攻擊時(shí)間設(shè)定為[101,300]。
1)假設(shè)溫度傳感器這個(gè)結(jié)點(diǎn)受到了攻擊,根據(jù)公式(6)可知,設(shè)定攻擊信號為:s(t)=a(t)ys(t)+b(t), 其中 a(t)=1,b(t)=-150
此時(shí),仿真結(jié)果如圖10所示。
圖10 傳感器被攻擊時(shí)的運(yùn)行狀態(tài)
2)假設(shè)氣體控制閥這個(gè)結(jié)點(diǎn)受到了攻擊,根據(jù)公式(6)可知,設(shè)定攻擊信號為:s(t)=a(t)ys(t)+b(t), 其中 a(t)=1,b(t)=40
此時(shí),仿真結(jié)果如圖11所示。
圖11 控制閥被攻擊時(shí)的運(yùn)行狀態(tài)
3)假設(shè)天然氣流量計(jì)這個(gè)結(jié)點(diǎn)受到了攻擊,根據(jù)公式(6)可知,設(shè)定攻擊信號為:s(t)=a(t)ys(t)+b(t), 其中 a(t)=1,b(t)=50
此時(shí),仿真結(jié)果如圖12所示。
圖12 流量計(jì)被攻擊時(shí)的運(yùn)行狀態(tài)
從正常情況和3種仿真結(jié)果綜合來看,筆者總結(jié)出結(jié)點(diǎn)狀態(tài)和被攻擊結(jié)點(diǎn)之間的對于關(guān)系。如下表1所示。
表1 結(jié)點(diǎn)狀態(tài)與被攻擊結(jié)點(diǎn)的對應(yīng)關(guān)系
本文借助于計(jì)算機(jī)軟件領(lǐng)域中的BFS算法建立了一個(gè)由四元組表示的工控網(wǎng)絡(luò)安全分析模型,利用改進(jìn)的BFS算法對工控系統(tǒng)中的結(jié)點(diǎn)受到完整性攻擊時(shí)進(jìn)行了檢測,并能夠辨別被攻擊的結(jié)點(diǎn)。從仿真驗(yàn)證結(jié)果來看,本文建立的模型和提出的算法在對工控系統(tǒng)網(wǎng)絡(luò)安全風(fēng)險(xiǎn)進(jìn)行分析時(shí)是有效的,可以為工控網(wǎng)絡(luò)安全防御策略的建立提供參考和決策依據(jù)。