譚 繼 安
(東莞職業技術學院 廣東 東莞 523808)
隨著5G時代的到來,信息網絡已深入國民經濟的各個環節,物聯網技術的發展也將人、物及商業進行了互聯。隨著物聯網技術在醫療、智能家居、智能穿戴等領域的普及,物聯網每日采集海量的數據,傳統的網絡安全機制則難以負擔海量的數據分析[1]。近年來深度學習技術在網絡安全領域取得了卓越的成果,但大數據的攻擊檢測問題是一種典型的不平衡數據分類問題,傳統的深度學習技術在此類場景下容易發生過擬合[2]。另外,大數據每天流入大量的新數據,而深度神經網絡模型的訓練效率較低,許多模型需要一天以上的訓練時間[3],難以滿足大數據實時攻擊檢測的需求。
近期許多研究者通過深度學習技術檢測網絡的攻擊,文獻[4]提出深度學習模型下多分類器的入侵檢測方法,該方法利用深度信念網絡提取低維的特征數據,在任意兩類特征數據之間構建一個梯度提升樹分類器,基于NSL-KDD數據集的仿真實驗表明其實現了較好的性能。而NSL-KDD數據集的數據量依然較小,且僅包含DoS、Probe、R2L和U2R等攻擊類型。與之相似,文獻[5-7]等深度學習技術也在部分公開的小規模數據集上進行了驗證實驗,但難以判斷其對于大數據的效果。
UNSW-NB15數據集[8]是近期一個測試入侵檢測的數據集,該數據集包含了100 GB以上的真實網絡流量數據。文獻[9]將自編碼器和前饋神經網絡結合,用于UNSW-NB15數據集的入侵檢測研究,該研究實現了較高的檢測準確率,但是網絡的訓練時間較長。文獻[10]將多層前饋神經網絡在UNSW-NB15數據集上進行了實驗驗證,該網絡出現了明顯的過擬合現象,且計算效率較低。
綜上所述,傳統的深度學習技術在特征提取過程中容易出現過擬合的情況,并且計算時間較長。為了解決該問題,本文提出了新的深度神經網絡模型,利用卷積神經網絡提取流量數據的特征,利用長短期記憶網絡(LSTM)學習特征之間的依賴關系,避免CNN發生梯度消失問題。對LSTM的連接設計了Dropout設計,一方面減少了特征關系學習過程的過擬合情況,另一方面也提高了網絡的計算效率。為了支持大數據動態演化的特點,本文設計了基于決策樹的增量學習模型,能夠動態地對新流入的數據進行學習和預測。
LSTM[11]是一種循環神經網絡結構,網絡包含一個記憶單元和輸入門、輸出門和遺忘門三個控制門。輸入門的數學式為:
it=σ(Wixt+Uiht-1)
(1)
遺忘門的數學式為:
ft=σ(Wfxt+Ufht-1)
(2)
輸出門的數學式為:
ot=σ(Woxt+Uoht-1)
(3)
式中:σ為激活函數;W和U為權重矩陣;xt是在時間步t的輸入向量。
在時間步t的記憶單元狀態ct為:
(4)
(5)
式中:“×”表示矩陣按元素相乘。
在時間步t的隱層狀態ht為:
ht=ot×tanh(ct)
(6)
LSTM通過記憶單元維護輸入特征之間的依賴關系,輸入門向記憶單元輸入一個新元素,遺忘門控制刪除記憶單元內的元素,輸出門基于記憶單元的內容計算網絡的輸出。正切函數和Sigmoid函數是兩個常用的激活函數。
設計了權重正則化的LSTM結構(Weight Regularization-LSTM,WRLSTM),提高網絡的計算效率,并且防止過擬合。WRLSTM對LSTM的連接進行Dropout正則化處理,并未采用傳統方案對輸出單元進行Dropout處理,通過該方式可增加激活和輸出向量的稀疏性。WRLSTM在訓練階段對LSTM的隱層權重進行隨機Dropout處理,防止發生過擬合的情況。LSTM的輸出可以總結如下:
yt=σ(Wxt+(M×U)ht-1)
(7)
式中:M是網絡連接的二值矩陣掩碼形式。在訓練階段通過修改M中的元素來更新每次迭代的網絡連接Dropout狀態。
CNN每個神經元的輸出是一個關于輸入、權重和偏置的函數,每一層權重的更新計算式為:
(8)
式中:wi為神經元i的權重;α和r分別為正則參數和學習率;n為訓練樣本總量;m為動量;t為迭代次數;C為成本函數。
每一層偏置的更新計算式為:
(9)
式中:bi為神經元i的偏置;α為正則參數;n為訓練樣本總量;m為動量;t為迭代次數;C為成本函數。
CNN卷積運算的計算式為:
(10)
式中:xi為輸入向量;N為xi的元素數量;h為卷積層的filter;yi為輸出向量;n為yi的元素數量。
CNN的池化層可降低卷積層的維度,從而減少計算成本且防止過擬合,本文采用最大池化機制。
為了同時利用深度CNN的特征學習能力及WRLSTM的記憶能力,將兩個網絡融合成一個高效的入侵檢測模型。圖1所示為混合深度神經網絡(Hybrid Deep Neural Networks,HDNN)的結構。

