肖鵬博 閔紹榮 羅威



摘 ?要: 船舶網絡是維護船舶正常功能的重要結構,當船舶網絡被入侵時,網絡流量會呈現異常狀態,嚴重影響船舶功能。而當前的船舶網絡入侵檢測方法不能兼顧檢測速度和準確度,無法滿足入侵檢測要求。為了克服目前船舶網絡入侵檢測方法存在的不足,以改善船舶入侵檢測方法的性能,提出基于信息熵和K均值算法的船舶網絡入侵檢測方法,通過信息熵理論找到最優特征子集,然后利用K均值算法實現入侵檢測,并與普通K均值算法進行對比測試。結果表明:本文方法可以有效檢測出船舶網絡入侵狀況,并且在保證準確性的同時極大的縮短了檢測時間,是一種高效的入侵檢測方法。
關鍵詞:?船舶網絡;入侵檢測;信息熵;聚類算法
中圖分類號: TP309????文獻標識碼:?A????DOI:10.3969/j.issn.1003-6970.2019.09.008
本文著錄格式:肖鵬博,閔紹榮,羅威. 基于信息熵和K均值的船舶網絡入侵檢測方法[J]. 軟件,2019,40(9):36-39
Research on Ship Network Intrusion Detection Based on Information Entropy and K-means Algorithm
XIAO Peng-bo, MIN Shao-rong, LUO Wei
(China Ship Development and Design Center, Wuhan 430064)
【Abstract】: Ship network is an important structure to maintain the normal function of ships. When the ship network??is intruded, the network flow will be abnormal, which will seriously affect the ship function. However, the current methods of ship network intrusion detection can not give consideration to both detection speed and accuracy, and can not meet the requirements of intrusion detection. In order to overcome the current ship the deficiency existing in network intrusion detection methods, to improve the performance of ship's intrusion detection method, based on information entropy and shipping network intrusion detection method of k-means algorithm, through the information entropy theory to find the optimal data subset, then using k-means algorithm to detect network intrusion, and compared with ordinary k-means algorithm. The results show that this method can effectively detect the ship network intrusion, and not only ensure the accuracy but also greatly shorten the detection time, It is an efficient intrusion detection method.
【Key words】: Ship network; Intrusion detection; Information entropy; Clustering algorithm
現代船舶網絡是為船舶內部多個功能子系統之間建立連接,并為終端用戶提供信息交互、安全監控、資源共享等信息服務的多媒體通信網絡。船舶網絡的特點主要表現在通信模式繁多、終端節點類型豐富、各類業務QoS需求差異較大[1]。當船舶網絡出現入侵異常時,網絡流量會出現異常,嚴重影響網絡性能,進而影響船舶正常功能。對入侵異常的檢測對于維護船舶網絡正常狀態十分重要,因此設計性能優異的船舶網絡入侵異常檢測方法具有十分重要的意義。
船舶網絡入侵檢測實際上是對船舶網絡的流量數據報文進行分類,當前船舶網絡入侵檢測主要有四大類[2-5]:基于特征庫的檢測、基于統計的檢測、基于信息論的檢測和基于數據挖掘技術的檢測。基于特征的檢測需要預先建立入侵異常數據庫,不能檢測出未知的異常;基于統計的檢測通過歷史正常網絡數據來檢測異常,然而一旦歷史數據過期,檢測結果會有很大偏差;使用信息論[6-7]為原理的檢測方法通過觀測網絡流量數據的信息熵變化來判斷入侵異常,但其不能保證檢測精度;基于數據挖掘[8]的檢測方法隨著機器學習,大數據處理技術的進步也越來越多的被用在了船舶網絡入侵檢測中,并且達到了較好的效果。
本文提出一種船舶網絡入侵檢測方法,以信息熵相關理論結合K均值算法[9-10]實現。K均值聚類算法是無需監督的算法,其通過將類似屬性數據聚類成簇來進行數據的分類,為了解決船舶網絡數據流中特征屬性維度過高對聚類檢測準確率和及時性的負面影響,提出基于信息熵的特征維度縮減流程,通過縮減特征維度提高K均值算法的效率。
信息熵的概念來源于信息論,用信息熵的概念來表示所含信息量的大小,從而描述系統信息的無序度。數據集的信息熵越大,其包含的信息量就越大。在多維特征數據集中,條件熵表示某一維特征對整體信息不確定性的影響,信息增益表示某一維特征為系統信息帶來的信息量的大小。
計算出多維特征數據集中每一維特征的信息增益,比較大小之后可以得到該維特征對數據集的信息重要程度。信息熵的各個概念定義如下:
信息熵值計算公式:
(1)
其中Y是特征數據集合,n為特征中不同數值個數,即Y={
},
表示某個數值在集合中出現的概率。
條件熵計算公式:
(2)
其中p(y|x)表示在已知X發生的條件下Y的數值概率,條件熵表示在X發生條件下的Y的信息復雜程度。
在細分條件之后,數據集的信息復雜度勢必會降低,這個差值表明了該條件對系統的重要程度,即信息增益:
(3)
K均值算法是一種非監督算法,無需提前訓練數據集,其基本思想是將數據劃分進指定數目的簇中,并且使最終迭代結果中的每個樣本點到其所在簇的歐式距離最小。其實現步驟如下:
步驟1輸入數據集S,聚類中心個數k,隨機從數據集中選取k個點作為簇的中心;
步驟2計算其他點到每個中心的歐式距離,把數據點劃分到距離最近的中心形成點簇。
(4)
其中:
,
分別表示第i,j條數據的第k個維度數值,
表示第i,j條數據間的歐式距離;
步驟3根據歐式距離公式,計算每個點簇中所有點的均值,
,將
作為新的點簇中心;
步驟4若新的點簇中心與上次一致,則停止迭代,否則轉到步驟2。在實際實驗中,設立停止條件避免迭代次數過多:
(5)
其中:
是由用戶設定的一個較小閾值,
是點簇中心組成的矩陣。滿足迭代停止條件則結束算法,否則轉到步驟2。
K均值算法原理簡單,其時間復雜度為
,其中n是數據項的個數,k是聚類中心個數,t是結束迭代的總共迭代次數。在算法計算過程中,歐式距離的計算需要計算每一個特征維度的數據,數據源的特征屬性越多,算法的計算量越大。本文為了縮減K均值算法的計算量,同時保證算法準確性,結合信息熵理論實現特征的降維篩選,從數據集中選取最優特征子集作為K均值算法的輸入數據。
K均值算法中,初始的k個聚類簇中心是隨機選取的,若隨機選取的聚類中心距離很近,可能導致算法迭代結果局部最優而無法得到全局最優解。對于比較直觀的數據集,可以由人工指定初始的k個簇中心點,而對于特征屬性多、數據量大的網絡數據集來說,人工觀測出合適的初始聚類中心是不可能的。因此,可以采用K均值++算法。步驟如下:
步驟1從數據集中隨機選取一個數據點作為第一個聚類簇中心
;
步驟2計算每一個數據點與當前已選取的聚類簇中心之間的最短歐式距離,用
表示,其中x表示第x個數據點。將每個數據點被選為下一個聚類簇中心的概率用公式表示:
(6)
最后,將所有數據點的概率劃分成概率區間
,隨機生成一個0-1之間的隨機數,這個隨機數屬于哪個區間,那么就取該區間序號對應的數據點為下一個聚類簇中心。
步驟3重復步驟2直到選擇出k個聚類簇中心;
之后的步驟和經典K均值算法中的第2步到第4步相同。
利用K均值++算法,可以讓初始的k個聚類簇中心盡可能的均勻分布,由于初始聚類簇中心分布合理,可以大大減小K均值算法的迭代次數,縮短算法時間,并且能大幅度提高聚類結果的準確性,解決了經典K均值算法出現局部收斂導致結果準確性差的問題。
4.1實驗環境與數據集
本文的實驗過程在Windows操作系統環境下實現,CPU為英特爾酷睿i7-7700HQ,內存為32GB。實驗使用python 3編寫算法代碼。采用1999年數據和知識挖掘比賽數據(KDD Cup99)作為本文的實驗數據集,該數據集是公認的網絡異常檢測實驗數據集。其包含約50萬條數據記錄,每條數據記錄由41個特征屬性數據組成,數據集組成比例見表1。
4.2數據預處理
KDD99數據集是模擬真實網絡環境收集到的數據集,其有數據量大,特征屬性多的特點。在對數據集進行處理之前,有必要進行數據預處理工作:
(1)數據集中存在很多攻擊類型的子類型,將這些子類型劃分進它們的父類中。
(2)數據集中存在非數值特征屬性,無法應用歐式距離進行計算,因此需要將這些非數值特征轉化成數值特征,使數據數值化從而參與計算。
(3)數據集中存在多維特征,并且每一維特征都采用歐式距離進行距離計算。但是在數據集中每個維度的數值存在巨大的差異,這種差異對距離計算的影響是十分大的,因此有必要對每個維度的數據進行數據歸一化的處理。
(7)
其中:X表示某一維屬性中要進行歸一化的數值,
和
分別代表該維數據的最小和最大值。為了使歸一化得到的數據可觀性和精確度更高,將結果數據放大十倍處理。