陸耿虹 馮冬芹
工控網絡處于快速發展階段,由于工業通信協議中存在不可避免的漏洞,工控網絡容易遭受攻擊者的惡意攻擊,給工控網絡的安全帶來巨大威脅[1],例如伊朗的震網病毒事件[2],就是攻擊者借助Stuxnet病毒對可編程邏輯控制器(Programmable logic controller,PLC)代碼進行篡改,實現攻擊,從而達到破壞離心機正常運行的惡意目的,并造成不可逆轉的嚴重事故.此外,由于工控網絡自身存在的復雜性增加了攻擊判斷與檢測的難度,尤其當管理員處于高壓緊張的環境下,更容易發生判斷失誤[3].
因此,如何提高對工控系統網絡整體態勢的準確判斷成為當務之急.1999年,Bass[4]首次將態勢感知(Situation awareness,SA)與網絡安全技術相結合,以期能準確全面地掌握系統的安全狀態,預防事故發生,為安全管理員提供可靠有效的決策依據.Naderpour等[5]提出新型異常態勢模型(Abnormal situation modeling,ASM),構建貝葉斯網絡對多種態勢進行分析,該方法針對安全性要求極高的系統,利用風險指標判斷系統在出現異常態勢(Abnormal situation)情況下的危險態勢(Hazardous situation)風險等級,以此確定系統態勢.Kim等[6]提出一個基于貝葉斯推論的核電廠態勢評估解析模型,該方法是對核電廠操作員在面對事故發生時的態勢評估思考模型(Mental model)建模.
以上兩種方法,均是在系統出現異常或事故的情況下對系統態勢進行分析,其前提是異常或事故報警為可信的;但是,若系統遭受到欺騙性攻擊(例如假數據注入攻擊[7]),由于系統內的報警系統被攻擊者蒙蔽,此類態勢感知技術將無法對系統真實態勢進行感知.
針對以上問題,結合系統在遭受到攻擊的情況下系統內部狀態值會發生相應改變,本文提出基于粒子濾波的工業控制網絡態勢感知建模方法.粒子濾波(Particle filtering,PF)[8?9]是采用蒙特卡羅仿真完成遞推貝葉斯濾波過程,核心是采用一組粒子近似表示系統的后驗概率分布,然后使用近似表示估計非線性系統的狀態[10].Arulampalam等[11]對PF的非線性/非高斯噪聲系統狀態的估計性能進行了考察,并將其與擴展卡爾曼濾波進行比較,證明PF能有效解決非線性/非高斯噪聲系統的狀態估計問題.
由上述文獻的研究結果可知,傳統的PF狀態估計,可以預測非線性非高斯系統的態勢變化.但是在實際應用PF狀態估計算法對工控系統受到的持續攻擊進行檢測時,實驗結果顯示漏檢率高達96%,這是因為在控制器的作用下,系統從臨界狀態趨于穩態,此時,由于PF狀態估計算法自身的跟蹤能力可跟蹤到系統的攻擊狀態導致無法檢測出異常,從而使得該算法在檢測持續性攻擊時,存在較高的漏檢率,這一不足也為工控系統安全帶來威脅.
因此,為了實現對持續性攻擊的檢測,降低PF狀態估計算法對該類攻擊的漏檢率,本文將工控系統內在特征與攻擊特征相結合,提出基于PF輸入估計的態勢理解算法.該方法考慮了工控系統遭受到網絡攻擊時(以傳感器參數篡改為例),虛假的傳感器參數導致系統的輸入值與輸出值之間的非線性關系發生變化,利用這一特點,結合Monte-Carlo思想,對系統輸入的先驗概率進行隨機取樣,依據相似性對樣本粒子分配權值,并獲取系統輸入的估計值將估計值與實際值之間的差值,作為系統態勢特征,判斷工控系統是否處于危險態勢,避免了由于PF狀態估計引起的漏檢,為針對工控系統網絡的持續性攻擊檢測提出新思路.在本文最后,對經典PF狀態估計算法和態勢理解算法進行仿真驗證.需要說明,不同于文獻[12]對網絡安全態勢預測算法的精度進行考察(算法精度越高,對復雜網絡環境的預測結果越準確),本文考慮到工控系統遭受攻擊的后果嚴重性,系統中出現的漏報與誤報將會誤導操作員對工控系統的態勢判斷,從而引發災難,因此參考Salerno等[13]提出的態勢指標,對本文提出算法報警結果的漏檢率與錯誤率進行分析,而不再考慮算法精度.實驗結果表明,本文提出的算法能有效感知系統中的不同態勢(正常態勢及危險態勢),漏檢率與錯誤率均處于較低水平.
Endsley[14]在1988年提出了態勢感知的定義:在一定的時空條件下,對環境因素的獲取、理解以及對未來狀態的預測.
網絡安全態勢感知(Network security situation awareness,NSSA)模型分為三個層次,通過對來自系統的數據進行處理后,獲取系統當前態勢,并對未來態勢進行預測.從下至上依次為(如圖1所示):
1)態勢要素獲取:態勢要素獲取層是NSSA模型的基礎,主要包括對數據的預處理和特征提取.其目的主要在于對工控系統中的海量數據進行縮減,保留關鍵信息,并從中提取特征.
2)態勢理解:對獲取的特征進行進一步處理,包括數據關聯、特征檢測、識別與分類,并對多個分類結果進行決策融合,獲取最終決策即整體系統態勢.
3)態勢預測:利用預測算法對工控網絡態勢的趨勢進行預測.
出于保護工控系統安全的目的,將工控網絡態勢分為安全態勢和危險態勢[15].安全態勢指系統中的過程參數均處于系統既定的安全值范圍內;危險態勢指系統遭受到攻擊,過程參數超出安全臨界值δ的工控系統狀態.

