◆楊印根 王忠洋
(江西師范大學(xué)計(jì)算機(jī)信息工程學(xué)院 江西 330022)
隨著互聯(lián)網(wǎng)的發(fā)展,人們的生活和生產(chǎn)方式發(fā)生了前所未有的變化,互聯(lián)網(wǎng)已經(jīng)成為社會(huì)不可或缺的一部分,但網(wǎng)絡(luò)攻擊對(duì)互聯(lián)網(wǎng)的發(fā)展構(gòu)成了威脅,因此對(duì)網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)(IDS)的研究越發(fā)受到研究者的重視。
入侵檢測(cè)問題本質(zhì)上是一個(gè)分類問題,當(dāng)只需要判別是否發(fā)生了入侵時(shí),其是一個(gè)兩類分類問題。當(dāng)需要進(jìn)一步細(xì)分入侵種類的時(shí)候,例如入侵是否為 DoS((Denial of Service attacks)、R2L(Root to Local attacks)、U2R(User to Root attack)和Probe(Probing attacks)中的一種時(shí),其便是一個(gè)多類分類問題,本文只考慮兩類分類問題。
機(jī)器學(xué)習(xí)方法已被廣泛使用在IDS中[1]。例如Pervez等提出了基于支持向量機(jī)(SVM)的過濾算法[2];Shapoorifard等基于KNN提出了KNN-ACO方法[3];Ingre and Bhupendra等提出了基于決策樹的入侵檢測(cè)方法[4]。
近十年來(lái),深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks)在語(yǔ)音識(shí)別,圖像識(shí)別和人臉識(shí)別等領(lǐng)域取得令人矚目的成果[5],其也被研究者們應(yīng)用于入侵檢測(cè)中。Tang.T.A等針對(duì)軟件定義下的網(wǎng)絡(luò)環(huán)境,提出基于的異常檢測(cè)算法,該算法可以應(yīng)用于軟件定義網(wǎng)絡(luò)中的異常檢測(cè)[6]。Javaid A.等提出了一種基于半監(jiān)督模型的方法,在網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)中對(duì)基準(zhǔn)NSL-KDD數(shù)據(jù)集使用自學(xué)習(xí)(STL)方法來(lái)檢測(cè)攻擊[7]。Wang等通過將流量數(shù)據(jù)類比為圖像,提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的惡意軟件流量分類算法[8]。Staudemeyer等提出了基于LSTM的入侵檢測(cè)算法,該算法適用于檢測(cè)具有獨(dú)特時(shí)間序列特征的DoS攻擊和Probe攻擊[9]。賈凡等將卷積神經(jīng)網(wǎng)絡(luò)模型應(yīng)用到網(wǎng)絡(luò)入侵檢測(cè),通過提取特征的局部相關(guān)性從而提高特征提取的準(zhǔn)確度[10]。李春林等通過深度學(xué)習(xí)中的自編碼網(wǎng)絡(luò)模型對(duì)網(wǎng)絡(luò)特征進(jìn)行提取,然后使用softmax分類器對(duì)特征數(shù)據(jù)進(jìn)行分類[11]。CL Yin等將RNN(Recurrent Neural Networks)運(yùn)用到網(wǎng)絡(luò)入侵檢測(cè)中,通過選取不同的隱藏層節(jié)點(diǎn)數(shù)和學(xué)習(xí)率來(lái)進(jìn)行二分類和五分類實(shí)驗(yàn)[12]。
網(wǎng)絡(luò)入侵檢測(cè)研究中,常用的KDD CUP 99、NSL-KDD數(shù)據(jù)集中通常包含類別數(shù)據(jù)和數(shù)值數(shù)據(jù)[13]。以往的機(jī)器學(xué)習(xí)方法是將類別數(shù)據(jù)進(jìn)行one-hot變換后再與數(shù)值數(shù)據(jù)拼接,然后作為輸入傳遞至模型。然而這種處理方式無(wú)法度量不同類別值之間的內(nèi)在關(guān)系,并且使用one-hot 方法編碼的向量會(huì)導(dǎo)致輸入向量稀疏。受自然語(yǔ)言處理中詞嵌入和句子嵌入研究的啟發(fā),本文提出了一種基于詞嵌入和LSTM(Long Short-Term Memory)的網(wǎng)絡(luò)入侵檢測(cè)模型(LSTM-RESNET)。該模型通過詞嵌入方法提取輸入中類別數(shù)據(jù)的詞向量,然后通過LSTM對(duì)詞向量提取特征并構(gòu)成句子向量,再將其與數(shù)值數(shù)據(jù)進(jìn)行拼接,送入判別器,從而識(shí)別網(wǎng)絡(luò)入侵。
本文其余部分安排如下:第一節(jié)對(duì)相關(guān)概念和研究思路進(jìn)行介紹。第二節(jié)具體介紹本文提出的新模型。第三節(jié)在NSL-KDD數(shù)據(jù)集中對(duì)新模型、Knn、決策樹、隨機(jī)森嶺等基準(zhǔn)算法以及深度學(xué)習(xí)方法CNN進(jìn)行比較與分析。第四節(jié)總結(jié)與展望。
記(x,y)為數(shù)據(jù)集D中的一個(gè)樣本對(duì)。其中x為輸入,通常包括網(wǎng)絡(luò)的協(xié)議類型、時(shí)間戳、用戶登錄數(shù)量和失敗登錄記錄數(shù)量等特征,x=[xc,xn]中既包含有類別數(shù)據(jù)xc∈R1×Nc(通常類別數(shù)據(jù)采用 token離散編號(hào)表示),也包含數(shù)值數(shù)據(jù) xn∈R1×Nn。y∈{0,1}表示標(biāo)簽,其中0表示正常訪問,1表示為網(wǎng)絡(luò)入侵。IDS問題即構(gòu)建并訓(xùn)練模型=f(x;?)來(lái)預(yù)測(cè)當(dāng)前訪問為入侵類型的概率。
與圖像識(shí)別和自然語(yǔ)言的處理不同,圖像識(shí)別中輸入均是表示像素灰度或者顏色的數(shù)值數(shù)據(jù);自然語(yǔ)言處理中,例如情感分析中,輸入則是列別數(shù)據(jù),例如詞匯。然而,對(duì)于網(wǎng)絡(luò)入侵檢測(cè)問題而言,輸入中即包含類比數(shù)據(jù)也包含數(shù)值型特征。
傳統(tǒng)上對(duì)類別數(shù)據(jù)的處理方式是將類別數(shù)據(jù)轉(zhuǎn)換為 one-hot向量,然而這種處理無(wú)法計(jì)算不同類別之間的距離。隨著 DNN的研究的深入,詞嵌入在NLP(Natural Language Processing)中取得了廣泛應(yīng)用,詞嵌入技術(shù)基于對(duì)上下文的分析,提取出詞匯在低維空間的特征向量。詞嵌入技術(shù)以及在此基礎(chǔ)上發(fā)展起來(lái)的句子嵌入技術(shù)在文本理解、情感分析、chatbot以及機(jī)器翻譯中發(fā)揮了巨大的作用。
近幾年來(lái),也有學(xué)者使用基于 NLP的詞嵌入和句子嵌入來(lái)改進(jìn)協(xié)同過濾算法。例如湯敬浩基于詞嵌入方法提出了混合推薦模型[14],MG Ozsoy提出了一種基于改進(jìn)的Word2Vec的推薦系統(tǒng)[15]。邢寧提出了主題強(qiáng)化的詞句嵌入模型,通過分析長(zhǎng)程上下文依賴關(guān)系來(lái)提高文本分類性能[16]。
目前句子嵌入中主要的方法可以分為基于 LSTM、CNN以及Attention三類。其中基于LSTM的方法由于可以很好地捕捉前后之間的依賴關(guān)系,受到眾多學(xué)者的重視。例如Bowman 等基于LSTM分別對(duì)前提句和假設(shè)句進(jìn)行編碼,然后將得到兩個(gè)句子表示向量連接后送入 tanh 層中,最后通過 Softmax 層進(jìn)行文本蘊(yùn)含識(shí)別分類[17]。劉陽(yáng)等提出了一種基于雙向 LSTM 的句子表示模型用文本蘊(yùn)含識(shí)別任務(wù)[18]。H.Palangi等在對(duì)信息檢索分析和應(yīng)用時(shí)使用LSTM網(wǎng)絡(luò)進(jìn)行深度句子嵌入[19]。
LSTM(Long Short-Term Memory)是長(zhǎng)短期記憶網(wǎng)絡(luò)[20],是一種時(shí)間遞歸神經(jīng)網(wǎng)絡(luò),適合于處理和預(yù)測(cè)時(shí)間序列中間隔和延遲相對(duì)較長(zhǎng)的重要事件。LSTM的巧妙之處在于通過增加輸入門限,遺忘門限和輸出門限,使得自循環(huán)的權(quán)重是變化的,這樣一來(lái)在模型參數(shù)固定的情況下,不同時(shí)刻的積分尺度可以動(dòng)態(tài)改變,從而避免了梯度消失或者梯度膨脹問題。
受上述研究啟發(fā),本文提出了一種基于 LSTM 和 RESNET的IDS模型。新模型首先通過詞嵌入層獲得類別數(shù)據(jù)的詞向量,然后將類別數(shù)據(jù)集合類比為“句子”,采用通LSTM提取類別集合的句子特征,再與數(shù)值數(shù)據(jù)拼接,送入Resnet(殘差網(wǎng)絡(luò))構(gòu)成的判別器中。
下面該將對(duì)新模型進(jìn)行具體的介紹。
在網(wǎng)絡(luò)入侵檢測(cè)數(shù)據(jù)集NSL-KDD中,其中的41個(gè)屬性并不都是連續(xù)型屬性,有3個(gè)字符型的離散變量。而神經(jīng)網(wǎng)絡(luò)不能處理這類數(shù)據(jù),傳統(tǒng)方法是將這類數(shù)據(jù)用0、1、2等數(shù)字標(biāo)號(hào)或者使用one-hot轉(zhuǎn)換成矩陣向量。然而這些方法會(huì)導(dǎo)致數(shù)據(jù)關(guān)系不平衡或者數(shù)據(jù)變得過于稀疏。鑒于LSTM在句子表示問題中有著良好的表現(xiàn),本文將LSTM結(jié)合Embedding對(duì)NSL-KDD數(shù)據(jù)進(jìn)行處理。將數(shù)據(jù)再利用LSTM提取特征,最后使用句向量表示,并為后續(xù)使用Resnet訓(xùn)練做好準(zhǔn)備。
在深度學(xué)習(xí)中,隨著神經(jīng)網(wǎng)絡(luò)層數(shù)加深,得到的訓(xùn)練效果在理論上應(yīng)該是逐漸提升的。但是在實(shí)驗(yàn)中,隨著網(wǎng)絡(luò)深度的增加,訓(xùn)練效果反而下降。產(chǎn)生這種問題的原因是梯度消失,Resnet的出現(xiàn)解決了這個(gè)問題,使得可以訓(xùn)練非常深的網(wǎng)絡(luò)??紤]到Resnet在圖像處理方面的表現(xiàn)卓越,本文將Resnet運(yùn)用到網(wǎng)絡(luò)入侵檢測(cè)中,相對(duì)于傳統(tǒng)深度學(xué)習(xí)方法,其可以通過加深網(wǎng)絡(luò)來(lái)提高性能。
本文使用的模型如圖 1所示(圖中省略了中間的若干網(wǎng)絡(luò)訓(xùn)練層,)。首先將數(shù)據(jù)集數(shù)字型和字符型特征分為2部分。字符型特征使用one-hot屬性映射處理后進(jìn)行Embedding詞向量化,然后使用LSTM進(jìn)行特征分析和處理,最后和數(shù)字形特征合并成為處理過的數(shù)據(jù)集。然后將訓(xùn)練數(shù)據(jù)集放入殘差網(wǎng)絡(luò)中進(jìn)行訓(xùn)練,從中得到模型最好的超參數(shù),然后使用測(cè)試數(shù)據(jù)集進(jìn)行結(jié)果測(cè)試。
然后將映射后得到的one-hot編碼通過word embedding轉(zhuǎn)換成詞向量矩陣[18]。實(shí)現(xiàn)方法如圖2所示:
圖2 word embedding過程
其中輸入為one-hot編碼,經(jīng)過神經(jīng)網(wǎng)絡(luò)隱層的計(jì)算,會(huì)得到一個(gè)權(quán)重矩陣,矩陣的列數(shù)代表了詞向量的維度,讓后通過輸出層得到結(jié)果。輸出層是一個(gè)softmax回歸分類器,它的每個(gè)節(jié)點(diǎn)將會(huì)輸出一個(gè)0-1之間的值(概率),最大的值(概率)代表了期望的結(jié)果。這些所有輸出層神經(jīng)元節(jié)點(diǎn)的概率之和為 1。其中softmax函數(shù)如下所示:
它能將一個(gè)含任意實(shí)數(shù)的K維向量 Z壓縮到另一個(gè)K維實(shí)向量 S(z)中,每一個(gè)元素的范圍都在 (0,1) 之間,并且所有元素的和為1。之后將得到的詞向量通過LSTM進(jìn)行抽取轉(zhuǎn)換得到句子向量[21]。其計(jì)算公式如下:
其中x,W,b分別代表輸入的詞向量、網(wǎng)絡(luò)權(quán)重矩陣和權(quán)重偏置。ft表示遺忘門限,it表示輸入門限,表示前一時(shí)刻cell狀態(tài)、Ct表示當(dāng)前cell狀態(tài)(這里就是循環(huán)發(fā)生的地方),ot表示輸出門限,ht表示當(dāng)前單元的輸出,ht-1表示前一時(shí)刻單元的輸出。
最后將句向量送入殘差網(wǎng)絡(luò)中訓(xùn)練并通過softmax得到預(yù)測(cè)結(jié)果。其中殘差網(wǎng)絡(luò)基本思想和計(jì)算如圖3所示:
圖3 殘差模塊
殘差網(wǎng)絡(luò)由圖3所示的若干殘差塊組成,假設(shè)該部分神經(jīng)網(wǎng)絡(luò)的輸入為x,要擬合的函數(shù)映射(即輸出)為H(x),可以定義另外一個(gè)殘差映射F(x)為H(x)-x,則原始的函數(shù)映射H(x)可以表示為F(x)+x。He通過實(shí)驗(yàn)證明,優(yōu)化殘差映射F(x)比優(yōu)化原始映射H(x)容易得多[22]。
在未來(lái),標(biāo)準(zhǔn)化研究機(jī)構(gòu)想要發(fā)展壯大,就必須開拓進(jìn)取、與時(shí)俱進(jìn),及時(shí)轉(zhuǎn)變思想觀念,牢固樹立品牌意識(shí),增強(qiáng)品牌經(jīng)營(yíng)能力,無(wú)論是對(duì)接政府,還是對(duì)接市場(chǎng),都應(yīng)該在工作中體現(xiàn)自身機(jī)構(gòu)的獨(dú)特性和品牌價(jià)值。簡(jiǎn)言之,標(biāo)準(zhǔn)化研究機(jī)構(gòu)應(yīng)以品牌建設(shè)為抓手,穩(wěn)步提高核心競(jìng)爭(zhēng)力,從而為做強(qiáng)做大做優(yōu)奠定堅(jiān)實(shí)基礎(chǔ)。
網(wǎng)絡(luò)模型的損失函數(shù)為分類交叉熵函數(shù):categorical_crossentropy,其計(jì)算公式如下:
n是樣本數(shù),m是分類數(shù),yim與?im分別代表標(biāo)簽值和預(yù)測(cè)輸出值。
算法流程如下:
算法 權(quán)重更新算法輸入
其中y為預(yù)測(cè)值,y為實(shí)際標(biāo)簽值。η為學(xué)習(xí)率,k為迭代次數(shù)。θ為權(quán)重矩陣和偏置,L(y:y)是測(cè)量模型預(yù)測(cè)值y和實(shí)際標(biāo)簽值y之間的偏差。
表1 數(shù)據(jù)集特征
目前,入侵檢測(cè)系統(tǒng)通常在 KDD 99和 NSL-KDD兩個(gè)benchmark數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)。
KDD99是1999年KDD競(jìng)賽建立的入侵檢測(cè)基本數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)由許多的網(wǎng)絡(luò)連接數(shù)據(jù)組成,每條記錄都有41個(gè)屬性,其中34個(gè)屬性為連續(xù)屬性,7個(gè)屬性為離散屬性。這7個(gè)屬性中由3個(gè)屬性為標(biāo)稱變量,為字符型數(shù)據(jù)。除了41個(gè)屬性外,還有一個(gè)標(biāo)識(shí)屬性,表明該網(wǎng)絡(luò)連接的類型。其中包括一個(gè)Normal正常網(wǎng)絡(luò)行為,以及四大類攻擊:DoS、Probe、R2L、U2R。
NSL-KDD數(shù)據(jù)集是對(duì)于 KDD99數(shù)據(jù)集的優(yōu)化處理。其主要將KDD99大量冗余數(shù)據(jù)進(jìn)行剔除并把KDD99數(shù)據(jù)集劃分為固定的訓(xùn)練集和測(cè)試集。訓(xùn)練集和測(cè)試集數(shù)據(jù)都是選取合適的數(shù)量大小,使得不同的方法和實(shí)驗(yàn)論證都可以進(jìn)行合理的比較。NSL-KDD數(shù)據(jù)集作為KDD99數(shù)據(jù)集的改進(jìn),數(shù)據(jù)的每條記錄由41個(gè)屬性特征和1個(gè)類標(biāo)簽特征組成,其中41個(gè)屬性特征包含38個(gè)數(shù)字形特征和3個(gè)離散型(字符型)屬性,具體如表1所示。
NSL-KDD和KDD99標(biāo)簽特征都分為五類(1類Normal和四類攻擊),其中NSL-KDD訓(xùn)練集具體攻擊方法有22種,測(cè)試集有17種。
(1)實(shí)驗(yàn)環(huán)境
本文實(shí)驗(yàn)環(huán)境系統(tǒng)為windows10,使用Anaconda開源庫(kù),編程語(yǔ)言為python,深度學(xué)習(xí)工具為Keras等,使用GTX1070顯卡作為GPU進(jìn)行加速計(jì)算。詳細(xì)環(huán)境配置如表2所示:
表2 實(shí)驗(yàn)環(huán)境
(2) 實(shí)驗(yàn)過程
我們采用NSL-KDD數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)。其中將四類攻擊類別合并為abnormal類型,實(shí)驗(yàn)變?yōu)槎诸悊栴}。將數(shù)據(jù)集預(yù)處理后按照2.3算法流程訓(xùn)練模型并得出測(cè)試結(jié)果。
鑒于新模型存在諸多超參數(shù), 我們針對(duì) NSL-KDD訓(xùn)練集進(jìn)行100次迭代訓(xùn)練,選取準(zhǔn)確率最高的超參數(shù)作為模型參數(shù),然后在測(cè)試集上進(jìn)行驗(yàn)證。
新模型的主要超參數(shù)和值如表3所示:
表3 模型參數(shù)列表
實(shí)驗(yàn)結(jié)果和KNN、決策樹(Decision tree)、AdaBoost等幾種主流的基準(zhǔn)方法進(jìn)行比較分析[20],除此外還和主流的深度學(xué)習(xí)方法進(jìn)行比較。評(píng)估指標(biāo)分別是準(zhǔn)確率(accuracy)、召回率(recall)、精確度和F值。
TP、FP、FN和TN含義如表4所示:
表4 TP、FP、FN和TN含義
考慮一個(gè)二分問題,即將實(shí)例分成正類(positive)或負(fù)類(negative)。對(duì)一個(gè)二分問題來(lái)說(shuō),會(huì)出現(xiàn)四種情況。如果一個(gè)實(shí)例是正類并且也被 預(yù)測(cè)成正類,即為真正類(True positive),如果實(shí)例是負(fù)類被預(yù)測(cè)成正類,稱之為假正類(False positive)。相應(yīng)地,如果實(shí)例是負(fù)類被預(yù)測(cè)成負(fù)類,稱之為真負(fù)類(True negative),正類被預(yù)測(cè)成負(fù)類則為假負(fù)類(false negative)。
實(shí)驗(yàn)采用準(zhǔn)確率來(lái)評(píng)估實(shí)驗(yàn)結(jié)果。如圖4所示。
圖4 不同算法準(zhǔn)確率對(duì)比
實(shí)驗(yàn)中對(duì)比了采用KNN、決策樹、AdaBoost、隨機(jī)森林(RF)等基準(zhǔn)算法和CNN、RNN等深度方法的實(shí)驗(yàn)結(jié)果,圖4展示了不同算法的準(zhǔn)確度。KNN、決策樹、AdaBoost、隨機(jī)森林和CNN的準(zhǔn)確率分別為76.6%、80.4%、79.7%、76.6%和77.7%,可以看到本文提出的算法相比于傳統(tǒng)機(jī)器學(xué)習(xí)算法和深度神經(jīng)網(wǎng)絡(luò)CNN在準(zhǔn)確度上有一定的提升,達(dá)到了81.8%。
混淆矩陣如表5:
表5 混淆矩陣
從表 5中可以看出模型將異常樣本誤判為正常樣本個(gè)數(shù)為3471,將正常樣本誤判為異常樣本個(gè)數(shù)為298。
實(shí)驗(yàn)其他評(píng)估參數(shù)如表6所示。因?yàn)槭褂肅NN方法的文章并未給出其他指標(biāo),所以不予對(duì)比。本文模型實(shí)驗(yàn)結(jié)果結(jié)合表5和表6分析可知Recall值相比較傳統(tǒng)基準(zhǔn)算法有了一定的提升,precision值和傳統(tǒng)算法差別不大。因?yàn)镮DS旨在提高recall值,即減少將異常樣本誤判為正常樣本的個(gè)數(shù)。本文在此方面對(duì)比一些方法有了一定進(jìn)步,但是總體來(lái)看誤判數(shù)仍占總體樣本數(shù)較高,所以導(dǎo)致準(zhǔn)確率沒有顯著提高。
表6 不同模型算法評(píng)估指標(biāo)對(duì)比
實(shí)驗(yàn)訓(xùn)練過程如圖5所示,當(dāng)?shù)螖?shù)達(dá)到100時(shí),實(shí)驗(yàn)結(jié)果趨于穩(wěn)定,準(zhǔn)確率為穩(wěn)定在81%附近。
實(shí)驗(yàn)過程中fpr和tpr變化如圖6所示。實(shí)驗(yàn)訓(xùn)練100次后得到最終模型,然后在測(cè)試集上計(jì)算fpr和tpr的值,最終畫出Receiver operating characteristic curve(ROC)曲線。
本文將LSTM和Resnet引入到網(wǎng)絡(luò)入侵檢測(cè)問題中。和以往的傳統(tǒng)基準(zhǔn)算法相比,本文的模型可以處理更加龐大的數(shù)據(jù)量和復(fù)雜的特征,處理時(shí)序性特征可以考慮一定的上下文關(guān)系。可以更好地對(duì)數(shù)據(jù)之間的關(guān)聯(lián)性和相似性分析,網(wǎng)絡(luò)模型上可以訓(xùn)練較深的層次,通過神經(jīng)網(wǎng)絡(luò)深度提高模型性能。本文也有一些不足之處和改進(jìn)空間,比如對(duì)于41維特征可以進(jìn)行特征選擇和網(wǎng)絡(luò)結(jié)構(gòu)模型細(xì)化,如何減少FP值等。進(jìn)一步對(duì)這些問題進(jìn)行研究,可以更好的提高網(wǎng)絡(luò)入侵檢測(cè)的準(zhǔn)確率。
圖5 迭代次數(shù)對(duì)應(yīng)的準(zhǔn)確率
圖6 ROC曲線