薛宏偉,劉 贏,莊偉超,殷國棟,
(1. 東南大學網絡空間安全學院,南京 211189;2. 東南大學機械工程學院,南京 211189)
車聯網(vehicle?to?everything,V2X)是智慧交通系統未來發展的關鍵,能夠大幅提升交通出行效率。車聯網可以實現車輛與周圍具備設施進行互聯互通,主要包含車與車通信、車與行人通信、車與基礎設施通信、車與互聯網通信等,車輛會定時廣播包含車輛狀態信息的基礎安全信息(basic safety messages,BSM)[1],惡意節點可能篡改BSM,偽造交通事故,這些異常行為會破壞車聯網通信能力,甚至威脅到駕乘者的生命安全。因此,學者們提出在車聯網中部署異常檢測系統,目前的異常檢測方法根據檢測技術主要分為兩類,即基于規則的檢測和基于異常的檢測。
基于規則的檢測方法依賴已知攻擊規則知識庫,通過與知識庫比對判斷是否為異常行為[2]。Tomandl 等[3]提出一種基于動態規則的REST?Net 車聯網檢測系統,具有動態自適應警告特點。但是基于規則的檢測方法只能檢測已知攻擊,無法檢測未知攻擊,所以學者們更加傾向于研究基于異常的檢測方法。基于異常的檢測方法是通過構建模型來判斷車輛行為是否屬于異常。很多學者將機器學習應用到車聯網異常行為檢測領域[4-5],劉湘雯等[6]提出了一種基于弱分類器集成的虛假交通信息檢測方法,擴充消息分組的有效特征,將分類結果集成來判斷警報信息的真實性,降低了檢測時間,且檢測率高于使用部分特征的檢測方案。Van Der Heijden 等[7]首次提出并公開車聯網的異常檢測專用數據集VeReMi,后續很多學者[8-10]利用支持向量機、K 近鄰、決策樹、隨機森林等機器學習方法對VeReMi 數據集進行分析,并指出數據集中標簽的不合理性。Kamel 等[11-13]從攻擊類型、攻擊密度、車輛消息等方面完備了VeReMi 數據集。現有車聯網異常檢測研究主要集中在基于異常的檢測方法,尤其側重于基于機器學習方法,但是機器學習方法依賴于數據集,很多學者仍然使用面向傳統網絡的網絡安全數據集[14-15],或者往往只針對單一類型的網絡攻擊[16-17]。
本文中以保證不同惡意車輛密度下的檢測穩定性,提高異常行為車輛檢測率為目的。基于Veins車聯網仿真平臺,搭建了真實路況環境下遭受網絡攻擊的車聯網場景,構建出車聯網異常檢測數據集,并基于Stacking 集成學習思想,融合多種機器學習基分類器,提出一種新型的適用于車聯網的車輛異常行為檢測方法。
本文采用如下假設。
假設1:所有車輛配備GPS 設備、無線信號收發器以及各種傳感器,且各種設備均是完好,能夠實時感知周圍環境,并接收來自其他車輛和設施的相關信息。
假設2:車聯網通信協議采用IEEE802.11p/1609 標準。其中,IEEE 802.11p 定義車輛與其他車輛進行無線通信的物理層與MAC 層標準,IEEE 1609 基于IEEE 802.11p 使用PKI 實現數字簽名,確保了消息的完整性和不可否認性,加強了車聯網通信的安全性。
假設3:所有車輛均能正常進行通信,且車聯網中大部分車輛是正常車輛。
基于IEEE 802.11p/1609協議,車輛在加入通信前必須先向證書授權(certificate authority,CA)機構申請證書,如圖1 所示。CA 機構認為該車為合法車輛后將會頒發證書:唯一身份序號I,假名PI,一組公鑰Pk和私鑰Sk,以及數字證書CertCA(I,Pk)。當車輛具備合法通信能力后,可以給鄰近車輛發送BSM 消息,車輛在收到消息后會調用異常檢測模塊對消息進行檢測,并將檢測結果上報給響應處理模塊,對車輛進行下一步處理。

圖1 車聯網模型
車聯網中,由于開放的網絡環境使得車輛易受網絡攻擊,本文中考慮車聯網中4 種常見網絡攻擊類型,具體如下。
DoS 攻擊:即拒絕訪問攻擊(denial of service),本文中是指惡意車輛節點不遵守車聯網中關于消息發送頻率的限制,不斷往鄰居車輛發送信標消息,使得整個車聯網陷入癱瘓,無法正常提供服務。
Sybil 攻擊:即女巫攻擊,是指惡意車輛節點故意偽造不存在的車輛節點,造成道路擁堵的假象。攻擊者通過為每個假車輛維護新的身份和正確的消息頻率,生成一個虛假車輛網絡。
Replay 攻擊:即重放攻擊,是指惡意車輛節點重放從鄰居節點收到的歷史消息,使得網絡中充滿了過時消息,正常車輛節點發送的消息無法及時被處理。
DDS 攻擊:是指將上述3 種攻擊綜合起來,如圖2所示,在Sybil攻擊模式下,惡意車輛節點偽造出大量虛假車輛,并讓他們發送大量的過時消息。