圖1 態勢感知模型Fig.1 Situation awareness model
一般的PLC系統如圖2所示,傳感器在將傳感數據發送至PLC的過程中,可能會遭受到攻擊者的攻擊,真實傳感數據被篡改[16],導致控制系統不穩定.本文假定系統的危險態勢是由攻擊者施加的假數據注入攻擊[17]產生.

圖2 PLC系統示意圖Fig.2 A diagram of PLC implementation

態勢理解層作為態勢感知過程中承下啟上的中心環節,利用態勢要素對獲取的數據進行態勢理解,并將數據處理結果輸送至態勢預測層.態勢理解的優劣,將直接影響態勢感知的結果以及態勢預測的性能.因此高效準確的態勢理解過程在態勢感知中,顯得尤為重要.
本文創新性地提出了工控網絡態勢感知模型,如圖3所示,該模型從下至上共包含三個部分:態勢要素獲取層、態勢理解層以及后續態勢感知過程,本文主要對底部兩層進行研究與分析.
1)態勢要素獲取層:采集來自各傳感器節點的數據,將其存儲在數據集D中.
2)態勢理解層:利用PF算法估計系統輸出,并提取特征,使用態勢指標對要素理解的效果進行衡量,最后將態勢理解結果輸出至態勢評估與預測中.

圖3 工控網絡態勢感知模型Fig.3 Industrial control network situation awareness model
定義1.數據集合表示從0~k時刻,第i個節點采集的數據集合.
定義2.特征提取E作為PF輸入估計的結果之一,記錄PF輸入估計算法的輸出結果,是數據集Di0:k在經PF輸入估計算法處理后,得到的特征序列.

定義3.態勢指標M={MR,FR}包含兩個元素.表示在進行PF狀態估計時出現的錯誤率和漏檢率.

其中,I為誤測特征個數,S為測得特征個數,C為正確測得的危險態勢特征個數,W為期望得到的危險態勢特征個數.
由于在特征提取過程中,可能存在感知錯誤、遺漏等情況,因此提出對態勢特征獲取過程中PF出現的錯誤特征數量和丟失的特征數量進行衡量.
本文提出的態勢感知模型中的態勢理解層不僅能對來自工控系統眾多節點的海量數據進行簡化,給出系統態勢特征,而且可以利用態勢指標對態勢理解過程的質量進行計算,為后續階段的態勢感知結果可靠性提供依據.
1.3.1 粒子濾波狀態估計
為了獲取非線性、非高斯噪聲的工控系統狀態特征,采用PF算法進行狀態估計,是一種很有效的非線性濾波技術[18],適用于任何能用狀態空間模型表示的非高斯背景的非線性隨機系統,精度可以逼近最優估計.該算法的實質是由粒子及其權重組成的離散隨機測度近似相關的概率分布,并根據算法遞推更新離散隨機測度[19].
對于一個非線性、非高斯過程建模如下:

