陳虹,王瀚文,金海波
(遼寧工程技術大學軟件學院,遼寧 葫蘆島 125000)
隨著網絡成為人們生活中的重要工具,人們將大量數據儲存在網絡云主機中,文獻[1-2]介紹了目前個人或企業的網絡云主機中存在大量敏感的或隱私數據,導致網絡云主機容易受到攻擊的情況,而入侵檢測技術是當前云主機有效的防御手段。
目前入侵檢測模型主要基于機器學習、深度學習構建。文獻[3-4]主要是基于機器學習算法的入侵檢測模型的綜述,比較了不同機器學習算法的優劣。文獻[5-6]介紹了兩種入侵檢測技術:即以主動學習及基于K 近鄰的直推式信度機方法為依據的有指導入侵檢測技術;以粗糙集和人工免疫為依據的集成入侵檢測模型,該模型雖然準確率較高,但面對海量數據時易出現過擬合問題。對比傳統的學習算法,基于深度學習算法構建的入侵檢測模型,更側重于海量數據學習及處理方面,主要是為了解決海量數據內高維、冗雜以及高噪等傳統機器學習算法難以處理的問題。文獻[7-8]介紹的兩種傳統機器學習算法雖然準確率較高,但需要復雜的特征工程,所有特征通常需要由行業專家確定,然后通過編碼實現特征提取等操作。文獻[9-10]介紹了兩種改進的機器學習算法,即基于遺傳規劃網絡的模糊類關聯規則挖掘的入侵檢測算法和基于自適應提升算法的網絡入侵檢測算法,這兩種算法的收斂速度和準確率均優于前文提到的機器學習算法,但依然不能從數據中挖掘特征。深度學習算法不僅可以主動從數據內對特征進行學習,還可以在數據量較高的時候保持良好的性能。文獻[11]使用卷積神經網絡構建入侵檢測模型,模型準確率較高,但收斂速度較慢。文獻[12]基于長短期記憶(LSTM)與改進殘差網絡構建入侵檢測模型對LSTM 進行優化,設計方案是在改進殘差神經網絡內融入一種帶跳躍的連接線,從而對深度神經網絡內梯度消失及擬合過渡等缺陷進行優化,但檢測準確率較低。文獻[13]提出了雙重路由深層膠囊網絡的入侵檢測系統,該方法采用雙重路由算法對基于向量表示的特征進行多方位識別捕捉,以減輕噪音特征的干擾,但模型的泛化程度較低。文獻[14]提出了基于深度神經網絡(DNN)和聯邦學習網絡入侵檢測方法,通過自動編碼器對DNN實現特征降維,并利用聯邦學習特性使得多個參與方使用通用模型參與訓練,該模型訓練速度較快,但識別部分攻擊準確率較高,模型整體準確率較低。文獻[15]提出了以深度學習為依據的混淆惡意請求檢測方式,通過注意力機制突出關鍵特征來檢測隱蔽程度較高的入侵數據,但在數據過大的情況下易出現過擬合。文獻[16]使用堆疊自編碼器和卷積神經網絡(CNN)對加密流量進行分類,實現了流量特征的類型識別,但檢測速度較慢。文獻[17-19]介紹了高維數據的降維操作,由于入侵檢測數據多為高維數據,數據在高維空間難以處理,計算這些數據的成本過高,因此在入侵檢測模型中引入自編碼器來進行數據降維。文獻[20-22]介紹自編碼器在入侵檢測技術中的研究,該方法對高維數據檢測效果較好,但處理高噪聲的海量數據效果較差。文獻[23]介紹了稀疏自編碼器和支持向量機結合的入侵檢測模型,采用稀疏自編碼器直接識別提取數據特征,然后使用支持向量機分類,該模型準確率較高,但收斂速度較慢。
為了解決入侵檢測模型易過擬合、收斂速度慢和準確率低的問題,本文在殘差網絡(ResNet)基礎上結合棧式自編碼器構建新的入侵檢測方法。該方法將處理好的數據輸入改進的棧式自編碼器進行特征降維,再將降維后的特征輸入到ResNet 網絡中進行分類,最后使用CIC-IDS-2017 作為測試集對訓練好的模型進行測試。
棧式自編碼器是可進行自我監督的一種學習算法,文獻[24]將其作為深度學習模型預訓練中的特征檢測器。棧式自編碼器主要由兩部分組成,分別為多個編碼器及解碼器,其本質為對輸入的數據進行某種轉換。編碼器把輸入的數據x轉變為編碼數據f(x),而解碼器將編碼f(x)重構成輸出數據?,即:
數據經過棧式自編碼器處理后獲得新的特征并降低維度。
文獻[25]提出一種殘差網絡,該網絡結構基于CNN 結構通過跳躍連接加入殘差模塊,并將全連接層替換為全局平均池化層。如圖1 所示,殘差單元保留了之前網絡結構內的輸入x,將輸入x與卷積后的輸出相加,最終獲得期望輸出K(x),并將K(x)轉換為殘差網絡的函數B(x),其中,K(x)=B(x) -x。
圖1 殘差模塊Fig.1 Residual module
本文將棧式自編碼器和ResNet 相融合,提出改進的堆疊的自動編碼器和殘差網絡(ISAE-ResNet)入侵檢測模型,如圖2 所示。該入侵檢測模型首先將預處理后的數據輸入改進的棧式自編碼器進行處理,利用降低數據維度的方式來增加模型的收斂速度。然后將處理后的數據輸入改進ResNet 網絡進行分類,并通過軟閾值函數降低數據中的噪聲來提高準確率。最后測試模型并判斷當前模型是否為最優,若不是則調優模型重新訓練,若是則得到分類結果。
圖2 ISAE-ResNet 入侵檢測模型Fig.2 ISAE-ResNet intrusion detection model
普通自編碼器一次只能訓練一個淺層自編碼器,由于層數過淺,在訓練過程中容易發生過擬合風險。為了解決傳統自編碼器易過擬合的問題,本文提出改進的棧式自編碼器。改進的棧式自編碼器如圖3 所示。
圖3 改進的棧式自編碼器Fig.3 Improved stack self-encoder
改進的棧式自編碼器通過主副編碼器重構數據并使用權重捆綁,使得過擬合風險性有所下降,并提升了模型收斂速度。
改進的棧式自編碼器由主編碼器、副編碼器A、副編碼器B 組成。副編碼器由3 個維度逐步遞減的自編碼器組成,輸入數據首先進入2 個副編碼器同時進行訓練,使得數據重構為新的特征。然后輸出的數據和原始數據共同進入主編碼器進行訓練。主編碼器由4 個維度逐步遞減的自編碼器組成,并通過捆綁權重使模型參數減少1/2,即將解碼層的權重捆綁到編碼層,增強降維的效果,此時編碼層和解碼層的權重為:
其中:N為自編碼器總層數,第N/2 層是編碼層,第N層是輸出層,L=1,2,…,N/2。
新的特征和原始數據通過主編碼器訓練后得到重構后的數據。重構后數據擁有新的特征并且降低了維度,模型使用這些數據將加快收斂速度并降低過擬合風險。
改進的ResNet 網絡通過批標準化層使每個神經元內的激活值做如下變換:
通過上述操作使梯度變大,避免梯度消失,梯度變大也使得學習收斂速度變快,對訓練速度有很大提升,并且可以簡化調參過程,使得模型對于初始化敏感度降低,將使用較大學習率變為可能。同時,批標準化層的添加加快了訓練速度,使收斂速度加快。模型中全局平均池化操作使得將特征圖全局平均后只輸出一個數值,并通過Softmax 函數,極大地縮短了訓練的時間。
Softmax 函數為:
Softmax 損失值函數為:
在殘差網絡的跳躍連接之前加入軟閾值函數,將數據通過軟閾值函數處理,將絕對值低于閾值的特征置為0,其他特征也向0 收縮,以此降低噪聲,提高模型的準確率。
軟閾值函數為:
本文改進的ResNet 網絡結構如圖4 所示。
圖4 改進的ResNet 網絡結構Fig.4 Improved ResNet network structure
該網絡結構中包括3個殘差模塊、1個批標準化層、1個全局平均池化層、2個全連接層和1個Dropout層。
本文模型使用CIC-IDS-2017 入侵檢測評估數據集進行驗證。文獻[26]對1998 年以來現有 11 個數據集的評估表明,大部分數據集已過時且可靠性低,此外其中部分數據集還存在欠缺流量多樣性等特點,一些沒有涵蓋已知攻擊的種類,另一些則對數據包有效載荷數據展開匿名處理,因此難以體現出當前的趨勢。其中,還有部分數據集缺少特征集和元數據,故本次實驗沒有選用KDD Cup 99、NSL-KDD等數據集。
CIS-IDS-2017 數據集中存在非惡性及最新的常見攻擊,在數據集的評估框架中,初次建立了相關標準對可靠基準數據集構建的正確性進行驗證。
CIS-IDS-2017 的數據分為1 個正常數據(BENIGN)和14 個攻擊類,分別是暴力破解FTP(FTP-Parator)、暴力破解SSH(SSH-patator)、心臟出血漏洞(Heartbleed)、Brute Force Web 攻擊(WebAttack)、XSS Web 攻 擊、SQL 注入Web攻擊、滲透(Infiltration)、僵尸網絡(Botnet)、端口掃描 攻擊(PortScans)、DDoS、DoS Hulk、DOS 黃金眼攻擊(DoS GoldenEye)、DOS 懶猴攻擊(DoS slowloris)、DoS Slowhttptest,每一種攻擊均有78 個特征值表示。選取訓練集和測試集按照7∶3 的比例進行劃分,具體實驗數據如表1 所示。
表1 實驗數據Table 1 Experimental datas 單位:個
ISAE-ResNet 的模型在Windows 系統環境下進行實驗和測試,使用Python 中的Keras 庫編寫模型并采用TensorFlow-CPU 進行計算,具體實驗環境如表2 所示。
表2 實驗環境 Table 2 Experimental environment
本文實驗評價指標由準確率(AC)、真正例率(TPR)、誤報率(FPR)作為評估模型的指標。
獲得其他3 個指標的基礎指標,由表3 的4 個基礎指標組成,其中,TP 表示真正類,FN 表示假負類,FP 表示假正類,TN 表示真負類。
表3 基礎指標 Table 3 Basic indicators
由上述4 個基本指標可得:
1)準確率(AC):
2)真正例率(TPR):
3)誤報率(FPR):
本文采取與改進前的ResNet 網絡和棧式自編碼器交叉對比,以及與近期其他文獻模型的準確率進行橫向對比來驗證ISAE-ResNet 模型的可行性。
3.3.1 超參數選擇
模型展開多次超參數調整,最終選用以下最優參數:
1)batch_size
若batch_size 過小,則在均方誤差代價函數的錯誤面及橫截面,線性神經元分別是一個拋物面及橢圓,由于修正方向每次均以各個樣本的梯度方向進行修正,難以達到收斂。batch_size 過大,各個 Batch 之間的采樣差異、各次梯度修正值相互抵消,無法修正。經過超參數調整,本文batch_size 選取為100 時為最優。
2)學習率
在深度學習中,學習率作為一個核心的超參數,其控制了網絡模型的學習進度,并對該網絡成功找到全局最小值從而獲得全局最優解的成功幾率及成功時間起決定性作用。學習率設置的大小會對網絡模型造成一定影響,當其設置過大時會使得網絡不能成功收斂,只能在最優值附近震蕩;當其設置過小時會極大地降低網絡收斂速度。經過超參數調整,本文學習率選取為0.01 時為最優學習率。
3)實驗迭代次數
實驗迭代一次的過程稱為一個epoch,即一個完整的數據集在神經網絡中的一個來回。epoch 設置過小,會使網絡學習時間過小,導致其不能收斂,epoch 數量則與神經網絡內權重的更新次數呈正向關系,當前者數量過大時后者更新次數也會較大,從而使得曲線從欠擬合轉變為過擬合。經過超參數調整,本文最優epoch 為50。
3.3.2 數據預處理
數據預處理包括獨熱編碼和Z-Score 標準化。
1)獨熱編碼
獨熱編碼又被稱為One-Hot 編碼,其使用N位狀態寄存器展開對N個狀態的編碼,各個狀態均具備各自單獨的寄存器位,在任意時刻的有效狀態僅有一位。One-Hot 編碼把二進制向量表示為分類變量,并把分類值映射到整數值,并且可將離散特征的取值擴展到了歐氏空間,離散特征的某個取值與歐氏空間的某個點相互對應。
使用TensorFlow 的One-Hot 函數將15 個標簽轉化為二進制標簽,以便神經網絡的訓練。
2)Z-Score 標準化
Z-Score 將不同量級的數據轉化為同一個量級,統一用計算出的Z-Score 值衡量,以保證數據之間的可比性。下面給出Z-Score 的標準差公式和標準化轉換公式:
在所使用的CIC-IDS-2017 數據集中,不同的特征數據之間的大小有著巨大差異,具有不同的數量級,因此本文采用Z-Score 方法對數據集展開標準化處理,通過numpy 中的mean 和std 函數進行實現。
3.3.3 ISAE-ResNet 交叉對比
將ISAE-ResNet 分別與基于未改進的ResNet 的入侵檢測模型和未改進的棧式自編碼器的入侵檢測模型進行交叉對比實驗,3 個實驗模型均采用相同的超參數和數據預處理方式。在模型訓練的過程中,由圖5 可見損失函數值的變化狀態。ISAE-ResNet迭代次數與損失函數值呈負性關系,后者隨前者的增加逐漸減小,且下降速率表現為先快后慢,在前10 次迭代中損失函數值快速下降,到第25 次左右loss 值逐漸趨于平緩。未改進的ResNet 網絡的loss值的變化和未改進的棧式自編碼器loss 值變化速度在25 次迭代時僅有緩慢下降趨勢,且在30 次左右才趨于平穩,說明本文模型收斂速度較快。
圖5 損失函數值對比Fig.5 Comparison of loss function values
ISAE-ResNet 準確率為98.67%、真正例率為95.93%、誤報率為0.37%,優于基于未改進ResNet 的入侵檢測模型準確率96.25%、真正例率91.24%、誤報率0.59%和未改進的棧式自編碼器的入侵檢測模型準確率97.17%、真正例率92.31%、誤報率0.46%,這表明ISAE-ResNet 模型性能高于未改進之前的ResNet 和棧式自編碼器入侵檢測模型。不同模型的準確率對比如圖6 所示。
圖6 不同模型的準確率對比Fig.6 Accuracy comparison of different models
3.3.4 ISAE-ResNet 與相關模型的對比
將本文模型與其他算法的入侵檢測模型做對比實驗,并通過準確率、真正例率、誤報率等方式對本文模型的性能進行驗證。本文模型準確率為98.67%、真正例率為95.93%、誤報率為0.37%。文獻[7]針對網絡入侵數據檢測,使用梯度提升決策樹模型進行分類,丟棄無關特征加快收斂速度,但準確率均低于本文模型,說明本文改進自編碼器可以在訓練中通過重構生成新的數據來增加分類準確率。文獻[12]設計了一種三層堆疊LSTM 網絡,對存在差異的流量特征進行提取,從而提升收斂速度,但準確率和真正例率低于本文模型,說明本文改進ResNet 網絡分 類效果較好。文獻[14]基于AutoEncoder和ResNet 的網絡融合了一種新的入侵檢測模型,通過自編碼器進行數據降維,但是并未對自編碼器進行改進,輸出的參數降維程度不高、分類效果較差,準確率、真正例率、誤報率均低于本文模型。文獻[17]采用變分自編碼器對特征進行提取,并生成新的特征來加快模型收斂速度,但準確率低于本文模型。文獻[20]使用動態自編碼器的網絡異常數據進行分類,將數據集中不平衡的數據進行處理來提高分類準確率,但準確率、誤報率低于本文模型。具體分類結果表4 所示。
表4 模型分類結果Table 4 Model classification results %
實驗結果表明,ISAE-ResNet 通過對棧式自編碼器進行改進,使用副編碼器重構數據得到新的特征并使用主編碼器進行降維,再對ResNet 進行改進,使用軟閾值函數清除噪聲,提高了對網絡中入侵數據的識別能力,并加快模型的收斂速度。同時,該模型準確率較高,誤報率較低,收斂速度較快,表明本文模型檢測能力較優。
隨著云端儲存時代的到來,大量用戶將隱私敏感信息儲存在網絡云主機中,針對用戶信息竊取的網絡攻擊也層出不窮。傳統基于機器學習與深度學習算法構建的入侵檢測模型已經較為成熟,但模型準確率及收斂速度有待提高。本文提出融合改進的棧式自編碼器和ResNet 的入侵檢測模型ISAEResNet,將預處理后的數據輸入改進的棧式自編碼器中,利用棧式自編碼器對數據急性降維并通過改進的ResNet 模型對數據進行分類。實驗結果表明,該模型存在收斂速度快、準確率高以及誤報率較低等特點。下一步將通過調整模型結構提高模型運算性能,以縮短模型計算時間。