張 凡,高仲合,牛 琨
(曲阜師范大學 網絡空間安全學院,山東 曲阜 273165)
隨著網絡設備以及通信協議傳輸數據量的增加,面向互聯網的攻擊手段變得復雜多樣,網絡安全問題也越來越嚴峻[1]。當前的計算機網絡正面臨諸如拒絕服務、病毒和特洛伊木馬以及網絡嗅探等安全威脅[2],入侵檢測系統(Intrusion Detection Systems,IDS)成為網絡安全防護技術的研究熱點。
近年來,機器學習算法在入侵檢測領域表現出了較好的檢測效果,例如支持向量機(Support Vector Machine,SVM)、遺傳算法(Genetic Algorithm,GA)、神經網絡(Neural Network,NN)等。但是,隨著入侵方式日益多元化,出現了網絡流量性質復雜多樣且具有長期相關性,網絡數據維度越來越大的問題[3],現有機器學習算法暴露出很多局限性。例如,不滿足高維度的大批量數據的檢測要求,入侵識別的準確度較低,誤報率高等。然而,深度學習算法在處理高維特征的復雜數據時表現出更好的學習性能,它能提取更深層次的特征,還能有效檢測未知入侵行為[4]。
網絡入侵檢測即根據網絡流量數據或主機數據來判斷系統是否存在異常行為,入侵檢測也可以抽象為分類問題。鑒于深度學習的學習性能,深度學習算法中的遞歸神經網絡(Recurrent Neural Network,RNN)[5]及其長短時記憶神經網絡(Long Short Term Memory,LSTM)[6]和門控遞歸循環單元(Gated Recurrent Unit,GRU)[7]被廣泛用于分類問題。GRU和LSTM都是RNN的變體,引入了門結構控制信息保留程度,能夠捕捉網絡流量的長期相關性[8]。因為網絡流量數據本質上是順序的,RNN常被用于分析和預測順序數據,所以RNN在入侵檢測方向有廣闊的應用前景[9]。
已有研究將卷積神經網絡(Convolutional Neural Networks,CNN)[10]、循環神經網絡(RNN)[11]、CNN與LSTM[12]相結合的神經網絡應用到入侵檢測領域并取得了較好效果。M等人[13]提出在CNN中提取不同層的輸出,并使用線性支持向量機(SVM)和1-近鄰(1-NN)分類器來進行入侵檢測,提高了檢測性能。A和S[14]提出了一種結合回聲狀態網絡(Echo State Network,ESN)和SVM的入侵檢測模型,獲得了更高的時間序列分類任務性能。這種方法的主要目的是結合ESN處理時間序列的能力和支持向量機突出的分類性能。后有研究對其進行改進,文獻[15]提出使用具有門控遞歸單元(GRUs)的遞歸神經網絡(RNNs)來代替ESN,并將其用于入侵檢測,使用SVM進行分類,提高了分類效率。
GRU具有時間序列預測能力,能夠檢測未知的攻擊樣本。該文提出使用雙向門控循環單元(Bidirection Gated Recurrent Unit,BiGRU)學習深層次特征,基于網絡數據的時序性,在GRU的基礎上進行網絡結構改進,增加一層GRU,設計了雙向GRU結構,能夠從正向學習過去的信息痕跡,也能從逆向學習未來的信息,充分學習數據的特征信息,達到數據復用的效果。延用算法[16]提出的方法是用SVM代替Softmax層分類。為了加快模型的訓練,同時避免訓練過程陷入局部最優,使用自適應矩估計(Adam)梯度下降優化算法來輔助GRU的訓練。
GRU只保留了更新門和復位門,它的輸入層在設置神經元個數的時候可以根據特征空間的大小設定,在計算過程中減少了參數,極大地加快了收斂速度,并且GRU的門機制解決了梯度消失和梯度爆炸問題。
重置門決定前一時刻的輸入rt=σ(Wr?[ht-1,xt])傳遞給當前的輸入xt的信息。更新門決定是否保留當前輸入值xt的信息,更新門會輸出值域為[0,1]的值,數值越接近1,代表保留的信息越多,越接近0,代表丟棄的越多。xt是輸入序列,ht是存儲單元的輸出值,rt是重置門,zt和rt共同控制了從ht-1隱藏狀態到ht隱藏狀態的計算。
GRU中的更新門zt定義了過去的信息將有多少保存到當前時刻,zt可以同時進行選擇和丟棄數據信息,在選擇信息保留時,從ht-1到ht之間形成一個連接,這會使梯度反向傳播,有效解決梯度消失問題。具體的門單元計算公式為:
zt=σ(Wz·[ht-1,xt])
(1)
rt=σ(Wr·[ht-1,xt])
(2)
(3)
(4)
式中,σ是sigmoid函數,Wz、Wr、W分別為更新門、重置門以及候選隱藏狀態的權重矩陣。根據重置門、更新門和隱藏狀態的計算結果,可以通過公式得到當前時刻的輸出ht。
GRU結構如圖1所示。