其中,xk為待估計的狀態量,假設狀態xk的先驗分布p(x0)已知;yk為已知的觀測量;g(·)為狀態轉移方程,h(·)為觀測方程;wk和vk都為獨立的噪聲,分別稱為狀態噪聲和觀測噪聲.
步驟1.初始化.設k=0,采樣:xi0~p(x0),根據p(x0)分布采樣得到N個xi0,i=1,2,···,N.
步驟2.重要性權值計算.采樣xik~q(xk|xi0:k?1,y0:k),i=1,2,···,N,利用下式計算重要性權值.



在計算重要性權值后,進行歸一化.

步驟3.重采樣.設定有效樣本數Nthreshold,并計算退化因子Neff

Neff越小,意味著退化現象越嚴重.
若Neff<Nthreshold,則進行重采樣,將原來的帶權樣本映射為等權樣本.其中,為重采樣后的粒子.
步驟4.預測.獲取狀態預測x?k,據此計算觀測值估計y?k,并計算估計值與真實值的偏差ek(特征).

步驟5.輸出.將ek與安全閾值δ進行比較,當|ek|>δ時,記錄系統第i次出現危險態勢的時刻kaitc以及對應偏差eik.
1.3.2 基于粒子濾波輸入估計的態勢理解算法
在實際應用PF狀態估計對系統受到的攻擊進行檢測時,實驗結果顯示,對于系統中施加持續時間為100小時的攻擊,PF狀態估計算法可以在系統被攻擊(即狀態值發生突然變化)后的10分鐘內檢測到攻擊,即偏差值e將會超出閾值;但是由于PF估計算法自身具備的狀態變化跟蹤能力,在系統遭受到攻擊的2小時后,系統狀態將趨于穩定,即此時的偏差值e將會接近于零,從而導致PF狀態估計算法無法持續檢測出系統受到的攻擊.
考慮到對于輸入輸出之間存在函數關系y=f(u)的系統,在遭受到攻擊時,系統的輸入u也會發生變化,因此,本文提出基于PF輸入估計的態勢感知算法,以實現對長時間持續攻擊的態勢感知,降低系統漏報率.
基于PF輸入估計的態勢感知算法,不再考慮狀態的估計,利用輸出殘差進行報警;而是利用Monte-Carlo思想,在已獲得的輸出yk基礎上,估計輸入?u.利用實際輸入(控制器輸出)u與?u的差值,對系統態勢進行感知.
算法1.基于PF輸入估計的態勢感知算法
步驟1.獲取t=0,···,k時刻的輸出yk;
步驟2.初始化.設k=0,在[umin,umax]內隨機采樣N次,獲得N個隨機樣本(粒子),構成序列{u?k(i)|i=1,···,N};
步驟3.權值分配.對每個粒子u?k(i)分配相應的權重qk?(i),i=1,···,N,計算方式如下:


步驟4.重采樣.采用多項式重采樣法,將原來的帶權樣本映射為等權樣本.其中,為重采樣后的粒子,獲得新粒子樣本.
步驟5.輸出估計.獲取輸出估計值預測,并計算估計值與真實值的偏差e?k(特征).

步驟6.計算態勢特征.將e?k與安全閾值δ進行比較,當|e?k|>δ時,記錄系統第j次出現危險態勢的時刻k?atc(j)以及對應偏差e?k(j).
步驟7.計算態勢指標.利用式(3)和式(4)計算該系統的態勢指標,態勢指標M={MR,FR}.
步驟8.態勢理解結果輸出.依據步驟6和步驟7的計算結果,整理得到態勢理解結果并作為算法輸出E,M.
某精餾塔提餾段溫度單回路控制方案[20]如圖4所示,蒸餾塔提餾段某塊板的溫度為主變量,控制器TC 21通過控制信號u控制蒸汽控制閥對溫度進行控制,溫度傳感器TT 21能對提餾段的溫度y進行檢測(系統輸出),ysp為設定值.
對PF狀態估計算法和態勢理解算法進行仿真,通過計算兩種算法的漏報率,對算法有效性進行分析.
階段1.仿真模型建立.依據圖4的控制方案,建立相應的控制系統方框圖,如圖5所示.對圖5中各環節進行參數設置:GTm為溫度測量環節,GTm=1/(s+1);控制閥Gv為近似線性閥,Gv=1;蒸汽流量對象Gp2=0.1/(1.5s+1);提餾段溫度對象的控制通道與擾動通道動態特性的參數設置分別為Gp1=5/(4s2+5s+1),Gd=?0.5/(3s+1);單回路控制器TC的PID參數Kc=2.4,Ti=8.8,Td=2.2.

