陳鴻韜,郭 爍,洪 悅
(沈陽(yáng)化工大學(xué)信息工程學(xué)院,遼寧沈陽(yáng) 110142)
隨著工業(yè)互聯(lián)網(wǎng)技術(shù)不斷升級(jí),工業(yè)網(wǎng)絡(luò)開放引入的安全問題不容小覷。2020年,美國(guó)天然氣供應(yīng)商為排查被攻擊設(shè)備停止運(yùn)營(yíng)[1]。網(wǎng)絡(luò)攻擊方式不斷升級(jí),工控系統(tǒng)傳統(tǒng)防御手段[2]難以主動(dòng)防御。研究者轉(zhuǎn)向入侵檢測(cè)[3],但只能在發(fā)生入侵時(shí)預(yù)警。態(tài)勢(shì)感知技術(shù)[4]是利用歷史態(tài)勢(shì)預(yù)測(cè)未來(lái)系統(tǒng)安全態(tài)勢(shì),對(duì)系統(tǒng)安全進(jìn)行態(tài)勢(shì)感知,主動(dòng)發(fā)現(xiàn)異常并規(guī)避。
舒闖提出基于自適應(yīng)灰色Verhulst 和GRU 的態(tài)勢(shì)預(yù)測(cè)方法[5],利用Verhulst 構(gòu)建預(yù)測(cè)態(tài)勢(shì)序列,利用GRU 網(wǎng)絡(luò)對(duì)預(yù)測(cè)值殘差修正。文獻(xiàn)[6]構(gòu)建基于隨機(jī)博弈的態(tài)勢(shì)感知模型,通過情報(bào)事件相似度比對(duì)和博弈論量化安全態(tài)勢(shì)。文獻(xiàn)[7]通過GRA 對(duì)網(wǎng)絡(luò)安全指標(biāo)加權(quán)分析,SVM 對(duì)加權(quán)后的指標(biāo)預(yù)測(cè)安全態(tài)勢(shì)。
利用工控系統(tǒng)要素的強(qiáng)時(shí)序性建立態(tài)勢(shì)感知模型,由于傳統(tǒng)方法在準(zhǔn)確性和實(shí)時(shí)性上表現(xiàn)欠佳,因此提出基于GRU-SVM 的態(tài)勢(shì)預(yù)測(cè)模型。首先從工控系統(tǒng)中提取安全要素,構(gòu)造時(shí)間序列。通過GRU模型對(duì)序列數(shù)據(jù)預(yù)測(cè)得到態(tài)勢(shì)要素組,最后由SVM進(jìn)行態(tài)勢(shì)評(píng)估,輸出態(tài)勢(shì)值。
SVM 作為二分類模型常用于線性分類問題,其本質(zhì)是尋找特征空間上間隔最大的分類超平面[8],該超平面作為分類器的決策線,將樣本空間中的數(shù)據(jù)分割成兩個(gè)類別。將式(1)作為核函數(shù)實(shí)現(xiàn)非線性分類,將低維數(shù)據(jù)映射到高維空間,在特征空間中實(shí)現(xiàn)內(nèi)積運(yùn)算,解決原始空間線性不可分問題:
其中,?(xi)是映射后的特征向量。
為解決神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)對(duì)輸入序列的編碼長(zhǎng)度要求和復(fù)雜輸入造成的信息丟失問題,引入注意力機(jī)制。其是模擬人腦對(duì)事物觀察時(shí)注意力偏向的過程,當(dāng)人腦對(duì)事物的某部位重點(diǎn)關(guān)注時(shí),通常給予更多的注意力,而忽略掉其余部分,注意力機(jī)制層[9]通過訓(xùn)練學(xué)習(xí)輸入數(shù)據(jù),得到輸入與輸出間相關(guān)性的權(quán)重矩陣。權(quán)重系數(shù)決定了模型對(duì)哪些特征進(jìn)行重點(diǎn)關(guān)注。模型融合注意力機(jī)制結(jié)構(gòu)如圖1 所示。
圖1 注意力機(jī)制結(jié)構(gòu)圖
在圖1 中,x1,x2,x3,…,xj是時(shí)間序列模型中態(tài)勢(shì)要素組的輸入。h1,h2,h3,…,hj表示GRU 網(wǎng)絡(luò)隱藏層的狀態(tài),對(duì)相對(duì)應(yīng)的注意力權(quán)重值αtj進(jìn)行求和計(jì)算,得到上下文加權(quán)向量ci。st是當(dāng)下時(shí)刻的內(nèi)部隱藏狀態(tài)。注意力機(jī)制中各個(gè)權(quán)重以及當(dāng)前輸出的狀態(tài)計(jì)算如式(2)所示:
其中,U、W是注意力機(jī)制的權(quán)重系數(shù),b為偏置項(xiàng)。
GRU 是為解決長(zhǎng)期記憶和反向傳播中的梯度問題提出的算法模型[11]。與LSTM 相比較,GRU 主要包括重置門和更新門,在相同數(shù)據(jù)量下GRU 的運(yùn)行時(shí)間更短。更新門控制上一時(shí)刻傳到下一時(shí)刻的信息量,重置門控制是否遺忘上一步的信息。
GRU 單元結(jié)構(gòu)如圖2 所示。
圖2 GRU單元結(jié)構(gòu)
圖2 中,rt、zt分別是重置門和更新門在t時(shí)刻的輸出,結(jié)合xt輸入到GRU 網(wǎng)絡(luò)中,利用tanh 函數(shù)將輸出值映射到[-1,1]上。
基于GRU-SVM 的態(tài)勢(shì)預(yù)測(cè)模型主要包括數(shù)據(jù)預(yù)處理層、模型訓(xùn)練層以及實(shí)時(shí)態(tài)勢(shì)感知層,具體層級(jí)架構(gòu)如圖3 所示。
圖3 態(tài)勢(shì)預(yù)測(cè)模型框架
數(shù)據(jù)預(yù)處理層是對(duì)工控系統(tǒng)數(shù)據(jù)進(jìn)行預(yù)處理,獲得高質(zhì)量的數(shù)據(jù)集,以提高預(yù)測(cè)準(zhǔn)確率。對(duì)歷史態(tài)勢(shì)數(shù)據(jù)歸一化、數(shù)據(jù)降維、對(duì)不平衡的數(shù)據(jù)進(jìn)行增強(qiáng)、利用滑動(dòng)窗口生成時(shí)間序列數(shù)據(jù)。處理步驟如下:
步驟一:采集數(shù)據(jù)后,對(duì)數(shù)據(jù)進(jìn)行清洗。
步驟二:歸一化處理步驟一的數(shù)據(jù),計(jì)算過程[12]如式(3)所示,統(tǒng)一態(tài)勢(shì)數(shù)據(jù)量綱,將特征方差降低至一定范圍,避免異常值的過度影響。其中x′、x、xmin、xmax分別輸出值、初始值、最小值與最大值:
步驟三:數(shù)據(jù)降維。因數(shù)據(jù)維度較高,通過主成分分析法[13]對(duì)數(shù)據(jù)進(jìn)行降維,消除冗余信息,在保證準(zhǔn)確率下提高收斂速度。
步驟四:數(shù)據(jù)增強(qiáng)。由于正常工況數(shù)據(jù)比攻擊異常多,因此采用SMOTE 方法[14]增強(qiáng)處理不平衡的異常數(shù)據(jù),提高SVM 分類模型的性能。
步驟五:滑動(dòng)窗口構(gòu)建時(shí)間序列數(shù)據(jù)。通過歷史數(shù)據(jù)訓(xùn)練模型完成對(duì)未來(lái)工況態(tài)勢(shì)的預(yù)測(cè),對(duì)降維后的數(shù)據(jù)通過滑動(dòng)窗口構(gòu)建時(shí)序數(shù)據(jù)。設(shè)定窗口大小S=M,樣本總數(shù)N,經(jīng)過處理后生成N-S+1 個(gè)樣本。將窗口中包含前M個(gè)數(shù)值作為GRU 算法的輸入樣本,將第M+1 的數(shù)值作為樣本標(biāo)簽,即為輸出樣本。生成序列數(shù)據(jù)的形式如表1 所示。
表1 樣本構(gòu)造結(jié)果
模型訓(xùn)練包括對(duì)GRU-Attention 預(yù)測(cè)模型訓(xùn)練和對(duì)SVM 分類模型訓(xùn)練。GRU 模型學(xué)習(xí)中用定長(zhǎng)向量來(lái)表示復(fù)雜的時(shí)序信息,在不同特征表達(dá)信息量難免不足。因此在GRU 模型中添加注意力機(jī)制層,將隱藏層節(jié)點(diǎn)的輸出作為注意力機(jī)制層的輸入,使得模型在處理序列時(shí)能盡可能地保留特征信息。通過工業(yè)控制系統(tǒng)中的歷史態(tài)勢(shì)數(shù)據(jù)預(yù)測(cè)未來(lái)態(tài)勢(shì),對(duì)前M個(gè)歷史值構(gòu)建態(tài)勢(shì)要素組作為GRUAttention 模型的輸入,尋找其中的非線性關(guān)系,來(lái)預(yù)測(cè)第M+N時(shí)刻的未來(lái)值。其中N表示預(yù)測(cè)步長(zhǎng)。因工況數(shù)據(jù)特征相互間的影響,單維態(tài)勢(shì)值有強(qiáng)耦合性,故考慮采用對(duì)降維后的數(shù)據(jù)進(jìn)行單維預(yù)測(cè)。具體算法步驟如下:
步驟一:將由數(shù)據(jù)預(yù)處理層處理后的數(shù)據(jù),按照表1 的方法構(gòu)造成時(shí)序單維態(tài)勢(shì)要素組,作為GRUAttention 網(wǎng)絡(luò)的訓(xùn)練集。
步驟二:初始化權(quán)重值和偏置項(xiàng)、學(xué)習(xí)率,網(wǎng)絡(luò)層數(shù)包括注意力機(jī)制層和神經(jīng)元個(gè)數(shù)。
步驟三:訓(xùn)練集按batch_size 劃分后送入網(wǎng)絡(luò),通過前向傳播計(jì)算結(jié)果,比較模型預(yù)測(cè)值和真實(shí)值得到誤差值。采用后向誤差傳播對(duì)偏置項(xiàng)和權(quán)重值進(jìn)行更新。
步驟四:判斷模型迭代次數(shù)是否達(dá)到規(guī)定值,若沒有則繼續(xù)按步驟三執(zhí)行,若達(dá)到則輸出模型。得到GRU-Attention 預(yù)測(cè)模型,可對(duì)工控系統(tǒng)的實(shí)時(shí)態(tài)勢(shì)進(jìn)行單維預(yù)測(cè)得到態(tài)勢(shì)要素組。
態(tài)勢(shì)評(píng)估層是對(duì)系統(tǒng)要素評(píng)估獲得工控系統(tǒng)態(tài)勢(shì),通過SVM 挖掘出態(tài)勢(shì)要素組與系統(tǒng)態(tài)勢(shì)的相關(guān)性,并利用SMOTE 中的上采樣方法對(duì)不平衡數(shù)據(jù)增強(qiáng)后輸入到SVM 分類模型學(xué)習(xí)訓(xùn)練,得到最優(yōu)的態(tài)勢(shì)評(píng)估模型。
經(jīng)過上兩層處理后,可獲得GRU-Attention 預(yù)測(cè)模型和SVM 態(tài)勢(shì)評(píng)估模型,便能通過以往態(tài)勢(shì)要素?cái)?shù)據(jù)來(lái)預(yù)測(cè)獲得未來(lái)態(tài)勢(shì)。利用非線性映射關(guān)系,按表1 的構(gòu)造方法對(duì)當(dāng)前M個(gè)態(tài)勢(shì)值構(gòu)造獲得態(tài)勢(shì)序列,輸入到GRU-Attention 中,獲得單維態(tài)勢(shì)要素組。對(duì)多維要素進(jìn)行單維預(yù)測(cè),獲得多維預(yù)測(cè)要素組,將其輸入到SVM 評(píng)估模型,即可評(píng)估未來(lái)系統(tǒng)態(tài)勢(shì)。圖4 展示了利用單維預(yù)測(cè)方法獲取多維要素組的過程。
圖4 構(gòu)建要素組
為驗(yàn)證所提出的態(tài)勢(shì)預(yù)測(cè)模型和評(píng)估模型的有效性,實(shí)驗(yàn)在Windows64 平臺(tái)上進(jìn)行。實(shí)驗(yàn)環(huán)境包括Intel(R) Core(TM) i5-3350P CPU(3.10 GHz)和基于CUDA 的Nvidia GeForce GTX 1070ti GPU(8 GB)。使用TensorFlow 的Keras 框架編寫模型。
實(shí)驗(yàn)仿真數(shù)據(jù)是SWaT 數(shù)據(jù)集[15],SWaT 是現(xiàn)代化水處理工業(yè)控制系統(tǒng),對(duì)SWaT 系統(tǒng)進(jìn)行攻擊測(cè)試并采集工況數(shù)據(jù),通過圖3 中的數(shù)據(jù)預(yù)處理層,將數(shù)據(jù)維度降低至16 維,并按7∶3 的比例劃分為訓(xùn)練集和測(cè)試集,對(duì)16 維數(shù)據(jù)構(gòu)造預(yù)測(cè)序列,獲得多維度態(tài)勢(shì)要素組,進(jìn)行態(tài)勢(shì)評(píng)估。
GRU-Attention 模型采用手動(dòng)試值法調(diào)整,試值對(duì)比預(yù)測(cè)性能,最后確定模型層數(shù)為兩層,神經(jīng)元為130 個(gè),dropout 值為0.3,在第二GRU 層后添加注意力機(jī)制層。輸出值為單維態(tài)勢(shì)要素,dense 層為1。GRU 的損失函數(shù)選擇均方誤差函數(shù),優(yōu)化器選擇在SGD 基礎(chǔ)上修正后的Adam 函數(shù)。通過每輪次訓(xùn)練的驗(yàn)證預(yù)測(cè)誤差,滑動(dòng)窗口大小為100,按表1 的構(gòu)造方法,獲得前100 個(gè)時(shí)刻的要素的相關(guān)性,預(yù)測(cè)第101 個(gè)數(shù)值。
在對(duì)SVM 評(píng)估模型訓(xùn)練之前,考慮到數(shù)據(jù)存在小樣本的異常工況數(shù)據(jù),通過SMOTE 的上采樣技術(shù)增加異常工況數(shù)據(jù),再輸入到SVM 模型中。試值測(cè)試態(tài)勢(shì)評(píng)估模型的影響,選定高斯徑向基為核函數(shù),懲罰因子為11,核函數(shù)參數(shù)為2。
為檢驗(yàn)態(tài)勢(shì)預(yù)測(cè)模型效果,采用平均絕對(duì)誤差(Mean Absolute Error,MAE)和均方誤差(Mean Square Error,MSE)作為實(shí)驗(yàn)過程的評(píng)價(jià)指標(biāo)。評(píng)價(jià)函數(shù)如式(4)、式(5):
其中,yi是某樣本的真實(shí)值,是預(yù)測(cè)值,N是預(yù)測(cè)樣本總個(gè)數(shù)。
態(tài)勢(shì)評(píng)估模型的輸出值是工控系統(tǒng)傳感器的工作狀態(tài),共有兩類八種標(biāo)簽,其中包括正常情況和七種攻擊異常情況。在態(tài)勢(shì)評(píng)估過程中,若原有數(shù)據(jù)為真實(shí)正常工況,卻被模型評(píng)估為預(yù)測(cè)攻擊工況,則該數(shù)值被判定為FP,相反則為FN。而TP 和TN 是被模型正確識(shí)別的工況數(shù)據(jù)。SVM 態(tài)勢(shì)評(píng)估模型以precision(準(zhǔn)確率)、recall(召回率)、F1 作為評(píng)價(jià)指標(biāo)。召回率=TP/(TP+FN),F(xiàn)1=2×準(zhǔn)確率×召回率/(準(zhǔn)確率+召回率),準(zhǔn)確率=TP+TN/(TP+TN+FP+FN)。
3.3.1 態(tài)勢(shì)要素組的預(yù)測(cè)結(jié)果
通過GRU-Attention 和LSTM 進(jìn)行態(tài)勢(shì)要素預(yù)測(cè),部分單維要素態(tài)勢(shì)值如圖5-6 所示,可看出所提模型的預(yù)測(cè)值和真實(shí)態(tài)勢(shì)基本擬合,比LSTM 效果更好。為了更直觀地體現(xiàn)GRU-Attention、LSTM 和GRU 的預(yù)測(cè)性能,利用MSE、MAE 進(jìn)行誤差對(duì)比。從表2 中可看出,GRU-Attention 和LSTM、GRU 相比,MSE 分別降低了58.8%、36.4%;MAE 分別降低了54.5%、37.5%。結(jié)果表明,GRU-Attention 的誤差更小,預(yù)測(cè)精度更高。
表2 不同預(yù)測(cè)模型的誤差對(duì)比
圖5 GRU-Attention態(tài)勢(shì)要素組預(yù)測(cè)結(jié)果
圖6 LSTM態(tài)勢(shì)要素組預(yù)測(cè)結(jié)果
3.3.2 態(tài)勢(shì)評(píng)估效果
為檢驗(yàn)?zāi)P偷挠行裕O(shè)計(jì)橫向?qū)Ρ葘?shí)驗(yàn),對(duì)比算法有LSTM-SVM、RNN[16]-SVM、GRU-Attention-DNN、GRU-KNN[17],測(cè)試結(jié)果如表3 所示。
表3 各算法的態(tài)勢(shì)評(píng)估結(jié)果
相比較于LSTM-SVM 算法,GRU-Attention-SVM 模型在準(zhǔn)確率更優(yōu);RNN-SVM 和GRU-KNN 在召回率和F1 上偏低,說明KNN 易將攻擊類別誤判正常類別;而RNN-SVM 訓(xùn)練中耗時(shí)更多,預(yù)測(cè)精度不高。綜上,GRU-Attention-SVM模型整體性能更佳。
通過實(shí)驗(yàn)檢驗(yàn)GRU-Attention-SVM 對(duì)未來(lái)時(shí)間段預(yù)測(cè)性能,預(yù)測(cè)步長(zhǎng)劃分為四個(gè)時(shí)間段,間隔為5 s。從表4 可知,間隔為1~5 s 的預(yù)測(cè)評(píng)估效果最好,6~10 s 的準(zhǔn)確率保持在96%以上,但是召回率偏低,不利于感知攻擊工況態(tài)勢(shì)。綜上,應(yīng)用第一組時(shí)間段進(jìn)行態(tài)勢(shì)預(yù)測(cè)。
表4 未來(lái)時(shí)間段的態(tài)勢(shì)評(píng)估對(duì)比
針對(duì)工業(yè)系統(tǒng)數(shù)據(jù)的時(shí)序性,提出基于GRUSVM 的工業(yè)系統(tǒng)態(tài)勢(shì)預(yù)測(cè)模型,對(duì)多維數(shù)據(jù)進(jìn)行單維逐一預(yù)測(cè),利用GRU 和注意力機(jī)制對(duì)長(zhǎng)序列處理優(yōu)勢(shì)訓(xùn)練預(yù)測(cè)模型,形成態(tài)勢(shì)要素組輸送到SVM 態(tài)勢(shì)評(píng)估模型獲得未來(lái)態(tài)勢(shì)。經(jīng)橫向?qū)Ρ葘?shí)驗(yàn),結(jié)果表明GRU-SVM 模型性能更佳,預(yù)測(cè)精度更優(yōu)。