王 月,江逸茗,蘭巨龍
(戰略支援部隊信息工程大學,鄭州 450001)
信息通信系統(包括服務器、網絡通信設備等)通常要處理大量敏感的用戶數據,而這些數據容易受攻擊。網絡威脅和攻擊帶來了嚴重的安全問題由此激發了組織和個人對安全工具和系統越來越大的需求[1]。靈活、可靠、檢測準確率高的實時入侵檢測系統隨著網絡攻擊技術的不斷更新而成為應對安全問題的基本需求。
入侵檢測系統根據網絡數據來源可以分為基于網絡的入侵檢測系統和基于主機的入侵檢測系統?;诰W絡的入侵檢測系統通過從網絡設備如交換機、路由器等收集獲得的網絡流量分析和檢測攻擊行為;基于主機的入侵檢測系統可以從不同種類的日志文件、計算機資源利用率中提取系統活動事件,進而對異常進行檢測?;诰W絡流量的入侵檢測是本文的主要關注點。近年來,深度學習技術在入侵檢測領域迅速發展并且出現了很多包括有監督分類方法[1-5]和無監督聚類方法[6-8]在內的相關方法。在基于深度學習的入侵檢測方法中,基于深度神經網絡的入侵檢測系統(Deep Neural Network in Intrusion Detection System,IDS-DNN)和基于卷積神經網絡與長短期記憶(Convolutional Neural Networks and Long Short Term Memory,CNN-LSTM)的檢測模型是其中的典型代表。IDS-DNN的特點是具有多層隱藏層并且相鄰隱藏層之間是全連接方式,使得該模型具有很強的表征能力;但IDS-DNN 的網絡規模會隨著輸入樣本的維度線性增加并且計算效率降低。在CNN-LSTM 模型中,CNN 的共享卷積核能夠縮小神經網絡規模并提高計算效率,LSTM 能夠學習時序特征;但CNN中的池化層會丟失大量有價值的信息,而且LSTM 模型的計算復雜度較高。本文對目前的網絡入侵檢測方法進行調研,重點關注基于深度學習的網絡入侵檢測方法的研究,發現仍存在以下問題:1)大部分方法所用數據集比較過時,年代久遠的KDD99 數據集被大量用于驗證,因此無法反映不斷更新變化的攻擊特征而缺乏實用性;2)現有的基于異常的入侵檢測統存在高誤報率并且在較新的數據集上由于復雜的網絡攻擊行為表現出較低的檢測準確率;3)在分類任務中,盡管數據特征很重要,但有些表示形式和相應的誘導度量可能對分類起副作用。以上述三個問題為研究動機,為進一步提升分類模型的檢測準確率和計算效率,利用三元組網絡模型學習高效的距離表示,并且學習對檢測結果更有用的特征,進而基于距離特征進行正常和異常攻擊行為的識別[9]。本文提出一種改進三元組網絡(improved Ttriplet Nnetwork,imTN)結合K 近鄰(K-Nearest Neighbor,KNN)算法的網絡入侵檢測模型imTNKNN,以提升檢測準確率和計算效率,并在最近公開的入侵檢測數據集CSE-CIC-IDS2018(以下簡稱IDS2018)進行了驗證。
本文的主要工作包括:
1)將經典的深度度量學習模型三元組網絡引入網絡入侵檢測領域并對其進行多方面改進,而且通過實驗驗證了三元組網絡適用于入侵檢測領域。
2)結合KNN 進一步提升檢測準確率,將三元組模型輸出的待測樣本與各個正例樣本的距離向量,以及待測樣本與各個負例樣本的距離向量作為KNN分類器的輸入,由KNN分類器進一步學習得到更加準確的分類結果。
3)采用最近的公開數據集IDS2018 進行實驗評估,并與多個表現良好的模型進行比較。
網絡入侵檢測方法可以分為基于統計的檢測方法、基于信息論的檢測方法、基于傳統機器學習的檢測方法和基于深度學習的檢測方法。
1.1.1 基于統計和信息論的方法
基于統計的方法大多廣泛地應用于信息技術發展初期,包括混合模型和主成分分析[10]等?;谛畔⒄摰姆椒?,主要使用信息熵、條件信息熵、信息增益、信息成本作為數據集的特征衡量指標[11]。
1.1.2 基于傳統機器學習的方法
傳統機器學習包括有監督分類方法和無監督聚類方法。Heller 等[12]將支持向量機(Support Vector Machine,SVM)用于網絡異常檢測,但假設訓練集中不能存在噪聲,在實際中不可行。Yang 等[13]將基于規則的方法用于采用深度分析協議的IEC 60870-5-104 數據采集與監視控制網絡?;趥鹘y機器學習的無監督聚類包括K 均值聚類和層次聚類等方法。吳劍[14]提出了一種將遺傳算法和K均值聚類結合的入侵檢測方法以解決入侵檢測中的特征選擇問題。Noorbehbahani 等[15]提出一種半監督流分類算法,使用增量聚類算法和監督方法創建初始分類模型,支持不平衡數據,并使用數量有限的帶標簽實例和有限的存儲來實現高性能。傳統機器學習入侵檢測方法存在的主要問題包括:缺乏一套協商一致的輸入特征以實現特定目標,例如網絡安全、異常檢測和流量分類等;與深度學習模型相比,傳統機器學習方法的檢測準確率不夠高。因此在需要智能分析和高維數據學習時,傳統機器學習通常不符合要求。
1.1.3 基于深度學習的方法
近年來,出現了很多基于深度學習的網絡入侵檢測方法,在檢測性能上更具優勢。Kim 等[2]采用長短期記憶(Long Short Term Memory,LSTM)模型進行網絡入侵檢測,可以很好地檢測到攻擊,但未能解決誤報率高的問題。在此基礎上,Zhu等[16]在LSTM 中引入注意力模型,在多分類問題上提高了準確性。Li 等[3]在NSL-KDD 公開數據集和邊界網關協議(Border Gateway Protocol,BGP)路由數據集上對比了多種LSTM 模型和門控循環單元(Gated Recurrent Unit,GRU)模型的檢測準確率。Vinayakumar 等[1]設計了一種深度神經網絡入侵檢測模型,并對網絡結構和參數進行優化設計。另有一些研究提出的混合神經網絡模型能取得良好檢測效果,如Yuan等[17]和Saaudi等[18]將卷積神經網絡與長短期記憶(CNNLSTM)模型用于內部威脅檢測,對日志文本數據進行用戶行為建模分析;Agarwal 等[19]同樣利用CNN 和LSTM 的組合優勢實現流量數據的攻擊檢測。但是這些方法大部分仍然使用過時的網絡數據集進行驗證,對當前現實世界的網絡流量變化缺乏考慮。深度學習模型的計算效率遠低于傳統的機器學習方法,需要進一步提升深度學習模型計算效率以滿足入侵檢測的實時性要求。
深度度量學習已經廣泛應用于圖像識別和人臉檢測等領域,利用不同對象的相似度分析來完成任務。三元組網絡是由Hoffer等[9]提出的一種典型深度度量學習模型,核心思想是通過學習使相似樣本之間的距離盡可能小而不相似樣本之間的距離盡可能大。實驗表明在多個圖像數據集上三元組網絡的分類準確率比CNN 等模型更突出,為進一步利用三元組網絡的性能優勢,很多改進算法被提出。如Ustinova 等[20]提出了基于直方圖損失函數的三元組網絡。在直方圖損失函數中,相似樣本對和不相似樣本對排列組成概率分布,將相似樣本對和不相似樣本對的累計密度分布相乘,再進行積分得到直方圖損失函數。通過直方圖損失函數可以縮小相似樣本和不相似樣本之間的重疊。實驗表明,在行人重識別數據集上基于直方圖損失函數的方法擁有較好的識別率;但該方法的局限是相似性評估仍采用單一方式,即樣本對的自相似性。Song等[21]認為采用傳統的方法可能會使同類別相似性差異較大,并且提出了一種基于簇的相似度度量方法;但該方法需要采用大量貪婪搜索操作尋找簇中心以獲得局部最優值,計算效率較低。Wang 等[22]認為現有深度度量學習模型的不足之處是普遍采用單一的相似度度量,因此提出了一種多重相似度損失函數,結合了樣本對之間的自相似性、負樣本對之間的相對相似性以及正樣本對之間的相對相似性等多種相似度衡量方式。實驗表明該方法在多個圖像檢索數據集上的性能優于其他方法。
不少相關研究證明了三元組網絡的表現優于傳統的深度學習模型,目前主要應用于圖像處理領域。本文探索了如何將三元組網絡用于入侵檢測領域,并通過優化設計網絡結構、損失函數以進一步提升入侵檢測方法的檢測準確率、計算效率等性能指標。
深度度量學習過程中產生了相似度距離特征,可用于分類。在此首次將一種典型的名為三元組網絡的深度度量模型應用于網絡入侵檢測,并改進了傳統三元組網絡以在網絡入侵檢測中發揮優勢,而且結合KNN 分類器進一步學習得到二分類結果,實現高精度網絡入侵檢測。
三元組網絡中,三個樣本a、b和c作為輸入。其中,樣本a和b屬于同一類別,樣本c屬于不同類別。假設樣本a和樣本b間的距離為d1,樣本a和樣本c間的距離為d2。學習目標是最小化同類樣本之間的距離而最大化不同類樣本之間的距離。

