劉楚鴻 汪培萍
【摘要】? ? 隨著計算機網絡的不斷發展,越來越多的用戶使用計算機,從而給黑客入侵網絡提供了機會,網絡的安全時刻面臨著威脅。入侵檢測技術是一種可以主動防御網絡安全技術,它對網絡的數據傳輸進行實時的監控,當發現有可疑數據時,及時發出警報或者采取主動防御措施。傳統的入侵檢測技術誤報率高,自適應能力不足。因此,本文將自動編碼器(Auto-Encoder)應用到入侵檢測系統中去,基于Tensorflow-GPU 實現了該方法,并在Nvidia GTX 1060 6GB的GPU上 ,使用KDD數據集進行了評估.實驗表明,檢測準確率達到99%。
【關鍵詞】? ? 計算機網絡? ? 入侵檢測? ? 自動編碼器? ? KDD
引言
現如今,計算機網絡受到的攻擊越來越多,一種常見的計算機網絡安全系統是網絡入侵檢測系統(NIDS)。NIDS通過監視每個網絡信道是否存在異常行為,當檢測到異常行為時,及時發出警報或者采取主動防御措施。很多的機器學習技術被應用在NIDS以提高檢測性能。最流行的方法是使用人工神經網絡(ANN)進行網絡數據檢測。使用人工神經網絡的優點是能夠學習復雜非線性的數據,與其他的機器算法相比,在檢測的性能有著很大的優勢。
使用人工神經網絡作為網絡入侵檢測系統(NIDS)的方法是訓練它將網絡數據分類為正常數據或者異常數據。而使用人工神經網絡作為異常檢測系統不能對原始數據進行實時處理,并且監督學習的訓練方式導致了系統具有高復雜性。本文開發一種基于自動編碼器集合的網絡入侵檢測器,該系統使用一組小型神經網絡(自動編碼器),比單個自動編碼器在相同的特征空間中更有效,并且可以更小的噪聲。它們可以在無監督的情況下進行訓練;并且在重建不好的情況下,它們可以用于異常檢測。實驗表明,使用該方法能夠提高檢測準確率。
一、基于自動編碼器集合的入侵檢測系統
深度學習可以自動從原始數據中學習特征來提高分類器的準確率。Lecun等人概括了機器學習的基本架構,即特征提取模塊與分類器模塊。本文提出的基于自動編碼器集合的在線入侵檢測系統也基于此方法,組成如圖1所示,主要由數據預處理模塊、特征學習模塊、異常檢測模塊組成。
1.1數據預處理模塊
數據預處理模塊首先將原始數據進行特征化處理,其中包括:文本特征的數值化和數據特征的標準化等。本文采用基于數據填充算法的轉換方法,其轉換過程如圖2所示,在保留單個初始樣本X中全部信息的基礎上,對初始樣本進行特征擴展,并且使用隨機的正態分布來填充擴充得到的特征。該辦法相對簡單,并且容易實現。
圖2? ? 數據轉換算法
數據輸入的特征(維度)所在的數值范圍往往都是不一致的,意味著數據存在偏差,不利于神經網絡的處理,因此在數據預處理階段進行標準化處理。本文采用主流零-均值規范化(Z-Score)的方法,如式1所示。
a為樣本總數,xi為標準化前樣本數據某一維度的特征值,為標準化之后樣本數據所對應維度的特征值。
1.2特征學習模塊
1.2.1在網絡異常檢測中,提取捕獲每個穿越網絡的數據包的上下文及目的的特征至關重要
從網絡流量中提取特征的挑戰是:
(1)來自不同信道輸入(對話)的分組是交錯的,
(2)在任何時刻可能有多個信道,
(3)分組到達率很高。
本文采用了一個特征提取框架,用于通過動態數量的數據流(網絡通道)進行時間統計的高速特征提取。該框架內存占用量小,因為它使用在阻尼窗口上維護的增量統計信息。使用阻尼窗口意味著提取的特征是暫時的(捕獲數據包通道的最終行為),并且當阻尼權重變為零時(節省額外內存),可以刪除增量統計數據。
阻尼增量統計:設S={x1,x2,....................}是一個無界數據流,其中xi∈R。S的均值、方差和標準差可以通過保持元組IS=(N,LS,SS),(其中N,LS和SS是實例的個數、線性和平方和)逐步更新。具體來說,將xi插入IS的更新過程如式2所示:
任何給定時間的統計數據是
為了提取數據流的當前行為,就必須拋棄舊的實例。解決這一問題的方法是使用受抑制的增量統計數據。在阻尼窗口模型中,舊值的權重隨時間呈指數遞減。設d為衰減函數,定義為式
其中λ>0是衰變因子,t是從Si流中最后一次觀察到的時間。阻尼增量統計的元組定義為ISiλ。ISiλ=(ω,LS,SS,SRij,Tlast),ω是當前權重,Tlast是ISiλ是上一次更新的時間戳。
SRij是流i和j之間的剩余積之和(用于計算2D統計量),在時間tcur更新具有Xcur的ISλ,執行算法1
1.2.2 特征映射器
特征映射器的目的是將x的n個特征(維度)映射到k個較小的子實例中,每個異常檢測模塊集成層中的每個自動編碼器都有一個子實例。
設v表示k個子實例的有序集。v={,,......,};v的子實例可以看作是域X的子空間。為了確保異常檢測模塊中的工作有效且復雜度低,要求所選映射f()=v,確保每個都不超過m個特征,其中m是系統的用戶定義參數,參數m影響集合的整體復雜性;將中的每個n個特征精確映射一次到v中的特征,將X的特征(維數)逐步聚類到不大于m的k群中,從而找到映射f。通過對增量更新的摘要數據執行聚集層次聚類來實現這一點。特征映射器的特征映射算法執行以下步驟:
(1)在訓練模式下,增量更新摘要統計數據的實例特性;
(2)當訓練模式結束時,對統計信息執行分層聚類以形成f;
(3)在執行模式下,執行f()=v,并將v傳遞給異常檢測模塊;
1.3異常檢測模塊
異常檢測模塊由兩層的自動編碼器組成,集成層與輸出層。
集成層:
一組有序的三層自動編碼器,該層負責測量v中每個子空間(實例)的獨立異常。在訓練模式期間,自動編碼器學習其各自子空間的正常行為。在訓練模式和執行模式下,每個自動編碼器向輸出層報告其RMSE重構錯誤。
輸出層:
一種三層自動編碼器,它學習集成層的正常(即訓練模式)的RMSE。考慮子空間異常與網絡流量中自然產生的噪聲之間的關系,該層負責生成最終的異常評分。
當異常檢測器從特征映射器接收到第一組映射實例V是,異常檢測器使用實例V作為模型初始化異常檢測器的結構。
具體來說,θ表示整個自動編碼器,設L(1)和L(2)分別表示集合層和輸出層。L(1)定義為有序集L(1)={θ1,θ2,.....θk}。
自動編碼器θi∈L(1)有三層神經元:隱層神經元()在輸入與輸出層,與內層神經元β.(),β∈(0,1]。圖3說明了∈V與∈L(1)之間的映射。
L(2)被定義為具有K個輸入和輸出神經元的單個自編碼器θ0,以及[K*β]內神經元。L(2)的輸入是來自L(1)中每個自動編碼器歸一化RMSE誤差信號。
在L(1)中發送每個自動編碼器的聚合錯誤(RMSE)信號,而不是來自L(1)的每個單個神經元的信號,從而降低了網絡的復雜性。
利用均勻分布的隨機值初始化了自動編碼器θ i的權值。
自動編碼器的訓練算法如下:
在執行模式下,自動編碼器不更新任何內部參數。并且在整個網絡中執行前向傳播,并返回L(2)的RMSE重構錯誤。算法3給出了執行的過程。
異常檢測器的輸出是RMSE異常分數S∈[0,∞],s越大則異常概率越大。要使用S,必須確定異常分數截止閾值φ。在所有實例都代表正常的流量情況下,將φ設置為訓練模式中看到的最大分數。
另一種方法是按概率選擇φ,具體而言將L(1)輸出的RMSE分數擬合為記錄正常或非標準分布,L(2)如果s發生的概率非常低,則提出警報。本文根據其原始的RMSE分數來評估異常檢測器的檢測能力。
二、實驗結果分析
本文采用KDDCup99數據集用來檢測算法的可行性,該數據集中,每一個連接有41個固定特征屬性和1個類標識,在41個特征屬性中有9個為離散(symbolic)型,其余均為連續(continuous)型,類標識用于表示具體的攻擊類型;KDDCup99將入侵的行為分為DOS、R2L、U2L、Probing。
本文對10%的樣本進行分析,其中包含495651個訓練樣本以及312029個測試樣本,各類的入侵行為的分類如表1所示。
本文使用入侵檢測準確率作為檢測異常檢測器的指標,其中準確率的計算公式如下所示:
A為準確率,TP和TN分別表示正確分類的攻擊樣本和正確分類的正常樣本,FP和FN表示錯誤分類的攻擊樣本和錯誤分類的正常樣本。
把入侵的數據經過數據預處理模塊處理后,經過自動編碼器集合的異常檢測器后,得到的批處理數據量的準確率如表2所示。
從表2中的結果可以得到,當epoch的數目越大,入侵檢測的準確率就越高。
三、結論
隨著計算機網絡的發展,越來越多的用戶使用計算機網絡,從而給黑客入侵網絡提供了機會,網絡的安全面臨著威脅。入侵檢測技術是一種可以主動防御網絡安全技術,能對網絡的數據傳輸進行實時的監控,當發現可疑數據時,及時發出警報或者采取主動防御措施。
本文提出的基于自動編碼器集合的入侵檢測技術,基于Tensorflow-GPU實現了系統模型的代碼,并在Nvidia GTX 1060 6GB的GPU完成了模型在KDD標準入侵檢測數據集上的測試。
實驗表明,該模型對攻擊的檢測取得較好的檢測性能,檢測準確率達到99%。
參? 考? 文? 獻
[1] Evaluation of anomaly-based IDS for mobile devices using machine learning classifiers[J]. Security and Communication Networks, 2012, 5(1):3-14.
[2] Buczak A L , Member, IEEE, et al. A Survey of Data Mining and Machine Learning Methods for Cyber Security Intrusion Detection[J]. IEEE Communications Surveys & Tutorials, 2017, 18(2):1153-1176.
[3]高妮, 賀毅岳, 高嶺. 海量數據環境下用于入侵檢測的深度學習方法[J]. 計算機應用研究, 2018, 35(4):1197-1200.
[4]鄧俊鋒, 張曉龍. 基于自動編碼器組合的深度學習優化方法[J]. 計算機應用, 2016, 36(3):697-702.
[5]王艷華, 馬志強, 臧露. 入侵檢測技術在網絡安全中的應用與研究[J]. 信息技術, 2009(6):41-44.
[6]潘志松. 基于神經網絡的入侵檢測研究[D]. 南京航空航天大學, 2003.
[7]基于自動編碼器的半監督表示學習與分類學習研究[D]. 重慶大學, 2015.