商富博, 韓忠華,2*, 林 碩,2, 單 丹, 戚爰偉
(1.沈陽建筑大學信息與控制工程學院, 沈陽 110168; 2.中國科學院沈陽自動化研究所數字工廠研究室, 沈陽 110016)
隨著互聯網時代的到來,網絡安全問題顯得尤為重要,大量的網絡流量數據導致網絡環境面臨著巨大威脅,一旦遭受黑客的惡意攻擊,將會給人們的日常生活乃至國家安全帶來隱患。入侵檢測技術能夠保障網絡安全,近年來受到學術科研領域的廣泛關注,其通過建立入侵檢測模型,學習網絡流量數據的特征信息,從而準確識別未知的攻擊行為。
在入侵檢測技術的研究中,文獻[1]提出了一種基于異卷積神經網絡的入侵檢測方法,采用兩種不同的卷積神經網絡提取網絡訓練數據,從而得到最優模型,結果表明該方法具有良好的性能,但該方法的缺點是模型容易陷入過擬合[1];文獻[2]提出了基于相關信息熵和融合卷積神經網絡和雙向長短期記憶網絡(CNN-BiLSTM)的工業控制系統入侵檢測模型,將基于相關信息熵的特征選擇和深度學習算法相結合,提高了檢測精度,此方法的缺點為訓練時間較長,模型結構較復雜[2];文獻[3]提出了一種基于深度卷積神經網絡的入侵檢測研究,可以自動從數據中提取局部特征,與已有的方法相比,所提方法具有更快的檢測準確率、更低的誤報率和更快的檢測速率,但是該方法僅考慮網絡流量數據的空間特征,忽略了網絡流量數據的時間特征[3];文獻[4]提出了一種融合卷積神經網絡(CNN)與雙向長短期記憶網絡(BiLSTM)的網絡入侵檢測方法,分別使用CNN模型、BiLSTM模型提取局部特征和長距離依賴特征,與單獨使用CNN和BiLSTM相比,該方法的準確率較高,誤報率較低,但該方法的模型參數較多,模型易陷入局部最優[4]。
現設計一種融合深度可分離卷積神經網絡(DSCNN)和雙向長短期記憶網絡(BiLSTM)的DSCNN-BiLSTM模型[5],提出了一種基于DSCNN-BiLSTM的入侵檢測方法,使用主成分分析法(PCA)對網絡流量數據進行特征選擇,并創新性地將一維網絡流量數據轉化為三維圖像數據作為模型的輸入[6],利用深度可分離卷積神經網絡(DSCNN)提取網絡流量數據的空間特征,將空間特征在時間上排列后,利用雙向長短期記憶網絡(BiLSTM)挖掘網絡流量數據的時間特征,與其他入侵檢測方法相比,DSCNN-BiLSTM方法較輕量化,計算量低,具有較強的學習能力,大大提高了入侵檢測的性能。
網絡流量數據的特點是維數高、關聯性強,這會增加模型的訓練時間,因此,需要對網絡流量數據進行特征降維,降低后續數據建模和處理的復雜度。
主成分分析法(PCA)是機器學習中最常用的線性降維方法,其通過投影變換將原始高維數據映射到低維子空間,在盡可能保留樣本方差的同時降低初始數據的維數[7],可以將許多高度相關的特征轉換為獨立或不相關的特征,變換后的特征子空間包含絕大多數原始高維數據的特征,即
(1)
式(1)中:X為原始數據集;x11,x12,…,xnp為特征值。
主成分分析的計算步驟:
第一步計算樣本相關系數矩陣:
(2)
式(2)中:R為相關系數矩陣;r11,r12,…,rpp為相關系數。為方便,假定原始數據標準化后仍用式X表示,則經標準化處理后數據的相關系數為
(3)
第二步用雅克比方法求相關系數矩陣R的特征值(λ1,λ2,…,λp)和相應的特征向量ai=(ai1,ai2,…,aip)。
第三步選擇重要的主成分,并寫出主成分表達式。
主成分分析可以得到p個主成分,但是,由于各個主成分的方差是遞減的,包含的信息量也是遞減的,所以實際分析時,一般不選取p個主成分,而是根據各個主成分[8]累計貢獻率的大小選取前k個主成分。這里貢獻率就是指某個主成分的方差占全部方差的比重,即

