孫揚威,戚湧
(南京理工大學計算機科學與工程學院,南京 210094)
隨著物聯網和通信技術的發展,以海量車輛節點為核心的車聯網(Internet of Vehicles,IoV)應運而生[1]。車聯網是現代化智能汽車重要的通信方式,通過車聯網可實現人-車-路-云之間的信息共享[2]。
車聯網大體上可分為車內網和車外網,其中,車內網中最重要的部分是車載控制器局域網絡(Controller Area Network,CAN)[3]。由于車載CAN中存在兼容性問題,因此傳統的信息安全技術在當今智能網聯汽車的車內網中并不適用,很容易受到模擬攻擊、DoS 攻擊、監聽攻擊、偽造攻擊等網絡攻擊[4]。入侵檢測是近年來新興的一種信息安全方法,其可提前發現和攔截網絡攻擊,屬于主動安全的范疇,并且可方便地集成到車載系統中,現已成為車載CAN 安全領域的重要研究方向。
近年來,車內網的入侵檢測相關研究主要集中在機器學習和深度學習模型上。GHALEB 等[5]提出一種基于人工神經網絡(Artificial Neural Network,ANN)的入侵檢測模型,并在采集到的真實車載CAN 入侵數據上進行測試,結果表明,該模型的整體檢測效果優于常見基線模型,但是其針對樣本數較少的攻擊類型時檢測率較差。ALSHAMMARI 等[6]通過K 近鄰(KNearest Neighbor,KNN)和支持向量機(Support Vector Machines,SVM)方法對車內網中的數據進行分類檢測,由于所用模型并不適用于大數據量樣本,因此模型訓練時間較長。YANG 等[7]提出一種基于多層混合模型的車聯網入侵檢測方法MTHIDS,該方法主要分為數據處理、特征工程、入侵檢測、結果輸出這4 層,其中,在入侵檢測層使用集成學習模型進行分類。實驗結果表明,該入侵檢測方法誤報率較低,整體檢測效果較好。AKSU 等[8]提出一種基于特征選擇組合多種分類器的入侵檢測系統,首先使用改進遺傳算法組合K 折交叉驗證方法進行特征選擇,然后從若干分類器中選擇具有最高分類性能的分類器。實驗結果表明,該系統具有較好的檢測效果。KHAN 等[9]提出一種基于長短期記憶(Long Short Term Memory,LSTM)網絡的車載CAN 入侵檢測方法,并在實際車載CAN 網絡中進行了實驗,結果表明,該方法的檢測率高于傳統的基線檢測模型,但是由于其結構相對復雜、計算量較大,因此整體效率較低。
盡管此前的研究工作已經取得了一定的成果,但是整體檢測性能仍需進一步提高。近年來,由于人工智能技術的逐漸成熟,深度學習被廣泛應用于機器翻譯、目標識別等領域。深度學習模型一般效果較好,但其計算成本通常較高,難以應用于計算性能一般的車載系統。比起深度學習,機器學習往往更高效,并且已有學者證明了機器學習在入侵檢測系統中的有效性[10]。本文提出一種基于聚類混合采樣與PSO-Stacking 的車載CAN 入侵檢測方法。使用聚類混合采樣方法對初步處理后的訓練數據進行采樣而測試數據不變。使用基于Gini 系數的梯度提升決策樹(Gradient Boosting Decision Tree,GBDT)[11]進行特征重要性評估,刪除重要性較低的特征,以實現數據降維。在此基礎上,通過粒子群優化(Particle Swarm Optimization,PSO)算 法[12]組合Stacking 模型[13]完成模型參數尋優和入侵檢測。
K-means 算法[14]是基于劃分的聚類方法,其核心思想是按照樣本之間的相似度將樣本分為不同的簇,其中,簇間相似度較低,簇內相似度較高。
對于一個給定的包含n個d維數據點的數據集X={x1,x2,…,xi,…,xn}(xi∈Rd)和要生成的k個簇,K-means 聚類算法將數據組織為k個劃分C={ci,i=1,2,…,k},每個劃分代表一個簇ci,每個簇有一個聚類中心μi。選取歐式距離作為相似度判斷準則,計算類內各點到聚類中心的距離平方和:

聚類的目標是使各簇整體的距離平方和最小,即式(2)取得最小值:

在聚類完成后,每個簇中的樣本差異最小,簇間的樣本差異最大,此時每個簇中的聚類中心可有效代表該簇。
SMOTE算法[15]的思想是在少 數類樣本與其k個近鄰之間的連線上,利用隨機函數產生隨機數,然后合成新樣本,從而增加少數類樣本數量,達到對少數類樣本過采樣的目的。經過SMOTE 過采樣,分類器可以更好地對少數類樣本進行分類,提高整體分類效果。SMOTE 合成樣本的方法如式(3)所示:

