李 勇 張 波
(重慶郵電大學自動化學院 重慶 400065)
隨著互聯網規模的不斷擴大,互聯網與人們的生活融合得越來越深,其正在改變人們的生活、學習和工作方式,但所面臨的各種安全威脅也越來越嚴重。如何實時和快速地識別各種攻擊,特別是不可預見的攻擊,是目前一個不可避免的問題。入侵檢測系統(IDS)作為信息安全領域一項重要的成果,相比于傳統的靜態安全技術,如防火墻、漏洞掃描機,可以識別已經發生的入侵或者正在發生的入侵,已經成為信息安全領域的重要研究對象。
近年來,機器學習方法已經被廣泛應用在識別各種類型的攻擊中,基于機器學習的入侵檢測系統可以幫助網絡管理員來判斷系統是否遭受到入侵。然而,隨著網絡設備和技術的不斷更新,大數據等新技術的興起,產生了大量的網絡數據。傳統的機器學習算法大多屬于淺層學習算法,旨在強調特征工程和特征選擇,已經不能解決實際網絡中出現的大量入侵數據的分類問題。隨著網絡數據量的急劇增長,其精度會不斷下降,而且這種增長還將繼續。
Hinton教授在2006年提出深度學習理論后[1],深度學習理論和技術迅速崛起,在此背景下,相關的論文和實踐研究成果層出不窮,并取得了顯著的成果,尤其在圖像識別[2]、語音識別和動作識別[3-4]領域。入侵檢測技術本質上是一種分類技術,而卷積神經網絡能夠自動發現數據之間的相關性,且深度CNN可以有效地檢測零日攻擊等新的攻擊類型,因此將深度CNN應用到入侵檢測中是非常有價值和意義的。
在之前的研究中,提出了一些基于傳統機器學習的方法,包括SVM、K近鄰(K-Nearest Neighbour, KNN)、ANN、Random Forest(RF)等,并在入侵檢測系統中取得了成功。近年來,深度學習作為機器學習的一個分支,在入侵檢測中得到了越來越多的應用。研究表明,深度學習完全超越了傳統的學習方法。Salama等[5]將深度置信網絡運用到入侵檢測中,其準確率高于傳統的SVM方法。Kim等[6]將循環神經網絡應用到入侵檢測,使用KDD99數據集進行驗證,通過分析可知該方法在入侵檢測中具有良好的檢測能力。孔令智[7]提出了基于卷積神經網絡的入侵檢測模型,通過與傳統的機器學習方法比較,證明該模型在漏報率和誤報率上都大幅度降低。武天舒[8]提出一種改進的CNN入侵檢測模型,使用信息熵和互信息進行特征降維,使用檢測率、誤報率、召回率等多個入侵檢測系統指標評估,其提出的模型在網絡入侵檢測的檢測率上可達到95%以上。通過以上研究表明,深度學習是入侵檢測的下一個研究方向。
卷積神經網絡主要包括輸入層、卷積層、池化層以及全連接層。卷積層的輸入來源于輸入層或采樣層,通過上一層的輸出向量和本層的卷積核進行卷積運算,其公式如下:
(1)
采樣層對卷積層輸出的數據進行采樣處理,主要為了降低網絡特征的復雜度。其操作如下:
(2)
全連接層主要實現將所有的二維特征圖轉換為一維特征圖作為全連接層的輸入,如下所示:
(3)
反向傳播主要利用網絡的實際輸出與期望輸出的差值來調節網絡參數,主要優化卷積核參數k、全連接層的網絡權重ω以及各層的偏置b。
(1) 卷積層。這里假設每個卷積層l后都有一個下采樣層l+1,第l層的第j特征圖的殘差公式如下:
(4)
則卷積層l的偏置的梯度b可以表示為:
(5)

創造力的要素很多,如智力、認知風格、價值、目的、信念和策略等等。智力,在學校教育中被放在首要位置。但智力只是創造力的一個方面的要素,還有很多非智力方面的要素是不能忽略的。過去的教育往往傾向于智力因素的培養,忽視了非智力因素的作用。智力與非智力因素都是人創造力發展的重要方面。其中,想象力在創造性的發揮中至關重要。有的學者認為想象力是最重要的。一個人即便掌握了許多知識,但如果缺乏想象力,想象不到知識間的聯系與新的可能性,便不能體現創造力。知識、智力固然很重要,非智力因素如想象力等也很重要。
(6)

