作者 | 張淵策上??匕部尚跑浖?chuàng)新研究院研發(fā)工程師
來源 | 鑒源實驗室
目前機器學習是研究車輛網(wǎng)絡(luò)入侵檢測技術(shù)的熱門方向,通過引入機器學習算法來識別車載總線上的網(wǎng)絡(luò)報文,可實現(xiàn)對車輛已知/未知威脅的入侵檢測。這種基于機器學習的異常檢測技術(shù)普適性較強,無需對適配車型進行定制化開發(fā),但存在異常樣本采集數(shù)量大和訓練難度高的問題。本文將結(jié)合個人經(jīng)驗對基于機器學習的汽車CAN總線異常檢測方法展開具體介紹。
01 車載異常檢測流程
基于機器學習的車載異常檢測的整體流程如圖1所示,其中關(guān)鍵環(huán)節(jié)包括輸入數(shù)據(jù)、數(shù)據(jù)預(yù)處理、訓練及測試算法、評估及優(yōu)化。

圖1 基于機器學習的車載異常檢測整體流程
02 數(shù)據(jù)源
針對特定車型進行數(shù)據(jù)的采集,形成有特點的定制化數(shù)據(jù)集,并用此數(shù)據(jù)集進行智能算法的訓練與驗證。在實際應(yīng)用中,工程師可以直接采用公開數(shù)據(jù)集作為模型訓練的數(shù)據(jù),也可以通過實際采集車輛真實數(shù)據(jù)來獲取數(shù)據(jù)集。
公開數(shù)據(jù)集:公開數(shù)據(jù)集CAR-HACKING DATASET[1]中提供了汽車黑客數(shù)據(jù),如圖2所示,其中包括 DoS 攻擊、模糊攻擊、驅(qū)動齒輪欺騙攻擊和RPM儀表欺騙攻擊四種類別的數(shù)據(jù)。該數(shù)據(jù)集是通過在執(zhí)行消息注入攻擊時利用真實車輛的OBD-II端口記錄CAN流量來構(gòu)建的。其數(shù)據(jù)集特征包括Timestamp,CAN ID,DLC(數(shù)據(jù)長度碼),data(CAN數(shù)據(jù)字段),F(xiàn)lag(T或R,T代表注入信息,R代表正常信息)。公開數(shù)據(jù)集一般是經(jīng)過公開驗證的,更具有通用性和代表性,便于進行不同算法異常檢測效果的比對。

圖2 CAR-HACKING DATASET[1]
實車數(shù)據(jù)集:數(shù)據(jù)源還可以通過實車采集的方式獲取,通過向車內(nèi)注入特定的攻擊,并使用CAN采集工具對實車數(shù)據(jù)中的報文數(shù)據(jù)進行采集,采集時需要注意采集時間要盡可能平均。由此得到的實車數(shù)據(jù)集更加真實,其中可能包含一些公開數(shù)據(jù)集無法覆蓋的異常場景。此外,實車數(shù)據(jù)采集得到的數(shù)據(jù)集通常還需要進行預(yù)處理工作。
2.1 數(shù)據(jù)預(yù)處理
機器學習算法模型的質(zhì)量很大程度取決于數(shù)據(jù)的質(zhì)量。原始數(shù)據(jù)往往不利于模型的訓練,因此需要進行數(shù)據(jù)預(yù)處理以提高數(shù)據(jù)的質(zhì)量,使其更好地適用模型。數(shù)據(jù)預(yù)處理過程一般包括特征選取、數(shù)據(jù)標準化及特征編碼,如圖3所示。在實際車載異常檢測應(yīng)用中,最終選用的數(shù)據(jù)預(yù)處理方法通常會根據(jù)智能算法的不同而有所差異。

圖3 數(shù)據(jù)處理過程
2.2 特征選取
CAN報文的特征及描述如表1所示。記錄每一條數(shù)據(jù)的時間標識Time,每一條報文的序號為CAN ID,相同CAN ID報文出現(xiàn)的時間間隔為period。Payload部分通常將十六進制的信息轉(zhuǎn)換為十進制,根據(jù)CAN報文的特點,將payload劃分為8個特征位(byte0,byte1, byte2, byte3, byte4, byte5, byte6, byte7),它們?nèi)糠植荚?~255之間。
一般輸入數(shù)據(jù)格式為Dataframe格式,對應(yīng)的特征是Dataframe的列名稱。在進行不同算法的訓練時,選取包含指定特征值(某些列)的Dataframe進行后續(xù)數(shù)據(jù)標準化的操作。