圖2 DDS攻擊
由于單一的機器學習方法在針對多分類問題上往往具有局限性,而Stacking 集成學習方法可以很好地將多個分類器通過樹型結構進行融合,從而達到提高分類的準確率、精確率等效果。因此,本文中針對車聯網中車輛異常行為威脅問題,提出一種基于Stacking 集成學習的異常行為檢測方法,充分挖掘多個分類器的優勢,提升了模型性能及泛化能力。
從仿真中收集的信標數據經過預處理后得到的數據集如下:

式中:m為數據集中數據數量;n為特征數量;Dij(1≤i≤m,1≤j≤n)表示數據集中第i個數據的第j個特征;Li表示數據集中第i個數據所對應的標簽,且L1,…,Lm∈{c1,c2,…,cl},{c1,c2,…,cl}表 示所 屬 攻擊類型,取值為{0,1,2,3,4},分別表示{正常,DoS,Sybil,Replay,DDS}。
按照分層抽樣的原則,將數據集的75%作為訓練集DTrain,25%作為測試集DTest,并將數據集中的數據和標簽分離。

式中:p、q分別表示訓練集和測試集的大小,且p+q=m;XTrain、yTrain和XTest、yTest分別表示訓練集的數據、標簽和測試集的數據、標簽。
2.1.1 訓練過程
結合K 折交叉驗證思想,采用5 折交叉驗證用訓練集對初級分類器進行訓練,初級分類器為

式中BCi,1≤i≤5表示第i個初級分類器。
將訓練集數據XTrain進行5 等分,記為XT1,XT2,…,XT5,接下來對每個初級分類器進行5 折交叉驗證。使用第一個初級分類器BC1進行1 折交叉驗證,過程如下。
本折訓練集:XTT1=XT2∪…∪XT5
本折驗證集:ycv1=XT1
使用初級分類器BC1對訓練數據XTT進行擬合,使用訓練過后的初級分類器BC1在驗證數據ycv1進行預測,得到預測數據Vcv1。
下一折交叉驗證過程和上述類似,訓練數據為XTT2=XT1∪XT2∪…∪XT5,驗證集為ycv2=XT2,經過5 折交叉驗證之后,得到具有不同參數的初級分類器BC1,在5 組驗證數據上的預測結果為Vcv1,Vcv2,…,Vcv5,聚合為V1。

接下來對剩下的4 個初級分類器進行類似上述的5 折交叉驗證,對每個初級分類器在驗證集上的預測結果進行聚合之后得到次級數據集V。

使用次級分類器MC對次級數據集V進行再次訓練,得到最終模型H。

2.1.2 分類過程
使用訓練完成的模型H在測試集數據XTest進行分類測試。依次使用5 個初級分類器對測試集數據XTest進行預測,得到5 個預測結果P1,P2,…,P5,對5個預測結果進行拼接融合成新的次級數據集P,使用次級分類器MC對次級數據集P進行再次預測,得到最終的預測結果Y。

2.2.1 預處理(1)特征提取
信標消息包含車輛節點運動狀態的變化特征和車輛節點的身份信息。本文研究的信息特征及其定義如表1所示。
(2)標準化
由于收集到的數據各個數據維度不同,直接進行運算易受到數據維度影響,所以本文中對信息特征進行標準化處理:

表1 消息特征

式中:DOrign為原始數據;μ為均值;σ為方差;D為處理后得到的數據集。
2.2.2 異常行為檢測
檢測算法框架如圖3 所示,使用訓練集訓練出Stacking 模型,并使用測試集對模型進行預測,最終將結果提供給后續響應處理模塊,其中響應處理模塊將會作為后續研究。經過多次實驗,最終選擇K近鄰、決策樹、多層感知機、AdaBoost、隨機森林5 個分類器作為初級分類器,選擇Logistic 回歸作為次級分類器。

圖3 檢測算法框架
(1)訓練過程
訓練過程的具體流程(算法1)如表1所示。

表1 訓練過程的具體流程
(2)分類過程
分類過程的具體流程(算法2)如表2所示。
Simulation of Urban Mobility(SUMO)是一個開源的交通模擬仿真軟件,OMNET++是一個基于離散事件的開源網絡仿真軟件,Veins 基于TraCI 實現OMNET++和SUMO的雙向信息交互。
本文中基于Veins進行仿真實驗,整體仿真實驗流程如圖4 所示。首先從OpenStreetMap 網站導出東南大學九龍湖校區附近的實際地圖,并利用JOSM對地圖進行微調,在SUMO 對仿真中的道路參數、車輛參數、運動參數等進行定義,在Veins 中實現所述4 種網絡攻擊,并定義車輛節點的通信協議、信號衰落模型等參數。收集從仿真中生成的信標信息,并利用python 腳本文件將數據集整理成帶標簽的csv文件,將其中75%作為訓練集,25%作為測試集,提取包含車輛節點狀態和身份信息的特征,構建出車聯網異常檢測數據集;然后結合交叉驗證思想,使用K 近鄰、決策樹、多層感知機、AdaBoost、隨機森林5種初級分類器對訓練集進行訓練,并將初級分類器在驗證集上的預測結果作為次級分類器的輸入,將次級分類器的輸出作為最終的預測輸出,并用測試集對得到的Stacking模型進行評估。

