羅智鈺 黃立群



摘要:隨著網絡技術的快速發展,網絡入侵等網絡信息安全隱患引起人們的日益關注,通過入侵檢測來及時發現潛在網絡入侵行為是抵御入侵的一種有效手段,在實際應用中具有重要的意義。該文引人基于條件變分自編碼器的深度學習模型,利用Tensorflow框架搭建了一個人侵檢測系統。為了驗證本文入侵檢測系統的有效性,我們在公開的NSL-KDD數據集上開展了相應的性能測試,實驗結果表明所設計的人侵檢測系統在五種網絡狀態的預判分類上準確率達到了72.2%,可以在實際部署中對入侵行為進行有效分類。
關鍵詞:網絡安全;人侵檢測;條件變分自編碼器;Tensorflow
中圖分類號:TP393 文獻標識碼:A
文章編號:1009-3044(2020)13-0022-03
當今,各類網絡入侵考驗著計算機的防御體系與安全策略,而入侵檢測(Intrusion Detection)正是抵御入侵的一種有效手段。隨著目前人工智能領域的興起及深度學習算法的日趨成熟,使用深度習方法進行基于異常的入侵檢測也成為研究熱點。深度學習有著強大的特征學習能力,有助于應對攻擊特征愈發豐富、數據愈發復雜所帶來的高維數據處理問題以及預測、分類攻擊的準確率問題。
本文構造一個基于條件變分自編碼器(conditional Varia-tiona]Autoencoder,CVAE)的人侵檢測系統,以實現對網絡狀態數據的分析,在文獻[4]中該方法被稱為ID-CVAE。與使用變分自編碼器(vAE)的不同之處在于,VAE以樣本特征為唯一輸入,而CVAE使用樣本特征與入侵標簽兩種輸入,入侵標簽將作為CVAE解碼層的附加輸入。使用該方法僅需訓練出單個模型,訓練過程更省時,但需對測試樣本進行多次測試,通過比較測試結果完成對所測樣本的分類判斷。
1基于變分自編碼器的入侵檢測系統設計
本文入侵檢測系統包含數據預處理模塊、入侵檢測模型、預測模塊三個部分,經過數據采集、數據分析、給出預判三個步驟實現其對網絡攻擊的檢測功能。
1.1數據集選擇
本文采用人侵檢測數據集NSL-KDD作為采集的數據,它包含125,973個訓練樣本和22,544個測試樣本,41個特征,40種標簽。41個特征中,38個為連續型,3個為離散型。根據文獻[5],在使用機器學習方法實驗入侵檢測時,特征9、20和21沒有作用,特征15、17、19、32、40在檢測攻擊時作用很小,特征7、8、11和14的值幾乎都為零。數據集中的40種標簽對應網絡正常狀態Normal和39種網絡攻擊,其中,訓練集包含22種攻擊,而剩下的17種攻擊僅出現在測試集中,這使得該數據集可用于測試模型的泛化性。39種網絡攻擊可以分為四大類:DoS、Probe、R2L、U2R,樣本類別分布見表1。可見DoS攻擊的樣本在數量上遠遠多于其他類別的樣本,入侵數據是不平衡的。
1.2數據預處理模塊
數據預處理模塊將數據集文件轉化成輸入模型所需的樣本特征集和標簽集。首先,丟棄六個幾乎為零的連續型特征,對剩余32個連續型特征進行標準化。然后對三個離散型特征進行獨熱編碼,這三個離散型特征protocol_type、flag、service分別有3個、11個和70個不同的值,獨熱編碼后它們分別產生了3個、11個、70個項,將樣本特征項與標簽項分離,產生一個116項的最終樣本特征集。而標簽項中的40種數值需被歸類替換為Normal、DoS、Probe、R2L、U2R五種值,經過獨熱編碼生成五個長度的額外輸入向量。預處理流程可用圖2表示。
1.3基于條件變分自編碼器的生成式入侵檢測模型
自編碼器是深度學習領域中一種無監督學習方法,它一般包含編碼器與解碼器兩個模塊,編碼器可以將高維輸入轉化為低維的隱向量z,而解碼器則將隱向量還原為盡可能接近輸入的輸出。本文采用的是條件變分自編碼器。
首先,編碼器將入侵樣本x映射為兩組參數,這兩組參數確定一個輸出z基于輸人x的條件概率分布q(ZIX),假設它為一個正態分布,而確定一個正態分布需要均值和方差,因此假設兩組參數代表的意義分別為均值u和方差盯σ2。從中采樣得到服從于該分布的隱向量z,通過解碼器將隱向量z映射為新的一組參數,映射過程中將在解碼層額外輸入一個標簽向量L,標簽L與樣本x;是相關聯的。由此確定一個基于z與L的條件概率分布p(x,IZ,L),表明解碼器的概率分布受隱向量和標簽的約束。假設該分布為伯努利分布,可從中獲得最終輸出x,這個x即代表重構的入侵樣本。為了使生成的x與x的距離盡可能小且保證模型具有生成能力,q(Zlx)應盡可能向標準正態分布N(0,1)看齊。為此,在模型中加入反向傳播,建立損失函數,使用隨機梯度下降算法將損失值最小化。本文采用與文獻[4]相同形式的損失函數,如公式(1)所示。
第二部分表示使用概率分布p(X' IZ,L)下PX的對數似然,它可表征重構輸出x與輸入樣本x的距離。反向傳播的過程將得出p的最大似然估計,它表示最有可能導致已知樣本結果的參數值,它將作為重構的輸出x。入侵檢測總體模型如圖3所示。
1.3.1編碼器結構
本文編碼器中包含至少4個全連接層,第一個全連接層將使116個維度的輸入變換為500維度的輸出,中間層輸入與輸出的維度不變,最后一層由兩個并列的神經元層組成,它們都輸出25維度的向量,分別代表正態分布的均值u及方差的對數logo2。從正態分布中采樣一個25維隱向量z,根據正態分布的性質,已知標準正態分布XNN(01),且a、b為實數,則有:
編碼器設計如圖4所示,圖中圓圈表示神經元,下方數字表示神經元個數,即該全連接層節點數。
1.3.2解碼器結構
解碼器包含4個全連接層,先將25維的z映射為495維的輸出,并將獨熱編碼的5維標簽向量作為額外輸入,一起輸入到第二個全連接層中。額外輸入的插入位置是根據測試經驗判斷的。在解碼器的最后,還原出116維的重構輸出x。解碼器如圖5所示。
1.4預測模塊
預測過程使用測試集樣本,同樣分為兩種輸入:測試樣本特征以及標簽。整個預測過程可分為兩大步驟。第一步,對于同一條樣本記錄,需要將它多次送入已訓練好的模型中,每次使用不同的標簽作為額外輸入,因為有五種標簽,所以需要送人五次,得到五個重構輸出。第二步,計算真實測試樣本和每個重構輸出之間的誤差。當使用正確的標簽作為輸入時,網絡將更好地恢復原始特征,因此為每個樣本選擇與最小誤差相關的標簽。
為測試樣本選中的標簽即為預判結果,它表示五種網絡狀態中的一種:正常Normal以及可能受到DoS、PROBE、R2L或U2R入侵。預測模塊如圖6所示。
2實驗分析
實驗分為兩個階段。第一階段為模型訓練,借助Tensor-flow搭建入侵檢測模型,輸入完整訓練集訓練模型。第二階段為測試,將1000條測試集樣本輸入到已訓練完成的系統中,對比預測的測試樣本標簽與實際的測試樣本標簽,計算準確率,從而驗證本文入侵檢測系統的可行性。由于標簽有五種可能值,所以本實驗也是一個五分類任務,本文會給出標簽分類的具體結果,統計每種實際標簽被預判為某一類標簽的數量與占比。準確率計算公式如公式(6)。A、B、c、D、E表示各類樣本數量,TA、TB、TC、TD、TE為五種類別各自被正確分類的數量。
條件變分自編碼器中的全連接層層數會影響模型的非線性學習效果,本文首先在編碼器部分采用四層全連接層,迭代訓練模型30次后進行測試,得出準確率為0.202,準確率偏低。此時標簽分類情況如表2所示。可看出每一類實際標簽的預測分類情況偏向于呈現均勻分布,無明顯規律,分類效果差。
將編碼器部分全連接層數減為三層,同時還將損失函數中的對數似然部分改為均方差。給出隨著訓練迭代次數變化而變化的測試準確率如表3所示。
可見迭代訓練91次后,測試所得的準確率達到最高,為72.2%,此時標簽分類具體情況如表4所示。NORMAL與DOS類的樣本的預判分類結果最好,分類正確的數目占該類實際標簽總數的比例分別為77.4%與76.8%。而這兩類樣本在訓練集中占比也最多,分別為53.4%與36.4%。
3結論
當前網絡態勢復雜,及時辨別網絡攻擊尤為重要,入侵檢測技術是一項有效的手段,有多種基于機器學習構建入侵檢測模型的方法。當使用VAE方法時,需要創建盡可能多的模型,每個模型都需要一個特定的訓練步驟,每個訓練步驟都使用與所學標簽相關的特定樣本作為訓練數據。相反,使用ID-CVAE方法僅需訓練一個模型,這就是為什么基于CVAE的入侵檢測模型在計算時間和求解復雜度上是更好的選擇。
本文設計的基于條件變分自編碼器的入侵檢測系統一定程度上是可行的,其準確率最高為72.2%,且當訓練集中某類樣本數量占比越多,該類樣本的測試分類效果越好。該系統可對網絡狀態進行分類,預測多種攻擊,同時具備特征學習能力,可檢測到存在同樣規律的新型攻擊。但還應注意到,系統的準確率仍有提高的空間,這與系統的具體編程實現有關,入侵模型仍存在需要改進的地方。