楊宏宇,曾仁韻
(中國民航大學 計算機科學與技術學院,天津 300300)
近年來,隨著互聯(lián)網(wǎng)的快速發(fā)展,通過互聯(lián)網(wǎng)進行的攻擊問題越來越頻繁,帶來的危害也越來越嚴重。 我國互聯(lián)網(wǎng)態(tài)勢報告[1]中指出,在2019年上半年,我國網(wǎng)絡遭受了大量的、多樣的威脅攻擊,并針對此情況開展了網(wǎng)絡安全威脅治理工作;其中,采用的一個重要手段就是網(wǎng)絡安全態(tài)勢評估。網(wǎng)絡安全態(tài)勢評估是一種常用的、有效的解決方案。它綜合了影響網(wǎng)絡安全的指標,為網(wǎng)絡管理人員提供決策意見,從最大程度上降低網(wǎng)絡攻擊威脅產(chǎn)生的危害[2]。
文獻[3]提出了基于層次分析法和灰色關聯(lián)分析的多維系統(tǒng)安全評價方法,以系統(tǒng)安全評價模型構建原則為指導,構建了環(huán)境安全、網(wǎng)絡安全、脆弱性安全的多維系統(tǒng)安全評價模型。文獻[4]將互聯(lián)網(wǎng)受到的網(wǎng)絡威脅作為態(tài)勢評估的重要指標,利用模糊邏輯推理系統(tǒng)改進網(wǎng)絡安全威脅評估模型。然而,上述方式在面對新型的網(wǎng)絡威脅攻擊時不能做出及時反應。
隨著神經(jīng)網(wǎng)絡、機器學習等信息技術在許多領域的成功應用,在信息安全領域開始嘗試將這些技術融入網(wǎng)絡威脅態(tài)勢評估。文獻[5]引入動量因子,對搜索算法進行了優(yōu)化,提出了一種改進反向傳播神經(jīng)網(wǎng)絡的網(wǎng)絡安全態(tài)勢定量評估方法。文獻[6]提出了結合樸素貝葉斯分類器的網(wǎng)絡安全態(tài)勢評估方法,從整體動態(tài)上展示網(wǎng)絡當前安全狀況。文獻[7]結合支持向量機,并改良了布谷鳥算法預測網(wǎng)絡安全態(tài)勢,該方法在KDD數(shù)據(jù)集上的性能達到了較高的精度。上述方法可以動態(tài)評估網(wǎng)絡安全態(tài)勢,但是面對如今的大量網(wǎng)絡威脅數(shù)據(jù),已經(jīng)不能滿足實時、直觀的評估需求。
在大數(shù)據(jù)背景下,結合深度神經(jīng)網(wǎng)絡的算法已經(jīng)應用于海量威脅攻擊數(shù)據(jù)檢測。文獻[8]通過實驗表明,相對于傳統(tǒng)的淺層網(wǎng)絡方法,深層網(wǎng)絡在檢測網(wǎng)絡威脅攻擊方面更加準確和有效。文獻[9]應用長短期記憶網(wǎng)絡(Long-Short-Term Memory,LSTM)在CIDDS-001數(shù)據(jù)集上進行訓練和測試。盡管實驗結果取得較高的準確率,但是文中選擇的測試集是訓練集的一部分,因此沒有表現(xiàn)出模型的泛化性。文獻[10]將自我學習(Self-Taught Learning,STL)與稀疏自動編碼器(Sparse Auto Encoder,SAE)相結合,對NSL-KDD數(shù)據(jù)集的檢測準確率有很大的提升。然而,該方法在訓練過程中抑制了某些神經(jīng)元的傳播而且易出現(xiàn)不同數(shù)量的樣本檢測結果不平衡的現(xiàn)象。
針對上述方法的不足,筆者提出了基于深度學習的網(wǎng)絡安全態(tài)勢評估方法。為了解決數(shù)據(jù)集中不同類型攻擊的分類結果極度不平衡問題,提出一種欠過采樣加權(Under-Over Sampling Weighted,UOSW)算法對數(shù)據(jù)集進行處理,結合深度自動編碼器(Deep Auto Encoder,DAE)對網(wǎng)絡攻擊進行分類。在得到網(wǎng)絡攻擊分類后,對每種攻擊類型進行影響評估,并對網(wǎng)絡安全狀況進行量化評估。通過實驗,證明文中方法可實現(xiàn)對網(wǎng)絡安全狀況的實時評估,評估效果更加高效、直觀,性能指標優(yōu)于其他模型。
筆者設計的網(wǎng)絡安全態(tài)勢評估模型包括態(tài)勢獲取、態(tài)勢分析和態(tài)勢評估3個部分。網(wǎng)絡安全態(tài)勢評估模型的結構如圖1所示。
圖1 網(wǎng)絡安全態(tài)勢評估模型
(1) 態(tài)勢獲取
在此階段,獲取網(wǎng)絡中的流量數(shù)據(jù)。為了模擬網(wǎng)絡處理海量流量數(shù)據(jù)的情況,選取上述NSL-KDD數(shù)據(jù)集作為網(wǎng)絡流量。數(shù)據(jù)預處理后,輸入深度自編碼器進行訓練。
(2) 態(tài)勢分析
將測試 數(shù)據(jù)集輸入訓練后的模型,記錄結果輸出的二分類結果和多分類結果,用于計算網(wǎng)絡安全態(tài)勢量化值。
(3) 態(tài)勢評估
根據(jù)測試的攻擊分類結果,計算網(wǎng)絡攻擊概率和各種網(wǎng)絡攻擊的影響值。另外,計算網(wǎng)絡安全態(tài)勢值并對網(wǎng)絡安全態(tài)勢進行評估。詳細計算方法見下文。
2.1.1 模型結構
自動編碼器(Auto Encoder,AE)由編碼器和解碼器組成,主要應用于數(shù)據(jù)降維和特征學習。輸入數(shù)據(jù)通過編碼器被映射到解碼器,解碼器可以用更精簡的特征描述原始數(shù)據(jù)。深度自動編碼器(Deep Auto Encoder,DAE)是一種改進的自動編碼器模型。文獻[11]深化了原有自動編碼器的網(wǎng)絡結構,生成了DAE網(wǎng)絡。因為含有隱藏層更多,DAE的學習能力得到了提高,這使得它更有利于特征學習。
深度神經(jīng)網(wǎng)絡(Deep Neural Network,DNN)由于其準確性和高效性,在入侵檢測中得到了廣泛的應用。由于DNN包含了多個隱藏層,使得它的學習能力顯著提高。與傳統(tǒng)的機器學習分類器相比,DNN可以在更短的時間內獲得更準確的分類結果,因此,選擇DNN作為網(wǎng)絡攻擊數(shù)據(jù)的分類器,所提出的深度自編碼器模型(Deep Auto Encoder Deep Neural Network,DAEDNN)如圖2所示。
圖2 DAEDNN模型
由圖2可見,模型接收輸入數(shù)據(jù)后,先通過DAE網(wǎng)絡進行特征學習并記錄學習結果,根據(jù)學習結果和DNN分類器,將輸入數(shù)據(jù)進行分類,而后將其分類結果應用于后續(xù)的網(wǎng)絡安全態(tài)勢量化評估過程。
DAEDNN模型不僅可以進行二分類,也可以進行多分類。在進行二分類任務時,模型的激活函數(shù)為sigmoid函數(shù),sigmoid函數(shù)將模型輸出值映射到0和1區(qū)間,其中,數(shù)值越靠近1,則越容易被判定為異常流量。sigmoid函數(shù)(Fsgm)的計算公式如下,
Fsgm(x)=(1+e-x)-1。
(1)
當模型進行多分類任務時,模型的激活函數(shù)為softmax函數(shù),softmax也是將輸出映射到0和1區(qū)間,但是與sigmoid函數(shù)不同的是,各個類別的輸出值相加的值等于1,模型選擇輸出值最大的類別為預測的類別。softmax函數(shù)(Fsfm)的計算公式如下,
(2)
其中,K表示輸出可以被分為K個類,zi表示每一類所取得的值。
2.1.2 模型訓練
在DAEDNN模型中,DAE模型進行特征學習。為了讓DNN分類器充分學習DAE的特征提取結果和提高模型性能,減少模型過擬合的風險,應分次訓練DAEDNN模型。
模型訓練分為3個步驟:① 將訓練數(shù)據(jù)輸入至DAE網(wǎng)絡,進行特征學習,記錄訓練完成的權重值。② DAE 模型訓練結束后,組合DAE模型和DNN模型為DAEDNN模型,一起訓練這兩個網(wǎng)絡。為了獲取DAE模型的訓練結果,將DAEDNN模型中的DAE網(wǎng)絡的權重值設置為保留的權重值,并把DAE層的參數(shù)設置為不可訓練,與DNN網(wǎng)絡一起進行訓練,此時網(wǎng)絡只會更新DNN網(wǎng)絡的參數(shù)。③ 將DAE層的參數(shù)設置為可訓練,更新DAE網(wǎng)絡和DNN網(wǎng)絡的參數(shù)。訓練過程中更新訓練參數(shù),不僅可以獲取DAE層的特征學習結果,也提高了模型對數(shù)據(jù)的表征能力。
2.2.1 數(shù)據(jù)集描述
選擇網(wǎng)絡安全領域相對權威的入侵檢測數(shù)據(jù)集NSL-KDD作為評估的數(shù)據(jù)源。NSL-KDD數(shù)據(jù)集改良于KDD99數(shù)據(jù)集,它刪除了重復的網(wǎng)絡流量數(shù)據(jù)記錄,這有助于分類器產(chǎn)生無偏差的結果[12]。NSL-KDD數(shù)據(jù)集包含41個特征和5種主要攻擊類型。文中使用的數(shù)據(jù)集信息如表1所示。
表1 KDD-NSL數(shù)據(jù)集信息
2.2.2 數(shù)據(jù)預處理
為了更方便、準確地訓練網(wǎng)絡模型,需要將數(shù)據(jù)集中的分類特征轉換為數(shù)字特征,并進行數(shù)值歸一化。
(1) 特征數(shù)值化
NSL-KDD數(shù)據(jù)集有3個分類特征“protocol_type”、“service”和“flag”,分別包括3、64和10個類別。通過獨熱編碼技術,將這3種分類特征轉化為只表示0和1的數(shù)據(jù)。對這3個分類特征進行處理之后,數(shù)據(jù)集由41個特征維度變?yōu)?16個特征維度。
(2) 數(shù)值歸一化
數(shù)據(jù)集中某些特征的最小值與最大值之間存在顯著差異。為了減少不同數(shù)值水平對模型的負面影響,文中采用對數(shù)標度法對特征值進行標度,使其歸一化到同一區(qū)間。數(shù)值歸一化的過程可以表示為
xnorm=(x-xmin)/(xmax-xmin) ,
(3)
其中,x表示特征原本的值,xmax和xmin為特征所取得的最大值和最小值。
2.2.3 欠過采樣加權數(shù)據(jù)重采樣算法
由表1可見,在訓練數(shù)據(jù)集中,5類攻擊的數(shù)據(jù)量非常不均勻,其中,數(shù)據(jù)量最大的nomal類有67 343 條數(shù)據(jù),而DoS和U2R這兩種類型只包含52和995條數(shù)據(jù)。在訓練深度學習模型的過程中,若訓練數(shù)據(jù)較少,則會導致模型無法充分學習數(shù)據(jù)的特征,而若訓練數(shù)據(jù)過多,則又可能導致模型過擬合,即模型學習到了數(shù)據(jù)本身以外的特征。因此,極不平衡的數(shù)據(jù)會導致模型的學習效果不佳,導致數(shù)據(jù)量大的類別識別準確度較高,反之較小。
數(shù)據(jù)分析中的過采樣和欠采樣是用來調整數(shù)據(jù)集類分布的技術,也稱為數(shù)據(jù)重采樣。欠采樣通常是刪除數(shù)據(jù)量過大的類別的些許樣本,而過采樣增加了數(shù)據(jù)中少數(shù)樣本的數(shù)據(jù)量,以達到數(shù)據(jù)平衡。為解決數(shù)據(jù)量分布不平衡的問題,提高模型檢測少數(shù)類的精度,筆者提出一種過采樣、欠采樣和加權相結合的欠過采樣加權(Under-Over Sampling Weighted,UOSW)算法。該算法步驟設計如下:
設原始數(shù)據(jù)集為S1,輸出的數(shù)據(jù)集為S2,需要進行重采樣處理的數(shù)據(jù)類型為typei,其原始數(shù)據(jù)集和樣本數(shù)量為Si和xi。
步驟1 計算數(shù)據(jù)集中每種類型的權重wi。在網(wǎng)絡訓練中,當訓練集中每個類別的數(shù)據(jù)量非常接近(達到平均值,以下用average代替)時,網(wǎng)絡的識別準確率會很高。因此,文中計算每種類型的實際樣本量與理想樣本量之間的差值作為權重,以達到每種類型的均衡值。
(4)
其中,n表示數(shù)據(jù)集包含n種類別。
步驟2 數(shù)據(jù)欠采樣。對于數(shù)據(jù)量過大的類型,進行數(shù)據(jù)欠采樣,使處理后的數(shù)據(jù)樣本接近平均值(average)。使用Python中sklearn庫的“train_test_split”方法將數(shù)據(jù)集Si分為兩個數(shù)據(jù)集Si-train,Si-remain。將Si-train作為訓練集,并加入S2,其中,Si-train的數(shù)據(jù)量大小si=xi×wi;Si-remain用于接下來的數(shù)據(jù)過采樣操作,將其加入數(shù)據(jù)集Sremain。
步驟 3 數(shù)據(jù)過采樣。應用過采樣算法SMOTE[13]處理數(shù)據(jù)量很少的類別的樣本。SMOTE的核心是在現(xiàn)有少數(shù)類樣本的基礎上生成新的同類樣本。由于SMOTE算法最初是針對二分類問題,而本文研究中存在多分類問題,因此對算法進行了以下改進:
(1) 合并其他類型數(shù)據(jù)。將步驟2中經(jīng)過欠采樣處理的數(shù)據(jù)集Sremain和原始數(shù)據(jù)集中的少量類型的數(shù)據(jù)集合并,表示為Sunion。
(2) 改變標簽。經(jīng)過(1),Sunion中包含與n種類別的數(shù)據(jù)。由于SMOTE算法只針對于二分類,因此要將需要進行過采樣的類型與其他類型區(qū)分開來。將數(shù)據(jù)集Sunion的標簽更改為同一類型,但不同于typei。
(3) 確定數(shù)據(jù)量大小。為了平衡數(shù)據(jù)集,需要對少數(shù)類樣本進行擴展,設擴展后的數(shù)據(jù)量大小為si其中,si=xi×wi,wi是數(shù)據(jù)類型typei的權重。
(4) 數(shù)據(jù)過采樣。使用Python中imblearn庫的SMOTE方法,結合其他類型的數(shù)據(jù)生成所需的數(shù)據(jù),將其加入S2。
重復(1)~(4),直到數(shù)據(jù)量少于平均值的類型全部完成過采樣操作。
NSL-KDD數(shù)據(jù)集包括5種類型的網(wǎng)絡數(shù)據(jù):Normal、DoS、U2R、R2L和Probe。上述攻擊的基本信息如表2所示。
表2 5種攻擊類型的基本情況
基于通用漏洞評分系統(tǒng)(CVSS)制定了攻擊影響值評定表[14]。機密性(C)、完整性(I)和可用性(A)得分如表3所示。
表3 攻擊影響值評定表
每種攻擊類型的影響值(Ii)計算公式如下:
Ii=Ci+Ii+Ai。
(5)
量化網(wǎng)絡安全態(tài)勢,可以更直觀地分析網(wǎng)絡整體狀況。本文的網(wǎng)絡安全態(tài)勢量化評估過程主要包括4個部分:攻擊分析、計算攻擊的影響、計算網(wǎng)絡安全態(tài)勢值和網(wǎng)絡安全態(tài)勢定量評估。每個部分的處理過程設計如下:
(1) 攻擊分析
從測試數(shù)據(jù)集中隨機選取若干組數(shù)據(jù),并將其輸入到DAEDNN模型中,對其進行二進制和多分類,記二分類中檢測到的攻擊比例記為攻擊概率(attack probability,p)。
(2) 計算攻擊的影響值
結合表2、表3確定每一類攻擊類型的C、I、A值,并根據(jù)式(5)確定綜合的攻擊影響值。
(3) 計算網(wǎng)絡安全態(tài)勢值
網(wǎng)絡安全態(tài)勢值綜合考慮了網(wǎng)絡受到的全部攻擊和每種攻擊會對網(wǎng)絡造成的危害程度。設網(wǎng)絡安全態(tài)勢值為
(6)
其中,p為式(1)中所得出的攻擊概率,n和N表示一共有n種類型的數(shù)據(jù)和N個樣本,Ii表示每種攻擊類型的影響值,ti表示每種攻擊的出現(xiàn)次數(shù),tn為normal類型出現(xiàn)的次數(shù)。由于normal類型是正常的網(wǎng)絡數(shù)據(jù)流,對網(wǎng)絡的機密性、完整性和可用性不會有影響,因此它的影響分數(shù)為0,只需要計算n-1種攻擊類型的影響分值即可。
(4) 網(wǎng)絡安全態(tài)勢定量評估
參考《國家突發(fā)公共事件應急預案》[15]對網(wǎng)絡安全形勢進行分類。根據(jù)網(wǎng)絡安全態(tài)勢值0.00~0.20、0.21~0.40、0.41~0.60、0.61~0.80和0.81~1.00的5個區(qū)間,將網(wǎng)絡安全態(tài)勢嚴重程度劃分為安全、低風險、中等風險、高風險和超風險等5個級別。
實驗的硬件環(huán)境為:Intel(R) Xeon(R) Silver處理器,顯卡為NVIDIA Quadro P2000,內存為32 GB。訓練和測試實驗均在Windows 64位操作系統(tǒng)上進行。使用的編程語言和機器學習庫為Python3.5和TensorFlow2.0。模型的訓練和測試均使用GPU加速。
文中所用的評價指標如下所示:
真陽性(True Positive,TP):表示被模型預測為攻擊樣本而實際也是攻擊樣本的次數(shù)。
假陽性(False Positive,F(xiàn)P):表示被模型預測為正常樣本而實際是攻擊樣本的次數(shù)。
真陰性(True Negative,TN):表示被模型預測為正常樣本而實際也是正常樣本的次數(shù)。
假陰性(False Negative,F(xiàn)N):表示被模型預測為攻擊樣本而實際是正常樣本的次數(shù)。
下列公式中,PT,PF,NT和NF分別表示真陽性,假陽性,真陰性和假陰性。
準確率(Precision,P):表示模型預測正確的攻擊樣本頻率。準確率越高,誤報率越低。它可以表示為
P=PT/(PT+PF) 。
(7)
召回率(Recall,R):表示被模型正確分類的攻擊樣本與實際攻擊樣本的百分比。它可以表示為
R=PT/(PT+NF) 。
(8)
F1值(F1-score,F(xiàn)):表示綜合考慮了模型的準確率和召回率。它可以表示為
F=2PR/(P+R) 。
(9)
在二分類任務時,選擇ROC曲線和AUC面積來反映分類模型的性能。ROC曲線表示不同閾值設置下分類模型的性能;AUC面積為ROC曲線下的面積。面積越大,表示模型的性能越好;通過面積可以直觀地對比各個模型。
在二值分類任務中,模型只需要區(qū)分數(shù)據(jù)是攻擊數(shù)據(jù)還是正常數(shù)據(jù)。為了檢驗文中模型的有效性,將筆者提出的DAEDNN與決策樹(Decision Tree,DT)[8]、支持向量機(Support Vector Machine,SVM)[8]和長短期記憶網(wǎng)絡(Long Short-Term Memory,LSTM)[9]等模型進行了比較。為了驗證文中模型的泛化性,使用KDDTrain+的80%數(shù)據(jù)進行訓練,分別對剩下的20%和KDDTest+進行測試。4種模型的二分類結果如圖3所示。
從圖3(a)可以看出,在使用20% KDDTrain+對4種模型進行測試時,4種模型均表現(xiàn)出較好的準確性和泛化能力。這是由于訓練集和測試集來源于同一集合,模型學習到的特征可以完全應用于測試數(shù)據(jù)集,所以能得到理想的結果。然而,從圖3(b)可見,如果使用KDDTest+數(shù)據(jù)集作為測試數(shù)據(jù)集,4個模型的準確性則會降低。這是因為測試訓練集中存在一些與訓練數(shù)據(jù)集數(shù)據(jù)格式不同的樣本,這種情況與真實的網(wǎng)絡情況一致,即模型面臨眾多未知攻擊類型。從圖3(b)可見,在使用KDDTest+數(shù)據(jù)集進行模型測試的情況下,DAEDNN模型的準確率明顯優(yōu)于其他3個模型,分別比DT、SVM和LSTM高出近13.35%、16.17%和2.72%,說明DAEDNN模型的學習能力更強,具有較好的泛化性。
使用KDDTest+數(shù)據(jù)集對DT、SVM、LSTM、DAEDNN和應用UOSW算法的DAENDD這5種模型進行檢驗,并選取準確率、召回率和F1值作為評價指標,對各種模型進行比較分析。不同模型的指標得分如圖4所示,圖中的縱坐標表示評價指標的百分數(shù),數(shù)值越高,模型性能越好。
圖4 不同模型的各類指標得分
從圖4可見,DAEDNN(UOSW)模型在準確率、召回率和F1值等方面都優(yōu)于其他4種模型。實驗結果表明,DAEDNN(UOSW)提高了少數(shù)訓練數(shù)據(jù)樣本的攻擊類型的召回率和準確率,而對擁有大量訓練樣本的攻擊檢測性能并沒有降低。
值得注意的是,結合文中的UOSW算法后,DAEDNN的準確率和召回率更高,泛化能力更強。與DT、SVM和LSTM模型相比,DAEDNN(UOSW)的F1值分別提高了約2.77%、10.5%和5.2%。
從測試數(shù)據(jù)集中隨機選取相同數(shù)量的測試樣本,對網(wǎng)絡安全狀況進行了量化評估,并對于分別用不同的模型計算網(wǎng)絡安全態(tài)勢值,其中20組測試的網(wǎng)絡安全態(tài)勢值如圖5所示。
圖5 20組測試的網(wǎng)絡安全態(tài)勢值
由圖5可見,基于DAEDNN模型計算出的網(wǎng)絡安全態(tài)勢值最貼合樣本的實際安全態(tài)勢值,相比于SVM和DT這兩類傳統(tǒng)的機器學習模型,DAEDNN和LSTM這兩類深度學習的方法更能表示數(shù)據(jù)的真實情況。其他3種模型的態(tài)勢值與實際態(tài)勢值相差較大的原因是,訓練樣本中存在樣本量極少的攻擊類型,導致模型無法充分學習到這類攻擊的特征。而DAEDNN模型應用了UOSW算法,提高了模型檢測少樣本攻擊類型的準確率。所提出模型計算出的態(tài)勢值與實際態(tài)勢值之間存在些許差異,但大多數(shù)態(tài)勢值都落在了相同的區(qū)域內,根據(jù)3.2節(jié)定義的網(wǎng)絡安全態(tài)勢嚴重程度和實際情況相符。
筆者針對傳統(tǒng)網(wǎng)絡安全態(tài)勢評估方法在處理大量網(wǎng)絡數(shù)據(jù)時效率低的缺點,提出一種深度學習的網(wǎng)絡安全態(tài)勢評估方法。該方法首先結合了自動編碼器和深度神經(jīng)網(wǎng)絡組成DAEDNN模型,用于對網(wǎng)絡攻擊進行識別。根據(jù)識別的結果,計算攻擊概率和攻擊影響值,從而得出網(wǎng)絡安全態(tài)勢量化值。通過安全態(tài)勢量化值,可以更直觀地反映網(wǎng)絡安全態(tài)勢。實驗結果表明,筆者提出的模型在二分類和多分類的攻擊檢測方面優(yōu)于其他模型。此外,在進行多種攻擊類型檢測時,結合所提出的UOSW算法,可以提高模型對擁有少量訓練樣本的攻擊的檢測準確率,從而可以更準確地評估網(wǎng)絡安全態(tài)勢。