譚敏生,彭 敏,丁 琳,吳 冕
(南華大學計算機學院,衡陽 421000)
隨著網絡技術的迅速發展,網絡安全問題備受國家與社會的強烈關注。入侵檢測作為安全防范的一種重要手段,通過收集和分析計算機系統和用戶的事件信息,及時發現入侵行為,提醒管理人員采取相應措施,有效防范攻擊,減少相應損失。目前主流的入侵檢測技術主要是將智能算法與入侵檢測相結合[1],聚類算法和支持向量機算法研究較多。Ambusaidi等人[2]提出了一種基于非線性相關系數的入侵檢測方法,能夠較準確地提取網絡流量記錄之間的線性和非線性相關性,降低誤報率,有效區分正常和異常行為。Kumar 等人[3]提出了一種基于 K 均值聚類算法來提高入侵檢測的準確率。Bhavsar等人[4]將支持向量機分類算法應用于入侵檢測中。Gadal等人[5]提出了一種基于K-均值聚類和序列最小優化分類相結合的混合機器學習入侵檢測技術。上述方法能在一定程度上取得更好的檢測效果,但特征提取具有一定的復雜性,不能全面反應數據的相關性。
近年來,深度學習已經成為當今研究熱點,深度神經網絡和卷積神經網絡等多種深度學習算法已逐步應用于入侵檢測領域。Jin等人[6]提出了一種基于深度神經網絡的入侵檢測模型,該模型有4個隱含層,每一層有100個隱含單元,使用線性修正單元作為激活函數。Alom等人[7]利用改進的深度信念網絡進行入侵檢測,獲得了較好的準確率。Raman等人[8]將概率神經網絡應用于入侵檢測技術中來提高檢測性能。Nadeem等人[9]構建的梯形網絡將神經網絡與無監督學習相結合,取得了較好的精確度。Zou 等人[10]利用遺傳算法具有的全局優化能力結合神經網絡,在入侵檢測領域取得了較好的效果。Kim J等人[11]將深度學習中的長短期記憶神經網絡體系結構應用于入侵檢測中,驗證了LSTM分類器比其它分類器具有一定的有效性。Kolosnjaji等人[12]通過將卷積神經網絡和LSTM神經網絡結合起來,構造了一個分層次特征提取的體系結構。Vinayakumar等人[13]根據卷積神經網絡的特點,將網絡流量建模為時間序列的入侵檢測系統。Liu等人[14]將卷積神經網絡與循環神經網絡結合,構造了入侵檢測模型;賈凡等人[15]提出了基于卷積神經網絡的入侵檢測算法,通過深度學習,將非線性模型轉化成更抽象的形式,強化原始數據的分類能力,提高特征提取的準確度。
然而,基于深度學習的卷積神經網絡方法應用于入侵檢測領域時,其檢測性能與全連接層、卷積層的初始權重、閾值、網絡結構參數、優化器以及全連接層神經元數等選取有較大關系,若選取不好,容易導致網絡波動,學習過程也易陷入局部最優。本文利用遺傳算法強大的全局尋優能力,通過遺傳算法的選擇、交叉和變異等操作獲得最優初始權重、閾值、網絡結構參數、優化器及全連接層神經元數等來優化卷積神經網絡;并將優化后的卷積神經網絡應用于入侵檢測,對入侵數據進行學習和識別,與未優化的卷積神經網絡和典型機器學習算法相比,準確率有明顯提高,誤報率有明顯降低。
利用卷積神經網絡(Convolutional Neural Network,CNN)能夠充分對數據特征進行非線性映射,挖掘各個特征之間的聯系,提高特征提取的準確度,處理多維數據。同一層部分神經元之間的權重和偏移相同,當輸入層的特征維度較多時,只需將卷積層的神經元與前一層的部分神經元進行連接。本文根據LeNet5的基本模塊構建卷積神經網絡框架,采用如圖1所示的結構圖進行構建,固定1個輸入層、1個輸出層、1個全連接層,卷積層和池化層相互交替且具有相同的層數。