其中:xnew表示新生成的樣本;xi為聚類中心點;為所選k 近鄰樣本;δ∈[0,1]為隨機值。SMOTE 生成的樣本如圖1 所示。

圖1 SMOTE 生成的樣本Fig.1 Samples generated by SMOTE
Tomek Links算法[16]的基本思想是:若最接近的兩個樣本屬于兩個類別,這兩個樣本組合為一個Tomek Links對,可能這兩個樣本中的一個是噪聲,也可能兩者都靠近類別邊界。刪除上述Tomek Links 對,可有效降低類間重疊數據量,從而使分類器能夠更好地分類。Tomek Links 采樣示意圖如圖2 所示。

圖2 Tomek Links 采樣示意圖Fig.2 Tomek Links sampling diagram
Gini 系數的含義是從數據集D中隨機抽取兩個數據分屬不同類別的概率,概率越小,集合的純度就越高。在分類問題上,假設數據集D中有K個類別,其中,Pk表示某個樣本屬于k類的概率,則可以用Gini 值來度量數據集D的純度:

假設離散特征f有N種可能的取值f={f1,f2,…,fN},若通過f劃分數據集D,則可能產生N個分支,其中,第n個分支表示在f特征上值為fn的所有樣本,標記為Dn。將數據集D中特征f的Gini 系數定義為:

PSO 是一種由鳥群覓食過程所演變出的群體搜索算法。與其他搜索算法相比,PSO 具有所需調整參數少、優化速度快、優化范圍廣等特點[17]。
若一個具有m個粒子的種群在一個D維空間中搜索,其中,每個粒子都具有一定的記憶能力,可以存儲搜索到的最佳位置pbest,整個粒子群搜尋到的最好位置是gbest。每個粒子根據自身的pbest與種群搜索到的最好位置gbest之間的關系來調整速度vd和位置xd,以完成對整個空間的搜索。粒子的位置變化范圍為[Xmin,d,Xmax,d],速度變化范圍為[-Vmax,d,Vmax,d]。第i個粒子在D維空間中的速度及位置調整方法如下:

由于實際采集到的車聯網數據流量較大,且非攻擊類型的數據占絕大多數,使用全部數據來訓練模型不僅會花費大量時間,還會帶來因數據類別不平衡而導致的模型過/欠擬合問題[18]。本文提出聚類混合采樣方法對數據進行采樣,在保證樣本多樣性沒有損失的前提下豐富少數類樣本,去除冗余數據,從而提高模型的檢測效果。
本文所提聚類混合采樣方法首先計算各類別樣本的平均數nAVG,若某類別中的樣本總量高于nAVG,則該類別為上區,反之為下區。對上區中的數據進行聚類采樣,從上區數據中隨機初始化nAVG個聚類中心,通過聚類迭代更新聚類中心,直到每個聚類不再變化,此時抽取最終的nAVG個聚類中心作為上區數據采樣后的結果。在聚類后采樣,舍棄的均為代表性較低的冗余數據,因此,可以在不損失數據多樣性的前提下降低數據規模。對于下區內的數據,由于數據量不足nAVG個,因此本文采用SMOTE 算法根據現有數據合成所需數量的新數據,組合現有數據和新數據共nAVG個數據,作為下區數據采樣后的結果。
匯總上區和下區的數據構成新的數據集,由于使用SMOTE 算法生成了新數據,因此此時的數據集中存在一些處于各類別邊界的樣本,該類樣本在一定程度上會影響模型的分類效果。本文通過Tomek Links 方法清除該類樣本,得到最終的數據集。本文聚類混合采樣方法整體流程如圖3 所示。

圖3 聚類混合采樣流程Fig.3 Cluster mixed sampling procedure
GBDT 是由多棵CART 樹所構成的,在單棵樹中采用Gini 系數度量特征的重要程度,Gini 系數的值越小,說明集合的不純度越低,分割效果越好[19]。Gini 系數的計算公式如式(8)所示:

其中:K代表類別總數;Pmk表示節點m中類別k所占的比例。Gini 系數的定義可表示為從節點m中隨機抽取分屬不同類別的兩條數據的概率。
鑒于分支中的樣本數量對分支影響不同,將各分支的Gini 值乘以樣本數量N,以提高樣本數多的分支的影響。因此,特征j在節點m上的重要性可以用加權不純度的減少量來表示:

若在第i棵CART 樹中,節點集合為M,特征j所在的節點m包含在M中,此時特征j在第i棵樹上的重要程度為:

假設GBDT 中有n棵樹,那么特征j的重要性可表示為:

對上面的重要性評分進行歸一化處理,得到特征j的最終重要性:

重要性接近0 的特征對分類結果貢獻較小,甚至會降低分類效果,刪除這些特征可降低數據的維度,提高訓練速度和分類效果。
Stacking 是一種集成學習方法,其采用基于模型的異質型集成策略,目的是充分發揮各模型的優勢,更好地完成分類任務。Stacking 主要分為兩層:第一層使用原始訓練數據,利用K 折交叉驗證法訓練不同種類的基學習器,然后將基學習器輸出的分類結果作為特征輸入到第二層;第二層根據第一層輸出的分類結果訓練元分類器,構成完整的Stacking 模型[13]。由于Stacking 模型集成了多個不同種類的模型,因此可彌補單一分類器的缺陷,提高分類效果。本文所用Stacking 模型第一層的基學習器分別為基于GBDT 的XGBoost[20]、LightGBM[21]及CatBoost[22]模型,為了防止過擬合,第二層使用擬合效果較弱的多層感知機(Multi-Layer Perceptron,MLP)模型[23]作為元分類器。
XGBoost 是一種基于GBDT 的集成模型,相比傳統的GBDT 模型,XGBoost 采用集成學習思想和前向分布算法,提升了精度和訓練速度。直接對殘差進行學習很可能會出現過擬合,因此,XGBoost 在目標函數中引入正則化項,在保證準確性的同時可以降低過擬合的風險。
LightGBM 在GBDT 的基礎上引入基于直方圖的算法,將連續特征放入不同的桶中構建直方圖數據,在選擇特征劃分時,無需每次遍歷數據集就可以找到最優切分點,提升了運行效率;同時引入單邊梯度采樣算法和互斥特征捆綁算法,降低了對系統內存的占用,提升了訓練速度;為防止因生長出的決策樹較深而引起過擬合的問題,該模型引入帶深度限制的葉子生長算法,同時支持并行訓練,在保證較高準確率的同時提升了模型的訓練效率。
CatBoost 是一種以完全對稱樹為基學習器的GBDT 模型,相比傳統的GBDT 模型,CatBoost 在處理類別特征、密集數值特征、決策樹生長評分以及多GPU 并行計算方面進行了較大改進。CatBoost 的基學習器為完全對稱樹,在這類樹中,每一層都使用相同的分割條件,預測速度較快,同時由于這種樹是平衡樹,因此在一定程度上避免了過擬合問題。
綜上所述,本文Stacking 模型使用的3 種基學習器整體效率較高、預測效果較好,且元分類器為擬合效果較弱的MLP 模型,在一定程度上降低了過擬合的風險。Stacking 模型架構如圖4 所示。

圖4 Stacking 模型架構Fig.4 Stacking model architecture
為了進一步提高模型整體的檢測效果,本文在Stacking 模型的基礎上引入PSO 算法對模型進行優化。本文模型所選基學習器均基于樹模型,在基學習器中參與尋優的參數為樹的深度、學習率和迭代次數,元分類器中參與尋優的參數為單隱藏層的形狀和學習率。使用PSO 算法分別對Stacking 模型中的各基學習器和元分類器的參數進行迭代尋優,當達到設定的最大迭代次數(100)時,尋優結束。選取最優參數組合作為各模型最終的參數,使用優化后的基學習器和元分類器構建Stacking 模型,重新訓練Stacking 模型并保存訓練后的結果。PSO-Stacking模型的執行流程如圖5 所示。

圖5 PSO-Stacking 的執行流程Fig.5 Implementation procedure of PSO-Stacking
本文所提基于聚類混合采樣與PSO-Stacking 的車載CAN 入侵檢測模型主要分為4 個模塊:
1)數據預處理模塊。首先對初始數據進行數值化,同時為了規避量綱差異對模型效果的影響,對數據進行歸一化處理,如式(13)所示:

其中:xi表示初始值;xmin為數據的最小值;xmax為數據的最大值;為歸一化處理后的值。對數值化和歸一化后的數據進行劃分,分成訓練數據和測試數據,對訓練數據進行聚類混合采樣,平衡樣本數據量。
2)特征選擇模塊。對經過數據預處理后的訓練集和測試集使用基于Gini 系數的GBDT 特征選擇方法進行特征選擇,刪除重要程度較低的特征。
3)PSO-Stacking模塊。通過PSO 算法優化Stacking模型,尋找使模型整體最優的參數組合,重復此過程,直至尋優結束,存儲經過訓練集訓練過且效果最好的Stacking 模型。
4)入侵檢測模塊。使用保存的經PSO 優化后的模型對測試數據進行檢測,輸出檢測結果。
本文車載CAN 入侵檢測模型整體流程如圖6所示。