(4)
式(4)中:λ1,λ2,…,λp為相關系數矩陣的特征值;g為貢獻率,g越大,說明該主成分所包含的原始變量的信息越強,主成分個數k的選取,主要根據主成分的累積貢獻率來決定,即一般要求累計貢獻率達到95%以上,這樣才能保證變換后的數據包含原始數據的絕大多數信息,達到對網絡流量數據降維的目的。
近年來,深度可分離卷積被廣泛應用于最新的深度神經網絡中,逐漸取代了傳統的標準卷積。標準卷積是對所有的通道共同實現卷積運算,而深度可分離卷積將標準卷積分解為逐深度卷積和逐點卷積,不僅涉及空間維度,還涉及通道維度[9],其中逐深度卷積對每個輸入信道獨立執行空間卷積,實現網絡流量數據的空間特征提取,然后使用逐點卷積對逐深度卷積提取出的空間特征進行融合,這種深度可分離卷積結構能夠降低模型的復雜度,減小模型的參數和計算量,優化模型速度。
設卷積層的輸入特征圖為I,大小為H×W×C,其中H為特征圖的長度,W為特征圖的寬,C為特征圖的通道數;卷積核為M,大小為K×K×C×N,其中K為卷積核的大小,N為卷積層的輸出特征圖通道數[10];輸出的特征圖為O,大小為H′×W′×N,其中H′和W′分別為輸出特征圖的高和寬,根據標準卷積的定義,可得
(5)
標準卷積參數數量為
x1=K×K×N×C
(6)
計算量為
y1=K×K×C×N×H′×W′
(7)
而與標準卷積不同,深度可分離卷積每一個卷積核分別對應一個通道,可分離卷積可表述為
(8)
深度可分離卷積參數數量為
x2=K×K×C+1×1×C×N
(9)
計算量為
y2=K×K×H′×W′×C+C×H′×W′×N
(10)
相比標準卷積,深度可分離卷積減小了模型的參數和計算量,使得模型輕量化。可對比二者的參數數量比,即
(11)
可對比二者的計算量比,即

(12)
由式(11)和式(12)可見,當卷積核大小為3×3時,深度可分離卷積的參數數量和計算成本大約為標準卷積的1/9,模型明顯輕量化,能夠大大提高模型的訓練速度[11]。
相比長短期記憶網絡(LSTM),雙向長短期記憶網絡(BiLSTM)是長短期記憶網絡(LSTM)的一種變體,能夠提取長距離依賴信息的特征,充分考慮前后特征之間影響。在單向LSTM中,信息由前向后流動,而在雙向LSTM中,包含一個前向LSTM層和一個后向LSTM層,一個從左到右處理時間特征,另一個從右到左處理時間特征,因此,BiLSTM能夠更好地捕捉前后特征之間的關聯性,得到更加全面的特征信息[12]。
設BiLSTM的輸入特征向量為x,在每一個時間步上,由三個門來控制細胞狀態,分別為輸入門it、輸出門ot和忘記門ft。BiLSTM的第一步是通過忘記門ft來決定細胞需要舍棄哪些特征信息,通過前一個時間步的輸出ht-1和當前時間步的輸入xt計算ft;第二步是通過輸入門決定給細胞狀態添加哪些特征信息[13],利用ht-1和xt通過一個tanh激活函數得到候選的細胞信息cnt,然后通過忘記門ft舍棄一部分細胞信息并添加cnt得到新的細胞信息ct;第三步根據ht-1和xt來判斷輸出細胞的哪些特征信息,此時需將輸入經過輸出門輸出得到一個0~1的數,然后將細胞狀態經過一個tanh激活函數得到一個-1~1值的特征向量,該特征向量與經輸出門得到的數相乘得到此時間步的輸出。在此時間步t上,利用 BiLSTM 模型的正向和反向部分對X進行特征提取,前向LSTM具體實現為
(13)
后向LSTM具體實現為
(14)
式中:σ為sigmoid激活函數;tanh為雙曲正切函數;bt為時間步的輸出;wi、wf、wc、wo分別為輸入門權值、忘記門權值、候選細胞權值和輸出門權值;bi、bf、bc、bo分別為輸入門偏置、忘記門偏置、候選細胞偏置和輸出門偏置。經過BiLSTM雙向特征提取得到輸出的特征向量,能夠考慮到網絡流量數據前后特征之間的相關性,從而提高入侵檢測的識別準確率[14]。
提出一個基于DSCNN-BiLSTM的入侵檢測方法,將深度學習應用到入侵檢測技術中,該方法的整體流程如圖1所示,主要包括五部分:①數據的預處理,包括數據的數值化處理和數據的歸一化處理,其能夠有效解決數據樣本不同特征取值范圍不同的問題[15];②數據的特征選擇,由于網絡流量數據之間存在著高度的相關性,故運用主成分分析法對高維的數據進行特征降維,可以減少數據集的冗余度;③數據的圖像化處理,將一維的網絡流量數據轉換為三維圖像作為模型的輸入;④構建DSCNN-BiLSTM模型;⑤使用KDDCUP99網絡流量數據集進行訓練、驗證和測試[16]。