表2 分類過程的具體流程

圖4 仿真實驗流程
3.1.1 仿真地圖選取
從OpenStreetMap 網站截取東南大學九龍湖校區附近的實際地圖,并利用JOSM 對地圖進行一些微調,如圖5所示。

圖5 SUMO場景
3.1.2 車聯網參數設置
本文中車聯網通信協議采用IEEE 802.11p/1609 協議,并設置了不同攻擊節點密度進行對比實驗,表3對主要仿真參數進行了總結。

表3 仿真參數設置
3.1.3 Stacking檢測方法參數設置
選擇K 近鄰、多層感知機、決策樹、隨機森林、AdaBoost 5 種分類器作為初級分類器,Logistic 回歸作為次級分類器。各個模型的參數設置如表4所示。
常用準確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1?Score 作為檢測算法優劣的評估指標[18-19],用于計算各項指標的混淆矩陣如表5所示。
表中各參數的含義如下。
真陰(true negative,TN):異常行為被正確分類為異常行為的數量。
真陽(true positive,TP):正常行為被正確分類為正常行為的數量。
假陰(false negative,FN):正常行為被錯誤分類為異常行為的數量,屬于漏報。
假陽(false positive,FP):異常行為被錯誤分類為正常行為的數量,屬于誤報。

表4 Stacking參數設置

表5 混淆矩陣
(1)準確率(Accuracy)是所有正確檢測行為與所有考慮檢測行為的比率。

(2)精確率(Precision)是正確預測的異常行為與總預測異常行為的比率。

(3)召回率(Recall)是正確預測的異常行為與實際異常行為總數的比率。

(4)F1?Score 是精確率(Precision)和召回率(Recall)的調和平均數。

準確率是評估分類器性能的一個重要指標,但是對于如本文中的不平衡數據集,并不總能很好地評估一個模型的優劣,而精確率和召回率在這種情況下的表現將會更加突出。精確率表明分類器區分正常行為和異常行為的能力,擁有較高的精確率表明分類器具有的誤報率;召回率表明分類器對于異常行為的檢測能力,擁有較低的召回率表明該攻擊較難被檢測出來;F1?Score 是精確率和召回率的調和平均數,能較好地表示分類器的整體能力。
首先比較本文方法在不同攻擊節點密度下的性能,接著與K 近鄰、決策樹和多層感知機3 種方法進行比較,分析該方法性能。
3.3.1 受攻擊密度影響
為檢驗本文算法在不同攻擊節點密度下的性能,本文中仿真了5%、10%、15%、20%、25%、30%、35%、40%和45%攻擊節點密度下的場景,圖6 顯示了準確率、精確率、召回率、F1?Score 與攻擊節點密度之間的關系。

圖6 不同攻擊節點密度下的評價指標
本文提出的算法檢測的準確率達到99%以上,對于DoS、Sybil、Replay 和DDS 的檢測結果整體上受到攻擊節點密度的影響較小。對于所有類型攻擊檢測的精確率、召回率和F1-Score 最后都穩定達到了90%以上,而且大部分場景下都能達到98%左右,但是當攻擊密度為5%時,由于仿真時間有限,攻擊節點少,產生的惡意消息較少,不容易檢測出Replay攻擊,但檢測Replay 攻擊的精確率隨著攻擊密度增長逐步穩定在90%以上,召回率穩定在93%以上,F1-Score穩定在92%以上。
3.3.2 與其他分類器比較
將本文提出的異常檢測算法與K 近鄰(KNN)、多層感知機(MLP)、隨機森林(Random Forest)3種常見的機器學習檢測方法進行比較,結果如圖7所示。
從圖中很容易看出,在不同攻擊密度場景下,本文提出的方法整體上比其他方法表現要好,各評價指標都是97%以上。另外其他方法中隨機森林表現較好,多層感知機和K近鄰表現相似。
本文中針對車聯網中存在的車輛異常行為問題,主要做出以下研究:
(1)基于Veins 平臺實現了DoS、Sybil、Replay 以及DDS 4 種網絡攻擊,搭建了真實路況環境下的車聯網場景,構建了遭受網絡攻擊下的車聯網異常行為數據集;
(2)基于Stacking 集成學習思想,融合多種機器學習方法,提出了一種新型的適用于車聯網的異常行為檢測方法;
(3)實驗結果表明,該方法在不同攻擊密度場景下對不同網絡攻擊的檢測準確率都能達到98%以上。
(4)相同條件下,與其他主流的單一分類器相比,準確率、精確率、召回率以及F1?Score 值更高,證實了本方法的有效性。

圖7 多種檢測方法比較