(2) 采樣層。假設層l為下采樣層,l+1層為卷積層,則采樣層l的第j特征圖的殘差計算公式可表示為:
(7)
則采樣層的偏置的梯度可以表示為:
(8)
為了得到采樣層權重的梯度,我們定義下式:
(9)
則采樣層的權重β的梯度為:
(10)
深度CNN在圖像識別和語音識別上獲得了重大的成功,大部分研究都表明了網絡深度的重要性。在其重要性的驅使下,一個問題誕生了:是否靠簡單的堆疊網絡來加深網絡就能取得更好的成績。但通過多次的實驗表明,隨著深度的增加,準確率在下降。問題的出現不是由過擬合造成的,而是由梯度消失造成的。針對此問題,微軟研究院設計了一種深度殘差網絡。
使用H(x)表示任意的理想映射,假設某隱含層的映射關系為H(x)-x→F(x),多個線性層組合可以近似為一個復雜函數。假設隱含層的殘差近似于某個復雜函數,則隱含層可以表示為:
H(x)=F(x)+x
(11)
這樣就得到了一種新的殘差結構。殘差單元的輸出就可以由多個卷積層級聯的輸出和輸入元素相加(需保證輸入元素和卷積層級聯后的維度相同),經過Relu激活函數后得到,形成殘差網絡結構。其典型的結構如圖1所示。

圖1 經典殘差結構[10]
本文參考Google團隊的Inception結構和何凱明博士提出的殘差網絡,得出一種基于Inception結構和殘差神經網絡結合的CNN模型,如圖2所示。

圖2 深度殘差模型[11]
深度殘差結構使用1×1和3×3的卷積結構融合在一起。使用兩個3×3卷積替換5×5的卷積操作,既可以加快運算速度又可以加深網絡的深度。為了減少計算復雜度,同時對輸出進行降維,在卷積操作前加入1×1的卷積核[11]。因需要進行層之間的融合,對上面的各個操作進行零填充,在3×3的卷積操作后加入pad為1的零填充層,5×5的卷積操作后加入pad為2的零填充層。
本實驗模型由輸入層、6個inception_resnet層、2個卷積層、1個采樣層、2個Dropout層和3個全連接層組成。在卷積層后加入Relu函數,前兩層全連接層使用Sigmoid激活函數,最后一層用Softmax函數進行最終的分類。除全連接層以外的所有層都加入了BN(Batch Normalization)層[12]。輸入層為11×11維數據;第一個卷積使用3×3的卷積模塊,步長設置為1;第二個卷積模塊也使用3×3的卷積模塊,步長設置為2;采樣層使用動態自適應采樣算法,采樣大小設置為4×4,步長設置為默認大小,全連接層更加容易使模型過擬合,因此需要使用Dropout來避免過擬合[13]。其他參數取上文所獲取的最優參數,最終的實驗模型如表1所示。