圖1 GRU結構
GRU在特征提取的過程中是單方向進行計算,只對過去的信息進行特征提取。在對訓練序列學習時,BiGRU既能正向學習過去信息對當前時刻的影響,還能逆向學習未來信息對當前時刻的影響,而且雙向網絡都連接著同一個輸出層[17]。雙向門控循環單元結構為輸出層提供了輸入序列中每一個時刻過去和未來的上下文信息[18]。

BiGRU模型的基本單元由前向傳播的GRU單元和后向傳播的GRU單元組成。BiGRU的網絡結構如圖2所示。

圖2 BiGRU網絡結構


(5)
(6)
(7)
(8)
(9)
反向推導公式如下:
(10)
(11)
(12)
(13)
(14)
將正向和逆向推導結果進行處理,將兩個方向的結果進行線性融合,如下:
(15)
本研究中選擇使用加權融合算法對兩個輸出數據結果進行處理:
(16)
對于雙向GRU的輸出,采用融合加權線性組合的方法,比例系數k是一個常量。通過調節系數k可以找到合適的融合閾值,這種方法更充分地利用了正反雙向的輸出信息,提高了檢測精度。
GRU具有較強的記憶特性,能夠有效地處理具有時序特征的問題。在研究中,在GRU的基礎上進行網絡結構改進,增加一層反向學習GRU層,設計了雙向GRU結構,能夠正向學習過去的信息痕跡,也能逆向學習未來的信息,達到了數據復用的效果。最后,對數據進行線性融合,雙向GRU學習的結果共同決定輸出值,提高了模型的環境適應性,雖然GRU比LSTM的結構更簡單,但是在網絡結構加深的情況下,GRU在處理大量的數據時會產生龐大的計算量,因此,引入支持向量機作為分類器提高效率,降低訓練時間,也能在模型性能上進行提升[20],可以更好地學習正反兩個方向的信息。
在這項研究中,有21個特征被用于模型輸入,然后通過GRU的門機制來學習參數。人工神經網絡通常使用Softmax激活函數作為其分類器。然而,在二元分類問題中,SVM只需要達到最優超平面(f(w,x)=w·x+b),相比之下,Softmax分類器需要滿足一個概率分布,SVM在這類問題中優于Softmax。入侵檢測的主要關注點是確定是否存在攻擊,因此,SVM的計算和訓練速度比Softmax快。BiGRU-SVM的模型如圖3所示。

圖3 BiGRU-SVM網絡結構模型
因為入侵檢測的主要關注點是確定是否存在攻擊,引入SVM作為模型的最后一層,參數是通過優化SVM的目標函數來學習的,然后,改進的BiGRU-SVM模型中不再使用交叉熵函數來衡量網絡損失值,而使用SVM的損失函數。
SVM通過解決以下約束優化問題來學習參數w和b:其中w為該超平面的法向量,b為偏置。
(17)
上面公式被稱為L1-SVM的無約束優化問題,它具有標準化鉸鏈損耗。公式中y'是實際標簽,wTx+b是預測函數。存在的問題是它不可微。然而,它的變體被稱為L2-SVM是可微的,并且比L1-SVM更穩定,在一定程度上降低了過擬合的風險。
(18)
‖w‖2是歐幾里德范數,也稱為L2范數,具有平方鉸鏈損失。調整懲罰參數C,使用L2-SVM計算出損失可以提高模型的適應性,使用Adam優化函數優化損失函數和學習率等網絡參數,能夠進一步提高訓練效果。
為了解決分類問題,提高分類效率,將SVM目標函數與神經網絡的激活函數進行區分。使用L2-SVM的目標函數訓練神經網絡通過反向傳播來自頂層線性支持向量機的梯度來學習下層權重。l(w)是目標函數,將輸入x替換為前一層的激活函數h。
(19)
其中,Ⅱ(·)是指示函數,同樣對于L2-SVM,有:
(20)
L2-SVM被應用于提出的BiGRU-SVM模型,在預測時,預測函數為每一個類生成一個得分向量,因此使用argmax函數得到數據x的預測類別標簽y。
predicted_class=argmax(sign(wx+b))
(21)
其實,反向傳播算法與標準的基于Softmax的深度學習網絡完全相同,并且L2-SVM在大多數情況下優于L1-SVM。
該研究使用了2013年京都大學蜜罐系統的網絡流量數據,它有24個統計特征;包括來自KDD Cup 99數據集的14個特征,這是入侵檢測研究領域中非常流行和廣泛使用的性能評估數據,除了這14個特征之外,還提取了另外10個特征,能夠更有效地調查網絡行為。首先,對數值進行歸一化處理,該研究所做的預處理如下:將服務、標志和協議等分類特征映射到[0,n-1],其中n是特征中的符號數量。

