劉天澤
(南京大學金陵學院,江蘇 南京 210089)
自互聯網普及以來,由于經濟利益等驅動,網絡病毒和各類網絡流量攻擊層出不窮,造成了諸多由于惡意而導致的安全事故,而技術革新與網絡拓撲結構的復雜化也對網絡入侵檢測系統(Network Intrusion Detection System,NIDS) 提出了新的要求。機器學習等較為傳統的方式受到穩健性低、準確性低的限制,難以檢測和解決網絡入侵異常與突發訪問性異常造成的網絡流量異常問題。
在網絡入侵檢測面臨較高挑戰的情況下,傳統的統計分析和信號處理等技術難以滿足復雜的網絡結構分析需求,無法達到高效的檢測速度和穩健性標準。為了滿足高級網絡工作場合的異常檢測需求,本文將介紹兩種先進的網絡流量異常檢測方法:一是堆疊降噪自編碼器(Stacked Denoising Auto encoder,SDA) 算法設計,采用粒子群算法進行改良,在深度特征學習的基礎上確定SDA 算法參數,以一種邏輯回歸算法進一步增強網絡流量攻擊的檢測能力,避免受到噪聲數據的影響。二是由LetNet 為主體的攻擊模塊和長短期記憶網絡(Long Short-Term Memory,LSTM) 算法實現的結構,先實時監測并收集數據,再由dummy 變量(One-Hot編碼) 對攻擊事件進行分類并計算發生概率,防止突發的網絡流量攻擊安全事件。這兩種方法都基于深度學習的思想,即通過端到端的深層網絡方式設計并實現,在特征設計方法舉步不前的情況下都取得了良好的收益,是目前我國主流的網絡流量檢測方法[1-4]。
網絡攻擊即在未得到授權的情況下偷取或訪問計算機中的數據,進而造成破壞,修改或使服務器原有的某種功能失效。常見的網絡攻擊分為3 類:一是偵察跟蹤攻擊:盜取目標計算機的各種信息;二是訪問攻擊:利用系統漏洞獲取主機控制權限;三是拒絕服務(Denial of Service,DoS) 攻擊:利用大量鏈接請求耗盡網絡服務資源,使計算機正常服務環境崩潰。網絡流量異常檢測則是通過應用各種異常檢測技術分析網絡流量,以提前發現網絡攻擊行為。
信號處理技術為較成熟的主流網絡流量檢測方式,其核心思想是對各類信號按照想要得到的結果進行分類和提取,分別利用一維數組和二維數組對單鏈和多鏈進行數據處理。
由信號處理技術又衍生出一種頻譜分析技術,借助傅里葉變換轉化為頻率域信號,該技術能夠通過分析頻率變化(即時間區間中的突發奇異點) 來確定異常的位置,擁有較高的準確性和靈活性。
分類技術和聚類技術統稱為數據挖掘技術。分類技術與早期的統計分析法思想類似,即通過正常網絡流量與異常網絡流量特征的不同而建立模型,常見的分類技術為K 最鄰近(K-Nearest Neighbor,KNN) 算法和支持向量機(Support Vector Machine,SVM) 算法;聚類技術則是對數據進行標準化處理,選取相似的部分進行集中分類,探究潛在的相似性。
神經網絡異常檢測技術及其模型以深度學習為核心思想,是近年來的主要研究方向。先構建檢測器對流量數據進行預處理,將正常網絡流量的數字特征轉化為數據網絡模型,再對當前的流量情況進行具體分析,得出穩健性高、自適性好的結果,并且可以通過對實數編碼的優化提高工作效率。
本文介紹的SDA 算法和LSTM 算法都由深度學習為主要思想,建立不同的網絡流量模型以尋求實時高效的網絡流量異常檢測方法,下面將圍繞深度學習對兩種算法展開探究與討論。
深度學習的發展歷程分為3 個階段:從最初1957 年,感知機的概念首次出現;再到20 世紀80年代,多層感知機和反向傳播算法提出;直到2006年,深度學習的核心理念——預訓練概念提出,神經網絡的研究成果得以百花齊放。深度學習理論的發展,離不開科技的飛速進步和數學家們提出的算法改良。
所謂深度學習,便是搭建擁有高速計算能力的深層神經網絡以取代人工設計,直接通過特征學習的方法分析數據并以高層特征表示,最后進行分類等計算。這種端到端的形式可以避免冗雜且容易產生錯誤的人工設計,在各個行業和科技領域都曾被廣泛應用。
網絡流量檢測大致可分為3 個模塊:首先,對網絡流量數據進行預處理,以提取特征向量;其次,由輸入層轉到隱藏層,用不同的算法對其進行尋優,提取網絡流量深度特征;最后,根據特征值用分類器辨別正常網絡流量與異常網絡流量。
由于常規的單階段SDA 算法采用單階段尋優而影響了輸入層的效率,使提取特征的能力受到制約,因此本文在此基礎上介紹了一種基于粒子群優化(Particle Swarm Optimization,PSO) 算法的兩階段SDA 算法,分別進行層數尋優和每層節點數尋優,二者共同組成了網絡流量特征學習,大大提高了網絡流量特征提取的準確性。
第一階段為層數尋優,首先對PSO 算法進行初始化,規定每個粒子的局部最優值,并根據數據得出全局最優值,迭代并刷新粒子數值,由SDA 生成隱藏層;然后計算適應值并得出對應的局部最優值和全局最優解,將時間循環至最大次數后,將最優值輸出給SDA,使其分析出節點數和隱藏層。
第二階段為節點數尋優,根據隱藏層層數設置n 維空間并進行粒子初始化,得出每個向量對應的局部最優值和全局最優解,迭代完成后刷新向量元素值,將值賦給SDA,計算隱藏層包含的節點數和粒子適應值,并得出新的最優值和粒子全局最優向量,將時間循環至最大次數后,得出最優全局向量,至此便完成了對SDA 結構的分析,可以進行網絡流量深度特征學習環節。
在得到的SDA 結構的基礎上,用批梯度下降(Batch Gradient Descent,BGD) 算法對其進行無監督逐層貪婪預訓練,得到網絡流量深度特征。在訓練進行時,采用xavier 神經網絡參數初始化方法,在迭代完成后根據向量位置更新SDA 結構每層節點數,并返回最優結構。逐層迭代完成后,即可得到訓練后的網絡流量深度特征。
采取softmax 分類器對網絡流量異常檢測進行構建。首先,將由最優SDA 算法結構得出的網絡流量深度特征傳給softmax 分類器,分析并輸出樣本的類別;其次,利用交叉熵代價函數進行訓練(包含于最小化式),得出基于網絡流量異常檢測分類器的新規則;最后,再次調整SDA 結構,以提高準確性和對異常網絡流量的檢測能力。
兩階段SDA 算法的準確性明顯高于單階段SDA 算法,檢測率有較大提升,誤報率明顯下降。由于網絡流量特征提取效率的提升使得異常檢測模型的結構得到了改善,因此穩健性得以提高,使整體模型結構面對突發性網絡攻擊的威脅抗性得到大幅增強,證明了多階段SDA 算法的優越性。
和SDA 算法模型類似,LSTM 算法模型網絡流量檢測同樣分為3 個模塊:首先,進行預處理,在雜亂的網絡流量數據中提取出網絡流量單元,該部分又分為對數據包的特征分析和對網絡流的特征分析,其中序列結構由流量byte 和數據包向量構成。其次,轉換數據編碼,然后利用特征學習分析網絡流量,將編碼改寫為向量形式,也是模型的核心和算法的主要部分;最后,使用分類器對向量進行分類,得到最終結果。下面分別予以具體分析。
在packet capture 被劃分為網絡流后,開始進行特征分析,之所以分為這兩個階段,是為了針對不同的數據結構而給出更加清晰的架構方案,同時為了避免由于網絡流的局限性而漏掉大量數據包信息的情況,便于提高全面性,并且在處理時具有時效性,相對降低了冗雜性,使得整個系統的靈活性大大提高。
在網絡流內時序特征學習階段,讓向量序列重復第一階段的操作,利用構建的神經網絡排列整體序列,并用特征學習的方法加以分析,時間分布層可以作為第一階段轉為第二階段的工具,使網絡層變為處理層,并最終得到一串網絡流向量。該向量包括了所有有價值的結構化信息,便于從宏觀層面上分析網絡流量數據特征。最后再以softmax 分類器進行分類,至此便完成了分類階段。
在分類階段完成后,將通過機器學習的方式進行網絡流量異常檢測,實現自動學習網絡流量的時空特征的功能。大致步驟為:首先,使用卷積神經網絡(Convolutional Neural Network,CNN) 算法學習數據包中的空間特征,并將其轉化為2D 圖像形式;其次,通過LSTM 算法學習時間特征,系統將得到的時空特征歸納并用作網絡流量檢測的基準。
CNN 算法學習空間特征的階段可分為兩個步驟:首先,用CNN 算法思想和One-Hot 編碼將網絡流字節轉化為2D 圖像,該圖像通過池化和卷積變為特征向量;其次,對數據包進行相同的步驟,使其變為能夠提取特征的數據包向量,最后將兩部分向量合并成一個整體向量,完成空間特征學習。
最后使用softmax 分類器。softmax 分類器用于對自動學習的流量特征進行分析檢測,得出結果,該模型的設計比常規的深度學習方法誤報率更低,且避免了不必要的人工操作。
本文共介紹了兩種網絡入侵檢測方法,旨在分析預防網絡流量攻擊的主流方式,如CNN 算法、SDA 算法和LSTM 算法,它們各有優勢卻難以互補。盡管在深度學習的基礎上,復雜的算法和架構設計得以實現,在網絡攻擊的預防中取得了一定成效,但在網絡關系日益復雜的情況下,對不定時惡意攻擊的檢測必須具有更高的學習能力和特征分析能力,這離不開密鑰技術和計算機技術等各方面的進步,未來的檢測技術也需要更高效的分類器和更高明的算法,希望在不久的將來神經網絡技術能夠發展到人類無需干預的地步,屆時異常網絡流量的攻擊將不再是制約網絡發展的一大難題。