圖1 混合深度神經網絡的結構
HDNN由兩個卷積層、一個最大池化層、一個WRLSTM及一個全連接層構成,兩個卷積層的激活函數均為ReLU,其計算式為:
σ(x)=max(0,x)
(11)
式中:x為神經元的輸入。
最大池化層的輸出傳入WRLSTM層,WRLSTM學習所提取特征之間的依賴關系,隨機失活部分的權重。最終WRLSTM的輸出傳入全連接層,全連接層通過Softmax激活函數將流量數據分類。Softmax激活函數計算了每個流量類別的概率分布,其計算式為:
(12)
式中:n為流量的類別數量;x為輸入數據。
圖2所示為HDNN-tree的結構示意圖,每個節點為一個HDNN。根節點將流量數據分類為正常或異常,然后再傳入到下一層的節點,對數據類型進行深入的識別,最終在葉節點輸出流量數據的類型。HDNN-tree的每個葉節點與一個唯一類別相關聯。

圖2 HDNN-tree的結構

(13)
似然矩陣的計算式為:
(14)
然后將LK×M排序產生一個列表S,S的數據結構具有三點性質。性質1:S共有M個對象,每個對象和一個新類相關聯。性質2:每個對象S[i]具有3個屬性值:(1)S[i].label:新類的標簽;(2)S[i].value:Softmax輸出值的Top-3;(3)S[i].nodes:Top-3值對應的3個輸出節點。性質3:列表S按S[i].value值降序排列。
列表S的排序處理保證了相似性最高的新類優先加入HDNN-tree,通過Softmax計算樣本和類標簽之間的似然,能夠更好地識別新樣本和已有類標簽之間的相似度。然后對S的第1個元素S[1](相似性最高的新類)進行以下三個判斷和操作:
假設v2是新類,v1和v3為已有類。
第1個判斷:如果v1-v2>α,那么新類和子節點n1關聯性較強,將新類加入n1中。
第2個判斷:如果新類和多個子節點具有高相似度,那么將幾個相似的節點組成一個新的子節點。數學模型為:如果v1-v2<α且v2-v3>β,那么將n2和n1合并,并將新類也將入n1中。
第3個判斷:如果新類和所有子節點相似度均較低,那么網絡為新類增加一個新的子節點。數學模型為:如果v1-v2<α且v2-v3<β,那么為新類創建一個新子節點。
算法1是增量學習算法的偽代碼。圖3所示為增量學習的一個實例,假設α=β=0.3,Chi4、Chi5和Chi6是三個新加入的節點。Chi4的v1-v2=0.95-0.26=0.69>0.3,因此Chi4加入Chi1;Chi5的v1-v2=0.2<α,且v2-v3=0.01<β,因此Chi5建立新節點;Chi6的v1-v2=0.93-0.18<α,因此Chi6加入Chi2。
算法1增量學習算法。
輸入:似然矩陣L,每個分支的最大子節點數量maxchi,根節點Rnode,新節點node。
1.S←createS(L,node,maxchi);
//創建S列表
2.whileS!=NULL do {
3.[classlabel,value,node]←S[1];
//提取S[1]屬性
/*第1個判斷*/
4.if (value[1]-value[2]>α) {
5.Rnode=inserttonode(Rnode,classlabel,node[1]);
//將新類加入node[1]
/*第2個判斷*/
6.} else if (value[2]-value[3]>β){
7.mergenode(Rnode,node[1],node[2]);
/*第3個判斷*/
8.} else {
9.Rnode←addnewnode(Rnode,classlabel);
10.}
/*重新創建S*/
11.S←createS(L,node,maxchi);
10.}