圖1 基于DSCNN-BiLSTM的入侵檢測方法流程圖Fig.1 Intrusion detection method flow chart based on DSCNN-BiLSTM
KDDCUP99數據集包含約500萬條網絡流量數據,是入侵檢測領域公認的數據集,選用其中10%的子集作為本文的入侵檢測數據。數據集每個樣本包含41個特征,共分為四類:TCP連接的基本特征共9種、TCP連接的內容特征共13種、基于時間的網絡流量統計特征共9種和基于主機的網絡流量統計特征共10種。每個樣本被標記為“正常類型”或“攻擊類型”,這些攻擊類型可分為四類:拒絕服務攻擊(DOS)、遠程到本地的未授權訪問(R2L)、未授權的本地超級用戶特權訪問(U2R)和端口監視(PROBING)[17]。
KDDCUP99數據集中protocol_tpye、service和flag這三個特征為字符型特征,而模型無法有效處理字符型特征,需將字符型特征做數值化處理。例如,protocol_tpye特征有三個值,分別為tcp、udp和icmp,應用one-hot編碼后,其值分別為[1,0,0]、[0,1,0]和[0,0,1],對service和flag這兩個特征作同樣的處理,42列的數據集擴展成為122列,其中最后一列為樣本標記值[18]。
對五種樣本標記值Normal、DOS、R2L、U2R和PROBING進行編號,分別為0、1、2、3和4,便于在后續的訓練、驗證和測試中對標記值進行one-hot編碼。
經過數值化處理的網絡流量數據所有特征均為數值型特征,但是不同特征之間差異較大。例如第8個特征wrong_fragment,其值介于0~3, 而第16個特征num_root,其值介于0~7 468,這將促使模型認為第16個特征比第8個特征重要的多,而實際情況可能并非如此,這將會影響模型的訓練效果,必須對網絡流量數據進行歸一化處理,本文采用z-score標準化方法,將數據集中的數據歸一化到[-1,1]區間之內,標準公式為[19]
(15)
網絡流量數據維度之間存在著冗余,且各個維度之間具有一定的相關性,這大大降低入侵檢測模型的訓練時間,影響訓練效果,因此,需對高維的網絡流量數據進行特征降維,以此減少數據集的冗余度,提高模型的檢測性能。
通過上文的預處理后,網絡流量數據的維度為122維,最后一維為樣本標記值,對網絡流量數據的前121維運用主成分分析法(PCA)進行特征降維,得到的累積貢獻率如圖2所示[20]。

圖2 累積貢獻率Fig.2 Cumulative contribution rate
由圖2可以看出,前90個主成分可以代表99%的網絡流量數據,因此,要想在PCA特征降維后依舊保留原始數據集的大部分有效信息,應選取的輸入維度為90~121,現選取108作為特征降維后的數據維度。
經過上述處理,網絡流量數據為由108個有效特征組成的降維數據集,為了更好地提取網絡流量數據的特征信息,將一維度的網絡流量數據構造成6×6×3的三維圖像作為DSCNN-BiLSTM模型的輸入,利用深度可分離卷積神經網絡(DSCNN)提取網絡流量數據的空間特征信息,將所學到的特征輸入雙向長短期記憶網絡(BiLSTM),用于挖掘網絡流量數據的時間特征,由于輸入的三維圖像數據通道值為3,分別代表紅綠藍(RGB),三個顏色通道分別有不同的像素值(網絡流量數據的特征值),通過三個顏色通道相互之間的疊加來得到各式各樣的顏色,從而創新性的將一維網絡流量數據轉化為三維圖像數據作為模型的原始輸入,從而更好地提取網絡流量數據的空間特征,在數據集的五種樣本類型中,各選取一個隨機樣本轉換成三維圖像之后的可視化圖像如圖3所示。

圖3 轉換后的三維圖像數據Fig.3 Converted 3D image data
近年來,深度可分離卷積神經網絡(DSCNN)被廣泛用于三維圖像的特征提取,其對輸入的每個通道進行獨立的空間卷積,然后通過逐點卷積將輸出通道混合,其不僅涉及空間維度,還涉及通道維度,使得參數和運算的數量得以減少,從而得到性能更好的模型,實現對網絡流量數據的空間特征提??;而雙向長短期記憶網絡(BiLSTM)能夠利用其順序敏感性的優勢,充分考慮前后特征之間的影響,挖掘網絡流量數據的時間特征。