其中距離di用歐氏距離計算,公式如下:

距離特征d1和d2歸一化后,距離向量中各元素和等于1,產生輸出向量:

每個(a,b,c)三元組所對應的輸出向量的取值范圍是[0,1]。傳統三元組網絡架構如圖1所示。

圖1 三元組網絡架構Fig.1 Architecture of triplet network
在2.3 節中詳細描述了對傳統三元組網絡的改進,包括卷積層結構和參數、批量歸一化(Batch Normalization,BN)層和損失函數以最大化入侵檢測準確率和計算效率。
KNN 因為簡單有效且容易實現而廣泛應用[23]。KNN 算法的基本思想:首先,把訓練樣本作為歐氏空間的點存放,所有樣本對應于n維空間的點,根據客觀事實或專家經驗,給訓練數據設定分組;然后,挑選訓練樣本集中與待分類樣本距離最近的k個樣本;最后,根據這距離最近的k個樣本的類別標簽對待預測樣本進行分類。
近鄰數k是KNN 的參數,對模型訓練精度起決定性作用,本文主要通過實驗確定最優k值。
三元組網絡預測模型輸出樣本間的距離向量,將待測樣本與正例樣本距離求和得到d1,待測樣本與負例樣本距離求和得到d2。理想情況下,當d1≤T,認為待測樣本是正例;當d1>T,認為待測樣本是負例。用于網絡入侵檢測時,由于正例樣本間也存在較大差異,難以確定合適的閾值T。為解決這個問題,將三元組模型輸出的距離向量作為KNN 分類器的輸入,由KNN分類器進一步學習得到二分類結果。
為提升KNN 的計算效率和檢測精度,將得到的距離向量按照先后次序分成s組,對每組向量求平均值,將這s個平均距離向量作為KNN 的輸入。imTN-KNN 模型架構如圖2所示。

