曹春明,何 戡+,宗學軍,連 蓮
(1.沈陽化工大學 信息工程學院,遼寧 沈陽 110142;2.沈陽化工大學 遼寧省石油化工行業信息安全重點實驗室,遼寧 沈陽 110142)
基于機器學習的入侵檢測方法[1]近年來成為學者們研究的熱點,主流的如算法K近鄰[2]、XGBoost[3]、支持向量機[4,5]、決策樹[6]和隨機森林[7,8]等應用到入侵檢測中均取得了一定的效果。
目前,工控系統入侵檢測在取得成功的同時還存在兩個問題亟需解決:①樣本不平衡導致模型輸出的預測結果傾向于多數類,弱化了模型的實際分類能力;②模型訓練復雜,現實中的網絡流量傳輸速度很快,現有方法大多只關注模型的預測精度而忽略了檢測速率。針對樣本不平衡問題,本文采用變分自編碼器(variational auto-encoders,VAE)對數據集中的少數類樣本進行擴充,變分自編碼器是一種深度生成模型,其重構原始輸入樣本概率密度分布的能力可以用來生成攻擊樣本。針對模型結構復雜導致檢測速率低的問題,本文提出了一種基于深度漏積回聲狀態網絡(deep leaky integrator echo state networks,DLIESN)的入侵檢測分類模型,漏積回聲狀態網絡(leaky integrator echo state network,LIESN)由于舍棄了反向傳播機制,極大縮短了訓練時間,并且通過堆疊儲備池可以使模型獲得更好的動態特性。選用天然氣管道數據集進行仿真實驗,實驗結果驗證了所提方法的優越性。


圖1 變分自編碼器結構
LIESN是一種帶有儲備池結構的遞歸神經網絡,它由一個儲備池和一個讀出層組成[10]。儲備池內部通常由大量的神經元組成,神經元之間的連接具有隨機性和稀疏性,主要功能是將外部輸入映射到高維動態空間中,由此來獲得較好的動態性能。LIESN的結構如圖2所示。

圖2 漏積回聲狀態網絡結構
設NU、NR分別為輸入特征維度和儲備池內神經元個數,u(t)∈RNU和x(t)∈RNR分別表示t時刻的外部輸入和神經元狀態,儲備池中神經元狀態更新方程如下
(1)

讀出層是一個線性層,是整個網絡唯一可訓練的部分,輸入為儲備池得到的狀態x(t),用來計算網絡的輸出。設NY為輸出維度,y(t)∈RNY表示t時刻的輸出,f為輸出激活函數,輸出層計算公式為:y(t)=f(Woutx(t)),其中Wout∈RNY×NR為輸出權重矩陣。
樣本不平衡一直是機器學習中普遍存在的問題,如果使用不平衡的數據集訓練分類模型,模型極有可能學習不到正常樣本與攻擊樣本之間的差異,弱化了模型的實際分類能力。近年來,深度生成模型成為研究熱門,生成對抗網絡[11](generative adversarial networks,GAN),變分自編碼器[12]等在圖像生成領域取得了巨大成功,實際上,VAE重構原始輸入樣本概率密度分布的能力也可以用來生成異常流量。為了降低樣本不平衡給模型帶來的影響,本文使用變分自編碼器對數據集中的罕見攻擊類樣本進行擴充。
2.1.1 VAE網絡結構
為生成與源數據相似的數據,VAE的層級結構設置必須合理,本文中VAE的網絡結構如圖3所示。所有層級均采用全連接層,編碼器部分:第一層神經元個數為9,第二層為兩個獨立的全連接層,神經元個數均為2,一個用來計算均值μ,一個用來計算方差σ,均由第一層引出,中間的隱藏變量z=μ+e0.5σ×eps,eps代表正態分布。解碼器部分:輸入為z,第一層神經元個數為9,第二層神經元個數為輸入維度。