圖4 DSCNN-BiLSTM模型結構圖Fig.4 Structure diagram of DSCNN-BiLSTM model
融合DSCNN和BiLSTM的入侵檢測模型針對網絡流量數據具有空間和時間的雙重特征實現對網絡流量數據的特征提取,模型的結構如圖4所示。
DSCNN-BiLSTM模型的第1層為輸入層,網絡流量數據經過圖像化處理后,轉化成為6×6×3的圖像數據作為模型的輸入。
第2層、第4層和第5層為卷積層,使用深度可分離卷積代替標準卷積,卷積核大小均為3×3,第2層步長為2,第4層和第5層步長為1,分別選取8、16和32種過濾器,輸入圖像數據大小6×6×3,通道數量為3,而在幾次卷積運算之后,圖像數據可以有多個通道,每個通道具有不同的特征信息,通過逐深度卷積對每個通道單獨進行空間特征提取,再通過逐點卷積實現特征融合,實現了通道內卷積與通道間卷積的分離,從而在保證較高準確率的前提下減少模型參數和計算量,加快模型的收斂和訓練速度,且在每個卷積層后使用BN方法,用來防止模型出現過擬合,提升模型的泛化能力。
第3層為池化層,池化能起到下采樣的作用,從而簡化網絡結構,減少網絡參數,為增加網絡深度留下余地。
第6層為Flatten層,其將提取到的三維空間特征一維化,大小為64維;第7層為Dropout層,在模型訓練時,按照概率0.5隨機將網絡中的某些神經元丟棄掉,從而防止模型出現過擬合;第8層為全連接層,運用Reshape函數將提取到的空間特征轉化為1×64維的特征向量,將其作為雙向長短期記憶網絡(BiLSTM)的輸入;第9層和第10層為BiLSTM層,針對雙向長短期記憶網絡(BiLSTM)容易遇到性能瓶頸的問題,使用循環層堆疊的方法增大網絡容量,從而提升模型的檢測性能;第11層為SoftMax層,用于分類預測;最后一層為模型的輸出層,輸出模型的分類預測結果。
選用10%的KDDCUP99數據集作為本文的入侵檢測數據,訓練集、驗證集和測試集的比例為6∶2∶2,其中訓練集用于模型訓練,驗證集用于模型參數調優,測試集用于進行入侵檢測測試,實驗數據如表1所示。
為了驗證入侵檢測模型的檢測效果,搭建仿真環境,實驗的配置環境如表2所示。

表1 數據集信息Table 1 Dataset information

表2 實驗環境配置Table 2 Experimental environment configuration
入侵檢測模型的評價指標,主要包括準確率(ACC)、查準率(P)、漏報率(FNR)所有這些評價指標都派生自混淆矩陣(表 3)中的四個值。
TP:實際值為1,預測值為1,結果正確。
FP:實際值為0,預測值為1,結果錯誤。
FN:實際值為1,預測值為0,結果錯誤。
TN:實際值為0,預測值為0,結果正確。

表3 混淆矩陣Table 3 Confusion matrix
(16)
(17)
(18)
經過數據的圖像化處理,一維的網絡流量數據已經轉化為6×6×3的三維圖像數據,將其作為入侵檢測模型的輸入,故模型的輸入層維度為6×6×3;由于入侵檢測數據共有5種類型,分別為Normal、DOS、R2L、U2R和PROBING,并分別編號為0、1、2、3和4,應用one-hot編碼,分別轉換為[1,0,0,0,0]、[0,1,0,0,0]、[0,0,1,0,0]、[0,0,0,1,0]和[0,0,0,0,1],故模型的輸出層設置為5,模型結構如表4所示。

表4 模型各層參數Table 4 Parameters of each layer of the model
在模型訓練前,要進行超參數的設置,而不同的超參數會影響模型的訓練效果,為了尋找相對最優的超參數,針對模型的激活函數、優化算法和學習率等超參數,作了對比實驗。