標準化連續特性,如duration、src_bytes、dest_bytes、dst_host_count、dst_host_srv_count和start_time等。在上述處理之后,使用獨熱編碼規范化數據。

(22)
其中,X是待標準化的特征值,μ是給定特征的均值,σ是其標準差。在數據集歸一化后,離散化連續特征,離散化特征降低了所需的計算成本,并提高了數據集的分類性能,最后,這些特征進行獨熱編碼后可輸入模型。
實驗用了整個網絡流量數據集(16.2 GB)的25%,大約4.1 GB的數據。總共1 898 240個訓練數據實例,其中包括794 512個正常樣本,1 103 728個入侵樣本;有420 608個測試數據實例,其中包括157 914個正常樣本,262 694個入侵樣本,如表1所示。在本實驗中,使用檢測準確率和誤報率來評估模型的性能,在數據集上進行驗證,每訓練100次保存1次模型,在檢測模型中,針對于二分類對模型進行評估,數據集分為了兩類:正常類和攻擊類。

表1 數據集分布
實驗環境為win10操作系統,處理器為4核8線程intel(R)Core(TM)i7-10510U CPU@1.80 GHz,內存為12 GB,編程語言使用python3.6。神經網絡參數設置如表2所示。

表2 神經網絡超參數
為了驗證不同模型的檢測性能,需要根據模型的檢測樣本類別和樣本實際類別進行計算。該文主要采用準確率(ACC)和誤報率(FPR)對模型進行評估。
準確率Accuracy(ACC):表示正確分類的比例。
(23)
誤報率False Positive Rate(FPR):表示被誤報的正常樣本占總的正常樣本的比例。
(24)
真陽性(TP):被正確歸類為異常的異常實例;
假陽性(FP):正常情況被錯誤地歸類為異常;
真陰性(TN):正常情況被正確歸類為正常;
假陰性(FN):異常情況被錯誤地歸類為正常。
如表3所示,在同樣的環境下進行了對比試驗,提出的BiGRU-SVM模型無論是在訓練集還是測試集,檢測準確率都高于其他兩個模型,BiGRU-SVM在訓練數據集上的平均準確率和驗證準確率分別為99.93%和98.76%。

表3 三種神經網絡模型訓練與驗證
將BiGRU-SVM與GRU-Softmax和GRU-SVM模型的實驗結果進行對比,如表4所示。BiGRU-SVM的檢測準確度高于其他兩個模型,與最新的方法GRU-SVM相比分別有14.61百分點的提升,在誤報率上下降了5.15百分點。實驗數據表明,使用SVM作為模型得分類器,其檢測準確度優于Softmax函數,使用雙向門控循環神經網絡的檢測精度高于使用單向GRU網絡結構,SVM作神經網絡輸出層的方法。

表4 改進方法與其他深度學習算法對比 %
提出了一種基于雙向門控循環單元結構應用于入侵檢測的方法,該方法能正確識別攻擊并對其保持長期記憶,以便阻止其他新的攻擊,同時將以獨特的方式對待所有這種類型的攻擊。該檢測模型使用過去和未來的行為信息來確定當前行為,提高了準確性,并且可以適應現有的大量的網絡流量和高維特征。為了驗證該方法的有效性,采用京都大學蜜罐系統流量數據作為訓練和測試數據集,以準確率和誤報率作為評估指標,并將BiGRU-SVM與其他神經網絡入侵檢測方法進行對比。結果表明,BiGRU-SVM的檢測指標達到了較高的值,證明該方法對入侵檢測是有效的。未來,計劃使用新提出的深度學習模型BiGRU-SVM真正實現一個新的智能NIDS。