舒 豪,王 晨,史 崯
(1.武漢郵電科學(xué)研究院 烽火科技學(xué)院,湖北 武漢 430000; 2.南京烽火軟件科技有限公司,江蘇 南京 210000)
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展和新型網(wǎng)絡(luò)的應(yīng)用,面對日益復(fù)雜的網(wǎng)絡(luò)環(huán)境和網(wǎng)絡(luò)攻擊方式,傳統(tǒng)的網(wǎng)絡(luò)安全技術(shù)已難以滿足目前人們對于網(wǎng)絡(luò)安全和信息安全的需求,因此,網(wǎng)絡(luò)入侵檢測成為當前研究的一個熱點[1]。
近年來,機器學(xué)習(xí)應(yīng)用于網(wǎng)絡(luò)入侵檢測領(lǐng)域的研究已經(jīng)受到越來越多的關(guān)注。與傳統(tǒng)入侵檢測方法不同的是,它是通過對入侵檢測問題重新剖解分析,將其轉(zhuǎn)變?yōu)閷δJ阶R別和分類問題的研究,采用機器學(xué)習(xí)算法構(gòu)建分類器,對網(wǎng)絡(luò)中的正常行為和異常行為進行分類[2,3],有效地提高了檢測率、降低了誤報率。文獻[4]提出了在RNN(recurrent neural network)中應(yīng)用LSTM(long short-term momery)結(jié)構(gòu)的方法,并通過實驗證明了該方法的有效性。文獻[5]提出了在支持向量機算法的基礎(chǔ)上,利用蟻群算法優(yōu)化入侵檢測模型的方法,通過蟻群算法確定最優(yōu)參數(shù),有效地提高了檢測率。文獻[6]設(shè)計了一種神經(jīng)元映射卷積神經(jīng)網(wǎng)絡(luò),通過將特征數(shù)據(jù)重構(gòu)為一個二維的特征矩陣,再由經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)提取出更抽象魯棒的特征表示,提高了模型的泛化能力。文獻[7]提出了一種深度神經(jīng)網(wǎng)絡(luò)模型來識別網(wǎng)絡(luò)數(shù)據(jù)中的異常,實驗結(jié)果驗證了該方法的有效性,提高了檢測率,降低了誤報率。文獻[8]針對全連接神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò)在入侵檢測中的特點,提出將LSTM和DNN結(jié)合的檢測模型,以尋求模型在識別準確率和訓(xùn)練所需時間上的一個平衡,通過實驗驗證了模型的有效性。文獻[9]提出了CNN(convolutional neural networks)和雙向LSTM相融合的檢測方法,該方法分別利用CNN和雙向LSTM的特點來獲取特征的局部特性和前后關(guān)聯(lián)性,并引入注意力機制,增加了對特征重要性的考慮[10],實驗結(jié)果表明該方法有較好的檢測性能[11,12]。綜合來看,機器學(xué)習(xí)方法的引入,有效提高了檢測率,降低了誤報率,但仍存在一定的提升空間,少有如文獻[9]中的方法,考慮屬性前后信息的影響以及對特征的重要性加以關(guān)注。
因此,本文提出一種基于BiLSTM和注意力機制的網(wǎng)絡(luò)入侵檢測方法,通過BiLSTM網(wǎng)絡(luò)充分考慮每個屬性前后信息的影響,經(jīng)DNN進行特征提取后,利用注意力機制提取顯著性特征。實驗結(jié)果驗證了本文所提模型的有效性,與其它方法相比,提高了網(wǎng)絡(luò)入侵檢測的準確率。
為提高網(wǎng)絡(luò)入侵檢測的準確率,本文首先利用數(shù)據(jù)預(yù)處理部分對原始數(shù)據(jù)進行預(yù)處理,使其滿足機器學(xué)習(xí)算法的輸入數(shù)據(jù)格式;然后利用BiLSTM-DNN模型對預(yù)處理后的數(shù)據(jù)進行特征提取,并在模型中引入注意力機制以增加對特征重要性的考慮;最后由Softmax分類器輸出分類結(jié)果[11,12]。本文方法的原理框架如圖1所示。
圖1 基于BiLSTM和注意力機制的入侵檢測原理框架
數(shù)據(jù)預(yù)處理主要包含以下3大部分:
(1)數(shù)值化。特征數(shù)據(jù)中有3維特征屬性(protocol_type、service、flag)是字符型特征,采用one-hot方法將字符型特征轉(zhuǎn)化為數(shù)值型特征。
(2)標準化。數(shù)據(jù)集中同一條記錄的不同特征屬性之間,數(shù)值上可能存在較大的數(shù)值差異,采用Z-score方法對數(shù)值型特征進行標準化處理,公式如式(1)所示
(1)
式中:r為標準化前的數(shù)值特征,z為標準化后的值,μ為平均值,s為標準差。
(3)歸一化。將標準化后的數(shù)據(jù)根據(jù)一定的規(guī)則,映射到[0,1]區(qū)間,x為z歸一化后的值,公式如式(2)所示
(2)
BiLSTM-DNN模型由BiLSTM網(wǎng)絡(luò)和DNN網(wǎng)絡(luò)兩大部分組成,以BiLSTM網(wǎng)絡(luò)的輸出作為DNN網(wǎng)絡(luò)的輸入的方式連接;模型的輸入和輸出分別用X和P表示,X為經(jīng)預(yù)處理后的數(shù)據(jù),P為X經(jīng)BiLSTM-DNN模型處理后的數(shù)據(jù)。
1.2.1 BiLSTM網(wǎng)絡(luò)
長短時記憶網(wǎng)絡(luò)LSTM[13]是一種解決了長序列遠距離傳輸信息丟失的特殊循環(huán)神經(jīng)網(wǎng)絡(luò)RNN。LSTM內(nèi)部結(jié)構(gòu)如圖2所示。
圖2 LSTM內(nèi)部結(jié)構(gòu)
LSTM模型由一個細胞狀態(tài)和3個門控結(jié)構(gòu)(遺忘門、輸入門和輸出門)組成。遺忘門對上一時刻的細胞狀態(tài)進行篩選,保留重要信息,遺忘無用信息;輸入門對當前時刻的網(wǎng)絡(luò)輸入進行選擇性保留,可有效剔除無用信息;輸出門對細胞的當前狀態(tài)選擇性輸出。輸入?yún)?shù)為t-1時刻的細胞狀態(tài)Ct-1和隱層狀態(tài)ht-1,以及t時刻的輸入序列元素值xt;輸出參數(shù)為t時刻的細胞狀態(tài)Ct和隱層狀態(tài)ht。對應(yīng)的計算公式如式(3)所示
(3)
式中:Wi、Wf、Wo、Wc分別表示輸入門、遺忘門、輸出門和細胞狀態(tài)的權(quán)重矩陣;bi、bf、bo、bc分別表示各門控單元以及細胞單元的偏置項;σ表示sigmoid函數(shù);⊙表示參與運算的兩個向量對應(yīng)元素相乘;tanh表示雙曲正切激活函數(shù)[10]。
BiLSTM模型是由一個前向LSTM和后向LSTM組合而成。BiLSTM模型結(jié)構(gòu)如圖3所示。
圖3 BiLSTM網(wǎng)絡(luò)部分展開圖
BiLSTM網(wǎng)絡(luò)的基本結(jié)構(gòu)可以分為4層,分別為輸入層、正向傳輸層、反向傳輸層和輸出層。輸入層負責(zé)對輸入數(shù)據(jù)進行序列編碼,使輸入數(shù)據(jù)符合網(wǎng)絡(luò)的輸入要求;正向傳輸層負責(zé)提取輸入序列從前往后的前向特征;反向傳輸層則負責(zé)提取輸入序列從后往前的反向特征;輸出層負責(zé)對正向傳輸層和反向傳輸層輸出的數(shù)據(jù)進行整合[10]。因此,BiLSTM模型對于研究特征間的前后關(guān)聯(lián)性具有獨特的優(yōu)勢,輸出公式如式(4)
(4)
1.2.2 DNN網(wǎng)絡(luò)
DNN[14]通常也稱為多層感知機(multi-layer perceptron,MLP),它由幾個相互連接的層組成,每層由一定數(shù)量的節(jié)點組成,稱為神經(jīng)元。每個神經(jīng)元都是具有激活功能的基本計算單元。每個神經(jīng)元的輸入是由上一層的輸出值加權(quán)求和得到,而輸出值將作為下一層的輸入。DNN中的層可以分為3類:輸入層、隱藏層和輸出層。神經(jīng)元的激活函數(shù)數(shù)學(xué)計算公式如式(5)
f(x)=σ(WX+b)
(5)
式中:X為神經(jīng)元的輸入,W為與輸入對應(yīng)的權(quán)值矩陣,b為偏置量,σ表示sigmoid激活函數(shù)。DNN網(wǎng)絡(luò)對BiLSTM的輸出H進行進一步處理后,即得到BiLSTM-DNN模型輸出P,并輸入到Attention機制部分中進行重要性計算。
(6)
式中:Q=K=V=P。利用式(6)對BiLSTM-DNN模型的輸出P進行計算,輸出結(jié)果直接輸入到softmax分類器中,進而得到分類結(jié)果。
本文實驗數(shù)據(jù)采用NSL_KDD數(shù)據(jù)集[18]。NSL_KDD數(shù)據(jù)集包含KDDTrain+、KDDTrain+_20Percent、KDDTest+、KDDTest-21這4個子數(shù)據(jù)集。數(shù)據(jù)類型可分為5大攻擊類型:Normal、DoS、R2L、U2R、Probe,或者二大攻擊類型:正常類(normal)和攻擊類(attack)。數(shù)據(jù)集中每條記錄包含41個固定特征屬性和1個類標識,特征屬性中有32個是連續(xù)性數(shù)據(jù),9個是離散型數(shù)據(jù),類標識用于表示記錄所屬攻擊類型。實驗選取KDDTrain+_20Percent為訓(xùn)練數(shù)據(jù),KDDTest+為測試數(shù)據(jù),由于沒有驗證集,本文從訓(xùn)練數(shù)據(jù)中隨機抽取10%作為驗證數(shù)據(jù)。實驗數(shù)據(jù)的類別、數(shù)目及比例見表1、表2。
表1 KDDTrain+_20Percent訓(xùn)練集類別、數(shù)量、比例
表2 KDDTest+測試集類別、數(shù)量、比例
實驗結(jié)果采用準確率(Acc)、精確率(P)、召回率(R)和F1值作為評價指標,公式定義如式(7)
(7)
其中,攻擊類為正類,正常類為負類。TP表示實際和預(yù)測均為攻擊類的樣本數(shù);FP表示實際為正常類而預(yù)測為攻擊類的樣本數(shù);TN表示實際和預(yù)測均為正常類的樣本數(shù);FN表示實際為攻擊類而預(yù)測為正常類的樣本數(shù)。
由于實驗參數(shù)眾多,為了方便實驗和對比分析,實驗中的公共參數(shù)設(shè)置見表3。
表3 實驗公共參數(shù)配置
為了驗證本文模型的有效性,本文在NSL_KDD數(shù)據(jù)集上分別進行了二分類和五分類實驗,并通過對比DNN、LSTM和LSTM-DNN方法,來驗證本文所提方法的檢測性能。
分析模型在二分類實驗上的比較結(jié)果見表4。
表4 4種方法的二分類實驗結(jié)果比較
由表4可以看出,本文提出的方法在二分類問題上,相比于DNN、LSTM和LSTM-DNN方法,具有更高的準確率,達到了79.03%。由于P、R值的矛盾性,單純的從P、R值不足以判定模型的好壞。而F1值是精確率和召回率的權(quán)值都為1時的調(diào)和平均,通過對比發(fā)現(xiàn),本文方法的F1值也高于對比方法,達到了0.8250。對比圖4發(fā)現(xiàn),利用本文方法得到的AUC值最大,驗證了本文所提方法的有效性,并相對于其它對比方法,具有更好的檢測效果。
圖4 4種方法的ROC曲線
分析模型在五分類實驗上的比較結(jié)果見表5。
表5 4種方法的五分類實驗結(jié)果比較
由表5可得,本文方法在五分類結(jié)果上,準確率同樣高于其它對比方法,達到了73.86%。
本文提出了一種基于BiLSTM和注意力機制的網(wǎng)絡(luò)入侵檢測方法,該方法利用BiLSTM網(wǎng)絡(luò)充分考慮了每個特征屬性前后信息的影響,再由DNN網(wǎng)絡(luò)對特征進行提取,并引入注意力機制,對特征的重要性進行計算。通過在NSL_KDD數(shù)據(jù)集上的實驗,對比DNN、LSTM和LSTM-DNN方法在二分類和五分類的實驗結(jié)果,本文提出的方法準確率更高。然而本文方法存在訓(xùn)練時間較長的不足,未來還需進一步研究其它機器學(xué)習(xí)算法,在提高網(wǎng)絡(luò)入侵檢測率的同時,也能減少模型的訓(xùn)練時間。