圖3 VAE層級結構
2.1.2 VAE損失函數的構建
損失函數的構建可分為兩部分:一部分負責計算輸入數據與生成數據之間的誤差,在本文中采取二分類交叉熵(binary cross entropy);另一部分負責計算相對熵(Kullback-Leibler divergence)。
2.1.3 基于VAE的樣本生成
首先將原始數據集按照標簽類別(0,1,2,…,N)拆分為N個子集,分別送入變分自編碼器進行訓練,訓練完畢后,保存每個模型的解碼器部分,最后輸入隨機生成的服從正態分布的兩個數生成對應類別的仿真數據。
2.1.4 數據增強思路
數據增強的目的是改善樣本總集中正負樣本差距過大的情況,平衡樣本分布。添加數據就意味著改變了原始樣本的分布,所以,在數據增強前,劃分好數據集,只增強訓練集,使模型能夠充分學習到罕見攻擊類樣本的內部特性,而測試集不做任何改動,盡可能保留原有的樣本分布。
工控系統入侵檢測與普通的網絡入侵檢測相比,檢測指標要求更加苛刻,工控系統入侵檢測在保證高精確率的同時還要求高檢出率,同時為了適應工業環境,模型的訓練不能過于復雜。回聲狀態網絡具有很強的非線性擬合能力,在時序預測領域應用廣泛[13-15],作為遞歸神經網絡的一種,相比于LSTM、GRU等網絡,它的訓練要簡單很多,本文選擇回聲狀態網絡作為入侵檢測方法的核心。
2.2.1 DLIESN網絡結構
計算機算力的提升使人們可以搭建更深層次的網絡,單個儲備池提供的動態性能有限,提出一種基于深度漏積回聲狀態網絡(DLIESN)的入侵檢測分類模型,DLIESN的網絡結構特點是儲備池堆疊層次化,如圖4所示。

圖4 深度漏積回聲狀態網絡結構
2.2.2 儲備池神經元狀態更新設置
t時刻,第一層儲備池由外部輸入u(t) 輸入,之后每一層輸入都是由堆棧中前一層的輸出提供的,不同儲備池內的參數設置具有很強的靈活性,設有n個儲備池,每個儲備池內的神經元個數均為NR,x(l)(t)∈RNR表示t時刻第l層的神經元狀態。第一層儲備池的神經元狀態更新方程如下
x(1)(t)=(1-a(1))x(1)(t-1)+

(2)
第二層及以后儲備池的神經元狀態更新方程如下
x(l)(t)=(1-a(l))x(l)(t-1)+

(3)