圖3 增量學習的實例
在創建HDNN-tree的過程中,如果根節點的分類數量達到了最大子節點數量,那么增加HDNN-tree的深度,每個深度所支持的最大子節點數量和tree的最大深度由用戶根據實際應用場景所設定,在本文系統中,根節點最大子節點數量為2(正常用戶類和異常用戶類),其他層的最大子節點數量為15,樹的最大深度為2。
當系統為新類分配了一個節點位置時,通過梯度下降法訓練受影響的節點,該機制避免了重新訓練全部的網絡,并且這部分的訓練處理可以離線完成,并不影響樹中其他HDNN的工作。在初始化階段,首先利用可用的數據訓練根節點,在之后的增量學習過程中,僅在根節點將輸入數據分配到特定分支的時候,該分支才被激活,因此不僅提高了流量檢測的精度,同時也保持了較低的處理時間。如果某個節點發生分類錯誤,那么該分支會為該類分配一個新節點,因此并不會影響已有節點中神經網絡的訓練。
UNSW-NB15數據集是Moustafa研究小組收集的一個大規模IDS實驗數據集,該數據集包含了100 GB以上的真實網絡流量數據。該研究小組使用自動攻擊生成工具Perfect Storm[12]對幾個目標服務器進行真實的攻擊。數據集共包含2 540 044個標記樣本,共有九種攻擊類型,分別為:漏洞攻擊、DoS攻擊、后門攻擊、分析攻擊、滲透攻擊、通用攻擊、偵察攻擊、Shellcode注入攻擊、蠕蟲病毒。
將UNSW-NB15數據集中空記錄刪除,最終篩選出2 273 332個樣本,按照7 ∶3的比例將數據集分為訓練集和測試集。表1所示為實驗數據集的統計信息,表中顯示網絡流量的數據為不平衡分類,正常流量遠多于攻擊流量,因此傳統的機器學習分類器極易發生過擬合的情況,本文設計了HDNN結構來緩解過擬合,并且提高計算效率。

表1 實驗數據集劃分情況

續表1
為了兼容本文的神經網絡模型,將流量的特征由名詞轉化成獨立的編號數值,然后對數值進行歸一化處理,歸一化的計算式為:
(15)
式中:fi,j表示數據矩陣在(i,j)位置的值。
通過以下4個廣泛應用的性能指標評價HDNN-tree的性能。
準確率A的計算式為:
(16)
式中:TP表示將正類預測為正類的數量;TN表示將負類預測為負類的數量;FP表示將負類預測為正類的數量;FN表示將正類預測為負類的數量。
精度P的計算式為:
(17)
召回率R的計算式為:
(18)
F1-score的計算式為:
(19)
因為本文針對大數據攻擊檢測問題提出了新的深度神經網絡結構HDNN,所以通過第1組實驗評價HDNN的性能,然后設計了第2組實驗評價增量學習方法HDNN-tree的有效性。
1) HDNN的參數設置。HDNN的參數包括filter數量、epoch數量、學習率、WRLSTM隱層單元數量、dropout率p,批大小和最大池化長度。首先通過試錯法訓練HDNN,最終的網絡參數確定如下:epoch數量為40,學習率為0.004,輸出層大小為30,LSTM的dropout率p為0.2。第1個和第2個卷積層的filter數量分別為32和64,核大小為3,最大池化長度為2。
2) HDNN的性能結果。首先測試了本文模型對于異常流量的檢測能力,圖4(a)所示為模型所檢測正常流量和異常流量的ROC曲線,正常流量的ROC區域為0.92,異常流量的ROC區域為0.91,可以看出本文模型對于大規模數據依然實現了較高的檢測效果。圖4(b)所示為模型所檢測正常流量和異常流量精度、召回率和F1-score的性能,對正常流量、異常流量的檢測精度均高于0.95,對正常流量的召回率較高,但對異常流量的召回率略低。總體而言,本文模型對于大數據集實現了較高的異常流量檢測性能。

