目前機(jī)器學(xué)習(xí)是研究車(chē)輛網(wǎng)絡(luò)入侵檢測(cè)技術(shù)的熱門(mén)方向,通過(guò)引入機(jī)器學(xué)習(xí)算法來(lái)識(shí)別車(chē)載總線上的網(wǎng)絡(luò)報(bào)文,可實(shí)現(xiàn)對(duì)車(chē)輛已知/未知威脅的入侵檢測(cè)。這種基于機(jī)器學(xué)習(xí)的異常檢測(cè)技術(shù)普適性較強(qiáng),無(wú)需對(duì)適配車(chē)型進(jìn)行定制化開(kāi)發(fā),但存在異常樣本采集數(shù)量大和訓(xùn)練難度高的問(wèn)題。本文將結(jié)合個(gè)人經(jīng)驗(yàn)對(duì)基于機(jī)器學(xué)習(xí)的汽車(chē)CAN總線異常檢測(cè)方法展開(kāi)具體介紹。
01
車(chē)載異常檢測(cè)流程
基于機(jī)器學(xué)習(xí)的車(chē)載異常檢測(cè)的整體流程如圖1所示,其中關(guān)鍵環(huán)節(jié)包括輸入數(shù)據(jù)、數(shù)據(jù)預(yù)處理、訓(xùn)練及測(cè)試算法、評(píng)估及優(yōu)化。
圖1 基于機(jī)器學(xué)習(xí)的車(chē)載異常檢測(cè)整體流程
02
數(shù)據(jù)源
針對(duì)特定車(chē)型進(jìn)行數(shù)據(jù)的采集,形成有特點(diǎn)的定制化數(shù)據(jù)集,并用此數(shù)據(jù)集進(jìn)行智能算法的訓(xùn)練與驗(yàn)證。在實(shí)際應(yīng)用中,工程師可以直接采用公開(kāi)數(shù)據(jù)集作為模型訓(xùn)練的數(shù)據(jù),也可以通過(guò)實(shí)際采集車(chē)輛真實(shí)數(shù)據(jù)來(lái)獲取數(shù)據(jù)集。
公開(kāi)數(shù)據(jù)集:公開(kāi)數(shù)據(jù)集CAR-HACKING DATASET[1]中提供了汽車(chē)黑客數(shù)據(jù),如圖2所示,其中包括 DoS 攻擊、模糊攻擊、驅(qū)動(dòng)齒輪欺騙攻擊和RPM儀表欺騙攻擊四種類(lèi)別的數(shù)據(jù)。該數(shù)據(jù)集是通過(guò)在執(zhí)行消息注入攻擊時(shí)利用真實(shí)車(chē)輛的OBD-II端口記錄CAN流量來(lái)構(gòu)建的。
其數(shù)據(jù)集特征包括Timestamp,CAN ID,DLC(數(shù)據(jù)長(zhǎng)度碼),data(CAN數(shù)據(jù)字段),F(xiàn)lag(T或R,T代表注入信息,R代表正常信息)。公開(kāi)數(shù)據(jù)集一般是經(jīng)過(guò)公開(kāi)驗(yàn)證的,更具有通用性和代表性,便于進(jìn)行不同算法異常檢測(cè)效果的比對(duì)。
圖2??CAR-HACKING DATASET[1]
實(shí)車(chē)數(shù)據(jù)集:數(shù)據(jù)源還可以通過(guò)實(shí)車(chē)采集的方式獲取,通過(guò)向車(chē)內(nèi)注入特定的攻擊,并使用CAN采集工具對(duì)實(shí)車(chē)數(shù)據(jù)中的報(bào)文數(shù)據(jù)進(jìn)行采集,采集時(shí)需要注意采集時(shí)間要盡可能平均。由此得到的實(shí)車(chē)數(shù)據(jù)集更加真實(shí),其中可能包含一些公開(kāi)數(shù)據(jù)集無(wú)法覆蓋的異常場(chǎng)景。此外,實(shí)車(chē)數(shù)據(jù)采集得到的數(shù)據(jù)集通常還需要進(jìn)行預(yù)處理工作。
2.1?數(shù)據(jù)預(yù)處理
機(jī)器學(xué)習(xí)算法模型的質(zhì)量很大程度取決于數(shù)據(jù)的質(zhì)量。原始數(shù)據(jù)往往不利于模型的訓(xùn)練,因此需要進(jìn)行數(shù)據(jù)預(yù)處理以提高數(shù)據(jù)的質(zhì)量,使其更好地適用模型。數(shù)據(jù)預(yù)處理過(guò)程一般包括特征選取、數(shù)據(jù)標(biāo)準(zhǔn)化及特征編碼,如圖3所示。在實(shí)際車(chē)載異常檢測(cè)應(yīng)用中,最終選用的數(shù)據(jù)預(yù)處理方法通常會(huì)根據(jù)智能算法的不同而有所差異。
圖3 數(shù)據(jù)處理過(guò)程
2.2?特征選取
CAN報(bào)文的特征及描述如表1所示。記錄每一條數(shù)據(jù)的時(shí)間標(biāo)識(shí)Time,每一條報(bào)文的序號(hào)為CAN ID,相同CAN ID報(bào)文出現(xiàn)的時(shí)間間隔為period。Payload部分通常將十六進(jìn)制的信息轉(zhuǎn)換為十進(jìn)制,根據(jù)CAN報(bào)文的特點(diǎn),將payload劃分為8個(gè)特征位(byte0,byte1, byte2, byte3, byte4, byte5, byte6, byte7),它們?nèi)糠植荚?~255之間。 一般輸入數(shù)據(jù)格式為Dataframe格式,對(duì)應(yīng)的特征是Dataframe的列名稱(chēng)。在進(jìn)行不同算法的訓(xùn)練時(shí),選取包含指定特征值(某些列)的Dataframe進(jìn)行后續(xù)數(shù)據(jù)標(biāo)準(zhǔn)化的操作。
表1 CAN報(bào)文特征
2.3?數(shù)據(jù)標(biāo)準(zhǔn)化
車(chē)載網(wǎng)絡(luò)報(bào)文的數(shù)據(jù)信號(hào)(數(shù)據(jù)payload部分)具有不同的量綱和取值范圍,通過(guò)標(biāo)準(zhǔn)化,在不改變樣本數(shù)據(jù)分布的同時(shí),使得這些數(shù)值信號(hào)能夠進(jìn)行比較。對(duì)于利用梯度下降的模型,數(shù)值型數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化可以削弱不同特征對(duì)模型的影響差異,使得梯度下降能更快地找到最優(yōu)解,同時(shí)結(jié)果更可靠。對(duì)于決策樹(shù)這類(lèi)不通過(guò)梯度下降而利用信息增益比的算法,則不需要進(jìn)行數(shù)據(jù)標(biāo)準(zhǔn)化,整體流程如圖4所示。
標(biāo)準(zhǔn)化對(duì)樣本的payload特征分別進(jìn)行計(jì)算使其滿(mǎn)足正態(tài)分布,Z=? (x- μ)/σ。一般情況下,標(biāo)準(zhǔn)化與數(shù)據(jù)分布相關(guān),具有更強(qiáng)的統(tǒng)計(jì)意義,在車(chē)載入侵檢測(cè)數(shù)據(jù)的處理上更加通用合適。對(duì)于需要數(shù)據(jù)標(biāo)準(zhǔn)化的算法,使用Scikit-learn中preprocessing.StandardScaler(df)函數(shù),df為需要標(biāo)準(zhǔn)化的數(shù)據(jù)(只含有payload部分的Dataframe),得到標(biāo)準(zhǔn)化后的數(shù)據(jù)特征編碼或直接進(jìn)行訓(xùn)練。
圖4 數(shù)據(jù)標(biāo)準(zhǔn)化流程
2.4?特征編碼
車(chē)載網(wǎng)絡(luò)報(bào)文中,數(shù)據(jù)場(chǎng)以外還存在一部分報(bào)文內(nèi)容,如CAN ID。對(duì)于很多機(jī)器學(xué)習(xí)算法,分類(lèi)器往往默認(rèn)數(shù)據(jù)是連續(xù)的,并且是有序的,因此需要對(duì)此類(lèi)特征進(jìn)行編碼。對(duì)于維度較低的特征可以直接使用獨(dú)熱編碼。對(duì)于維度較高的特征,可以使用二進(jìn)制編碼。 獨(dú)熱編碼是用等同于狀態(tài)數(shù)量的維度進(jìn)行編碼,每種狀態(tài)下的獨(dú)熱編碼只有其中一位為1,其余均為0。編碼后的特征互斥,每次只有一個(gè)激活,有利于模型處理數(shù)據(jù)。 輸入數(shù)據(jù)集,如CAN ID經(jīng)過(guò)one_hot(df)函數(shù),將輸入數(shù)據(jù)進(jìn)行one-hot編碼。一個(gè)CAN ID將變?yōu)?6*3的向量,如圖5所示。該向量將作為訓(xùn)練模型的輸入,進(jìn)行后續(xù)的模型訓(xùn)練工作。
圖5 CAN ID 特征編碼[1]
03
算法訓(xùn)練及測(cè)試
3.1?數(shù)據(jù)集劃分
輸入數(shù)據(jù)集以71.5的比例劃分成訓(xùn)練集、驗(yàn)證集和測(cè)試集。訓(xùn)練集數(shù)據(jù)只用來(lái)訓(xùn)練模型,其數(shù)據(jù)不出現(xiàn)在算法測(cè)試中。驗(yàn)證集主要是用來(lái)反映訓(xùn)練得到模型的相關(guān)效果,也會(huì)在其上進(jìn)行算法模型的優(yōu)化與調(diào)試,反復(fù)驗(yàn)證直到達(dá)到最佳效果。測(cè)試集主要表現(xiàn)模型的最終效果,測(cè)試集數(shù)據(jù)也是用來(lái)評(píng)價(jià)模型的數(shù)據(jù),測(cè)試集數(shù)據(jù)不出現(xiàn)在算法訓(xùn)練中。
數(shù)據(jù)集劃分流程如圖6所示,首先輸入數(shù)據(jù)采用Scikit-learn中model_selection.train_test_split()函數(shù),此函數(shù)可以將數(shù)據(jù)集先劃分成7:3的訓(xùn)練集和測(cè)試數(shù)據(jù),然后再將測(cè)試數(shù)據(jù)集劃分成5:5的驗(yàn)證集與測(cè)試集。
圖6 數(shù)據(jù)集劃分流程
3.2?SMOTE采樣
對(duì)于采集到的車(chē)載網(wǎng)絡(luò)數(shù)據(jù),攻擊報(bào)文數(shù)量遠(yuǎn)少于正常報(bào)文,造成了樣本類(lèi)別不平衡。機(jī)器學(xué)習(xí)中往往假定訓(xùn)練樣本各類(lèi)別是同等數(shù)量,即各類(lèi)樣本數(shù)目是均衡的。一般來(lái)說(shuō),不平衡樣本會(huì)導(dǎo)致訓(xùn)練模型側(cè)重樣本數(shù)目較多的類(lèi)別,而“輕視”樣本數(shù)目較少類(lèi)別,這樣模型在測(cè)試數(shù)據(jù)上的泛化能力就會(huì)受到影響。通過(guò)SMOTE[2](合成少數(shù)類(lèi)過(guò)采樣技術(shù)),在少數(shù)類(lèi)別樣本之間進(jìn)行插值生成新的樣本,如圖7。相比隨機(jī)過(guò)采樣,SMOTE大大降低了過(guò)擬合的可能。
圖7 SMOTE采樣原理?[2]
在訓(xùn)練模型前對(duì)各類(lèi)別的訓(xùn)練數(shù)據(jù)進(jìn)行SMOTE過(guò)采樣的操作,SMOTE過(guò)采樣流程如圖8。使用imblearn.over_sampling中的SMOTE().fit_resample(X,Y)函數(shù),其中X為輸入需要訓(xùn)練的報(bào)文集合,Y為X中每一條報(bào)文的類(lèi)別。經(jīng)過(guò)SMOTE處理,各類(lèi)別的報(bào)文數(shù)量會(huì)變得一樣多,可以進(jìn)行下一步的操作。
圖8 SMOTE采樣流程
3.3?模型訓(xùn)練
模型訓(xùn)練是從標(biāo)簽化訓(xùn)練數(shù)據(jù)集中推斷出函數(shù)的機(jī)器學(xué)習(xí)任務(wù)。常用的模型訓(xùn)練算法包括RNN(Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò))、LSTM(Long Short-Term Memory,長(zhǎng)短期記憶網(wǎng)絡(luò))、GRU(Gated Recurrent Units,門(mén)控循環(huán)神經(jīng)網(wǎng)絡(luò))、DCNN(Dynamic Convolution Neural Network,深度卷積神經(jīng)網(wǎng)絡(luò))、SVM(Support Vector Machine,支持向量機(jī))、DT(Decision Tree,決策樹(shù))、RF(Random Forest,隨機(jī)森林)、XGBoost(Extreme Gradient Boosting,極端梯度提升)、Stacking(集成學(xué)習(xí)算法)、Clustering(聚類(lèi))等。
04
評(píng)估與優(yōu)化
模型的總體優(yōu)化流程如圖9所示,對(duì)模型測(cè)試的結(jié)果進(jìn)行評(píng)估,根據(jù)評(píng)估的結(jié)果進(jìn)一步優(yōu)化模型。下面詳細(xì)闡述評(píng)估指標(biāo)和優(yōu)化方式。
4.1?評(píng)估指標(biāo)
方案使用平均準(zhǔn)確率、P-R曲線、F-score對(duì)模型進(jìn)行評(píng)價(jià)。平均準(zhǔn)確率是判斷入侵檢測(cè)算法優(yōu)劣的最直觀的評(píng)價(jià)標(biāo)準(zhǔn)。P-R曲線和F-score能更加直觀地反映入侵檢測(cè)模型在特定數(shù)據(jù)集上的表現(xiàn)。本方案選擇平均準(zhǔn)確率作為模型在驗(yàn)證集上的評(píng)價(jià)指標(biāo),在超參數(shù)調(diào)優(yōu)時(shí),根據(jù)平均準(zhǔn)確率選擇更優(yōu)超參數(shù)組合。本方案選擇F-score作為模型在測(cè)試集上的評(píng)價(jià)指標(biāo),評(píng)價(jià)最終的模型效果。
圖9 模型優(yōu)化流程
a)準(zhǔn)確率 Accuracy
準(zhǔn)確率公式為: Accuracy = (TP + TN) / (TP + TN + FP + FN) 其中,TP(true positive)是正例,代表被模型正確地預(yù)測(cè)為正類(lèi)別的樣本。例如,模型推斷出某條報(bào)文是攻擊報(bào)文,而該報(bào)文確實(shí)是攻擊報(bào)文。TN(true negative)為假正例,代表被模型正確地預(yù)測(cè)為負(fù)類(lèi)別的樣本。例如,模型推斷出某條報(bào)文不是攻擊報(bào)文,而該報(bào)文確實(shí)不是攻擊報(bào)文。FN (false negative)是假負(fù)例,代表被模型錯(cuò)誤地預(yù)測(cè)為負(fù)類(lèi)別的樣本。例如,模型推斷出某條報(bào)文不是攻擊報(bào)文(負(fù)類(lèi)別),但該條報(bào)文其實(shí)是攻擊報(bào)文。
FP(false positive)為假正例,代表被模型錯(cuò)誤地預(yù)測(cè)為正類(lèi)別的樣本。例如,模型推斷出某條報(bào)文是攻擊報(bào)文(正類(lèi)別),但該條報(bào)文其實(shí)不是攻擊報(bào)文。 準(zhǔn)確率是指分類(lèi)正確的樣本占總樣本個(gè)數(shù)的比例。在不同類(lèi)別的樣本比例非常不均衡時(shí),占比大的類(lèi)別將成為影響準(zhǔn)確率的主要因素。導(dǎo)致模型整體準(zhǔn)確率很高,但是不代表對(duì)小占比類(lèi)別的分類(lèi)效果很好。
因此,使用平均準(zhǔn)確率,即每個(gè)類(lèi)別下的樣本準(zhǔn)確率的算術(shù)平均作為模型評(píng)估的指標(biāo)。 在超參數(shù)選擇階段,算法會(huì)根據(jù)各個(gè)超參數(shù)的準(zhǔn)確率Accuracy,進(jìn)行選擇。選擇準(zhǔn)確率最高的超參數(shù)作為模型使用的超參數(shù)。
b)P-R曲線和F-score?
精確率P = TP / (TP+FP),指分類(lèi)正確的正樣本個(gè)數(shù)占分類(lèi)器判定為正樣本的樣本個(gè)數(shù)的比例。召回率R = TP / (TP+FN),指分類(lèi)正確的正樣本個(gè)數(shù)占真正的正樣本個(gè)數(shù)的比例。通過(guò)F-score進(jìn)行定量分析,同時(shí)考慮了精確率和召回率。? F-score =(1+β^2 )*P*R/(β^2*P+R) 智能分析使用F1-score作為指標(biāo),評(píng)價(jià)最終模型在測(cè)試集上的表現(xiàn)效果。
4.2?模型優(yōu)化
入侵檢測(cè)使用到的機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)模型包含大量的超參數(shù),超參數(shù)直接影響了模型的優(yōu)劣,尋找超參數(shù)的最優(yōu)取值是至關(guān)重要的問(wèn)題。通過(guò)超參數(shù)優(yōu)化方法和K折交叉驗(yàn)證,找到最優(yōu)的超參數(shù),使模型能夠準(zhǔn)確地判斷報(bào)文類(lèi)型。
a)K折交叉驗(yàn)證
K折交叉驗(yàn)證用于模型調(diào)優(yōu),測(cè)試模型預(yù)測(cè)未用于估計(jì)的新數(shù)據(jù)的能力,找到使得模型泛化性能最優(yōu)的超參值。具體原理如圖10,將訓(xùn)練數(shù)據(jù)分成K份,用其中的(K-1)份訓(xùn)練模型,剩余的1份數(shù)據(jù)用于評(píng)估模型。循環(huán)迭代K次,并對(duì)得到的K個(gè)評(píng)估結(jié)果取平均值,得到最終的結(jié)果。
圖10 K折交叉驗(yàn)證原理[3]
K值越小,模型越偏差越低、方差越高,容易出現(xiàn)過(guò)擬合。K值越大,則偏差提高,方差降低,且計(jì)算開(kāi)銷(xiāo)增大。在訓(xùn)練中我們一般選擇k=5。使用下面函數(shù)進(jìn)行K折交叉驗(yàn)證劃分,sklearn.model_selection.KFold(n_splits=5,shuffle=True,random_state=999).split(df),其中n_splits為交叉驗(yàn)證的折數(shù),shuffle表示是否打亂數(shù)據(jù),random_state為隨機(jī)種子,df為訓(xùn)練數(shù)據(jù)。
b)超參數(shù)優(yōu)化 超參數(shù)優(yōu)化方法主要有:網(wǎng)格搜索和貝葉斯優(yōu)化。
網(wǎng)格搜索:以窮舉的方式遍歷所有可能的參數(shù)組合,網(wǎng)格搜索在1維、2維、3維的搜索空間表現(xiàn)相對(duì)來(lái)說(shuō)不錯(cuò),很容易覆蓋到空間的大部分,而且耗時(shí)不大。使用sklearn.model_selection中的GridSearchCV ()進(jìn)行超參數(shù)選擇和交叉驗(yàn)證。
貝葉斯優(yōu)化:網(wǎng)格搜索和隨機(jī)搜索沒(méi)有利用已搜索點(diǎn)的信息,使用這些信息指導(dǎo)搜索過(guò)程可以提高結(jié)果的質(zhì)量以及搜索的速度。貝葉斯優(yōu)化利用之前已搜索點(diǎn)的信息確定下一個(gè)搜索點(diǎn),用于求解維數(shù)不高的黑盒優(yōu)化問(wèn)題。它的本質(zhì)其實(shí)是一種回歸模型,即利用回歸模型預(yù)測(cè)的函數(shù)值來(lái)選擇下一個(gè)搜索點(diǎn)。使用hyperopt中的fmin()函數(shù)進(jìn)行貝葉斯優(yōu)化,給出最優(yōu)模型參數(shù)。 以訓(xùn)練集的交叉驗(yàn)證結(jié)果作為性能度量。根據(jù)模型的超參數(shù)數(shù)量、取值范圍、性能影響等因素,選擇不同的超參數(shù)優(yōu)化方法,對(duì)模型進(jìn)行參數(shù)優(yōu)化。
05
小結(jié)
面向智能網(wǎng)聯(lián)汽車(chē)無(wú)線通信系統(tǒng)、車(chē)載娛樂(lè)系統(tǒng)、駕駛輔助系統(tǒng)以及典型智能網(wǎng)聯(lián)場(chǎng)景,機(jī)器學(xué)習(xí)作為車(chē)載網(wǎng)絡(luò)入侵檢測(cè)中至關(guān)重要的一項(xiàng)技術(shù),可實(shí)現(xiàn)對(duì)已知/未知攻擊行為的特征識(shí)別檢測(cè),最終助力車(chē)端和云端安全聯(lián)動(dòng),保障車(chē)載網(wǎng)絡(luò)的信息安全。
?
審核編輯:劉清
評(píng)論
查看更多