圖2 imTN-KNN架構Fig.2 imTN-KNN architecture
適用于網絡入侵檢測領域的改進三元組網絡模型中CNN網絡結構設計如表1所示。

表1 改進三元組網絡采用的CNN結構Tab.1 CNN structure employed by improved triplet network
在改進三元組網絡中移除了BN層。BN層在圖像處理領域主要應用于輸入圖像的數據分布和輸出數據的分布不一致或有很大變動的情況,它在該應用領域具有良好的表現;但在網絡入侵檢測領域,輸入與輸出的數據分布一般一致,因此去掉它影響不大。相反,加入了BN層導致輸入輸出的數據分布發生了不必要的變化從而造成了信息損失,進而給檢測準確率的提升帶來了負面影響。此外,移除BN層可以減小內存消耗并提升計算效率[24]。
損失函數一般用于機器學習中預測模型的預測準確率衡量。損失函數的選擇需要考慮很多問題,并且發現一個適合于大部分數據集的損失函數比較困難。
在三元組網絡中,損失函數的設計對于提升模型性能指標比較關鍵,近年來出現了不少有關三元組損失函數的研究。Hoffer 等[9]提出了主要關注同類樣本和不同類樣本的相似性的經典三元組損失函數,通過訓練減小同類樣本的相似距離而增大不同類樣本之間的相似距離。這種方法生成的大量成對樣本是高度冗余的且包含很多無信息樣本。后來又出現了很多其他類型的用于度量學習的損失函數,包括提升結構損失函數[25]、直方圖損失函數[20]、層次三元組損失函數[26]等。經典三元組損失函數在批量訓練大小較小時很難利用所有的樣本對之間的關系,為了應對這個問題,研究者提出了提升結構損失函數;但結構損失函數僅隨機采樣相等數量的正例樣本對和負例樣本對,依然損失了大量信息。直方圖損失函數將同類樣本對和不同類樣本對進行排列組成概率分布,通過概率分布使得不同類樣本的相似性遠小于同類樣本的相似性。直方圖損失函數的優點是不需要額外參數,并且不需要困難樣本挖掘,但缺點是計算復雜度較高。在層次三元組損失函數中,建立了所有類的層次樹,樣本對的選擇依據一個動態的邊界閾值。層次三元組損失函數雖然提升了檢測準確率等性能但實現比較復雜。Wang 等[22]對度量學習中的損失函數進行了全面深入分析,研究了這些損失函數的共性,發現關鍵的影響因素是數據樣本的包含自相似度和相對相似度在內的多種相似度,其中相對相似度主要取決于其他樣本對。但大多數現有方法僅探索了自相似度和相對相似度其中的一個因素,于是提出了多重相似性損失函數。本文最終采用Wang等[22]提出的多重相似性損失函數,它從多個角度對相似性進行衡量,克服了以往對相似度衡量的片面性。具體地,多重相似性損失函數能夠從自相似性、負例相對相似性和正例相對相似性三方面評估損失值,該損失函數表達式為:

其中:m為訓練樣本數,Sij表示兩個樣本i和j的相似度。在改進三元組網絡模型中采用多重相似函數獲得了兩方面的收益:一是通過對嵌入大小embedding_size進行調參的方式明顯提升實驗部分的檢測準確率;二是提升了模型訓練的收斂速度,訓練過程中經過第一次迭代就獲得了最好的檢測準確率,大幅節省了訓練時間、提升了計算效率。
此外,使用高效的自適應學習率優化器Adam[27],為不同的參數設計獨立的自適應性學習率。學習率值設定為0.000 1,β1=0.9,β2=0.999。
算法主要包括數據預處理、模型訓練和模型測試等主要步驟,模型訓練和模型測試階段通過不斷迭代來得到最優的網絡參數(如圖3所示)。

圖3 imTN-KNN流程Fig.3 Flowchart of imTN-KNN
公開基準數據集IDS2018 包含了提取的80 多個特征數據,這些數據需要預處理,包含兩個操作:一是將無窮大或者空值異常數據進行修正和補齊;二是進行歸一化處理。為保證數據盡量不損失信息并且確保數據均映射到[0,1]區間內,采用最小值-最大值函數(Min-Max)進行歸一化以實現對原始數據的等比縮放。函數Min-Max定義為:

經過預處理的數據集被分成訓練數據集和測試數據集分別用于訓練和測試階段。以上所有樣本子集都從總樣本集中隨機選取,不作人為篩選。
實驗硬件環境包括:Intel Xeon(Cascade Lake)Platinum 82692.5 GHz/3.2 GHz 的4 核心中央處理單元(Central Processing Unit,CPU),8 GB 內存。在基準數據集IDS2018 上進行實驗評估,與現有性能良好的深度學習算法進行對比,驗證imTN-KNN的有效性。此外,imTN-KNN還與淺層學習方法主成分分析(Principal Component Analysis,PCA)和KNN 相結合的PCA+KNN、SVM[28]、PCA+SVM[28]和樸素貝葉斯(Naive Bayes,NB)[29]進行了對比,驗證了改進三元組網絡模型進行特征提取的高效性。
IDS2018 是一個包含大量網絡流量和系統日志的數據集,通過10 天的數據采集獲得,每天的數據形成一個數據子集,總大小超過400 GB。該數據集包括7 種攻擊類型和16 種子類型攻擊的有場景標記的數據,包括暴力破解、拒絕服務(Denial of Service,DoS)攻擊、監視網絡攻擊和滲透攻擊等。通過特征生成工具CICFlowMeter-V3[30]分析IDS2018 數據集,生成約80 種特征數據,表征了網絡流量和數據包的活動行為。在相關研究基礎上,本文選取兩個檢測精度比較高的數據子集(分別簡寫為Sub_DS1 和Sub_DS2)和一個檢測精度比較低的數據子集(簡寫為Sub_DS3)作為實驗的測試集。這三個數據子集在已有模型中的檢測準確率差異較大,對驗證模型具有代表意義,數據子集的說明如表2所示。

