盛銘 陳凌珊 汪俊杰 杜紅亮
(1.上海工程技術大學,上海 201620;2.上海汽車集團股份有限公司商用車技術中心,上海 201108)
主題詞:車聯網 車載CAN總線 異常檢測 單分類支持向量機
智能客車除基本的電控系統外,還增加了駕駛輔助系統,如行人碰撞防護、胎壓監測等,所有控制器均通過CAN 總線進行通信,客車上的電子設備如遠程監控智能通信終端(Telematics BOX,T-BOX)、胎壓檢測單元等都可能成為黑客入侵的途徑[1]。
國內外學者對車載網絡的異常檢測進行了相關研究。于赫采用決策樹的方法對CAN報文的數據場進行了研究[2]。Taylor 等提出了長短期記憶(Long Short-Term Memory)神經網絡對報文的ID 進行研究[3]。Marchetti 等提出了CAN 報文實時序列的監測方法,對實車總線CAN 報文ID 的生成序列進行了研究[4]。Theissler提出了集成式異常檢測系統,采用投票的方式應用不同的機器學習模型,以提高模型的魯棒性[5]。楊宏采用支持向量機二分類算法進行了CAN總線攻擊與防御檢測技術研究[6]。Ji等通過不同攻擊方式的試驗對4種異常檢測的方法進行了對比[7]。Wang C等對層級實時記憶(Hierarchical Temporal Memory,HTM)神經網絡模型進行了研究[8]。
上述研究均采用二分類方法,即隨機生成與正常數據同樣大小的異常數據,經過二分類模型訓練達到分類效果。但隨機生成的異常樣本不具備代表性,車上的許多故障是未知的或不容易被注入的,導致這種方法會產生錯誤的決策函數。因此,本文提出單分類支持向量機異常檢測算法,僅對正常樣本進行訓練,采用試驗的方式攻擊實車總線,驗證所提出方法的可行性。
為分析目前智能客車所面臨的網絡安全隱患,采集了即將上市的某品牌智能公交車在多工況試驗下的總線報文數據。選擇上海公交線路徐閔線作為試驗路線,該公交線路起點為閔行站,經過32 站到達肇家浜路東安路終點站。采集路段包含城市公路及內、外環等多種復雜路況,且包含了車輛幾乎所有運行模式下的數據,滿足數據集采集目標的需要。采集的城市工況部分原始數據經可視化處理后車速變化曲線如圖1所示,油門踏板開度曲線如圖2所示。

圖1 城市工況行駛車速

圖2 城市工況油門踏板開度
車速信號的報文將根據總線通信協議轉發給儀表控制器,駕駛員根據儀表的顯示信息進行駕駛決策;油門踏板開度信號將發送至整車控制器,整車控制器據此控制電機輸出扭矩。若攻擊者篡改了上述信號的數據,將威脅車輛行駛安全。
單分類問題指操作模型的訓練樣本只有1類,異常檢測中即為正類。Scholkopf 等人提出了單分類支持向量機(One-Class Support Vector Machine,OCSVM)[9-10],基于支持向量機(Support Vector Machine,SVM)的分離超平面和最大分類間隔等思想,將一分類問題等價為特殊的二分類問題。Xiao Y等提出了基于OCSVM的針對異常檢測的2種高斯核參數選取方法,提高了模型的準確性[11]。Chandan等提出局部多核學習的方式對單分類的異常樣本進行檢測[12]。
設訓練樣本x1,x2,…,xn∈X均為正類,其中n為訓練樣本的個數,X為輸入空間;設Φ(x)為輸入空間X到特征空間F的特征向量。OCSVM 將原點視為異常樣本,并尋找一個超平面以最大間隔將原點和訓練樣本映射分開。超平面的公式為f(x)=w·Φ(x)-ρ=0,其中w和ρ分別為f(x)的法向量和截距。OCSVM的優化問題表示為:

式中,v(0,1]為預先定義的百分比參數估計;δi為松弛變量。
松弛變量是在超平面無法正確分類或能正確分類但會造成過擬合的問題上產生的,引入松弛變量將允許訓練模型出現一些分類上的錯誤,增強模型的泛化能力。參數v是間隔誤差分數的上界和支持向量分數相對于訓練樣本總數的下界,在模型精度和過擬合問題上進行平衡。式(1)的拉格朗日雙關問題為:

式 中,α=[α1α2…αn]T為雙關變量;K為核矩陣,(K)ij=k(xi,xj)=(Φ(xi)·Φ(xj)T);k(xi,xj)為核函數。
核函數是為了解決SVM線性不可分問題所提出的函數映射關系,核函數將樣本從原始空間X映射到更高的特征空間,使樣本在此空間內線性可分,達到分類效果。本文基于高斯核進行異常樣本檢測:

式(3)中,S參數定義了單一訓練樣本對其他樣本的影響,取值較大會使其他樣本受更大的影響,同時也描述了模型的復雜度,其值越高,模型復雜度越高。
v和S對算法的準確率和泛化能力起決定性作用,本文采用交叉驗證和網格搜索的方式對兩者進行匹配選擇。
3.2.1 智能公交CAN總線特性分析
智能公交的CAN總線根據功能分為8路CAN,其中最重要的為動力CAN,包含4 個控制器,即整車控制器(Vehicle Control Unit,VCU)、電機控制器(Motor Control Unit,MCU)、電池管理控制器和高壓部件輔助控制器。此網段的報文ID周期分布如圖3所示。