圖6 車載CAN 入侵檢測模型整體流程Fig.6 Overall procedure of intrusion detection model for in-vehicle CAN
有別于傳統互聯網,車載CAN 網絡通過CAN報文傳輸數據,其數據結構較為固定。CAN 報文由7 個字段組成,分別為開始字段、仲裁字段、控制字段、數據字段、循環冗余校驗字段、應答字段和結束字段,其中,仲裁字段包含標識符字段和遠程傳輸請求字段[24]。CAN 報文結構如圖7 所示,在CAN 報文中數據字段最為重要,攻擊者可通過向數據字段注入惡意信息來入侵和控制車輛。

圖7 CAN 數據報文結構Fig.7 CAN data message structure
本文使用的車載CAN 入侵數據集為HCR 實驗室在KIA SOUL 汽車上提取的真實數據[25],其特征包括時間戳、CAN 標識符、CAN 數據字節數以及CAN 數據字段,攻擊類型主要為拒絕服務攻擊(DoS)、模糊攻擊(Fuzzy)以及模擬攻擊(Impersonation,Imp)。本文在上述數據集中選取數據字段長度為8 Byte 的樣本作為實驗數據。
本文全部實驗均在Windows10 系統下進行,操作系統為64 位,處理器版本為Intel?CoreTMi5-6500 CPU @3.20 GHz,內存為16 GB,所使用的開發語言版本為Python3.8。
實驗評估指標均以混淆矩陣為基礎,用于計算各項評估指標的混淆矩陣如表1 所示。

表1 混淆矩陣Table 1 Confusion matrix
實驗采用準確 率(Accuracy,ACC)、漏報率(False Negative Rate,FNR)和精確度(Precision,PRE)作為模型的評估指標,各指標的計算方式分別如式(14)~式(16)所示:

實驗內容主要分為兩部分:第一部分使用所提PSO-Stacking 模型在原始訓練集和經過聚類混合采樣、特征選擇處理的訓練集上進行訓練,對比其檢測結果,證明所提聚類混合采樣和特征選擇方法的有效性;第二部分將所提基于聚類混合采樣與PSOStacking 的車載CAN 入侵檢測模型與現有常見車載CAN 入侵檢測模型進行對比,證明所提模型的先進性和實用性。為了避免實驗結果的偶然性,所提模型的準確率、漏報率和精確度均為35 次重復實驗結果的平均值。
3.3.1 聚類混合采樣與特征選擇方法分析
本部分主要證明所提聚類混合采樣方法和基于Gini 系數的GBDT 特征選擇方法的有效性。實驗所用測試數據和經過聚類混合采樣前后的訓練數據如表2 所示,可以看出,聚類混合采樣可以在一定程度上降低多數類樣本冗余,同時豐富少數類樣本,解決了數據比例失衡的問題。

表2 樣本數量對比Table 2 Comparison of sample quantity
表3 所示為使用原始訓練數據(第一種)、僅經過特征選擇處理的訓練數據(第二種)、僅經過聚類混合采樣處理的訓練數據(第三種)、同時經過聚類混合采樣與特征選擇處理的訓練數據(第四種)對PSO-Stacking 模型進行訓練所需的時間。從表3 可知,在其他條件均相同的情況下,使用經過聚類混合采樣和特征選擇處理后的訓練數據訓練PSOStacking 模型,能夠降低訓練樣本的數量和維度,使得模型訓練速度更快。

表3 聚類混合采樣與特征選擇前后的時間分析Table 3 Time analysis before and after cluster mixed sampling and feature selection
圖8 所示為使用上述4 種情況下的訓練數據分別訓練PSO-Stacking 模型時對測試數據的檢測準確率。從圖8 可以看出,使用第二種訓練數據訓練PSO-Stacking 模型的檢測準確率相對于第一種訓練數據的檢測準確率略有提升,使用第三種訓練數據訓練PSO-Stacking 模型的檢測準確率相對于第一種和第二種訓練數據的檢測準確率提升較大,使用第四種訓練數據訓練PSO-Stacking 模型的檢測準確率最高。

圖8 本文模型的準確率分析Fig.8 Accuracy analysis of the proposed model
表4、表5 分別表示訓練數據在上述4 種情況下對測試數據中不同類別的樣本的檢測精確度和漏報率,最優結果加粗標注。

