盛銘 陳凌珊 汪俊杰 杜紅亮
(1.上海工程技術(shù)大學(xué),上海 201620;2.上海汽車集團(tuán)股份有限公司商用車技術(shù)中心,上海 201108)
主題詞:車聯(lián)網(wǎng) 車載CAN總線 異常檢測 單分類支持向量機(jī)
智能客車除基本的電控系統(tǒng)外,還增加了駕駛輔助系統(tǒng),如行人碰撞防護(hù)、胎壓監(jiān)測等,所有控制器均通過CAN 總線進(jìn)行通信,客車上的電子設(shè)備如遠(yuǎn)程監(jiān)控智能通信終端(Telematics BOX,T-BOX)、胎壓檢測單元等都可能成為黑客入侵的途徑[1]。
國內(nèi)外學(xué)者對車載網(wǎng)絡(luò)的異常檢測進(jìn)行了相關(guān)研究。于赫采用決策樹的方法對CAN報(bào)文的數(shù)據(jù)場進(jìn)行了研究[2]。Taylor 等提出了長短期記憶(Long Short-Term Memory)神經(jīng)網(wǎng)絡(luò)對報(bào)文的ID 進(jìn)行研究[3]。Marchetti 等提出了CAN 報(bào)文實(shí)時序列的監(jiān)測方法,對實(shí)車總線CAN 報(bào)文ID 的生成序列進(jìn)行了研究[4]。Theissler提出了集成式異常檢測系統(tǒng),采用投票的方式應(yīng)用不同的機(jī)器學(xué)習(xí)模型,以提高模型的魯棒性[5]。楊宏采用支持向量機(jī)二分類算法進(jìn)行了CAN總線攻擊與防御檢測技術(shù)研究[6]。Ji等通過不同攻擊方式的試驗(yàn)對4種異常檢測的方法進(jìn)行了對比[7]。Wang C等對層級實(shí)時記憶(Hierarchical Temporal Memory,HTM)神經(jīng)網(wǎng)絡(luò)模型進(jìn)行了研究[8]。
上述研究均采用二分類方法,即隨機(jī)生成與正常數(shù)據(jù)同樣大小的異常數(shù)據(jù),經(jīng)過二分類模型訓(xùn)練達(dá)到分類效果。但隨機(jī)生成的異常樣本不具備代表性,車上的許多故障是未知的或不容易被注入的,導(dǎo)致這種方法會產(chǎn)生錯誤的決策函數(shù)。因此,本文提出單分類支持向量機(jī)異常檢測算法,僅對正常樣本進(jìn)行訓(xùn)練,采用試驗(yàn)的方式攻擊實(shí)車總線,驗(yàn)證所提出方法的可行性。
為分析目前智能客車所面臨的網(wǎng)絡(luò)安全隱患,采集了即將上市的某品牌智能公交車在多工況試驗(yàn)下的總線報(bào)文數(shù)據(jù)。選擇上海公交線路徐閔線作為試驗(yàn)路線,該公交線路起點(diǎn)為閔行站,經(jīng)過32 站到達(dá)肇家浜路東安路終點(diǎn)站。采集路段包含城市公路及內(nèi)、外環(huán)等多種復(fù)雜路況,且包含了車輛幾乎所有運(yùn)行模式下的數(shù)據(jù),滿足數(shù)據(jù)集采集目標(biāo)的需要。采集的城市工況部分原始數(shù)據(jù)經(jīng)可視化處理后車速變化曲線如圖1所示,油門踏板開度曲線如圖2所示。
圖1 城市工況行駛車速
圖2 城市工況油門踏板開度
車速信號的報(bào)文將根據(jù)總線通信協(xié)議轉(zhuǎn)發(fā)給儀表控制器,駕駛員根據(jù)儀表的顯示信息進(jìn)行駕駛決策;油門踏板開度信號將發(fā)送至整車控制器,整車控制器據(jù)此控制電機(jī)輸出扭矩。若攻擊者篡改了上述信號的數(shù)據(jù),將威脅車輛行駛安全。
單分類問題指操作模型的訓(xùn)練樣本只有1類,異常檢測中即為正類。Scholkopf 等人提出了單分類支持向量機(jī)(One-Class Support Vector Machine,OCSVM)[9-10],基于支持向量機(jī)(Support Vector Machine,SVM)的分離超平面和最大分類間隔等思想,將一分類問題等價(jià)為特殊的二分類問題。Xiao Y等提出了基于OCSVM的針對異常檢測的2種高斯核參數(shù)選取方法,提高了模型的準(zhǔn)確性[11]。Chandan等提出局部多核學(xué)習(xí)的方式對單分類的異常樣本進(jìn)行檢測[12]。
設(shè)訓(xùn)練樣本x1,x2,…,xn∈X均為正類,其中n為訓(xùn)練樣本的個數(shù),X為輸入空間;設(shè)Φ(x)為輸入空間X到特征空間F的特征向量。OCSVM 將原點(diǎn)視為異常樣本,并尋找一個超平面以最大間隔將原點(diǎn)和訓(xùn)練樣本映射分開。超平面的公式為f(x)=w·Φ(x)-ρ=0,其中w和ρ分別為f(x)的法向量和截距。OCSVM的優(yōu)化問題表示為:
式中,v(0,1]為預(yù)先定義的百分比參數(shù)估計(jì);δi為松弛變量。
松弛變量是在超平面無法正確分類或能正確分類但會造成過擬合的問題上產(chǎn)生的,引入松弛變量將允許訓(xùn)練模型出現(xiàn)一些分類上的錯誤,增強(qiáng)模型的泛化能力。參數(shù)v是間隔誤差分?jǐn)?shù)的上界和支持向量分?jǐn)?shù)相對于訓(xùn)練樣本總數(shù)的下界,在模型精度和過擬合問題上進(jìn)行平衡。式(1)的拉格朗日雙關(guān)問題為:
式 中,α=[α1α2…αn]T為雙關(guān)變量;K為核矩陣,(K)ij=k(xi,xj)=(Φ(xi)·Φ(xj)T);k(xi,xj)為核函數(shù)。
核函數(shù)是為了解決SVM線性不可分問題所提出的函數(shù)映射關(guān)系,核函數(shù)將樣本從原始空間X映射到更高的特征空間,使樣本在此空間內(nèi)線性可分,達(dá)到分類效果。本文基于高斯核進(jìn)行異常樣本檢測:
式(3)中,S參數(shù)定義了單一訓(xùn)練樣本對其他樣本的影響,取值較大會使其他樣本受更大的影響,同時也描述了模型的復(fù)雜度,其值越高,模型復(fù)雜度越高。
v和S對算法的準(zhǔn)確率和泛化能力起決定性作用,本文采用交叉驗(yàn)證和網(wǎng)格搜索的方式對兩者進(jìn)行匹配選擇。
3.2.1 智能公交CAN總線特性分析
智能公交的CAN總線根據(jù)功能分為8路CAN,其中最重要的為動力CAN,包含4 個控制器,即整車控制器(Vehicle Control Unit,VCU)、電機(jī)控制器(Motor Control Unit,MCU)、電池管理控制器和高壓部件輔助控制器。此網(wǎng)段的報(bào)文ID周期分布如圖3所示。
圖3 該網(wǎng)段下不同ID的頻數(shù)
由圖3可以看出,整車報(bào)文完全按照通信協(xié)議周期發(fā)送,若總線被以增加ID或丟棄ID的方式入侵,可采用統(tǒng)計(jì)學(xué)信息熵的方式檢測ID數(shù)據(jù)量異常。但若ID的發(fā)送周期不變,只改變其數(shù)據(jù),上述方法將不適用。選取周期最短的電機(jī)報(bào)文(周期為10 ms)進(jìn)行分析,此ID包含64 bit二進(jìn)制數(shù)據(jù),共分為8個字節(jié),此ID下第3個字節(jié)的數(shù)據(jù)分布如圖4所示。
圖4 電機(jī)報(bào)文第3個字節(jié)的數(shù)據(jù)分布
由圖4 可以看出,該字節(jié)的信號波動遵循一定規(guī)律,是完全按照通信協(xié)議的信號列表來傳輸數(shù)據(jù)的,因此降低了訓(xùn)練模型的復(fù)雜度,以數(shù)據(jù)的8 個字節(jié)作為8個特征來訓(xùn)練OCSVM模型。
3.2.2 模型生成
將所采集的整車運(yùn)行數(shù)據(jù)進(jìn)行處理,共包含209萬個報(bào)文數(shù)據(jù),把數(shù)據(jù)按ID進(jìn)行分類,把每個ID分成8個特征進(jìn)行訓(xùn)練,訓(xùn)練過程如圖5所示。
圖5 單分類支持向量機(jī)CAN總線異常檢測訓(xùn)練過程
3.2.3 交叉驗(yàn)證
為避免過擬合問題,將數(shù)據(jù)集分為訓(xùn)練集和測試集分別進(jìn)行訓(xùn)練和驗(yàn)證。交叉驗(yàn)證的過程如圖6所示。
圖6 交叉驗(yàn)證流程
本次交叉驗(yàn)證把數(shù)據(jù)集分為10個等份,其中9份作為訓(xùn)練集,另外1份作為驗(yàn)證集。循環(huán)10次,直至驗(yàn)證集分別取到10個不同的數(shù)據(jù)集。通過此步驟得出的參數(shù)可以有效避免過擬合,將此參數(shù)直接用于訓(xùn)練集訓(xùn)練數(shù)據(jù),可得到最佳效果。圖7所示為用不同組合的v和S進(jìn)行匹配時訓(xùn)練集、測試集及異常集的預(yù)測準(zhǔn)確率。
圖7 訓(xùn)練集、測試集及異常集的預(yù)測準(zhǔn)確率
由圖7 可得出最佳參數(shù)組合,決定取v=0.001、S=0.000 1訓(xùn)練數(shù)據(jù),以檢測CAN總線上的異常數(shù)據(jù)。
3.2.4 ID訓(xùn)練結(jié)果
基于以上的分析與驗(yàn)證,用訓(xùn)練好的參數(shù)分別對31 個ID 在v=0.001、S=0.000 1 條件下進(jìn)行訓(xùn)練,結(jié)果如圖8 所示,訓(xùn)練集、測試集和異常集的準(zhǔn)確率均在97%以上,所以O(shè)CSVM算法適用于車載網(wǎng)絡(luò)異常檢測。
圖8 單分類支持向量機(jī)對不同ID的訓(xùn)練結(jié)果
基于以上訓(xùn)練結(jié)果,采用試驗(yàn)的方式進(jìn)行驗(yàn)證,用仿真節(jié)點(diǎn)攻擊真實(shí)的車載網(wǎng)絡(luò),試驗(yàn)環(huán)境如圖9 所示。實(shí)車中控臺上有3塊液晶顯示器,從左至右分別為觸摸控制屏、液晶儀表及駕駛輔助360°環(huán)境監(jiān)控顯示屏,用CANoe 模擬被入侵的ECU,通過Vector 公司的雙通道CAN 總線硬件接口VN1630 與整車車載診斷系統(tǒng)(On Board Diagnostics,OBD)連接,實(shí)現(xiàn)總線入侵。
圖9 實(shí)車試驗(yàn)環(huán)境
4.1.1 篡改客車儀表顯示信息
試驗(yàn)中模擬2個節(jié)點(diǎn)(儀表控制器和電機(jī)控制器)對總線進(jìn)行攻擊。液晶儀表實(shí)時顯示客車運(yùn)行時的部分重要信息,信號大多由VCU從其他控制器轉(zhuǎn)發(fā)而來,故模擬VCU節(jié)點(diǎn)向儀表發(fā)送能改變顯示信息的報(bào)文,報(bào)文ID不變,只改變其數(shù)據(jù)域,篡改數(shù)據(jù)信息如表1所示。
表1 篡改儀表信息發(fā)送數(shù)據(jù)
按照通信協(xié)議在ID和發(fā)送周期不變的情況下向總線上發(fā)送如表1所示的3條報(bào)文信息,分別更改了擋位信息和車速信息,具體效果如圖10所示。
圖10 篡改信息后儀表的響應(yīng)
從圖10 可看出,在空擋的情形下行駛車速為45 km/h,這不符合客觀常識,影響駕駛員的決策。
4.1.2 篡改實(shí)車控制信號
利用總線工具CANoe 通過CAN 卡VN1640 與實(shí)車總線相連對電機(jī)節(jié)點(diǎn)的報(bào)文進(jìn)行仿真發(fā)送,不改變報(bào)文定義的周期,只改變報(bào)文下的數(shù)據(jù),CANoe 節(jié)點(diǎn)仿真界面如圖11所示。
圖11 CANoe節(jié)點(diǎn)仿真界面
統(tǒng)計(jì)出正常電機(jī)節(jié)點(diǎn)的數(shù)據(jù)發(fā)送規(guī)律,模仿其數(shù)據(jù)發(fā)送方式,做如下嘗試:只改變其中1個字節(jié)的數(shù)據(jù),保持其他7個字節(jié)按規(guī)律發(fā)送數(shù)據(jù);改變其中2個字節(jié)的數(shù)據(jù),保持其他6個字節(jié)按規(guī)律發(fā)送數(shù)據(jù);隨機(jī)生成8個字節(jié)的數(shù)據(jù)。表2所示為按照上述3種方式設(shè)計(jì)的數(shù)據(jù)發(fā)送方式。
表2 篡改電機(jī)信息發(fā)送數(shù)據(jù)
如表2所示,按照總線通信協(xié)議下的電機(jī)節(jié)點(diǎn)所發(fā)送的報(bào)文,在不改變鏈路層的前提下,即不影響該節(jié)點(diǎn)與其他節(jié)點(diǎn)的網(wǎng)絡(luò)通信,只改變其數(shù)據(jù)場,也就是改變傳感器傳來的數(shù)據(jù),使其他節(jié)點(diǎn)接收到錯誤的傳感器信息,也就達(dá)到了網(wǎng)絡(luò)入侵的標(biāo)準(zhǔn)。表3 所示為入侵前、后從CANoe中檢測到的總線通信狀態(tài)統(tǒng)計(jì)結(jié)果。
表3 入侵前、后總線狀態(tài)對比
由表3 可知,入侵后總線上無錯誤幀,表明仿真節(jié)點(diǎn)與實(shí)車節(jié)點(diǎn)在鏈路層通信上是吻合的,儀表也未報(bào)出CAN總線通信障及電機(jī)節(jié)點(diǎn)丟失故障,表明入侵成功。
為了對算法進(jìn)行驗(yàn)證,采集了電機(jī)入侵環(huán)境數(shù)據(jù),把處理后的數(shù)據(jù)放入訓(xùn)練好的模型中,部分結(jié)果整理如表4 所示。對數(shù)據(jù)進(jìn)行標(biāo)簽化處理,以便驗(yàn)證測試結(jié)果,標(biāo)簽1 表示正常數(shù)據(jù),標(biāo)簽-1 均為表2 所示的異常入侵?jǐn)?shù)據(jù),結(jié)果見表4。通過標(biāo)簽與預(yù)測值的對比發(fā)現(xiàn),3 種數(shù)據(jù)改寫方式都被異常檢測模型分類為異常類,證明了模型的有效性。
表4 整理后的試驗(yàn)數(shù)據(jù)
本文研究了智能客車CAN 總線異常檢測方法,采集了上海市徐閔線公交車實(shí)際運(yùn)行數(shù)據(jù),采用單分類支持向量機(jī)對數(shù)據(jù)模型進(jìn)行訓(xùn)練,交叉驗(yàn)證修正模型參數(shù),各ID 模型檢測準(zhǔn)確率均高于97%。實(shí)車試驗(yàn)結(jié)果表明,此方法對異常值檢測有很好的效果。