圖1 卷積神經網絡結構圖
卷積層為特征提取層,可以使原信號特征增強,并且降低噪音。卷積運算是卷積核與原始特征或上一層的輸出特征進行卷積,然后再加上偏置值,得到當前的特征,其運算方法如(1)所示

(1)

(2)
卷積層輸出特征向量的大小則由式(3)確定,其中o為輸出特征的大小,i為輸入的特征大小,k為卷積和的大小,s為移動的步長,p為填充數

(3)
下采樣層(池化層)一般在卷積層下面,主要降低卷積層輸出的特征向量,減少參數數量,進一步提取主要特征。下采樣輸出特征的大小由式(4)確定,其中ps為采樣的大小

(4)
遺傳算法(Genetic Algorithm,GA)是一種模擬生物進化的算法,其具有強大的全局尋優能力和良好的收斂速度改善能力。通過將卷積神經網絡(Convolutional Neural Network,CNN)的卷積層、全連接層的初始權重、閾值、網絡結構參數、優化器及全連接層神經元數等作為遺傳算法的種群,然后經過選擇、交叉和變異等操作后獲得最優后代,構建了一種基于遺傳算法的卷積神經網優化算法(Genetic Algorithm Optimization Convolutional Neural Network,GAOCNN),該算法利用遺傳算法強大的全局隨機搜索能力及卷積神經網絡挖掘特征聯系能力,克服卷積神經網絡因初始權重、閾值、網絡結構參數、優化器及全連接層神經元數等容易導致的網絡波動、陷入局部最優問題。
將卷積神經網絡的卷積層與全連接層的初始權重、閾值、網絡結構參數及優化器等作為遺傳算法的種群,通過python語言字典中一個鍵對應多個值的形式來保存種群內的所有個體。
適應度函數是遺傳算法評價各個體好壞的依據,一般將適應度高的個體進行下一代遺傳操作。本文將卷積神經網絡訓練和預測后使用二分類交叉熵作為損失函數,由損失函數得到的準確率來定義適應度函數,方法如式(5)所示;卷積神經網絡訓練中使用EarlyStopping()函數,并設定patience的值為5,如果epoch為5的范圍內精確度不再提升則停止訓練。

(5)
選擇算子是將當前種群中選擇好的個體作為父代將基因傳給下一代,本文首先利用利用式(6)計算平均適應度,將其作為選擇適應度大于平均適應度時的閾值(sum為種群適應度的總和,popsize為種群的大小)。使用sorted函數對適應度進行排序,對群體中所有個體獲得的適應度大小進行排序,然后根據保留率選取適應性強的個體作為父代,最后從剩余適應性不強的幸存個體中按選取率進行選取。
變異算子是從種群中根據已知的變異率,隨機選取某個個體所對應的鍵,再隨機選取該鍵所包含多個值中的一個。交叉算子是遺傳算法中產生新個體的來源,本文首先利用式(7)確定需要繁殖孩子的大小(其中pl為父代的大小),然后根據需要孩子的量進行繁殖;在繁殖的過程中,首先隨機產生兩個不同的父代和母代,然后隨機產生交叉點,再將父代和母代進行交換,最后通過變異算子對孩子進行變異。