表2 IDS2018三個數據子集概要Tab.2 Summary of three data subsets of IDS2018
基于深度學習的入侵檢測算法近年來得到廣泛研究,相關研究表明:IDS-DNN 和CNN-LSTM 在性能指標上達到了良好的效果,前者能夠自動提取高級特征,后者在捕捉時間和空間特征上具有優勢。基于上述原因,本文選擇IDS-DNN 和CNN-LSTM兩種深度學習模型作為對比模型。
IDS-DNN 結構包含6 個Dense 層和1 個激活層。為防止過擬合,Dense 層之間加入Dropout 層。每個Dense 層的維數如表3 所示。激活層采用Sigmoid 函數,Dense 層激活函數采用線性整流單元(Rectified Linear Unit,ReLU)函數。損失函數為二元交叉熵函數,優化函數為Adam[27]。

表3 IDS-DNN結構Tab.3 Structure of IDS-DNN
CNN-LSTM[19]混合網絡結構如表4所示,其損失函數為稀疏分類交叉熵函數,優化函數為Adam。

表4 CNN-LSTM結構Tab.4 Structure of CNN-LSTM
采用全局準確率Acc(Accuracy)、正例準確率AccP(Accuracy of Positives)、負例準確率AccN(Accuracy of Negtives)、假正率FPR(False Positive Rate)、真正率TPR(True Positive Rate)和模型訓練時間Training_Time等指標對模型進行對比分析[1]。

本文將訓練時間用作易于衡量的計算效率的指標。減少模型的訓練時間不是提高計算效率的唯一目標,但訓練時間通常與其他計算效率指標呈正相關關系,例如模型測試時間或在線響應時間。He 等[31]詳細分析了CNN 模型的在訓練階段的時間復雜度。該文獻中涉及到的相同的理論公式同樣適用于分析訓練時間和測試時間?;谝陨峡紤],本文采用訓練時間作為檢測計算效率的衡量指標。
首先,與檢測準確率較高的淺層機器學習方法SVM、PCA-SVM 以及NB 進行對比,imTN-KNN 只采用一層包含32個單元的卷積層就能夠獲得最高準確率,而且對比時已將SVM[28]、PCA-SVM[28]、NB[29]方法中的參數調整到最優值。在這種情形下,盡管因為深度學習模型本身的復雜性導致imTN-KNN 的歸一化訓練時間大于其他淺層機器學習方法,但在調整檢測計算效率與檢測準確率性能的平衡方面,imTNKNN 具有更強的自由度(如表5所示)。關注檢測準確率的網絡入侵檢測應用場合更適合采用imTN-KNN 等深度學習模型。此外,對于某些動態復雜場景可以將imTN-KNN 深度學習模型和PCA+SVM等淺層學習模型結合起來使用。

表5 imTN-KNN與淺層機器學習模型性能對比Tab.5 Performance comparison between imTN-KNN and shallow machine learning models
圖4 呈現了imTN-KNN、IDS-DNN、CNN-LSTM 和PCAKNN 在數據子集上的Acc對比,圖5 和圖6 分別為不同數據集上四個算法的AccP和AccN分析??梢钥闯?,在Sub_DS1、Sub_DS2和Sub_DS3三個數據子集上,imTN-KNN 的性能都優于其他方法。其中在Sub_DS3 數據子集上,相比IDS-DNN、CNN-LSTM 和PCA-KNN,imTN-KNN 的Acc分別提升2.76%、4.68%和6.53%。值得注意,在Sub_DS3 數據子集上所有模型的表現都不夠理想,說明滲透攻擊和正常流量的區分度不高,現有模型對這種攻擊類型的檢測率依然偏低。