表1 入侵檢測整體模型設計
本實驗的硬件環境:Windows 10系統,Intel 酷睿i7 5500U雙核CPU,8 GB內存。軟件環境:Python 3.6、Oracle數據庫、基于TensorFlow的keras深度學習框架。
本文選用的數據為KDDCUP99數據集。該數據集由Stolfo等[14]準備,并且基于DARPA(美國國防部高級研究計劃局)在1998年的IDS評估項目中獲取的數據所構建。共采集了九周的網絡連接和系統審計數據,通過仿真不同種類的用戶類型、網絡流量以及攻擊方式,得到KDDCUP99數據集[15]。
因為完整數據集的大小超過4 GB,一般的入侵檢測系統和模型難以訓練。所以本實驗使用KDD CUP99數據集中的“kddcup.data_10_percent”作為網絡的訓練集,“corrected”作為網絡的測試集,其中訓練集共494 021條,測試集共311 029條。
KDDCUP99數據集的每條數據都具有41維,其中38維是數字特征,其他3維為符號特征,將每個特征屬性進行預處理,消除特征之間的差異性,使其具有可比性。其過程可由以下兩部分組成。
(1) 符號特征的數字化。KDDCUP99數據集包含38個數字特征和3個字符特征,由于基于卷積神經網絡的入侵檢測算法的輸入值要求是一個數字矩陣,因此需將protocol_type、service和flag特征轉換為數字形式。例如protocol_type特征具有3種類型的屬性,將其通過One-hot編碼的方式轉換為對應的數值類型:TCP、UDP和ICMP其對應數值被編碼為二進制向量(1,0,0)、(0,1,0)和(0,0,1)。類似地,service特征共有70種屬性類型,flag特征具有11種屬性類型,轉換之后,41維的特征向量映射為122維特征向量。
(2) 數字特征的歸一化。為了消除因為量綱導致不同特征之間具有的巨大差異,需要對剩下的38個特征向量進行歸一化,采用最大最小歸一化方法,其公式如下:
(12)
式中:xmin、xmax分別為每一維特征項的、最小值和最大值,x為原始特征項,xnorm為歸一化后的值。
入侵檢測的評價指標主要包括準確率、誤報率以及漏報率,其中,定義TN為數據為正常且預測也為正常的數據量,TP為數據為異常且預測也為異常的數據量,FN為數據為異常而預測為正常的數據的數量,FP為數據為正常而預測為異常的數據的數量,則準確 率、誤報率、檢測率分別為:
(13)
(14)
(15)
為了驗證此算法對于入侵檢測系統的有效性,輸入特征項共122維,舍棄其中is_hot_login特征項,此項特征的值都為0,對入侵檢測分類結果作用為零。將其轉換為11×11維的二維的“圖像數據”,全連接層采用Softmax進行分類。
(1) 二分類實驗。對入侵檢測算法進行二分類,正常標簽設置為0,攻擊標簽設置為1,表2顯示了改進的深度CNN與Lenet-5以及GoogleNet在各個攻擊類型上的檢測率對比。可以看出,深度CNN算法對Normal、Probe、DoS、U2R、R2L的準確率分別為97.82%、97.73%、97.90%、88.54%、33.87%,R2L的檢測率比Lenet-5和GoogleNet算法都高,U2R的檢測率也相應地有所提高。由于U2R和R2L在訓練集中的比例非常低,這兩種類型產生的后果非常嚴重,因此提高這兩種攻擊的檢測率十分具有必要。

表2 深度CNN與Lenet-5以及GoogleNet的各個攻擊類型的準確率對比 %
(2) 五分類實驗。與二分類實驗主要不同在于將攻擊具體化分類,正常的設置為1,四大攻擊類依次設置為2~5。表3顯示了五分類實驗中測試集在改進入侵檢測算法上的混淆矩陣。可以看出,改進的入侵檢測算法在五分類實驗中準確率為93.45%,在對稀疏攻擊U2R和R2L上,召回率提高到31.58%和36.67%。這進一步表明了改進算法具有強大的檢測能力。

表3 深度CNN在測試集上五分類實驗混淆矩陣
表4中將提出的CNN算法與常見機器學習算法的性能結果進行比較,在性能上有所提高。相比于文獻[16]提出的基于粒子群優化的特征選擇和使用樸素貝葉斯(NB)分類器進行分類的入侵檢測算法,本文算法在檢測率上提高了4%,誤報率下降0.5%。文獻[17]提出的基于GA的SVM算法,GA采取新的適應度函數,去優化SVM的參數,本文算法的檢測率和誤報率能與該入侵檢測算法基本持平。本文較文獻[18]提出的RF算法在準確率和檢測率上都有所提高,與其改進的算法的性能基本一致。深度學習具有強大的特征提取能力,深度卷積神經網絡相比傳統機器學習算法在入侵檢測中具有較大的優勢。

表4 深度CNN和機器學習算法性能對比 %
表5將提出的CNN算法與文獻[19]所提出的深度學習算法的性能進行比較,可以看出,本文的CNN算法在入侵檢測中的檢測率高于DBN,誤報率略低于DBN,檢測率和誤報率與SMOTE-DBN算法基本持平。后期可以進一步改進本文算法來提高入侵檢測能力。

表5 深度CNN和其他深度學習算法性能比較 %
本文對入侵檢測和卷積神經網絡展開研究,利用卷積神經網絡在處理分類問題上的長處,將卷積神經網絡用在入侵檢測中,提出了一種基于深度卷積神經網絡的入侵檢測算法。通過KDDCUP99數據進行訓練和測試,與文獻[16-18]所提出的經典學習算法SVM、RF、NB進行比較,準確率和檢測率均優于其他經典的機器學習算法,與其改進算法在性能上基本持平。本文算法較文獻[19]所提出的深度學習算法DBN在檢測率和誤報率上都有所提高,與其提出的改進深度學習算法的性能指標基本一致,證明本文算法在入侵檢測領域的有效性。同時與基于Lenet-5的CNN算法和GoogleNet算法進行比較,對稀疏攻擊類型R2L和U2R的檢測率都有所提升,但在檢測稀疏攻擊類型R2L方面需要進一步改進。