圖4 提餾段溫度單回路控制方案Fig.4 Temperature single loop control scheme of distillation

圖5 提餾段溫度單回路控制系統方框圖Fig.5 Block diagram of temperature single loop control scheme of distillation
階段2.態勢設置.對安全態勢及遭受不同時長攻擊的兩種危險態勢進行仿真,設定系統運行總時長Trun=500.
1)安全態勢:系統正常運行,溫度設定值ysp=20;
2)危險態勢1:在k1=200和k2=300時刻,攻擊者篡改溫度傳感器值,分別施加攻擊強度為α(k1)=30,α(k2)=?30的攻擊,每次攻擊持續時長為Tatc=5;
3)危險態勢2:在k=200時,攻擊者開始篡改溫度傳感器值,攻擊強度為:α(k)=30,攻擊持續時長為Tatc=100.
圖6為系統中可能出現的三種態勢仿真結果示意圖.
階段3.算法驗證.算法驗證部分選擇t=70以后的數據進行分析,即對系統處于穩定后的數據進行仿真處理.
1)PF狀態估計.圖7為利用PF狀態估計對三種情況進行態勢檢測的結果,假設安全閾值δ=2.從圖7可以看出,a)Ma={0,0},此時算法沒有檢測到攻擊,判斷系統處于正常運行狀態;b)Mb={0.0200,0.1667},此時算法檢測到兩次攻擊,存在較低的錯誤率與漏檢率;c)Mc={0.2040,0.9604},由態勢指標可得,該算法在面對持續時間較長的攻擊時,漏檢率高達0.9604.但是能檢測到攻擊開始以及結束的時刻.
2)基于PF輸入估計的態勢理解.圖8為利用態勢理解算法對三種情況進行態勢檢測的結果,假設安全閾值δ=5.從圖8可以看出,a)Ma={0,0},此時算法沒有檢測到攻擊,判斷系統處于正常運行狀態;b)Mb={0.0820,0.1667},此時算法檢測到兩次攻擊,錯誤率與漏檢率均較低;c)Mc={0.048,0.0396};檢測到長持續時間下的攻擊,錯誤率與漏檢率均低于5%.

圖6 三種不同態勢情況Fig.6 The three different situations

圖7 PF狀態估計算法仿真結果Fig.7 The simulation results related to PF state estimation algorithm

圖8 態勢理解算法仿真結果Fig.8 The simulation results related to situation awareness algorithm
對比兩種算法的仿真結果可知:
1)PF狀態估計算法
由a)和b)的檢測結果可知,當系統存在突然發生的變化時,該算法能進行有效的檢測,特征值變化明顯,檢測的錯誤率與漏檢率較低;由c)的仿真結果可知,該算法無法感知到系統中出現的長持續性攻擊,存在很高的漏報率,對系統安全產生嚴重威脅.
2)基于PF輸入估計的態勢理解算法
a)和b)的仿真結果證明,該算法能有效跟蹤和預測輸入的變化趨勢,兩種算法的漏檢率相同,盡管態勢理解算法的錯誤率相對PF狀態估計算法偏高6%,但是對于系統安全性能而言,該算法依然有效檢測出了b)的危險態勢;由c)的仿真結果可得,態勢理解算法能有效檢測到系統中存在的長時間持續的攻擊,錯誤率與漏檢率均小于5%,遠低于PF狀態估計算法.
對比仿真結果可知,本文提出的基于PF輸入估計的態勢理解算法能有效判斷系統中出現的危險態勢,為工控網絡安全態勢感知提供可靠的感知判據.
本文介紹了基于粒子濾波的工業控制網絡態勢感知建模,將文中構造的態勢感知模型中的態勢理解層作為研究重點,提出了基于PF輸入估計的態勢理解算法.該算法是對經典PF狀態估計的改進,在Monte-Carlo思想的基礎上,考慮到系統輸入與輸出之間的聯系,通過輸出值校準輸入的估計值,利用實際值與估計值之間存在的差值,判斷系統是處于安全態勢還是危險態勢.該算法具有較好的輸入值估計能力,可準確獲取系統態勢特征,給出態勢指標,對特征的可靠性進行定量衡量.該算法可為后續的態勢預測過程提供科學可靠的數據信息,提升態勢感知結果的準確性.
實驗結果表明,本文提出的態勢理解算法,能有效地利用數據源中的信息對系統內存在的危險態勢進行感知.仿真結果表明該算法具有較高的可靠性與準確性.