表1 CAN報文特征
2.3 數(shù)據(jù)標準化
車載網(wǎng)絡(luò)報文的數(shù)據(jù)信號(數(shù)據(jù)payload部分)具有不同的量綱和取值范圍,通過標準化,在不改變樣本數(shù)據(jù)分布的同時,使得這些數(shù)值信號能夠進行比較。對于利用梯度下降的模型,數(shù)值型數(shù)據(jù)進行標準化可以削弱不同特征對模型的影響差異,使得梯度下降能更快地找到最優(yōu)解,同時結(jié)果更可靠。對于決策樹這類不通過梯度下降而利用信息增益比的算法,則不需要進行數(shù)據(jù)標準化,整體流程如圖4所示。
標準化對樣本的payload特征分別進行計算使其滿足正態(tài)分布,Z= (x- μ)/σ。一般情況下,標準化與數(shù)據(jù)分布相關(guān),具有更強的統(tǒng)計意義,在車載入侵檢測數(shù)據(jù)的處理上更加通用合適。對于需要數(shù)據(jù)標準化的算法,使用Scikit-learn中
preprocessing.StandardScaler(df)函數(shù),df為需要標準化的數(shù)據(jù)(只含有payload部分的Dataframe),得到標準化后的數(shù)據(jù)特征編碼或直接進行訓練。

圖4 數(shù)據(jù)標準化流程
2.4 特征編碼
車載網(wǎng)絡(luò)報文中,數(shù)據(jù)場以外還存在一部分報文內(nèi)容,如CAN ID。對于很多機器學習算法,分類器往往默認數(shù)據(jù)是連續(xù)的,并且是有序的,因此需要對此類特征進行編碼。對于維度較低的特征可以直接使用獨熱編碼。對于維度較高的特征,可以使用二進制編碼。
獨熱編碼是用等同于狀態(tài)數(shù)量的維度進行編碼,每種狀態(tài)下的獨熱編碼只有其中一位為1,其余均為0。編碼后的特征互斥,每次只有一個激活,有利于模型處理數(shù)據(jù)。
輸入數(shù)據(jù)集,如CAN ID經(jīng)過one_hot(df)函數(shù),將輸入數(shù)據(jù)進行one-hot編碼。一個CAN ID將變?yōu)?6*3的向量,如圖5所示。該向量將作為訓練模型的輸入,進行后續(xù)的模型訓練工作。

圖5 CAN ID 特征編碼[1]
03 算法訓練及測試
3.1 數(shù)據(jù)集劃分
輸入數(shù)據(jù)集以7:1.5:1.5的比例劃分成訓練集、驗證集和測試集。訓練集數(shù)據(jù)只用來訓練模型,其數(shù)據(jù)不出現(xiàn)在算法測試中。驗證集主要是用來反映訓練得到模型的相關(guān)效果,也會在其上進行算法模型的優(yōu)化與調(diào)試,反復(fù)驗證直到達到最佳效果。測試集主要表現(xiàn)模型的最終效果,測試集數(shù)據(jù)也是用來評價模型的數(shù)據(jù),測試集數(shù)據(jù)不出現(xiàn)在算法訓練中。
數(shù)據(jù)集劃分流程如圖6所示,首先輸入數(shù)據(jù)采用Scikit-learn中
model_selection.train_test_split()函數(shù),此函數(shù)可以將數(shù)據(jù)集先劃分成7:3的訓練集和測試數(shù)據(jù),然后再將測試數(shù)據(jù)集劃分成5:5的驗證集與測試集。

圖6 數(shù)據(jù)集劃分流程
3.2 SMOTE采樣
對于采集到的車載網(wǎng)絡(luò)數(shù)據(jù),攻擊報文數(shù)量遠少于正常報文,造成了樣本類別不平衡。機器學習中往往假定訓練樣本各類別是同等數(shù)量,即各類樣本數(shù)目是均衡的。一般來說,不平衡樣本會導致訓練模型側(cè)重樣本數(shù)目較多的類別,而“輕視”樣本數(shù)目較少類別,這樣模型在測試數(shù)據(jù)上的泛化能力就會受到影響。通過SMOTE[2](合成少數(shù)類過采樣技術(shù)),在少數(shù)類別樣本之間進行插值生成新的樣本,如圖7。相比隨機過采樣,SMOTE大大降低了過擬合的可能。