圖3 該網段下不同ID的頻數
由圖3可以看出,整車報文完全按照通信協議周期發送,若總線被以增加ID或丟棄ID的方式入侵,可采用統計學信息熵的方式檢測ID數據量異常。但若ID的發送周期不變,只改變其數據,上述方法將不適用。選取周期最短的電機報文(周期為10 ms)進行分析,此ID包含64 bit二進制數據,共分為8個字節,此ID下第3個字節的數據分布如圖4所示。

圖4 電機報文第3個字節的數據分布
由圖4 可以看出,該字節的信號波動遵循一定規律,是完全按照通信協議的信號列表來傳輸數據的,因此降低了訓練模型的復雜度,以數據的8 個字節作為8個特征來訓練OCSVM模型。
3.2.2 模型生成
將所采集的整車運行數據進行處理,共包含209萬個報文數據,把數據按ID進行分類,把每個ID分成8個特征進行訓練,訓練過程如圖5所示。

圖5 單分類支持向量機CAN總線異常檢測訓練過程
3.2.3 交叉驗證
為避免過擬合問題,將數據集分為訓練集和測試集分別進行訓練和驗證。交叉驗證的過程如圖6所示。

圖6 交叉驗證流程
本次交叉驗證把數據集分為10個等份,其中9份作為訓練集,另外1份作為驗證集。循環10次,直至驗證集分別取到10個不同的數據集。通過此步驟得出的參數可以有效避免過擬合,將此參數直接用于訓練集訓練數據,可得到最佳效果。圖7所示為用不同組合的v和S進行匹配時訓練集、測試集及異常集的預測準確率。

圖7 訓練集、測試集及異常集的預測準確率
由圖7 可得出最佳參數組合,決定取v=0.001、S=0.000 1訓練數據,以檢測CAN總線上的異常數據。
3.2.4 ID訓練結果
基于以上的分析與驗證,用訓練好的參數分別對31 個ID 在v=0.001、S=0.000 1 條件下進行訓練,結果如圖8 所示,訓練集、測試集和異常集的準確率均在97%以上,所以OCSVM算法適用于車載網絡異常檢測。

圖8 單分類支持向量機對不同ID的訓練結果
基于以上訓練結果,采用試驗的方式進行驗證,用仿真節點攻擊真實的車載網絡,試驗環境如圖9 所示。實車中控臺上有3塊液晶顯示器,從左至右分別為觸摸控制屏、液晶儀表及駕駛輔助360°環境監控顯示屏,用CANoe 模擬被入侵的ECU,通過Vector 公司的雙通道CAN 總線硬件接口VN1630 與整車車載診斷系統(On Board Diagnostics,OBD)連接,實現總線入侵。

圖9 實車試驗環境
4.1.1 篡改客車儀表顯示信息
試驗中模擬2個節點(儀表控制器和電機控制器)對總線進行攻擊。液晶儀表實時顯示客車運行時的部分重要信息,信號大多由VCU從其他控制器轉發而來,故模擬VCU節點向儀表發送能改變顯示信息的報文,報文ID不變,只改變其數據域,篡改數據信息如表1所示。

表1 篡改儀表信息發送數據
按照通信協議在ID和發送周期不變的情況下向總線上發送如表1所示的3條報文信息,分別更改了擋位信息和車速信息,具體效果如圖10所示。

圖10 篡改信息后儀表的響應
從圖10 可看出,在空擋的情形下行駛車速為45 km/h,這不符合客觀常識,影響駕駛員的決策。
4.1.2 篡改實車控制信號
利用總線工具CANoe 通過CAN 卡VN1640 與實車總線相連對電機節點的報文進行仿真發送,不改變報文定義的周期,只改變報文下的數據,CANoe 節點仿真界面如圖11所示。

圖11 CANoe節點仿真界面
統計出正常電機節點的數據發送規律,模仿其數據發送方式,做如下嘗試:只改變其中1個字節的數據,保持其他7個字節按規律發送數據;改變其中2個字節的數據,保持其他6個字節按規律發送數據;隨機生成8個字節的數據。表2所示為按照上述3種方式設計的數據發送方式。

表2 篡改電機信息發送數據
如表2所示,按照總線通信協議下的電機節點所發送的報文,在不改變鏈路層的前提下,即不影響該節點與其他節點的網絡通信,只改變其數據場,也就是改變傳感器傳來的數據,使其他節點接收到錯誤的傳感器信息,也就達到了網絡入侵的標準。表3 所示為入侵前、后從CANoe中檢測到的總線通信狀態統計結果。

表3 入侵前、后總線狀態對比
由表3 可知,入侵后總線上無錯誤幀,表明仿真節點與實車節點在鏈路層通信上是吻合的,儀表也未報出CAN總線通信障及電機節點丟失故障,表明入侵成功。
為了對算法進行驗證,采集了電機入侵環境數據,把處理后的數據放入訓練好的模型中,部分結果整理如表4 所示。對數據進行標簽化處理,以便驗證測試結果,標簽1 表示正常數據,標簽-1 均為表2 所示的異常入侵數據,結果見表4。通過標簽與預測值的對比發現,3 種數據改寫方式都被異常檢測模型分類為異常類,證明了模型的有效性。

表4 整理后的試驗數據
本文研究了智能客車CAN 總線異常檢測方法,采集了上海市徐閔線公交車實際運行數據,采用單分類支持向量機對數據模型進行訓練,交叉驗證修正模型參數,各ID 模型檢測準確率均高于97%。實車試驗結果表明,此方法對異常值檢測有很好的效果。