邵金鳳,周柔,李佳佳,陳毛玥
(湖南師范大學(xué) 信息科學(xué)與工程學(xué)院,湖南長(zhǎng)沙,410081)
對(duì)于車(chē)載網(wǎng)絡(luò),目前許多研究者對(duì)可能的車(chē)內(nèi)威脅進(jìn)行了分析。例如Koscher 等人通過(guò)實(shí)驗(yàn)室和路測(cè)實(shí)驗(yàn),對(duì)汽車(chē)進(jìn)行了CAN 網(wǎng)絡(luò)的竊聽(tīng)、模糊測(cè)試及代碼逆向工程等攻擊,對(duì)剎車(chē)、引擎進(jìn)行了控制[1];Rouf 等人通過(guò)無(wú)線電頻道對(duì)輪胎壓力監(jiān)測(cè)系統(tǒng)實(shí)施了攻擊,使監(jiān)測(cè)系統(tǒng)失效[2];Checkoway 等人展示了在沒(méi)有預(yù)先物理入侵的情況下通過(guò)汽車(chē)對(duì)外接口進(jìn)行攻擊,證明了汽車(chē)遠(yuǎn)程控制的可行性[3]。以上研究表明網(wǎng)聯(lián)汽車(chē)確實(shí)面臨嚴(yán)重信息安全問(wèn)題,迫切需要開(kāi)展相關(guān)對(duì)策研究。
本文主要圍繞車(chē)載網(wǎng)絡(luò)數(shù)據(jù)異常檢測(cè)開(kāi)展研究和實(shí)現(xiàn)原型系統(tǒng)。提出并實(shí)現(xiàn)基于支持向量機(jī)的異常檢測(cè)算法,且為減輕車(chē)載計(jì)算單元的計(jì)算負(fù)載,借助車(chē)聯(lián)網(wǎng)中的路側(cè)單元的邊緣服務(wù)器進(jìn)行異常檢測(cè),保護(hù)汽車(chē)正常行駛。
基于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)是當(dāng)前車(chē)載網(wǎng)絡(luò)入侵檢測(cè)的常用技術(shù);Kang 等人利用深度信念網(wǎng)絡(luò)(DBN)初始化模型參數(shù),再提取數(shù)據(jù)的特征向量作為深度神經(jīng)網(wǎng)絡(luò)(DNN)的訓(xùn)練樣本,提高了異常數(shù)據(jù)檢測(cè)準(zhǔn)確率,降低了檢測(cè)響應(yīng)時(shí)間[4];楊遠(yuǎn)達(dá)等人通過(guò)設(shè)計(jì)新的損失函數(shù),提出了一種基于GAN 模型的車(chē)載CAN 網(wǎng)絡(luò)入侵檢測(cè)方法,提高了GAN模型檢測(cè)異常數(shù)據(jù)的能力[5]。Zarai 等人將遞歸神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò)用于入侵檢測(cè)系統(tǒng)中,使用了四個(gè)隱藏層、四十一層輸入和兩層輸出,共有100 次迭代。對(duì)四種常用的缺陷檢測(cè)模型架構(gòu)進(jìn)行比較,得出DNN3 算法性能最佳,使用了三層長(zhǎng)短時(shí)記憶法(LSTM),最后顯示三層LSTM有著較高的性能[6]。Ravi 等人提出了一種新的SDRK 機(jī)器學(xué)習(xí)算法來(lái)檢測(cè)入侵[7]。SDRK 利用有監(jiān)督的深層神經(jīng)網(wǎng)絡(luò)(DNN)和無(wú)監(jiān)督聚類技術(shù),較大提高了算法的準(zhǔn)確率。
針對(duì)目前車(chē)聯(lián)網(wǎng)背景下車(chē)載網(wǎng)絡(luò)易受到攻擊的現(xiàn)實(shí),且為了減少車(chē)載網(wǎng)絡(luò)的計(jì)算負(fù)載,我們提出了一種基于邊緣計(jì)算的車(chē)載網(wǎng)絡(luò)入侵檢測(cè)算法。
基于邊緣計(jì)算的車(chē)載網(wǎng)絡(luò)異常檢測(cè)系統(tǒng)主要由服務(wù)端、邊緣端和車(chē)輛端三部分組成,三者間采用無(wú)線通信方式傳輸數(shù)據(jù),系統(tǒng)的架構(gòu)圖如圖1 所示,車(chē)輛端采集數(shù)據(jù)并將數(shù)據(jù)上傳至服務(wù)端,服務(wù)端構(gòu)建、訓(xùn)練得到最優(yōu)異常檢測(cè)模型并部署至邊緣端,邊緣端接收車(chē)輛發(fā)送的數(shù)據(jù),并對(duì)各數(shù)據(jù)進(jìn)行處理,最后將數(shù)據(jù)作為模型輸入進(jìn)行異常檢測(cè),將檢測(cè)結(jié)果下傳回車(chē)輛端,車(chē)輛端根據(jù)接收到的結(jié)果做出相應(yīng)反應(yīng)。本系統(tǒng)采用多對(duì)多的星型組網(wǎng)結(jié)構(gòu),多對(duì)多組網(wǎng)結(jié)構(gòu)可以滿足因?yàn)檐?chē)輛行駛導(dǎo)致的網(wǎng)絡(luò)拓?fù)涞膭?dòng)態(tài)變化,防止因單個(gè)服務(wù)器的崩潰而影響整個(gè)車(chē)聯(lián)網(wǎng)系統(tǒng)無(wú)法正常工作的情況出現(xiàn)。
圖1 系統(tǒng)架構(gòu)圖
本系統(tǒng)構(gòu)建的異常檢測(cè)模型為基于SVM 的模型。圖2為異常檢測(cè)模型的構(gòu)建流程。
圖2 異常檢測(cè)模型的構(gòu)建流程
(1)數(shù)據(jù)集
本文采用的數(shù)據(jù)集由韓國(guó)黑客與對(duì)策研究實(shí)驗(yàn)室提供,為真實(shí)車(chē)輛采集數(shù)據(jù)。這些數(shù)據(jù)集是在執(zhí)行消息注入攻擊時(shí),通過(guò)真實(shí)車(chē)輛的OBD-II 端口記錄CAN 流量構(gòu)建的。每個(gè)數(shù)據(jù)集總共有30~40min 的CAN 流量,包含每300 個(gè)消息注入入侵,每次入侵執(zhí)行3~5s。在拒絕服務(wù)攻擊中,每0.3ms 注入一次“0000”CAN ID 的消息0000'是最占優(yōu)勢(shì)的。在模糊攻擊中,每0.5ms 注入完全隨機(jī)的CAN ID 和DATA值的消息。而在欺騙攻擊(轉(zhuǎn)速/齒輪):每1ms 注入與RPM/齒輪信息相關(guān)的某些CAN ID 的消息。
數(shù)據(jù)集的主要構(gòu)成部分:(1)時(shí)間戳:記錄的時(shí)間;(2)CAN ID:十六進(jìn)制中CAN 報(bào)文的標(biāo)識(shí)符(例如043f);(3)DLC:數(shù)據(jù)字節(jié)數(shù),從0 到8;(4)數(shù)據(jù)[ 0~ 7 ]:數(shù)據(jù)值(字節(jié));(5)標(biāo)志:T 或R,T 表示注入消息,R 表示正常消息。
(2)特征數(shù)據(jù)提取
將數(shù)據(jù)集的內(nèi)容作為基礎(chǔ),將攻擊報(bào)文與正常報(bào)文之間的差異性作為判斷根據(jù)。數(shù)據(jù)集中的時(shí)間戳、CAN ID 通常不具有合法性,無(wú)法為異常檢測(cè)提供直接的判斷依據(jù),因此舍棄;直接提取數(shù)據(jù)集中每一周期數(shù)據(jù)的8 個(gè)字節(jié)數(shù)據(jù)值以及標(biāo)志位,對(duì)提取的特征數(shù)據(jù)進(jìn)行歸一化處理后,劃分4/5 作為訓(xùn)練集,1/5 為測(cè)試集,這樣更有利于模型的訓(xùn)練和預(yù)測(cè)。
(3)模型構(gòu)建與訓(xùn)練
SVM(Support Vector Machine)是一種常見(jiàn)的有監(jiān)督學(xué)習(xí)算法,用于進(jìn)行二分類或多分類任務(wù)。它的主要思想是找到最優(yōu)決策面,把數(shù)據(jù)集正確分開(kāi)。本系統(tǒng)對(duì)模型輸入數(shù)據(jù)的異常檢測(cè)可看作線性不可分的二分類問(wèn)題,使用高斯核函數(shù)將數(shù)據(jù)映射高維空間,進(jìn)而可以更加容易區(qū)分;利用交叉驗(yàn)證和網(wǎng)格搜索選擇最佳參數(shù);得到的最佳參數(shù)進(jìn)行模型的構(gòu)建和訓(xùn)練:構(gòu)建模型的懲罰參數(shù)C,RBF 核的gamma,允許容錯(cuò)、泛化能力強(qiáng),決策函數(shù)類型為OVR,即訓(xùn)練N個(gè)分類器,核函數(shù)為徑向核函數(shù)/高斯核(RBF),使用數(shù)據(jù)預(yù)處理中分出的訓(xùn)練集訓(xùn)練模型,使用分出的測(cè)試集測(cè)試并計(jì)算模型正確率。
本系統(tǒng)服務(wù)端通過(guò)無(wú)線通信方式與車(chē)輛端進(jìn)行通信與數(shù)據(jù)傳輸,接收車(chē)輛端上傳的數(shù)據(jù)并進(jìn)行處理,使用Python 構(gòu)建基于支持向量機(jī)的異常檢測(cè)模型,用處理后的數(shù)據(jù)對(duì)模型進(jìn)行評(píng)估優(yōu)化,得到最優(yōu)模型,對(duì)該最優(yōu)模型進(jìn)行持久化處理并保存;再使用相應(yīng)模型部署軟件,查詢輸入邊緣端的IP 地址連接服務(wù)端和邊緣端,將訓(xùn)練好的模型部署到邊緣端。
邊緣端分布在道路兩側(cè),利用無(wú)線通信模塊接收各車(chē)輛上傳的周期性8 維行駛數(shù)據(jù),然后打開(kāi)串口并對(duì)串口進(jìn)行初始化,無(wú)線通信模塊初始化完成后,將接收到的數(shù)據(jù)發(fā)送至串口,串口判斷是否收到數(shù)據(jù),若未收到則重新接收數(shù)據(jù),若收到則解碼數(shù)據(jù),拆解處理成所需要的格式,調(diào)用服務(wù)端提前部署的最優(yōu)異常檢測(cè)模型進(jìn)行預(yù)測(cè);若數(shù)據(jù)為標(biāo)準(zhǔn)格式即為可預(yù)測(cè)數(shù)據(jù),將檢測(cè)得出的結(jié)果即“0”或“1”以字符串形式編碼后發(fā)送至串口返回給車(chē)輛端,同時(shí)打印顯示,便于對(duì)異常檢測(cè)算法預(yù)測(cè)結(jié)果進(jìn)行監(jiān)控;若數(shù)據(jù)為非標(biāo)準(zhǔn)格式即預(yù)測(cè)失敗,直接打印失敗信息,便于更改調(diào)試。
本系統(tǒng)車(chē)輛利用無(wú)線通信方式將CAN 總線數(shù)據(jù)上傳至邊緣端的服務(wù)器,然后接收邊緣端下傳至車(chē)輛的異常預(yù)測(cè)結(jié)果,對(duì)異常結(jié)果做出預(yù)警。車(chē)輛端加載實(shí)時(shí)行駛數(shù)據(jù),并將其以字符串的形式保存在數(shù)組中,周期性地將數(shù)據(jù)發(fā)送至串口,再通過(guò)串口所連接的無(wú)線通信模塊將一組8 維的數(shù)據(jù)發(fā)送至邊緣端,每個(gè)維度經(jīng)過(guò)歸一化處理后大小在0~255之間。車(chē)輛端接收到邊緣端下傳的異常檢測(cè)結(jié)果,通過(guò)串口讀取保存起來(lái),該結(jié)果以字符串的形式接收,對(duì)所接收結(jié)果進(jìn)行判斷,若為1(正常數(shù)據(jù))則繼續(xù)加載發(fā)送下一組數(shù)據(jù),若為0(異常數(shù)據(jù))車(chē)輛端停止發(fā)送數(shù)據(jù)且蜂鳴器工作,達(dá)到預(yù)警效果。
實(shí)驗(yàn)中服務(wù)端即PC 端。使用STM32F103C8T6 系列單片機(jī)智能小車(chē)來(lái)替代真實(shí)車(chē)輛如圖3 所示,使用LoRa 模塊進(jìn)行車(chē)輛端與服務(wù)器端的無(wú)線通信。LoRa 模塊通過(guò)USB 轉(zhuǎn)TTL 和杜邦線與小車(chē)進(jìn)行連接,小車(chē)既可使用電池供電也可以使用USB 電源供電,實(shí)現(xiàn)有線和無(wú)線供電雙模式。
圖3 車(chē)輛端實(shí)物圖
邊緣端使用Jetson nano 邊緣開(kāi)發(fā)板實(shí)現(xiàn),如圖4 所示,在M2 接口接入無(wú)線網(wǎng)卡,用一個(gè)螺絲固定,用于連接網(wǎng)絡(luò);將藍(lán)牙鍵盤(pán)適配器通過(guò)USB 口進(jìn)行連接,LoRa 無(wú)線通信模塊通過(guò)杜邦線與邊緣開(kāi)發(fā)板進(jìn)行連接,通過(guò)HDMI連接線將顯示屏與邊緣端相連。
圖4 服務(wù)器端實(shí)物圖
實(shí)驗(yàn)中在求得模型最佳參數(shù)時(shí)列出7 個(gè)svg_C 和6 個(gè)svg_gamma,一共42 種組合,創(chuàng)建網(wǎng)格搜索,42 組參數(shù)組合,8 核,日志冗長(zhǎng)度為1(偶爾輸出訓(xùn)練過(guò)程),最終確定最佳參數(shù)懲罰因子C 為0.01,RBF 核的 gamma 為 1;并構(gòu)建模型;使用由65536 個(gè)周期的正常數(shù)據(jù)和65536 個(gè)周期的異常數(shù)據(jù)組成的數(shù)據(jù)集,提取其中25000 個(gè)周期的正常數(shù)據(jù)和2000 個(gè)周期的異常數(shù)據(jù)組成訓(xùn)練樣本集,得到訓(xùn)練模型,對(duì)1000 個(gè)周期的異常數(shù)據(jù)進(jìn)行異常檢測(cè),檢測(cè)率為95.30%。對(duì)于訓(xùn)練樣本集,正常數(shù)據(jù)不變,將異常數(shù)據(jù)分別增加到4000 和7000 個(gè)周期時(shí),得到訓(xùn)練模型,對(duì)1000 個(gè)周期的異常數(shù)據(jù)進(jìn)行異常檢測(cè),檢測(cè)率分別達(dá)到98.20%和98.60%。
在不同訓(xùn)練樣本集下,利用本文所設(shè)計(jì)系統(tǒng)對(duì)車(chē)輛行駛數(shù)據(jù)進(jìn)行異常檢測(cè),車(chē)輛端與服務(wù)器端的通信如圖5 所示,得到的部分檢測(cè)結(jié)果如圖6 所示,數(shù)據(jù)異??杉皶r(shí)預(yù)警,引起駕駛?cè)藛T注意。
圖5 車(chē)輛端與服務(wù)器端通信
圖6 數(shù)據(jù)異常檢測(cè)結(jié)果
本文提出了基于支持向量機(jī)的車(chē)載網(wǎng)絡(luò)異常檢測(cè)算法,并識(shí)別每個(gè)周期數(shù)據(jù)的標(biāo)志作為特征來(lái)訓(xùn)練支持向量機(jī),并進(jìn)行異常檢測(cè)驗(yàn)證,表明了該算法具有較高的檢測(cè)概率;實(shí)現(xiàn)了基于邊緣計(jì)算的車(chē)載網(wǎng)絡(luò)數(shù)據(jù)異常檢測(cè)系統(tǒng),將本應(yīng)在車(chē)內(nèi)進(jìn)行的異常檢測(cè)轉(zhuǎn)移到邊緣服務(wù)器,減輕了車(chē)載網(wǎng)絡(luò)計(jì)算單元的計(jì)算負(fù)載。