圖4 識別準確率對比圖Fig.4 Comparison of Acc

圖5 負例識別準確率對比Fig.5 Comparison of AccN

圖6 正例識別準確率對比Fig.6 Comparison of AccP
在數據集Sub_DS3上,檢測模型的Acc隨訓練樣本個數的變化如圖7所示??梢钥闯?,imTN-KNN和IDS-DNN在小樣本訓練時比CNN-LSTM 更具優勢,但隨著訓練樣本數增多,imTN-KNN 和IDS-DNN 的Acc逐漸緩慢降低,而CNN-LSTM 的Acc開始緩慢上升至逐漸超過DNN 并接近imTN-KNN。訓練樣本數在從2 000 到140 000 變化的過程中,imTN-KNN 的Acc總是高于其余三個方法,尤其在訓練樣本數為2 000時,imTNKNN 的Acc明顯高于IDS-DN、CNN-LSTM 和PCA-KNN,說明imTN-KNN 更適合小樣本場景,這與在圖像檢測領域的性能表現一致。

圖7 訓練樣本數對檢測準確率的影響Fig.7 Influence of training sample number on detection accuracy
圖8展示了其他參數保持不變的情況下,KNN中參數k值在10 到170 變換過程中,imTN-KNN 和PCA-KNN 檢測準確率的變化。從圖中可以看出兩個方法的檢測準確率都隨著k值的變大先變大再變小并且變化較大,最優k值都是50。雖然imTN-KNN 的檢測準確率受k值的影響更大,但imTN-KNN 的檢測準確率總是明顯高于PCA-KNN。

圖8 KNN中參數k對檢測準確率的影響Fig.8 Influence of parameter k in KNN on Acc
在數據子集Sub_DS3 上,四個方法的受試者工作特征(Receiver Operating Characteristic,ROC)曲線由圖9 所示,可以看出imTN-KNN 的總是優于其余方法。相比IDS-DNN、CNN-LSTM 和PCA-KNN,imTN-KNN 的ROC 曲線下面的面積(Area Under ROC Curve,AUC)分別提升了6.53%、7.03%、8.10%。

圖9 ROC對比Fig.9 Comparison of ROCs
圖10 呈現了在訓練迭代次數e從1 到10 變化過程中,imTN-KNN、IDS-DNN 和CNN-LSTM 三個模型Acc的變化。這三個模型取得最優Acc值時,對應e的值分別為1、7、9,說明在模型訓練時imTN-KNN 的收斂速度遠快于IDS-DNN 和CNNLSTM;這三個模型在達到最優Acc時所用的歸一化訓練時間分別為0.256 9,0.843 9 和1。imTN-KNN 的歸一化訓練時間遠小于其余兩個模型,相較于IDS-DNN 和CNN-LSTM,imTNKNN縮短訓練時間分別高達69.56%和74.31%。

圖10 迭代次數對模型準確率的影響Fig.10 Influence of iteration number on accuracy
針對用深度學習解決網絡入侵檢測問題時計算效率普遍低下的問題,本文借鑒深度度量學習思想,以距離特征作為分類標準,提出了imTN-KNN 模型。從CNN 結構和參數角度改進了傳統三元組網絡,用Dropout 層和Sigmoid 激活函數層替換了BN 層。此外,利用高效的KNN 分類算法學習距離特征,解決了依據特定閾值進行簡單分類導致檢測精度不高的問題。在公開數據集IDS2018 上的實驗結果表明,與其他算法相比,imTN-KNN 能更好地兼顧檢測準確率和計算效率。在后續研究中,為提高對滲透攻擊的識別率,需要在保證檢測率的計算效率的同時盡可能多地學習原始流量中包含的信息以進一步提高入侵檢測模型的檢測準確率和檢測計算效率等多種性能。