圖5 超參數對比實驗Fig.5 Superparametric comparative experiment
激活函數的主要作用是為模型增加非線性映射學習能力,sigmoid、relu和tanh等為深度學習中常見的激活函數,在保證其他參數一致的情況下,進行對比實驗,實驗的對比效果如圖5(a)所示,可以看出,在模型穩定后,relu函數的訓練準確率大于sigmoid函數和tanh函數,因此,relu激活函數的學習效果最好,故選取relu函數作為模型的激活函數。
在深度學習的領域,常見的優化算法有SGD,Adam和RMSPROP等,其中SGD算法保持單一的學習率更新所有權重,學習率在網絡訓練過程中并不會改變; RMSProp算法對梯度計算了微分平方加權平均數,有利于解決訓練過程中上下波動較大的問題;而Adam算法通過計算梯度的一階矩估計和二階矩估計為不同的參數設計獨立的自適應性學習率,運用這三種優化算法分別進行模型訓練,訓練的效果如圖5(b)所示,SGD算法的訓練準確率較低,Adam算法的性能相對最優,故選擇Adam算法作為本模型的優化算法。
學習率的設置在模型訓練中至關重要,學習率設置的過大,會導致梯度在最小值附近來回浮動,使得模型無法收斂到最優;而學習率設置的過小,模型收斂速度將會變慢,且容易陷入局部最優,所以說,選擇一個合適的學習率,對于模型訓練來說,顯得尤為重要,現通過設置不同的學習率進行對比實驗,將模型的訓練精度作為評價指標,對比效果如圖5(c)所示,當學習率為0.001時,訓練效果最好,故設置模型的學習率為0.001。
本文應用的10%KDDCUP99數據集有五種數據類型,故本文中是五分類實驗,選取交叉熵損失函數(categorical_crossentropy)作為模型的代價函數,采用relu損失函數作為模型的激活函數,設置學習率為0.001,應用Adam優化算法是實現反向傳播訓練。
迭代次數和訓練準確率的關系曲線如圖6(a)所示,迭代次數和損失值的關系曲線如圖6(b)所示,觀察兩組圖像可知,模型訓練時,訓練精度逐步上升最后趨于穩定,損失值呈現穩定下降的趨勢,最后趨近于0,可以得出模型具有良好得訓練效果,已經收斂到了最佳狀態。
為了驗證本文中提出的基于DSCNN-BiLSTM的入侵檢測方法的優勢,將DSCNN-BiLSTM方法與CNN方法和LSTM方法進行對比,三種方法的迭代訓練效果如圖7所示。
由圖7所示,CNN、LSTM和DSCNN-BiLSTM方法在15次迭代后均趨于穩定,訓練精度都在98%以上,DSCNN-BiLSTM方法的訓練精度明顯好于CNN和LSTM。然后將本文方法與傳統的機器學習方法進行比較,評價指標為準確率(ACC)、查準率(P)、漏報率(FNR),如表5所示。
通過對比目前常用的入侵檢測算法可以看出,一些經典的機器學習算法,比如SVM和KNN算法實驗效果較差,漏報率很高,而幾種深度學習算法

圖6 準確率和代價函數曲線Fig.6 Accuracy and cost function curve

圖7 三種深度學習算法對比Fig.7 Comparison of three deep learning algorithms

表5 模型對比Table 5 Model comparison
在各個指標上明顯好于經典的機器學習方法,其中DSCNN-BiLSTM算法具有更高的準確率、更低的漏報率。最后針對5種不同數據類型,將本文方法與上述方法進行分類準確率的對比,如圖8所示。

圖8 不同方法對5種數據類型的準確率對比Fig.8 Comparison of accuracy of five data types by different methods
由圖8所示,DSCNN-BiLSTM算法對于5種數據類型的準確率分別為99.2%、98.8%、98.9%、99.3%和99.1%,均高于其他算法,證明了該方法的性能最佳,大大提高了入侵檢測的準確率。
在互聯網時代快速發展的今天,網絡流量數據的數量、復雜度和特征維度都在不斷增大,傳統的統計學方法、機器學習方法已經不能滿足當前入侵檢測的需求。提出了一種基于DSCNN-BiLSTM的入侵檢測方法,該方法將基于主成分分析的特征選擇和融合的深度學習方法相結合,使用深度可分離卷積神經網絡(DSCNN)提取網絡流量數據的空間特征,引入了深度可分離卷積代替傳統的卷積,使得模型輕量化;應用雙向長短期記憶網絡(BiLSTM)順序敏感性的優勢,充分考慮前后特征之間的影響,挖掘網絡流量數據的時間特征。實驗結果表明,與其他方法相比,顯著提高了入侵檢測的準確率,降低了誤報率。但是由于入侵檢測測試所用的是KDDCUP99數據集,缺少對當前實際網絡環境中網絡流量數據的驗證測試,因此,下一步計劃將該入侵檢測模型部署在網絡防火墻上,實時抓取網絡流量數據,檢測該模型的實時性能。