(a) ROC曲線
然后分析了本文模型對于異常流量的細粒度識別能力,圖5(a)所示為模型所檢測的不同異常流量類別的ROC曲線,后門攻擊、蠕蟲病毒和分析攻擊的ROC區域分別為0.54、0.56和0.57,這三種攻擊類型的特征顯著性較低,隱蔽性較強,因此對于這三種攻擊的識別效果不足。本文系統對于漏洞攻擊、滲透攻擊、通用攻擊、偵察攻擊及Shellcode注入攻擊均實現了較好的識別效果,ROC區域均超過了0.8。圖5(b)、(c)、(d)分別為模型所檢測的不同異常流量類別的精度、召回率及F1-score的性能。和ROC曲線的結果相似,后門攻擊、蠕蟲病毒和分析攻擊的識別效果較差,另外對于DoS攻擊的識別精度也較低。但本文系統對于漏洞攻擊、滲透攻擊、通用攻擊、偵察攻擊及Shellcode注入攻擊均實現了較好的識別效果,精度、召回率及F1-score均超過了0.6。

(a) ROC曲線
3) 對比實驗分析。選擇了5個近年來性能較好的大數據異常流量檢測算法與本文模型對比,分別為基礎CNN[13]、GoogLeNetInceptionCNN[14]、LSTM[15]、GRU[16]、AL模型[17]。因為本文模型是CNN和LSTM的混合網絡,所以通過基礎CNN和LSTM可以判斷本文模型是否有效。GoogLeNetInceptionCNN和GRU是兩個不同類型的深度學習模型。AL是一種自學習的非神經網絡模型,該模型的優勢是計算速度較快。
因為上述5個對比方法中主要提供了對于UNSW-NB15數據集的準確率結果,所以在此也主要比較了6個檢測算法的準確率指標,如圖6所示。可以看出GoogLeNetInceptionCNN和GRU均實現了較高的檢測準確率,且5種深度神經網絡模型的準確率均高于90%,僅AL模型的準確率略低于90%,由此可見深度神經網絡對于大規模不平衡數據的檢測性能較好。此外,本文模型的檢測準確率高于基礎CNN和LSTM,本文模型通過對神經網絡連接的dropout處理,緩解了深度神經網絡的過擬合,從而提高了對不平衡數據的分析效果。

圖6 異常檢測算法的準確率指標
本文的實驗環境為PC機:Intel i7- 9700 6核心處理器,16 GB內存,操作系統為64位 Windows 10。本文模型通過對神經網絡連接的dropout處理,緩解了深度神經網絡對大規模不平衡數據的過擬合問題,也提高了模型的計算效率。圖7所示是6個檢測算法對每個流量樣本的平均分類時間,GoogLeNetInceptionCNN采用GoogLeNet模型實現了多級CNN的深度網絡結構,因此計算效率較低。AL模型則是一種基于核函數的自動學習模型,該模型的計算效率較高,平均處理時間達到了0.003 ms左右,而本文模型的處理時間略低于AL模型,實現了最快的檢測速度。

圖7 每個樣本的平均處理時間
實驗數據集的2 273 332個樣本篩選出一半數據作為初始化數據集,并且初始化數據集中僅包含一部分漏洞攻擊、DoS攻擊和后門攻擊的數據,其他均為正常數據。剩余的一半樣本隨機分成6個大小相等的子數據集,將子數據集依次輸入HDNN-tree進行識別,統計每個子數據集的識別準確率。圖8所示是增量學習的HDNN-tree演化示意圖。

圖8 增量學習的HDNN-tree演化示意圖
圖9所示為每次輸入子數據集的平均識別準確率結果,可以看出50%數據集的識別準確率約為78%,隨著增量加入新的子數據集,模型的識別準確率得以提升,最終達到約95%。增量學習的模型性能始終低于靜態訓練的模型。主要原因在于增量學習過程中僅受到影響的分支被重新訓練,未受影響的分支保持固定,所以影響了整體模型的識別性能,但是實現了增量學習的目標。

圖9 增量學習的平均識別準確率
為了提高大數據攻擊檢測的準確率和效率,通過卷積神經網絡提取數據的特征,然后基于長短期記憶網絡學習所提取特征之間的依賴關系,防止出現梯度消失問題。針對LSTM的連接設計了dropout設計,一方面減少特征關系學習過程的過擬合情況,另一方面也提高了網絡的計算效率。最終,設計了基于決策樹的神經網絡增量學習算法,能夠識別出數據的細粒度類標簽。實驗結果表明,混合神經網絡有效地緩解了過擬合問題,并提高了模型的計算效率,同時也驗證了增量學習的有效性。增量學習的神經網絡模型準確率隨著數據集的增加而提升,最終達到約95%,并且本文模型處理每個樣本的時間約為0.002 3 ms,有利于大數據的實時攻擊檢測。