圖7 SMOTE采樣原理 [2]
在訓練模型前對各類別的訓練數(shù)據(jù)進行SMOTE過采樣的操作,SMOTE過采樣流程如圖8。使用imblearn.over_sampling中的SMOTE().fit_resample(X,Y)函數(shù),其中X為輸入需要訓練的報文集合,Y為X中每一條報文的類別。經(jīng)過SMOTE處理,各類別的報文數(shù)量會變得一樣多,可以進行下一步的操作。

圖8 SMOTE采樣流程
3.3 模型訓練
模型訓練是從標簽化訓練數(shù)據(jù)集中推斷出函數(shù)的機器學習任務(wù)。常用的模型訓練算法包括RNN(Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò))、LSTM(Long Short-Term Memory,長短期記憶網(wǎng)絡(luò))、GRU(Gated Recurrent Units,門控循環(huán)神經(jīng)網(wǎng)絡(luò))、DCNN(Dynamic Convolution Neural Network,深度卷積神經(jīng)網(wǎng)絡(luò))、SVM(Support Vector Machine,支持向量機)、DT(Decision Tree,決策樹)、RF(Random Forest,隨機森林)、XGBoost(Extreme Gradient Boosting,極端梯度提升)、Stacking(集成學習算法)、Clustering(聚類)等。
04 評估與優(yōu)化
模型的總體優(yōu)化流程如圖9所示,對模型測試的結(jié)果進行評估,根據(jù)評估的結(jié)果進一步優(yōu)化模型。下面詳細闡述評估指標和優(yōu)化方式。
4.1 評估指標
方案使用平均準確率、P-R曲線、F-score對模型進行評價。平均準確率是判斷入侵檢測算法優(yōu)劣的最直觀的評價標準。P-R曲線和F-score能更加直觀地反映入侵檢測模型在特定數(shù)據(jù)集上的表現(xiàn)。本方案選擇平均準確率作為模型在驗證集上的評價指標,在超參數(shù)調(diào)優(yōu)時,根據(jù)平均準確率選擇更優(yōu)超參數(shù)組合。本方案選擇F-score作為模型在測試集上的評價指標,評價最終的模型效果。

圖9 模型優(yōu)化流程
a)準確率 Accuracy
準確率公式為:
Accuracy = (TP + TN) / (TP + TN + FP + FN)
其中,TP(true positive)是正例,代表被模型正確地預(yù)測為正類別的樣本。例如,模型推斷出某條報文是攻擊報文,而該報文確實是攻擊報文。TN(true negative)為假正例,代表被模型正確地預(yù)測為負類別的樣本。例如,模型推斷出某條報文不是攻擊報文,而該報文確實不是攻擊報文。FN (false negative)是假負例,代表被模型錯誤地預(yù)測為負類別的樣本。例如,模型推斷出某條報文不是攻擊報文(負類別),但該條報文其實是攻擊報文。FP(false positive)為假正例,代表被模型錯誤地預(yù)測為正類別的樣本。例如,模型推斷出某條報文是攻擊報文(正類別),但該條報文其實不是攻擊報文。
準確率是指分類正確的樣本占總樣本個數(shù)的比例。在不同類別的樣本比例非常不均衡時,占比大的類別將成為影響準確率的主要因素。導致模型整體準確率很高,但是不代表對小占比類別的分類效果很好。因此,使用平均準確率,即每個類別下的樣本準確率的算術(shù)平均作為模型評估的指標。
在超參數(shù)選擇階段,算法會根據(jù)各個超參數(shù)的準確率Accuracy,進行選擇。選擇準確率最高的超參數(shù)作為模型使用的超參數(shù)。
b)P-R曲線和F-score
精確率P = TP / (TP+FP),指分類正確的正樣本個數(shù)占分類器判定為正樣本的樣本個數(shù)的比例。召回率R = TP / (TP+FN),指分類正確的正樣本個數(shù)占真正的正樣本個數(shù)的比例。通過F-score進行定量分析,同時考慮了精確率和召回率。
F-score =(1+β^2 )*P*R/(β^2*P+R)
智能分析使用F1-score作為指標,評價最終模型在測試集上的表現(xiàn)效果。
4.2 模型優(yōu)化
入侵檢測使用到的機器學習和神經(jīng)網(wǎng)絡(luò)模型包含大量的超參數(shù),超參數(shù)直接影響了模型的優(yōu)劣,尋找超參數(shù)的最優(yōu)取值是至關(guān)重要的問題。通過超參數(shù)優(yōu)化方法和K折交叉驗證,找到最優(yōu)的超參數(shù),使模型能夠準確地判斷報文類型。
a)K折交叉驗證
K折交叉驗證用于模型調(diào)優(yōu),測試模型預(yù)測未用于估計的新數(shù)據(jù)的能力,找到使得模型泛化性能最優(yōu)的超參值。具體原理如圖10,將訓練數(shù)據(jù)分成K份,用其中的(K-1)份訓練模型,剩余的1份數(shù)據(jù)用于評估模型。循環(huán)迭代K次,并對得到的K個評估結(jié)果取平均值,得到最終的結(jié)果。