(6)
dl=popsize-pl
(7)
1)建立卷積神經網絡基本框架,確定種群大小和最大遺傳代數等相關參數;
2)初始化種群,同時將損失函數值和準確率函數值設置為0;
3)將初始權重、閾值、網絡結構參數、優化器以及全連接層神經元數等編碼成染色體;
4)由3)中的染色體,隨機生成一個完整的卷積神經網絡,并進行相關訓練;
5)計算染色體的適應度值,如果符合優化標準,則進入9);
6)對染色體進行選擇操作;
7)對染色體進行交叉操作;
8)對染色體進行變異操作;
9)查看新個體是否滿足最優標準或是否達到最大進化代數,若滿足繼續下一步;否則返回步驟5);
10)使用遺傳算法得到的最優初始權重、閾值、網絡結構參數、優化器及全連接層神經元數等,更新卷積神經網絡作為新的網絡訓練模型。
根據上節提出的基于遺傳算的卷積神經網絡優化算法,提出一種基于優化卷積神經網絡的入侵檢測算法(Genetic Algorithm Optimization Convolutional Neural Network Intrusion Detection Algorithm,GAOCNN-IDA)。利用遺傳算法的全局尋優能力和卷積神經網絡的特征提取能力,對入侵數據進行檢測,將通過GAOCNN算法獲得的初始權重、閾值、網絡結構參數、優化器及全連接層神經元數等,更新到基于卷積神經的入侵檢測算法中,并重新進行訓練測試,通過對攻擊數據和正常數據進行學習來判斷入侵數據的屬性。GAOCNN-IDA主要步驟如下:
1)將KDDCUP99數據集進行特征提取,篩選出所需要的數據;
2)對特征提取之后的數據集進行數值化處理,保證所數據為數值類型;
3)對數值化數據集進行歸一化處理;
4)根據1)~3)確定卷積神經網絡的基本框架;
5)調用GAOCNN算法優化所使用的卷積網絡的初始權重、閾值、網絡結構參數、優化器及全連接層神經元數等;
6)對卷積神經網絡進行訓練;
7)采用訓練好的卷積神經網絡對入侵數據進行檢測。
實驗數據采用KDDCUP99網絡入侵數據集,該數據集約有500萬條連接數據記錄,每一條數據記錄包含41個特征屬性和1個類標簽屬性,數據集包含四種攻擊類型和一種正常數據標簽。如下是部分的數據記錄:
0,tcp,http,SF,181,5450,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,5,5,0.00,0.00,0.00,0.00,1.00,0.00,0.00,6,6,1.00,0.00,0.17,0.00,0.00,0.00,0.00,0.00,normal.
0,tcp,private,SH,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1.00,1.00,0.00,0.00,0.50,1.00,0.00,14,1,0.07,0.71,0.50,0.00,0.50,1.00,0.00,0.00,nmap.
0,tcp,http,SF,54540,8314,0,0,0,2,0,1,1,0,0,0,0,0,0,0,0,0,1,3,0.00,0.00,0.00,0.67,1.00,0.00,1.00,2,2,1.00,0.00,0.50,0.00,0.00,0.00,0.00,0.00,back
5.1.1 特征的提取
KDDCUP99數據集的每一個連接都由41維特征組成,樣本數據集數據非常多,所以要從中選擇合理的數據進行實驗分析。本文實驗根據文獻[16]所提出的觀點,將對決策判定沒有任何作用的屬性刪除,即刪除數據集中land、urgent、su_attempted、num_outbound_cmds和is_hot_login五項屬性。
5.1.2 數據數值化處理
由于該數據集每一條正常或者異常數據記錄都含41個特征屬性,大部分特征數據是數值型的,但協議名、網絡服務類型和flag標志位為非數值型,為便于卷積神經網絡計算和處理,將這些非數值數據進行數值化編碼。例如,對于protocol_typr特征,其包含3個符號:tcp,udp,icmp,將其編碼為0,1,2。同理對網絡服務類型和flag標志位進行相應的數值化處理。
5.1.3 數字特征歸一化
為了讓卷積神經網絡更容易訓練,運行時的收斂速度更快,實驗選擇對所有的數據按照式(8)進行歸一化處理。

(8)
其中Mmin為某一列中最小的值,Mmax為某一列中最大的值,y為需要歸一化的值。將“kddcup.data_10_percent_corrected”數據用做訓練數據,將“corrected”數據用做測試數據,詳見表1,將訓練數據集和測試數據集都經過上述數據預處理。

表1 KDD數據類型
實驗在臺式計算機上完成,配置為:Inter3.50GHz處理器,128GB內存,64位Windows10操作系統;編程工具為基于tensorflow的keras。遺傳算法相關參數設置如表2所示,卷積神經網絡部分參數優化范圍如表3所示。