表4 聚類混合采樣與特征選擇前后的精確度分析Table 4 Precision analysis before and after cluster mixed sampling and feature selection %

表5 聚類混合采樣與特征選擇前后的漏報率分析Table 5 False negative rate analysis before and after cluster mixed sampling and feature selection %
從表4 可以看出,使用第四種訓練數據訓練的PSO-Stacking 模型僅在對Normal 類型樣本的檢測精確度略低于第三種訓練數據,對其他類型樣本的檢測精確度均較高,整體檢測效果較好。從表5 可以看出,使用第三種訓練數據訓練的PSO-Stacking 模型對Normal 類型樣本的檢測漏報率最低,除此之外,使用第四種訓練數據訓練的PSO-Stacking 模型檢測漏報率最低,檢測效果最好。
綜合上述結果可以看出,本文所提聚類混合采樣與特征選擇方法,在一定程度上平衡了數據集中各類別樣本的數量,降低了模型的訓練時間,同時提升了模型的整體檢測效果。
3.3.2 所提模型與其他常用模型對比實驗分析
在初始訓練數據和測試數據相同的情況下,本文所提模型與常用車載CAN 入侵檢測模型的檢測準確率對比如圖9 所示。從圖9 可知,SVM 模型[6]的檢測準確率相對較低,只有92.82%,其次是ANN[5]和KNN[6],準確率分別為93.62%和94.67%,檢測準確率較高的是MGA-DTC[8]及MTHIDS[7],前者首先使用改進遺傳算法組合K 折交叉驗證方法進行特征選擇,然后使用基于決策樹的算法進行入侵檢測,整體檢測準確率為96.68%,后者與本文所提模型均基于集成學習模型,因此檢測準確率較高,但在集成方式以及數據采樣和特征選擇方法上,MTHIDS 與本文模型有較大的區別。從圖中實驗結果可知,本文所提模型的檢測準確率高于其他常見車載CAN 入侵檢測模型,在一定程度上證明了本文所提方法的先進性。

圖9 不同模型的檢測準確率對比Fig.9 Comparison of detection accuracy of different models
表6、表7 列出了在初始訓練數據和測試數據均相同的情況下所提模型與其他常見車載CAN 入侵檢測模型在精確度和漏報率上的對比。從表6 可知:ANN、KNN 及SVM 模型的檢測精確度相對較低;由于進行了特征處理,MGA-DTC 模型的檢測精確度高于上述3 種模型;MTHIDS 與本文所提模型除了進行特征處理之外,還對數據進行了采樣,平衡了各類別數據的比例,因此檢測精確度較高。本文所提模型僅對Normal 類型樣本的檢測精確度略低于MTHIDS,對其余類型樣本的檢測精確度均高于其他模型。從表7 可知,本文所提模型對Normal 類型及Imp 類型樣本的檢測漏報率略高于MGA-DTC 和MTHIDS,對DoS 類型及Fuzzy 類型樣本的檢測漏報率均低于其他模型,總體而言,本文模型的整體漏報率較低,實用性較好。

表6 不同模型的檢測精確度對比Table 6 Comparison of detection precision of different models %

表7 不同模型的檢測漏報率對比Table 7 Comparison of detection false negative rate of different models %
綜上所述,本文所提模型能夠較好地解決車載CAN 中數據比例失衡的問題,充分挖掘數據特征,具有較好的入侵檢測能力,在車載CAN 入侵檢測中體現出先進性和實用性。
針對當前車載CAN 中多樣化的網絡攻擊形勢以及現有車載CAN 入侵檢測方法存在的不足,本文提出一種基于聚類混合采樣與PSO-Stacking 的車載CAN 入侵檢測方法。車載CAN 環境中網絡數據流量較大且各類別數據比例失衡,直接使用采集到的原始訓練數據訓練模型可能會降低模型的檢測效果,為此,本文設計一種聚類混合采樣方法對采集到的訓練數據進行采樣,去除多數類樣本冗余,同時合成少數類樣本,以保證各類別數據平衡。提出基于Gini 系數的GBDT 特征選擇方法,刪除重要程度較低的特征,降低數據維度。在此基礎上,通過PSOStacking 模型完成入侵檢測。實驗結果表明,該方法整體檢測效果較好,具有一定的先進性和實用性。下一步將在實際車載CAN 環境中對檢測模型進行優化,嘗試使用生成對抗網絡合成少數類攻擊數據,降低對少數類攻擊的檢測漏報率,進一步提升檢測效果。