圖10 K折交叉驗證原理[3]
K值越小,模型越偏差越低、方差越高,容易出現(xiàn)過擬合。K值越大,則偏差提高,方差降低,且計算開銷增大。在訓練中我們一般選擇k=5。使用下面函數(shù)進行K折交叉驗證劃分,sklearn.model_selection.KFold(n_splits=5,shuffle=True,random_state=999).split(df),其中n_splits為交叉驗證的折數(shù),shuffle表示是否打亂數(shù)據(jù),random_state為隨機種子,df為訓練數(shù)據(jù)。
b)超參數(shù)優(yōu)化
超參數(shù)優(yōu)化方法主要有:網(wǎng)格搜索和貝葉斯優(yōu)化。
網(wǎng)格搜索:以窮舉的方式遍歷所有可能的參數(shù)組合,網(wǎng)格搜索在1維、2維、3維的搜索空間表現(xiàn)相對來說不錯,很容易覆蓋到空間的大部分,而且耗時不大。使用sklearn.model_selection中的GridSearchCV ()進行超參數(shù)選擇和交叉驗證。
貝葉斯優(yōu)化:網(wǎng)格搜索和隨機搜索沒有利用已搜索點的信息,使用這些信息指導搜索過程可以提高結(jié)果的質(zhì)量以及搜索的速度。貝葉斯優(yōu)化利用之前已搜索點的信息確定下一個搜索點,用于求解維數(shù)不高的黑盒優(yōu)化問題。它的本質(zhì)其實是一種回歸模型,即利用回歸模型預(yù)測的函數(shù)值來選擇下一個搜索點。使用hyperopt中的fmin()函數(shù)進行貝葉斯優(yōu)化,給出最優(yōu)模型參數(shù)。
以訓練集的交叉驗證結(jié)果作為性能度量。根據(jù)模型的超參數(shù)數(shù)量、取值范圍、性能影響等因素,選擇不同的超參數(shù)優(yōu)化方法,對模型進行參數(shù)優(yōu)化。
05 小結(jié)
面向智能網(wǎng)聯(lián)汽車無線通信系統(tǒng)、車載娛樂系統(tǒng)、駕駛輔助系統(tǒng)以及典型智能網(wǎng)聯(lián)場景,機器學習作為車載網(wǎng)絡(luò)入侵檢測中至關(guān)重要的一項技術(shù),可實現(xiàn)對已知/未知攻擊行為的特征識別檢測,最終助力車端和云端安全聯(lián)動,保障車載網(wǎng)絡(luò)的信息安全。
審核編輯:湯梓紅
-
CAN總線
+關(guān)注
關(guān)注
146文章
2050瀏覽量
135474 -
CAN
+關(guān)注
關(guān)注
59文章
3093瀏覽量
473398 -
異常檢測
+關(guān)注
關(guān)注
1文章
45瀏覽量
10012 -
機器學習
+關(guān)注
關(guān)注
67文章
8561瀏覽量
137208
發(fā)布評論請先 登錄
基于transformer和自監(jiān)督學習的路面異常檢測方法分享
機器學習異常檢測實戰(zhàn):用Isolation Forest快速構(gòu)建無標簽異常檢測系統(tǒng)
汽車CAN總線系統(tǒng)原理、設(shè)計與應(yīng)用
基于深度學習的異常檢測的研究方法
基于深度學習的異常檢測的研究方法
基于CAN總線的汽車電子檢測系統(tǒng)
汽車can總線工作原理及測量方法詳解
CAN接口異常如何分析?
基于機器學習的汽車CAN總線異常檢測方法
評論