表2 遺傳算法相關參數

表3 卷積神經網絡參數優化的部分范圍
5.3.1 入侵檢測核心指標
入侵檢測的核心指標主要是準確率(accuracy,Ac)、檢測率(detection rate,Dr)和誤報率(flase alarm,Fa),其計算方法如下:
(9)
其中,Tp為正確分類攻擊數據的數目,Tn為正確分類正常數據的數目,Fp為錯誤分類正常數據的數目,Fn為錯誤分離錯誤數據的數目。
5.3.2 GAOCNN-IDA與CNN(未優化的普通卷積神經網絡)比較
為證明本文所提算法的有效性,利用遺傳算法優化后的卷積神經網絡與具有相同卷積層的未優化的卷積神經網絡進行攻擊檢測比較,其中卷積神經網絡結構參數如表4所示,訓練次數epoch都為30,batch_size=1000,所用數據集都經過前述預處理過程,得到檢測結果如表5所示。CNN1算法的準確度為90.53%,檢測率為81.36%,誤報率為2.52%;而GAOCNN1-IDA算法的準確率提高到92.26%,檢測率提高到83.13%,誤報率則降為2.12%;CNN2算法的準確度為91.07%,檢測率為83.08%,誤報率為2.03%;而GAOCNN2-IDA算法的準確率提高到94.67%,檢測率提高到88.43%,誤報率則降為1.31%;CNN3算法的準確度為91.54%,檢測率為83.89%,誤報率為1.71%;而GAOCNN3-IDA算法的準確率提高到94.86%,檢測率提高到89.67%,誤報率則降為1.28%;實驗結果表明,GAOCNN-IDA算法的準確率和檢測率有明顯提高,誤報率有一定程度降低。

表4 卷積神經網絡結構參數

表5 GAOCNN-IDA與CNN性能比較
5.3.3 GAOCNN-IDA與其它機器學習算法比較
將本文GAOCNN2-IDA算法與典型機器學習算法應用于入侵檢測進行對比,所用數據集同樣都經過上述預處理過程,檢測結果如表6所示。其中,基于支持向量機(Support Vector Machine, SVM)的入侵檢測算法準確率為90.13%,檢測率為82.67%,誤報率為6.28%;基于BP(Back Propagation)神經網絡的入侵檢測算法準確率為76.81%,檢測率為70.14%,誤報率為8.23%;基于決策樹C4.5的入侵檢測算法準確率為86.18%,檢測率為80.29%,誤報率為6.43%;而 GAOCNN2-IDA算法準確率為94.67%,檢測率為88.43%,誤報率為1.31%。GAOCNN2-IDA算法的準確率和檢測率明顯高于其它典型機器學習算法,誤報率明顯低于其它典型機器學習算法。因此,本文提出的GAOCNN2-IDA算法明顯優于其它幾種典型機器學習算法。

表6 GAOCNN2-IDA與其它典型機器學習算法性能比較
卷積神經網絡算法應用于入侵檢測領域,其檢測性能與卷積層、全連接層的初始權重、閾值、網絡結構參數、優化器及全連接層神經元數等密切相關。本文利用遺傳算法強大的全局尋優能力,通過遺傳算法的選擇、交叉和變異等操作獲得最優初始權重、閾值、網絡結構參數、優化器及全連接層神經元數等來優化卷積神經網絡;將優化后的卷積神經網絡應用于入侵檢測,對入侵數據進行學習和識別。與BP神經網絡、決策樹、支持向量機等算法相比,本文的算法對入侵數據檢測的準確率、檢測率有明顯提高,誤報率有明顯降低
利用遺傳算法優化卷積神經網絡雖有時間消耗,但優化過程可獨立于檢測過程。更為重要的是一旦獲取到最優初始權重、閾值、網絡結構參數、優化器及全連接層神經元數等,可縮短卷積神經網絡訓練和檢測時間。