韓忠華,黎愷嘉,陳趙琦,尚文利
(1. 沈陽建筑大學信息與控制工程學院,遼寧 沈陽 110168;2. 中國科學院沈陽自動化研究所數(shù)字工廠研究室,遼寧 沈陽 110016;3. 東北師范大學物理學院,吉林 長春 130024;4. 廣州大學電子與通信工程學院,廣東 廣州 510006)
當前互聯(lián)網不斷與人們生活融合,互聯(lián)網提供了便利,但同時也留下了安全隱患。一些計算機病毒,例如蠕蟲和木馬,不斷威脅著信息安全。入侵檢測系統(tǒng)(Intrusion Detection System)作為保護個人信息的重要手段,在網絡安全領域發(fā)揮著重要作用。入侵檢測系統(tǒng)不同于傳統(tǒng)的網絡安全技術,入侵檢測是一個數(shù)據處理和數(shù)據分類的過程。通過監(jiān)視和分析計算機網絡流量或計算機自身的活動,檢測是否存在違反安全策略的行為和被攻擊的跡象,識別正在出現(xiàn)或已經發(fā)生的威脅。
目前在入侵檢測領域中,已有許多學者提出了不同的方法策略。其中基于傳統(tǒng)機器學習[1-7]的入侵檢測方法獲得了較大的發(fā)展。對于網絡安全入侵檢測系統(tǒng)的準確性和實時性具有很高的要求,通過正確的識別異常數(shù)據能有效的維持信息系統(tǒng)的安全,同時提高處理網絡入侵檢測數(shù)據的快速性也是避免信息系統(tǒng)受到侵害的重要方面。面對網絡入侵檢測數(shù)據通常呈現(xiàn)多樣性和高維度的特征,如果能找到有效的對數(shù)據進行降維處理的方法也會提高檢測的速率和精度。相關領域的研究人員通過機器學習方法也能夠實現(xiàn)對數(shù)據的有效降維。文獻[8]和[9]提出了主成分分析法(Principal Component Analysis)對數(shù)據進行降維和特征提取,隨后利用特征對數(shù)據進行分類,提高檢測的準確率。文獻[10]提出了一種Fisher-PCA方法,利用Fisher算法提取特征子集,然后使用主成分分析法進行降維,提取特征集,提高檢測準確率。雖然當前研究人員使用機器學習可以對入侵檢測數(shù)據進行降維和特征提取,但是面對入侵檢測數(shù)據所呈現(xiàn)的復雜非線性關系信息處理速率和準確率仍然需要進一步提升。
隨著深度學習方法的提出,由于深度學習算法善于處理大規(guī)模數(shù)據,因此研究人員將深度學習算法應用在入侵檢測問題中。文獻[11]提出了基于卷積神經網絡的入侵檢測方法,利用卷積神經網絡的特征提取特性和Softmax函數(shù)的分類功能實現(xiàn)對網絡數(shù)據的分類,提高檢測精度;文獻[12]提出基于深度卷積神經網絡的入侵檢測模型,在卷積網絡上引入了殘差網絡,提高模型的收斂速度和準確率;上述兩篇文章雖然提高了分類的準確性和速率,但忽略了數(shù)據中的時序特征。文獻[13]提出了CNN-LSTM模型,利用長短期記憶網絡(Long Short-Term Memory)的特性提取數(shù)據的時序特征,提高了檢測準確率;文獻[14]中融合CNN和BiLSTM的檢測算法,通過BiLSTM可以雙向識別數(shù)據特征,更進一步提高了模型準確率。在網絡入侵方向相關方法對時序特征的提取還需要進一步提升,同時也沒有與更好的數(shù)據降維方法進行結合,在處理問題的準確性和實時性方面還有待提升。
綜上所述,針對當前網絡入侵檢測數(shù)據呈現(xiàn)大規(guī)模、多樣性、非線性和高維度的問題,機器學習降維方法處理問題的速率和準確率還需要進一步提升,深度學習方法雖考慮了數(shù)據的時序特征,但沒有與更好的數(shù)據降維方法進行結合,處理問題的準確性和實時性還有提升空間,因此本文提出了一種基于堆疊降噪自編碼網絡(Stacked Denoising Auto-encoder Network)的門控循環(huán)單元(Gated Recurrent Unit)深度學習模型。將門控循環(huán)單元[15]應用到入侵檢測中,用于提取數(shù)據的時序特征,解決傳統(tǒng)循環(huán)神經網絡(Recurrent Neural Network)[16]所帶來的梯度消失、梯度爆炸問題。許多學者在循環(huán)神經網絡上做了許多工作,其中較新的研究成果是門控循環(huán)單元。門控循環(huán)單元簡化了自身結構,相比于LSTM[17]運算速率更快,更能滿足入侵檢測系統(tǒng)的準確性和實時性要求。入侵檢測數(shù)據含有很多冗余信息和噪聲數(shù)據,因此進一步引入堆疊降噪自編碼網絡[18],通過對數(shù)據進行降維、抽取數(shù)據特征,提高了降維后數(shù)據的魯棒性、檢測的準確率和檢測速率。堆疊降噪自編碼網絡與主成分分分析相比較,堆疊降噪自編碼網絡可對非線性數(shù)據進行降維,具有檢測速率快、泛化性好和抗噪性強等優(yōu)點。本文提出基于堆疊降噪自編碼網絡的門控循環(huán)單元深度學習模型,旨在提高入侵檢測系統(tǒng)的準確性和實時性。
入侵檢測方案如圖1所示。
圖1 入侵檢測方案
1)數(shù)據的數(shù)值化處理:將入侵檢測數(shù)據中的字符型數(shù)據轉換為數(shù)值型數(shù)據。
2)數(shù)據的歸一化處理:數(shù)值化處理后的數(shù)據差異較大,需將數(shù)據進行歸一化至[0,1] 區(qū)間之中。
3)數(shù)據的噪聲處理:堆疊降噪自編碼器需要使用噪聲數(shù)據進行訓練,將歸一化后的數(shù)據進行噪聲處理。
4)數(shù)據的降維和提取特征:將訓練集、驗證集和測試集進行降維提取特征操作。
5)仿真:設計SDAN-GRU深度學習模型的相關參數(shù),應用入侵檢測數(shù)據對模型進行訓練、驗證和測試,最后與其它入侵檢測模型進行實驗對比。
KDDCUP99數(shù)據集是林肯實驗室(Lincoln Laboratory)收集的為期9周的網絡連接和系統(tǒng)審核數(shù)據,其有效的模擬多種網絡流量下的各類網絡威脅和異常入侵情況。在研發(fā)主流的入侵檢測系統(tǒng)和驗證各種入侵檢測方法中,其被廣泛用作測試的網絡樣本數(shù)據。數(shù)據集分為正常和異常兩大類樣本集合。異??煞譃樗念?,即:拒絕服務攻擊(DOS),監(jiān)視和其它檢測活動(Probing),遠程計算機的非法訪問(R2L)和普通用戶對本地超級用戶特權的非法訪問(U2R)。KDDCUP99數(shù)據集中的每個記錄包含41個固定的特征屬性和1個類別標識符。類標識符用于標記該記錄是正常樣本還是某種特定類型的攻擊樣本。在這些固定特征屬性中,有一部分特征屬性記錄著數(shù)據之間的時序聯(lián)系。由于網絡攻擊事件在時間上有很強的關聯(lián)性,所以使用基于時間的流量統(tǒng)計特征用來記錄當前連接與前一段時間連接所存在的聯(lián)系,其被分為兩種集合分別為:same host和same service。在實際入侵中,有些攻擊樣本為了躲避檢測使用了慢速攻擊模式來掃描主機或端口,而基于時間的流量統(tǒng)計特征的統(tǒng)計范圍為過去兩秒,當慢速攻擊的頻率大于兩秒時,基于時間的統(tǒng)計方法就無法從數(shù)據中找到關聯(lián),因此又設立了基于主機的網絡流量統(tǒng)計特征。應用KDDCUP99數(shù)據集的目的是為入侵檢測模型提供統(tǒng)一的性能評價基準,用來檢驗模型的好壞。
數(shù)據集預處理流程如圖2所示。
圖2 數(shù)據集預處理流程
Step1:數(shù)值化處理,KDDCUP99數(shù)據集中的每個記錄包含41個固定特征屬性,這41個固定特征屬性中有3個是字符型數(shù)據,分別為:protocol_tpye(協(xié)議類型),service(主機服務類型)和flag(連接狀態(tài))。本文的深度學習模型只能識別數(shù)值型數(shù)據,因此要將字符型數(shù)據轉換為數(shù)值型數(shù)據。通過獨熱編碼可以實現(xiàn)數(shù)據集中字符型數(shù)據的轉換。例如,獨熱編碼后,協(xié)議類型(TCP,UDP,ICMP)可以更改為100、010和001。使用獨熱編碼后,KDDCUP99中的所有字符型數(shù)據都將轉換為數(shù)值型數(shù)據。
Step3:噪聲處理,需要使用噪聲數(shù)據來訓練堆疊降噪自編碼網絡,調整自編碼器的權值和偏置。本文使用的生成噪聲方法是改變已有樣本集中的數(shù)據。在歸一化處理之后,隨機改變各個數(shù)據集中的某些數(shù)據,達到生成噪聲的目的。
Step4:數(shù)據的降維和特征提?。和ㄟ^堆疊降噪自編碼器對含有冗余和噪聲信息的入侵檢測數(shù)據進行降維,減少冗余信息所造成的誤差,提高識別精度,并通過降維算法來提取數(shù)據深層次的特征。
本文提出了一種基于堆疊降噪自編碼網絡的門控循環(huán)單元深度學習模型。堆疊降噪自編碼器依據其功能在入侵檢測方案中處于數(shù)據預處理環(huán)節(jié),但是由于堆疊降噪自編碼器與門控循環(huán)單元深度學習模型有緊耦合關系,因此將它們統(tǒng)一歸為一個整體的深度學習模型結構中。深度學習模型在網絡入侵檢測應用方面主要作為分類器使用,將網絡流量數(shù)據輸入到該模型中進行分類,用以判別是否是異常攻擊和確定異常攻擊的類型。門控循環(huán)單元中重置門和更新門的設計分別有助于捕捉時序數(shù)據中的短期和長期依賴關系,相較于其它深度學習模型更適合對攻擊樣本所具有的時序特征進行識別和分類。因此將門控循環(huán)單元用作模型的輸出層,以識別分類數(shù)據并輸出分類結果。入侵檢測數(shù)據含有冗余信息和噪聲數(shù)據,因此進一步引入堆疊降噪自編碼網絡作為模型的輸入層,對數(shù)據進行降維和特征抽取,提高整個深度學習模型的分類速率和精度。使用噪聲數(shù)據預訓練堆疊降噪自編碼器,每一個降噪自編碼器前后相互對接,通過梯度下降算法調整權值和偏置。完成預訓練后,將每個自編碼器的編碼層合并構建一個多層神經網絡,微調權值和偏置。深度學習模型如圖3所示,該模型根據時間步長進行展開。
圖3 SDAN-GRU模型
堆疊降噪自編碼網絡是在降噪自編碼網絡的基礎上通過不斷疊加形成的神經網絡。每層網絡抽取的特征作為下一層網絡的輸入。堆疊降噪自編碼網絡的降維原理是逐層減少神經元的個數(shù),通過更少的神經元來表達原始數(shù)據特征,具有檢測速率快、泛化性好和抗噪性強等優(yōu)點。由于入侵檢測數(shù)據含有冗余信息和噪聲數(shù)據,從而引入堆疊降噪自編碼網絡作為模型的輸入層,對數(shù)據進行降維和特征抽取,提高整個深度學習模型的分類速率和精度。KDDCUP99數(shù)據集的每條記錄都有42維,其中包括前41維的固定特征屬性和最后一維的標記信息,經過歸一化、數(shù)值化處理后的KDDCUP99數(shù)據集維度變?yōu)?22維,標記特征不輸入堆疊降噪自編碼網絡,從而數(shù)據維度變?yōu)?21維。根據堆疊降噪自編碼網絡的降維原理,從而將121維的數(shù)據轉換為11*11的二維數(shù)據作為堆疊降噪自編碼網絡的輸入。降噪自編碼網絡和堆疊降噪自編碼網絡的結構圖分別為圖4和圖5。
圖4 降噪自編碼網絡
圖5 堆疊降噪自編碼網絡
堆疊降噪自編碼網絡的訓練需要分為兩步:
Step1:逐層訓練各個降噪自編碼網絡,通過梯度下降算法來調整自身的權值和偏置值;
Step2:待網絡逐層訓練完畢后,在網絡頂層添加對應層數(shù)的解碼層并訓練,通過梯度下降算法來微調整個網絡的權值和偏置值。
門控循環(huán)單元是對循環(huán)神經網絡研究的較新成果,門控循環(huán)單元簡化了自身結構,更能滿足入侵檢測系統(tǒng)的準確性和實時性要求。門控循環(huán)單元中有更新門、重置門和候選隱藏狀態(tài)。其中,更新門決定需要繼續(xù)傳遞來自前一個時間步和當前時間步的多少信息,更新門將上一個時間步的信息和當前時間步的信息添加到σ激活函數(shù)中,輸出結果為0到1。重置門決定需要忘記多少過去的信息。重置門的表達式與更新門相同,但是用處不同。候選隱藏狀態(tài)存儲當前時間步和前一時間步的記憶信息,通過重置門來決定前一時間步信息的遺忘程度,0表示完全遺忘,1表示完全繼承。門控循環(huán)單元的目的是計算當前時間步下的真正隱藏狀態(tài),通過更新門的計算結果決定前一時間步信息和候選隱藏狀態(tài)信息需要更新到真正隱藏狀態(tài)的程度,并將其傳輸?shù)较乱粋€單元。在SDAN-GRU深度學習模型中,將門控循環(huán)單元用作模型的輸出層,以識別分類數(shù)據并輸出分類結果。GRU的每個時間步長的輸入是SDAN的特征向量序列,根據GRU按時間順序控制內部門和隱藏狀態(tài)從而傳遞存儲信息的原理,需要對GRU的輸入向量序列進行構造。Xt代表當前時間步長,Xt-1和Xt+1分別是前一個時間步和下一時間步。設Xt代表當前時間步長,Xt-1和Xt+1分別是前一個時間步和下一時間步。則第一個GRU的輸入向量序列為(X1,X2,…,Xt-1,Xt),第二個輸入向量序列為(X2,X3,…,Xt-1,Xt),類推可得出所有的GRU輸入向量序列。GRU的結構如圖6所示。
圖6 門控循環(huán)單元
zt代表更新門,rt代表重置門,gt代表候選隱藏狀態(tài),σ是激活函數(shù),再當前時間t下,xt代表第t時間步的輸入變量,ht-1和ht分別代表前一個時間步t-1和當前時間步t的記憶。
zt=σ(Wz[ht-1,xt])
(1)
rt=σ(Wr[ht-1,xt])
(2)
gt=tanh(W[rt*ht-1,xt])
(3)
ht=(1-zt)*ht-1+zt*gt
(4)
模型訓練流程圖如圖7所示。
圖7 SDAN-GRU模型訓練流程
Step1:初始化模型:網絡層數(shù)結構、學習率等;
Step2:數(shù)據集數(shù)值化、歸一化和噪聲處理;
Step3:將噪聲數(shù)據輸入到降噪自編碼器進行預訓練;
Step4:調節(jié)降噪自編碼器的權值和偏置;
Step5:保留各個降噪自編碼器的編碼層并添加對應層數(shù)的解碼層進行訓練;
Step6:微調堆疊降噪自編碼器的權值和偏置;
Step7:將訓練集輸入到SDAN中生成輸出向量序列用于訓練GRU;
Step8:計算損失函數(shù);
Step9:根據結果調整參數(shù),直至模型最優(yōu)。
模型檢測流程圖如圖8所示。
圖8 SDAN-GRU模型檢測流程
Step1:數(shù)據集預處理;
Step2:將處理好的數(shù)據輸入到模型中進行檢測;
Step3:SDAN進行降維、抽取特征,GRU進行分類;
Step4:得出檢測結果。
為了檢測本文當中的入侵檢測模型效果如何,需要進行仿真。實驗在Windows10操作系統(tǒng)下進行,使用的CPU為I7-9750H六核處理器,使用的顯卡為英偉達RTX2060顯卡,運行內存為16GB.軟件平臺基于Pycharm和tensorflow1.14神經網絡框架。
本文選用部分KDDCUP99數(shù)據集。并將該數(shù)據集按6:2:2的比例分成訓練集、驗證集和測試集。訓練集用于訓練入侵檢測模型,驗證集用于評估入侵檢測模型,最后使用測試集測試入侵檢測模型。各類數(shù)據見表1。
表1 各類數(shù)據明細
在本文的實驗中,使用準確率(accuracy)和誤報率(false alarm rate)等相關數(shù)據來作為該實驗的評估指標。此實驗中有兩種類型的數(shù)據,即:安全數(shù)據(True)和威脅數(shù)據(False)。在該實驗過程中,將發(fā)生四種情況,分別是TT(安全數(shù)據被正確識別)、TN(安全數(shù)據被錯誤識別)、FT(威脅數(shù)據被正確識別)、FN(威脅數(shù)據被錯誤識別)。從這幾種數(shù)據中可以得出以下式子:
(5)
(6)
6.3.1 SDAN-GRU模型參數(shù)設計
在基于深度學習算法的模型中,模型的參數(shù)將影響模型的最終檢測結果。適當?shù)膶W習率可以使模型在適當?shù)臅r間收斂。如果將學習率設置得太小,則收斂時間將延長。如果學習率設置得太大,它將無法收斂并在最優(yōu)值附近波動。考慮到學習速率在深度學習算法中的重要性,本文考慮了學習率對模型的影響,并將準確率作為評判標準。結果如圖9所示。
圖9 不同學習率取值與準確率的關系柱狀圖
由圖9可知,當學習率在0.001時,準確率最高。學習率大于或小于0.001時,準確率都偏低。不僅學習率可以影響準確率,合適的降噪自編碼網絡預訓練迭代次數(shù)也能提高入侵檢測準確率。將學習率設置為0.001,考慮迭代次數(shù)對該模型的影響,將準確率作為評判標準。實驗結果如圖10所示。
圖10 不同迭代次數(shù)取值與準確率的關系柱狀圖
由圖10可以看出,當訓練降噪自編碼網絡迭代次數(shù)為150時,準確率有最大值。在迭代次數(shù)大于或小于150時,準確率都偏低。將模型學習率設置為0.001,降噪自編碼網絡預訓練迭代次數(shù)設置為150。模型其它參數(shù)信息通過參考前人所提供的參數(shù)值并反復實驗調優(yōu),最終的模型參數(shù)設計見表2。
表2 模型參數(shù)設計
6.3.2 對比模型參數(shù)構建
對比實驗分別構建了卷積神經網絡模型(CNN)、SDAN-BP模型、SDAN-LSTM模型。其中卷積神經網絡檢測模型(CNN)的構建參照了文獻[11],卷積神經網絡檢測模型(CNN)共有十層,一個輸入層、三個卷積層、三個Dropout層、1個Max-pooling層、一個全連接層和一個Softmax層。SDAN-BP模型的構建采用了控制變量法,其中堆疊降噪自編碼器的參數(shù)采用了本文提供的模型參數(shù),全連接神經網絡層中神經元的個數(shù)為200。SDAN-LSTM模型的構建采用了控制變量法,堆疊降噪自編碼器的參數(shù)采用了本文提供的模型參數(shù),長短期記憶網絡層參考了文獻[9],LSTM采用五層結構,分別為輸入層、輸出層和三層隱藏層,隱藏層神經元個數(shù)分別是64,128和64。
設置好相應的參數(shù),入侵檢測系統(tǒng)的訓練迭代次數(shù)和準確率的關系如圖11所示。橫坐標為入侵檢測系統(tǒng)的訓練迭代次數(shù),縱坐標為準確率。
圖11 入侵檢測模型迭代次數(shù)與準確率的關系
入侵檢測系統(tǒng)的訓練迭代次數(shù)和損失值的關系如圖12所示。橫坐標為入侵檢測系統(tǒng)的訓練迭代次數(shù),縱坐標為損失值。
圖12 入侵檢測模型迭代次數(shù)與損失值的關系
由圖11、圖12可知,隨著迭代次數(shù)的增加,準確率總體呈現(xiàn)上升的狀態(tài)并且準確率高。隨著迭代次數(shù)的增加,損失值總體呈現(xiàn)下降的趨勢并且損失值低。說明該入侵檢測模型有著良好的檢測效果。為了檢驗SDAN-GRU深度學習模型在入侵檢測中所具有的優(yōu)勢,故將該模型與其它模型進行比較。迭代次數(shù)和準確率的曲線關系如圖13所示。
圖13 四種入侵檢測模型迭代次數(shù)與準確率的關系
卷積神經網絡模型(CNN)中沒有數(shù)據降維和特征抽取模塊,因此需要更長的訓練時間,最終的檢測準確率不高。堆疊降噪自編碼-全連接模型(SDAN-BP)具備降維、數(shù)據特征抽取模塊,因此訓練時間短,可達到一個相對優(yōu)秀的準確率。又因為卷積神經網絡和全連接神經網絡都不能處理網絡流量數(shù)據的時序特征,所以上述兩個網絡入侵檢測模型的準確率還有提升的空間。再看堆疊降噪自編碼-長短期記憶模型(SDAN-LSTM)和堆疊降噪自編碼-門控循環(huán)單元模型(SDAN-GRU),由于這兩個模型有數(shù)據降維和特征抽取模塊,因此訓練時間短,同時長短期記憶網絡(LSTM)和門控循環(huán)單元(GRU)可抽取網絡流量數(shù)據中的時序特征,最終可以達到一個優(yōu)秀的準確率。門控循環(huán)單元混合了細胞狀態(tài)和隱藏狀態(tài),并將長短期記憶網絡中的忘記門和輸入門合成了單一的更新門,用來控制過去的隱藏狀態(tài)在當前時刻的重要性,并設立重置門來提供丟棄與未來無關的過去隱藏狀態(tài)的機制。門控循環(huán)單元簡化了自身的結構,占用更少的系統(tǒng)資源,使得模型訓練時間縮短,達到更優(yōu)的檢測效果。在堆疊降噪自編碼-長短期記憶模型(SDAN-LSTM)準確率已經高達97.5%的情況下,堆疊降噪自編碼-門控循環(huán)單元模型(SDAN-GRU)可以達到99.5%的準確率,并且在迭代的過程中,準確率平穩(wěn)波動幅度小。堆疊降噪自編碼-長短期記憶模型(SDAN-LSTM)的訓練時間是55.10秒,堆疊降噪自編碼-門控循環(huán)單元模型(SDAN-GRU)的訓練時間是49.98秒,大幅縮短了運算時間,提高模型的及時性。
本文提出的基于堆疊降噪自編碼網絡的門控循環(huán)單元模型在應對多樣性、隱蔽性和高維度的非線性入侵檢測數(shù)據有著良好的準確性和實時性。門控循環(huán)單元中重置門和更新門的設計分別有助于捕捉時序數(shù)據中的短期和長期依賴關系,相較于其它深度學習模型更適合對攻擊樣本所具有的時序特征進行識別和分類。入侵檢測數(shù)據含有冗余信息和噪聲數(shù)據,因此進一步引入堆疊降噪自編碼網絡對數(shù)據進行降維和特征抽取,與門控循環(huán)單元結合構建深度學習模型提高了對流量數(shù)據的分類速率和精度。本文使用了KDDCUP99數(shù)據集對該模型進行了驗證。實驗結果表明,該模型不僅提高了檢測的速率而且提高了檢測的準確率。由于該模型只是應用在入侵檢測方向下得出的結果,還沒有在其它科研方向下進行過應用,所以下一步會將該模型進行擴展優(yōu)化并應用在其它科研方向下并進行驗證。