2.2.3 輸出層設置
與標準的LIESN一樣,DLIESN的輸入權重矩陣與每個層間的連接矩陣,儲備池內部的循環權重矩陣經過預設的初始化后,均不需要再訓練,需要訓練的只有輸出層。為了簡化訓練,本文選用神經網絡中的全連接層作為輸出層,激活函數設置為Softmax。輸出層的輸入為每個儲備池狀態的加權和,即最后輸出層的輸入表示為x(t)=(x(1)(t),x(2)(t),…,x(l)(t))∈Rl×NR,這樣設置的優點是使輸出層能夠接受多個儲備池的運動狀態,輸出層最后的輸出維度為標簽類別。
2.2.4 DLIESN訓練流程
工控系統入侵檢測本質上是一個多分類問題,設ρ為儲備池的譜半徑,c為儲備池內神經元的連接度,DLIESN的訓練流程如下:
Algorithm 1 DLIESN training
Input:feature vector
Output:Label
# Customize each LIESN Class
Cell_1= LIESN_1(NR,ρ,a,c)
Cell_2= LIESN_2(NR,ρ,a,c)
…
Cell_N= LIESN_N(NR,ρ,a,c)
# LIESN Layer
First_input=Input(input_shape)
Layer_1=RNN(Cell_1)(First_input)
Layer_2=RNN(Cell_2)(Layer_1)
…
Layer_N=RNN(Cell_N)(Layer_N-1)
# Output Layer
X=concat((Layer_1,Layer_2,…,Layer_N),axis=2)
X=reshape(X,(-1,NR×N)

所選用的天然氣管道數據集來自2014年密西西比州立大學的SCADA安全實驗室,該實驗室搭建了一個天然氣管道控制系統,用來模擬將天然氣或其它石油產品輸送到市場的真實工業現場,研究人員通過攻擊該系統收集工業流量,最后由專家整理制備而成。


表1 天然氣管道數據集描述
去除標準差為零的無關特征,由于數據集特征數并不多,故不需要進行特征選擇,為消除不同特征間的數值影響,對數據集進行歸一化處理,將標簽進行one-hot編碼。
實驗平臺配置為windows 10 64位系統,Intel Core I5-9600KF,運行內存16 G,深度學習框架為tensorflow2.3,采用NVIDIA GTX980 TI顯卡加速訓練。為客觀評價模型的性能,采用入侵檢測領域中常用的準確率(Accuracy,ACC)、精確率(Precision,P)、檢出率(Recall,R)和綜合評價指標(F1-Measure,F)來評價分類結果
(4)
(5)
(6)
(7)
其中,TP表示正確識別的攻擊類別數目,FN表示漏報即未正確識別攻擊類別的數目,FP表示誤報即錯誤識別正常類別的數目,TN表示正確識別的正常類別數目。
3.4.1 VAE參數設置與訓練
變分自編碼器的優化器為Adam,學習率為0.001,batch_size設置為1024,訓練epoch設置1000。分別使用不同類別的樣本數據訓練VAE,保存VAE中的解碼器部分,之后使用一批服從正態分布的兩個數送入解碼器生成仿真數據。
3.4.2 生成數據評價
在圖像生成領域,人可以憑借自身的視覺觀察生成圖像的好壞,目前在數據生成領域很難判斷生成的數據是否真的合理,為驗證生成數據的有效性,選用Data1訓練一個網絡深度為3,層內神經元個數為30的LSTM網絡模型。從生成的數據中每類均選取2500條組成一個樣本總數為20 000的測試集,記為Data3。驗證用Data1訓練好的模型識別生成的數據集Data3的效果,經過100個周期的訓練后,LSTM模型在訓練集上的準確率和損失如圖5所示,模型已經達到深度收斂狀態。

圖5 訓練結果
通過輸出混淆矩陣來分析模型對Data3的分類情況,如圖6所示。對角線上的元素表示預測類別等于實際類別的個數,可以直觀看出,除代號為1的類別,其余類別LSTM模型都取得了較高的精確率。經計算,LSTM模型在Data3上的準確率為0.7901,檢出率為0.8233,f1值為0.7916,說明使用真實數據訓練的模型可以很好識別仿真數據,驗證了變分自編碼器生成的數據樣本是有效的。
3.4.3 數據增強前后對比
在有了上述實驗的基礎上,添加部分仿真數據平衡數據集,只對訓練集進行數據增強。為了防止過擬合,設置數量限制,增加Data1中MSCI、MFCI類別的數量,使其個數達到600,得到新的數據集Data4。分別使用Data1和Data4訓練上文的LSTM模型,經5次實驗取平均值后,模型在測試集Data2上的分類結果見表2。

表2 數據增強前后對比
根據表2,使用Data4訓練的分類模型在測試集上的準確率、檢出率、F值均有了一定的提升。
選用Data4和Data2作為之后實驗的訓練集與測試集,開始對DLIESN進行深入研究,分析不同網絡結構和超參數設置下模型的性能,最后與目前主流的算法對比。
3.5.1 DLIESN網絡結構分析
深度學習領域,網絡結構的設置影響直接模型的輸出結果,通常更深的網絡層可以學習到更多的數據規律,但是過深的網絡層會給訓練帶來困難。在設置Epoch為200,batch_size為1024,儲備池激活函數為tanh,輸出層激活函數為Softmax,損失函數為多分類交叉熵(categorical crossentropy),優化器為Adam,學習率為0.001,固定漏積參數a為0.6,譜半徑ρ為0.99的條件下,設置20種不同的網絡結構,經過5次實驗取平均值后,不同網絡結構設置下DLIESN模型在測試集Data2上的準確率如圖7所示。

圖7 不同網絡結構設置下模型的準確率
根據圖7所示,只考慮神經元數量方面:儲備池神經元個數NR為10時,在測試集上的準確率較低,而且當網絡深度為5時,準確率出現了大幅下降,模型提取特征的能力有限,過少的神經元無法為模型提供足夠的動態性能,學習能力較差。網絡深度方面,不同NR數量時的模型性能并沒有特定的規律,不考慮NR=10時的情況,起初,隨著網絡深度的增加,模型的性能都有所提高,但是當網絡深度為4時,NR=100、NR=200和NR=300的模型準確率都出現了略微下降。在20種不同的網絡結構設置下,網絡深度為3,NR=200時的模型性能最佳,后續實驗默認DLIESN的網絡深度為3,儲備池神經元個數為200。
3.5.2 漏積參數分析
漏積參數a決定了儲備池結構中的神經元響應速度,a的值越大,儲備池對輸入的響應越快,在固定DLIESN的網絡深度為3,儲備池神經元個數為200時,設置4個不同的漏積參數(每個儲備池中的漏積參數默認相同),不同漏積參數下模型在訓練集上的損失如圖8所示。

圖8 不同漏積參數下的損失
根據圖8所示,當a為0.2時,模型在前100個周期內并沒有收斂的趨勢,當a為0.6時,模型在第200個周期的損失最低。
3.5.3 DLIESN參數設置
在與其它算法對比前,需確定DLIESN的參數,由于本文還未采用參數尋優方法,故采用經驗調參法。結合3.5.1節和3.5.2節實驗的結果,最終選取的參數匯聚成表3。

表3 DLIESN模型參數設置
3.5.4 對比實驗分析
為驗證DLIESN在工控系統入侵檢測算法中的優越性,設置對比實驗與其它經典模型作比較,均采用相同的數據集和相同的數據處理方式,得到結果匯總成表4和表5。

表4 不同方法的精確率對比

表5 不同方法的檢出率對比
由表4和表5可知,DLIESN對Normal類樣本的精確率為0.9792,明顯高于其它算法。對于NMRI(簡單惡意響應注入)攻擊類別的檢測結果,各類算法的表現均不是很好,盡管1d_CNN和SVM算法在此類攻擊的精確率達到了1,可是對應的檢出率全是0,通過查閱此數據集的報告發現,該攻擊方式會使特征Measurement(測量值)遠遠高于100或低于-1,這嚴重偏離了正常運行時的數值,只有DLIESN學習到了這類攻擊與其它類別之間的界限,在維持高精確率的同時其檢出率也達到了0.9114。此外,DLIESN對其它類別的檢測結果也都很優秀。
為測試在不同網絡深度下DLIESN的訓練復雜度,與同為深度學習領域的1d-CNN算法和LSTM算法對比,結果如圖9所示。

圖9 不同方法的訓練時間對比
根據圖9,3種算法中DLIESN的增長率最低,LSTM算法由于其每個時間步的計算都依賴上一個時間步的結果,導致訓練緩慢,1d-CNN算法因為其卷積核的機制影響了訓練時間,DLIESN在不同網絡深度下均取得了最短耗時。
本文介紹了機器學習理論在入侵檢測中的應用,引出了當前領域中存在樣本不平衡和模型訓練復雜的問題。針對樣本不平衡問題,提出了一種基于VAE的樣本均衡化策略;針對模型訓練復雜問題,提出了一種基于DLIESN的分類模型。首先使用變分自編碼器生成仿真數據平衡樣本,之后通過實驗分析了不同網絡結構和漏積參數對DLIESN模型分類性能的影響,最后與其它主流算法進行對比,不論是訓練耗時還是入侵檢測指標,DLIESN模型均取得了良好的結果。在未來的工作中需將參數尋優算法應用到DLIESN的調參過程。