崔英祥,張幽彤,魏洪乾
(北京理工大學機械與車輛學院,北京 100081)
在車載總線網(wǎng)絡(luò)中,CAN 網(wǎng)絡(luò)作為車輛重要的底層控制網(wǎng)絡(luò),主要用于傳遞汽車的狀態(tài)信息及控制信息,保證汽車的平穩(wěn)行駛。然而,當外界黑客侵入汽車后,CAN網(wǎng)絡(luò)幾乎完全暴露于外界,嚴重影響行車安全[1-2],這可能導致災(zāi)難性事件[3]。盡管當前存在消息加密、數(shù)據(jù)匿名化、防火墻和用戶身份驗證等網(wǎng)絡(luò)安全應(yīng)用,但車載網(wǎng)絡(luò)缺乏安全解決方案[4]。
對于傳統(tǒng)的IDS(intrusion detection system)系統(tǒng),主要研究集中在基于異常的檢測、基于簽名的檢測和二者混合的檢測[5]。但對于汽車CAN 總線來說,CAN報文信息編碼是由制造商定義和保密的,且受限于車內(nèi)嵌入式設(shè)備的算力,很多傳統(tǒng)的入侵檢測方法都無法開展。
對于CAN 總線安全防護,主要分為基于統(tǒng)計、基于規(guī)則、基于學習3 類?;诮y(tǒng)計的安全防護是通過統(tǒng)計學方法,對CAN 總線的某些具有統(tǒng)計學規(guī)律的參數(shù)狀況進行檢測;基于規(guī)則的安全防護是通過汽車自身CAN 網(wǎng)絡(luò)的物理規(guī)則特征和物理規(guī)則手段進行檢測;基于學習的安全防護是通過機器學習和深度學習的方法進行檢測。最初汽車CAN 總線的IDS 研究是基于規(guī)則的[6-7],這將安全性推給了制造商,因為規(guī)則取決于CAN 編碼,且可能需要特定攻擊的知識。文獻[8]~文獻[10]中利用消息頻率異常來檢測與車輛無關(guān)的消息注入攻擊。為應(yīng)對Miller 和Valesek 的遠程偽裝攻擊[11],文獻[12]和文獻[13]中提出了用于 ECU 識別的數(shù)據(jù)驅(qū)動方法,以檢測來自報文發(fā)送方的信息。在基于統(tǒng)計分析的模型中,文獻[14]中使用了生存分析,它分析了攻擊發(fā)生前的時間。隨著深度學習和機器學習的發(fā)展,更多對于CAN 總線的IDS 系統(tǒng),選擇了用于檢測惡意消息的無監(jiān)督學習方法[15-16]。Tyree 等[17]提出了一種流形學習技術(shù)來識別 CAN 總線數(shù)據(jù)的關(guān)系是否受到破壞。但這需要能將最多64 位的 CAN 數(shù)據(jù)字段標記化為信號大小的消息,且沒有完全分析 CAN報文信息。利用CAN 報文信息的相關(guān)性進行入侵檢測,同樣需要完全了解CAN 信號的編碼:Arun等[18]使用兩不同傳感器信號的一致性檢測注入攻擊的CAN 報文數(shù)據(jù)和傳感器數(shù)據(jù)。最新的基于智能算法的IDS 系統(tǒng)[19-20]采用如下3 步對CAN 數(shù)據(jù)包建模并檢測入侵:首先,借助逆向工程或與制造商合作以獲取CAN 報文信息;然后借助深度學習模型離線訓練特征參數(shù),且在線預測未來的信號值;最后根據(jù)預測差值確定汽車ECU是否遭受到入侵攻擊行為。
目前來看,對于汽車底層CAN 總線的防護較缺乏。很多有效的IDS 模型,難以擺脫無法在線檢測中算力要求高、算法復雜、難以應(yīng)用到汽車嵌入式設(shè)備上的缺點。也就是說,缺乏車載網(wǎng)絡(luò)在線輕量級檢測的有效措施,不過Yu等[21]利用時間間隔條件熵在MCU 中進行入侵檢測系統(tǒng)開發(fā),并進行了實車驗證,為汽車ECU層級的防護提供了思路。
因此,為解決汽車底層CAN 網(wǎng)絡(luò)中傳統(tǒng)IDS 難以應(yīng)用、缺乏車載網(wǎng)絡(luò)在線輕量級檢測的問題,本文中開展了基于樣本熵的CAN 網(wǎng)絡(luò)入侵檢測方案研究。具體地,提出一種新的IDS 方法,稱之為基于樣本熵的IDS,命名為SE-IDS(sample entropyintrusion detection system),通過現(xiàn)有的數(shù)據(jù)集分析與重現(xiàn)工作,利用實車的ECU 進行硬件在環(huán)仿真實驗,驗證了該方法的有效性和可行性。
CAN 總線是一種串行數(shù)據(jù)通信協(xié)議,用于進行車輛網(wǎng)絡(luò)中控制設(shè)備和儀器之間的信息交流。該協(xié)議支持具有不同通信介質(zhì)的多種總線,包括雙絞線電纜、同軸電纜和光纖。CAN 總線的數(shù)據(jù)傳輸速度可達1 Mbps/s,其主要特點是取消了傳統(tǒng)的站地址編碼,采用通信數(shù)據(jù)塊編碼,使網(wǎng)絡(luò)中的節(jié)點數(shù)在理論上是無限的。在總線中傳送的報文,每幀由7 部分組成。CAN 協(xié)議支持兩種報文格式,其唯一的不同是標識符ID(identity document)長度不同,標準格式為11位,擴展格式為29位。
CAN 總線通信接口中集成了CAN 協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對通信數(shù)據(jù)的成幀處理,其包括位填充、數(shù)據(jù)塊編碼、循環(huán)冗余檢驗、優(yōu)先級判別等工作。CAN 總線采用多主競爭式總線結(jié)構(gòu),具有多主站運行和分散仲裁的串行總線以及廣播通信的特點。CAN總線上任意節(jié)點可在任意時刻主動地向網(wǎng)絡(luò)上其它節(jié)點發(fā)送信息而不分主次,因此可在各節(jié)點之間實現(xiàn)自由通信。
CAN 總線以報文為單位進行數(shù)據(jù)傳送,報文的優(yōu)先級結(jié)合在11 位標識符中,具有最低二進制數(shù)的標識符有最高的優(yōu)先級。這種優(yōu)先級一旦在系統(tǒng)設(shè)計時被確立后就不能再被更改。總線讀取中的沖突可通過位仲裁解決。在CAN 總線上傳輸?shù)南疵總€節(jié)點的預定義順序排列優(yōu)先級。CAN的仲裁機制是優(yōu)先級高的報文可以繼續(xù)傳輸數(shù)據(jù)而不影響總線沖突判定時間,而優(yōu)先級低的報文必須等待下一個空閑狀態(tài)。
針對CAN 總線錯誤,CAN 物理層有發(fā)送和接收錯誤計數(shù),計數(shù)達到一定的累計后就會產(chǎn)生總線關(guān)閉行為,或稱為bus-off 行為,這說明CAN 總線上出現(xiàn)了嚴重錯誤。
由于CAN 總線傳播有廣播通信、仲裁機制、bus-off 機制等特點,所以對CAN 總線的入侵也是由此展開。主要的攻擊方式有注入攻擊、假冒攻擊、監(jiān)聽攻擊、DOS 攻擊、模糊攻擊、重放攻擊、欺騙攻擊、篡改攻擊等,本文中主要研究DOS 攻擊、模糊攻擊和bus-off 攻擊。其中,DOS 攻擊簡單且有效,大量應(yīng)用于黑客攻擊中;模糊攻擊易于被黑客實施,且原理與重放攻擊和泛洪攻擊大致相同,bus-off 攻擊作為一種新型的攻擊方式,正在逐漸被黑客所掌握。具體說明如下。
(1)DOS 攻擊 由于CAN 總線的沖突仲裁機制,高優(yōu)先級報文的頻繁發(fā)送會占用CAN 網(wǎng)絡(luò),抑制其他節(jié)點發(fā)送報文,干擾總線正常工作,嚴重時會造成CAN網(wǎng)絡(luò)崩潰,其攻擊示意圖如圖1(a)所示。
圖1 異常攻擊過程示意圖
(2)模糊攻擊 指的是攻擊者將隨機ID和隨機數(shù)據(jù)的報文,按一定頻率發(fā)送到總線中,模糊正??偩€上的報文,干擾車輛通信,其攻擊示意圖如圖1(b)所示。
(3)bus-off攻擊 攻擊者通過在某個ECU 發(fā)送報文時,同時發(fā)送更高優(yōu)先級的報文,由于總線的沖突仲裁機制,導致該ECU 產(chǎn)生發(fā)送錯誤,當ECU 的發(fā)送錯誤累積過多后,ECU 會進入bus-off 模式,即暫時停止高頻通信,以一個更慢的時間定時嘗試恢復,其攻擊示意圖如圖1(c)所示。
針對汽車CAN 網(wǎng)絡(luò)的入侵檢測,設(shè)計基于樣本熵的車載CAN 網(wǎng)絡(luò)安全防護系統(tǒng),對DOS 攻擊、重放攻擊、模糊攻擊等攻擊方式具有明顯效果?;跇颖眷氐能囕dCAN 網(wǎng)絡(luò)安全系統(tǒng),主要通過接收報文、匯總報文、樣本熵計算、狀態(tài)信號4 個過程來進行車端防護,如圖2所示。
圖2 基于樣本熵的入侵檢測系統(tǒng)
整個過程在MCU(microcontroller unit)中進行,MCU 進行總線報文接收的同時,將報文記錄在MCU內(nèi),將報文的ID 和數(shù)據(jù)按時間順序生成可用于樣本熵計算的序列,通過MCU 進行閾值和樣本熵值的計算,通過預設(shè)的樣本熵閾值,進行狀態(tài)檢測,向ECU發(fā)出總線狀態(tài)信號。
樣本熵與近似熵的物理意義相似,都是通過度量信號中產(chǎn)生新模式的概率來衡量時間序列復雜性,新模式產(chǎn)生的概率越大,序列的復雜性就越大。與近似熵相比,樣本熵具有兩個優(yōu)勢:樣本熵的計算不依賴數(shù)據(jù)長度;樣本熵具有更好的一致性,即參數(shù)m和r的變化(后文有具體含義介紹)對樣本熵的影響程度相同。樣本熵的值越低,序列自我相似性就越高;樣本熵的值越大,樣本序列就越復雜。
與信息熵相比,樣本熵的區(qū)別在于:所需要的數(shù)據(jù)點少;不進行大量對數(shù)運算,運行成本低;能夠評估隨機過程的異常狀態(tài)。
對于CAN報文中的ID場,具體步驟如下。
(1)MCU 接收報文并按順序?qū)D 記錄到{x(n)}=x(1),x(2),…,x(N)中。
(2)按序號組成一組維數(shù)為m的向量序列,Xm(1),…,Xm(N-m+1),其 中Xm(i)={x(i),x(i+1),…,x(i+m-1)},1 ≤i≤N-m+1。這些向量代表從第i點開始的m個連續(xù)的ID值。
(3)定義向量Xm(i) 與Xm(j) 之間的距離d[Xm(i),Xm(j)]為兩者對應(yīng)元素中最大差值的絕對值,即
(4)對于給定的Xm(i)與Xm(j)之間距離≤r的j(1 ≤j≤N-m,j≠i)的數(shù)目,并記作Bi。對于1 ≤i≤N-m,定義:
(5)定義Bm(r)為
(6)增加維數(shù)到m+1,計 算Xm+1(i) 與Xm+1(j)(1 ≤j≤N-m,j≠i)距離≤r的個數(shù),記為Ai。定義為
這樣,Bm(r)是兩個ID 序列在相似容限r(nóng)下匹配m個點的概率,而Am(r)是兩個ID 序列匹配m+1 個點的概率。樣本熵定義為
因為樣本熵與m、r的取值直接相關(guān),因此須首先確定這兩個數(shù)值。根據(jù)Pincus[22]的研究結(jié)果,m=1 或2,r=0.1~0.25Std(Std是原始數(shù)據(jù)的標準差)計算得到的樣本熵,具有較為合理的統(tǒng)計特性,考慮到實際結(jié)果的準確性,本文的實驗選取了m=3 作為維度值。
本文分析了Song 等[23]共享的用于入侵檢測的CAN 報文數(shù)據(jù)集,該數(shù)據(jù)集是通過OBD-II(the second on-board diagnostics)端口記錄來自真實車輛的CAN 流量而構(gòu)建的,包含DOS 攻擊、模糊攻擊和消息注入攻擊。通過樣本熵方法,對數(shù)據(jù)集中的CAN報文ID場進行樣本熵值的計算。
通過分析數(shù)據(jù)集中上萬條CAN 報文信息,確定了總線中每個ID 的CAN 報文的傳輸速率,進而在MCU中復現(xiàn),ID統(tǒng)計結(jié)果如表1所示。
表1 ID統(tǒng)計結(jié)果
對于DOS 攻擊模擬,實驗設(shè)置為每1 ms 注入ID為1 的報文。以閾值、時間窗口為自變量,樣本熵為因變量。
對于模糊攻擊模擬,實驗設(shè)置為每1 ms 注入特定ID的報文。以不同平均報文ID為自變量,樣本熵值為因變量。
對于bus-off 攻擊模擬,實驗設(shè)置為在攻擊段關(guān)閉特定的ECU,即停止某些ID的發(fā)送。以不同ID停止發(fā)送的個數(shù)為自變量,樣本熵值為因變量。
為驗證本文基于樣本熵的車載CAN 網(wǎng)絡(luò)安全防護方法,進行MCU 驗證實驗。在模擬DOS 攻擊、模糊攻擊、bus-off 攻擊的情況下,觀測了結(jié)果,實驗設(shè)置如下。
如圖3和圖4所示,實驗采用Freescale公司生產(chǎn)的MC9S12XS128 芯片作為IDS 執(zhí)行的硬件設(shè)備,其帶有一套為汽車車身和乘客舒適度應(yīng)用而優(yōu)化設(shè)計的改進型片上外圍設(shè)備、存儲器等模塊,可應(yīng)用于汽車座椅控制模塊、空調(diào)控制模塊、各種車身控制模塊等的設(shè)計應(yīng)用。發(fā)送MCU、接收MCU、攻擊MCU 和CAN 卡并聯(lián)在總線上。發(fā)送MCU 發(fā)出正常CAN 報文到總線上,接收MCU 接收總線報文,并計算一定時間窗口內(nèi)的樣本熵值,攻擊MCU 手動向總線發(fā)出攻擊類型的報文,最后由CAN 卡將所有信息采集到上位機軟件CANTest中進行后處理。
圖3 實驗連接設(shè)置
圖4 實物照片
在本實驗中,所用單片機晶振為12 MHz,總線頻率為32 MHz,波特率為250 Kb/s,其中測試報文選用表1所統(tǒng)計的數(shù)據(jù)。
3.2.1 DOS攻擊實驗結(jié)果與分析
首先,測試了DOS攻擊下樣本熵值的變化情況。DOS攻擊作為典型的網(wǎng)絡(luò)攻擊之一,樣本熵值的變化情況能有效反映其對于網(wǎng)絡(luò)攻擊的靈敏程度。
如圖5 所示,可以看到當總線受到DOS 攻擊時,樣本熵值均有大幅變化。需要特別注意的是,由于總線數(shù)據(jù)流不變的情況下,樣本熵值計算時的時間窗口的位置不是可控的環(huán)境變量,因此在初始化過程后,樣本熵值穩(wěn)定的范圍不是固定的,其受時間窗口位置的影響而變化,故在圖中出現(xiàn)了相反的變化趨勢。分析樣本熵值變化的原因可知,由于ID 為1的報文加入,導致序列間的距離發(fā)生顯著波動。當時間窗口內(nèi)的報文ID 距離較小時,樣本熵值較低,此時新的報文加入,會使時間窗口內(nèi)所有報文的距離相對變大,導致樣本熵值升高,反之亦然。綜上所述,在樣本熵方法的推薦閾值范圍內(nèi),樣本熵值的變化都較為穩(wěn)定,考慮到樣本熵值斜率的影響,本文最終選擇r=0.2Std為IDS系統(tǒng)的設(shè)置閾值。
圖5 不同閾值下的樣本熵變化情況
考慮到樣本熵計算的輸入數(shù)據(jù)有閾值、時間窗口長度、維數(shù)等因素,繼續(xù)加做了一組以時間窗口長度為自變量的樣本熵值變化情況。圖6 示出在不同的時間窗口下,樣本熵均能穩(wěn)定變化,由于過高的迭代時間會導致樣本熵變化較慢,因此只做了兩組實驗。綜上,考慮到迭代時間對檢測過程的影響,最終的IDS系統(tǒng)采用20 ms的時間窗口進行計算。
圖6 不同時間窗口下的樣本熵變化情況
本節(jié)還對比分析了傳統(tǒng)的信息熵方法[21]是否能夠解決上述攻擊問題。將傳統(tǒng)的信息熵方法寫入ECU 中,觀察信息熵隨攻擊的變化,如圖7 所示。圖中實驗設(shè)置為每隔10 s 進行5 s 攻擊??梢钥闯?,通過信息熵獲取的數(shù)據(jù)并不會跟隨攻擊的進行產(chǎn)生規(guī)律性的變化。尤其是第20 s 攻擊后,信息熵會突增至3 左右,但通過后續(xù)的局部放大圖(圖7(b))觀察該熵值極不穩(wěn)定,盡管熵值已降低到一定程度,但很難選擇特征參數(shù)(如斜率或閾值)等準確地定位攻擊行為。由此可見,本文所采用的樣本熵方法比傳統(tǒng)信息熵方法更適用于車載CAN 網(wǎng)絡(luò)安全防護。
圖7 信息熵方法有效性的對比結(jié)果
3.2.2 模糊攻擊實驗結(jié)果與分析
本節(jié)進一步探究樣本熵方法對于模糊攻擊、bus-off 攻擊的識別效果。由圖8 可知,樣本熵方法對于檢測模糊攻擊同樣有效果,且隨ID 平均值的變化而變化。這是由于樣本熵方法計算報文之間的相對距離,當插入攻擊報文時,由于原時間窗口中的距離關(guān)系被打破,所以樣本熵值產(chǎn)生了不同變化趨勢,在攻擊注入時刻及攻擊結(jié)束時刻,樣本熵值均有尖點出現(xiàn),該變化趨勢受到攻擊報文的ID、攻擊報文ID相對原有報文ID的距離的影響。
圖8 模糊攻擊測試結(jié)果
3.2.3 bus-off攻擊實驗結(jié)果與分析
理論上bus-off 作為屏蔽一類或多類ID 的攻擊方式,出現(xiàn)攻擊后報文ID 距離會相應(yīng)改變,樣本熵曲線同樣發(fā)生改變,因此樣本熵方法對bus-off 的檢測也應(yīng)是有效的。通過主動關(guān)閉總線上的某幾個ID 報文來模擬該報文的bus-off 攻擊行為,計算的樣本熵如圖9 所示。可以看出隨著ID 報文的關(guān)閉,樣本熵曲線出現(xiàn)明顯的不可導點,因此利用斜率變化很容易鑒別bus-off攻擊。
圖9 bus-off攻擊測試結(jié)果
本文中所提出的SE-IDS 是一種靈活、低成本的基于樣本熵的入侵檢測系統(tǒng),閾值檢測的方式具有抗干擾能力,對樣本熵值進行二次差分檢測突變點,能夠?qū)崟r響應(yīng)和檢測多種形式的攻擊。SE-IDS 對數(shù)據(jù)量要求低,反應(yīng)靈敏,由于進行的對數(shù)級運算少,對計算資源的要求低。實驗結(jié)果表明,SE-IDS方法響應(yīng)速度快,準確率高,需求低,易于部署,能有效應(yīng)對各種攻擊。通過實物ECU 的測試實驗可以發(fā)現(xiàn),提出的SE-IDS 方法在檢測CAN 網(wǎng)絡(luò)的入侵檢測方面要優(yōu)于傳統(tǒng)的信息熵方法,且提出的方法采樣點數(shù)量降低了一個量級,有利于實車應(yīng)用。此外,提出的SE-IDS 還可以檢測常見的DOS 攻擊、模糊攻擊、bus-off攻擊等入侵行為。