崔英祥,張幽彤,魏洪乾
(北京理工大學機械與車輛學院,北京 100081)
在車載總線網絡中,CAN 網絡作為車輛重要的底層控制網絡,主要用于傳遞汽車的狀態信息及控制信息,保證汽車的平穩行駛。然而,當外界黑客侵入汽車后,CAN網絡幾乎完全暴露于外界,嚴重影響行車安全[1-2],這可能導致災難性事件[3]。盡管當前存在消息加密、數據匿名化、防火墻和用戶身份驗證等網絡安全應用,但車載網絡缺乏安全解決方案[4]。
對于傳統的IDS(intrusion detection system)系統,主要研究集中在基于異常的檢測、基于簽名的檢測和二者混合的檢測[5]。但對于汽車CAN 總線來說,CAN報文信息編碼是由制造商定義和保密的,且受限于車內嵌入式設備的算力,很多傳統的入侵檢測方法都無法開展。
對于CAN 總線安全防護,主要分為基于統計、基于規則、基于學習3 類。基于統計的安全防護是通過統計學方法,對CAN 總線的某些具有統計學規律的參數狀況進行檢測;基于規則的安全防護是通過汽車自身CAN 網絡的物理規則特征和物理規則手段進行檢測;基于學習的安全防護是通過機器學習和深度學習的方法進行檢測。最初汽車CAN 總線的IDS 研究是基于規則的[6-7],這將安全性推給了制造商,因為規則取決于CAN 編碼,且可能需要特定攻擊的知識。文獻[8]~文獻[10]中利用消息頻率異常來檢測與車輛無關的消息注入攻擊。為應對Miller 和Valesek 的遠程偽裝攻擊[11],文獻[12]和文獻[13]中提出了用于 ECU 識別的數據驅動方法,以檢測來自報文發送方的信息。在基于統計分析的模型中,文獻[14]中使用了生存分析,它分析了攻擊發生前的時間。隨著深度學習和機器學習的發展,更多對于CAN 總線的IDS 系統,選擇了用于檢測惡意消息的無監督學習方法[15-16]。Tyree 等[17]提出了一種流形學習技術來識別 CAN 總線數據的關系是否受到破壞。但這需要能將最多64 位的 CAN 數據字段標記化為信號大小的消息,且沒有完全分析 CAN報文信息。利用CAN 報文信息的相關性進行入侵檢測,同樣需要完全了解CAN 信號的編碼:Arun等[18]使用兩不同傳感器信號的一致性檢測注入攻擊的CAN 報文數據和傳感器數據。最新的基于智能算法的IDS 系統[19-20]采用如下3 步對CAN 數據包建模并檢測入侵:首先,借助逆向工程或與制造商合作以獲取CAN 報文信息;然后借助深度學習模型離線訓練特征參數,且在線預測未來的信號值;最后根據預測差值確定汽車ECU是否遭受到入侵攻擊行為。
目前來看,對于汽車底層CAN 總線的防護較缺乏。很多有效的IDS 模型,難以擺脫無法在線檢測中算力要求高、算法復雜、難以應用到汽車嵌入式設備上的缺點。也就是說,缺乏車載網絡在線輕量級檢測的有效措施,不過Yu等[21]利用時間間隔條件熵在MCU 中進行入侵檢測系統開發,并進行了實車驗證,為汽車ECU層級的防護提供了思路。
因此,為解決汽車底層CAN 網絡中傳統IDS 難以應用、缺乏車載網絡在線輕量級檢測的問題,本文中開展了基于樣本熵的CAN 網絡入侵檢測方案研究。具體地,提出一種新的IDS 方法,稱之為基于樣本熵的IDS,命名為SE-IDS(sample entropyintrusion detection system),通過現有的數據集分析與重現工作,利用實車的ECU 進行硬件在環仿真實驗,驗證了該方法的有效性和可行性。
CAN 總線是一種串行數據通信協議,用于進行車輛網絡中控制設備和儀器之間的信息交流。該協議支持具有不同通信介質的多種總線,包括雙絞線電纜、同軸電纜和光纖。CAN 總線的數據傳輸速度可達1 Mbps/s,其主要特點是取消了傳統的站地址編碼,采用通信數據塊編碼,使網絡中的節點數在理論上是無限的。在總線中傳送的報文,每幀由7 部分組成。CAN 協議支持兩種報文格式,其唯一的不同是標識符ID(identity document)長度不同,標準格式為11位,擴展格式為29位。
CAN 總線通信接口中集成了CAN 協議的物理層和數據鏈路層功能,可完成對通信數據的成幀處理,其包括位填充、數據塊編碼、循環冗余檢驗、優先級判別等工作。CAN 總線采用多主競爭式總線結構,具有多主站運行和分散仲裁的串行總線以及廣播通信的特點。CAN總線上任意節點可在任意時刻主動地向網絡上其它節點發送信息而不分主次,因此可在各節點之間實現自由通信。
CAN 總線以報文為單位進行數據傳送,報文的優先級結合在11 位標識符中,具有最低二進制數的標識符有最高的優先級。這種優先級一旦在系統設計時被確立后就不能再被更改。總線讀取中的沖突可通過位仲裁解決。在CAN 總線上傳輸的消息按每個節點的預定義順序排列優先級。CAN的仲裁機制是優先級高的報文可以繼續傳輸數據而不影響總線沖突判定時間,而優先級低的報文必須等待下一個空閑狀態。
針對CAN 總線錯誤,CAN 物理層有發送和接收錯誤計數,計數達到一定的累計后就會產生總線關閉行為,或稱為bus-off 行為,這說明CAN 總線上出現了嚴重錯誤。
由于CAN 總線傳播有廣播通信、仲裁機制、bus-off 機制等特點,所以對CAN 總線的入侵也是由此展開。主要的攻擊方式有注入攻擊、假冒攻擊、監聽攻擊、DOS 攻擊、模糊攻擊、重放攻擊、欺騙攻擊、篡改攻擊等,本文中主要研究DOS 攻擊、模糊攻擊和bus-off 攻擊。其中,DOS 攻擊簡單且有效,大量應用于黑客攻擊中;模糊攻擊易于被黑客實施,且原理與重放攻擊和泛洪攻擊大致相同,bus-off 攻擊作為一種新型的攻擊方式,正在逐漸被黑客所掌握。具體說明如下。
(1)DOS 攻擊 由于CAN 總線的沖突仲裁機制,高優先級報文的頻繁發送會占用CAN 網絡,抑制其他節點發送報文,干擾總線正常工作,嚴重時會造成CAN網絡崩潰,其攻擊示意圖如圖1(a)所示。

圖1 異常攻擊過程示意圖
(2)模糊攻擊 指的是攻擊者將隨機ID和隨機數據的報文,按一定頻率發送到總線中,模糊正常總線上的報文,干擾車輛通信,其攻擊示意圖如圖1(b)所示。
(3)bus-off攻擊 攻擊者通過在某個ECU 發送報文時,同時發送更高優先級的報文,由于總線的沖突仲裁機制,導致該ECU 產生發送錯誤,當ECU 的發送錯誤累積過多后,ECU 會進入bus-off 模式,即暫時停止高頻通信,以一個更慢的時間定時嘗試恢復,其攻擊示意圖如圖1(c)所示。
針對汽車CAN 網絡的入侵檢測,設計基于樣本熵的車載CAN 網絡安全防護系統,對DOS 攻擊、重放攻擊、模糊攻擊等攻擊方式具有明顯效果。基于樣本熵的車載CAN 網絡安全系統,主要通過接收報文、匯總報文、樣本熵計算、狀態信號4 個過程來進行車端防護,如圖2所示。

圖2 基于樣本熵的入侵檢測系統
整個過程在MCU(microcontroller unit)中進行,MCU 進行總線報文接收的同時,將報文記錄在MCU內,將報文的ID 和數據按時間順序生成可用于樣本熵計算的序列,通過MCU 進行閾值和樣本熵值的計算,通過預設的樣本熵閾值,進行狀態檢測,向ECU發出總線狀態信號。
樣本熵與近似熵的物理意義相似,都是通過度量信號中產生新模式的概率來衡量時間序列復雜性,新模式產生的概率越大,序列的復雜性就越大。與近似熵相比,樣本熵具有兩個優勢:樣本熵的計算不依賴數據長度;樣本熵具有更好的一致性,即參數m和r的變化(后文有具體含義介紹)對樣本熵的影響程度相同。樣本熵的值越低,序列自我相似性就越高;樣本熵的值越大,樣本序列就越復雜。
與信息熵相比,樣本熵的區別在于:所需要的數據點少;不進行大量對數運算,運行成本低;能夠評估隨機過程的異常狀態。
對于CAN報文中的ID場,具體步驟如下。
(1)MCU 接收報文并按順序將ID 記錄到{x(n)}=x(1),x(2),…,x(N)中。
(2)按序號組成一組維數為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個連續的ID值。
(3)定義向量Xm(i) 與Xm(j) 之間的距離d[Xm(i),Xm(j)]為兩者對應元素中最大差值的絕對值,即
(4)對于給定的Xm(i)與Xm(j)之間距離≤r的j(1 ≤j≤N-m,j≠i)的數目,并記作Bi。對于1 ≤i≤N-m,定義:
(5)定義Bm(r)為
(6)增加維數到m+1,計 算Xm+1(i) 與Xm+1(j)(1 ≤j≤N-m,j≠i)距離≤r的個數,記為Ai。定義為
這樣,Bm(r)是兩個ID 序列在相似容限r下匹配m個點的概率,而Am(r)是兩個ID 序列匹配m+1 個點的概率。樣本熵定義為
因為樣本熵與m、r的取值直接相關,因此須首先確定這兩個數值。根據Pincus[22]的研究結果,m=1 或2,r=0.1~0.25Std(Std是原始數據的標準差)計算得到的樣本熵,具有較為合理的統計特性,考慮到實際結果的準確性,本文的實驗選取了m=3 作為維度值。
本文分析了Song 等[23]共享的用于入侵檢測的CAN 報文數據集,該數據集是通過OBD-II(the second on-board diagnostics)端口記錄來自真實車輛的CAN 流量而構建的,包含DOS 攻擊、模糊攻擊和消息注入攻擊。通過樣本熵方法,對數據集中的CAN報文ID場進行樣本熵值的計算。
通過分析數據集中上萬條CAN 報文信息,確定了總線中每個ID 的CAN 報文的傳輸速率,進而在MCU中復現,ID統計結果如表1所示。

表1 ID統計結果
對于DOS 攻擊模擬,實驗設置為每1 ms 注入ID為1 的報文。以閾值、時間窗口為自變量,樣本熵為因變量。
對于模糊攻擊模擬,實驗設置為每1 ms 注入特定ID的報文。以不同平均報文ID為自變量,樣本熵值為因變量。
對于bus-off 攻擊模擬,實驗設置為在攻擊段關閉特定的ECU,即停止某些ID的發送。以不同ID停止發送的個數為自變量,樣本熵值為因變量。
為驗證本文基于樣本熵的車載CAN 網絡安全防護方法,進行MCU 驗證實驗。在模擬DOS 攻擊、模糊攻擊、bus-off 攻擊的情況下,觀測了結果,實驗設置如下。
如圖3和圖4所示,實驗采用Freescale公司生產的MC9S12XS128 芯片作為IDS 執行的硬件設備,其帶有一套為汽車車身和乘客舒適度應用而優化設計的改進型片上外圍設備、存儲器等模塊,可應用于汽車座椅控制模塊、空調控制模塊、各種車身控制模塊等的設計應用。發送MCU、接收MCU、攻擊MCU 和CAN 卡并聯在總線上。發送MCU 發出正常CAN 報文到總線上,接收MCU 接收總線報文,并計算一定時間窗口內的樣本熵值,攻擊MCU 手動向總線發出攻擊類型的報文,最后由CAN 卡將所有信息采集到上位機軟件CANTest中進行后處理。

圖3 實驗連接設置

圖4 實物照片
在本實驗中,所用單片機晶振為12 MHz,總線頻率為32 MHz,波特率為250 Kb/s,其中測試報文選用表1所統計的數據。
3.2.1 DOS攻擊實驗結果與分析
首先,測試了DOS攻擊下樣本熵值的變化情況。DOS攻擊作為典型的網絡攻擊之一,樣本熵值的變化情況能有效反映其對于網絡攻擊的靈敏程度。
如圖5 所示,可以看到當總線受到DOS 攻擊時,樣本熵值均有大幅變化。需要特別注意的是,由于總線數據流不變的情況下,樣本熵值計算時的時間窗口的位置不是可控的環境變量,因此在初始化過程后,樣本熵值穩定的范圍不是固定的,其受時間窗口位置的影響而變化,故在圖中出現了相反的變化趨勢。分析樣本熵值變化的原因可知,由于ID 為1的報文加入,導致序列間的距離發生顯著波動。當時間窗口內的報文ID 距離較小時,樣本熵值較低,此時新的報文加入,會使時間窗口內所有報文的距離相對變大,導致樣本熵值升高,反之亦然。綜上所述,在樣本熵方法的推薦閾值范圍內,樣本熵值的變化都較為穩定,考慮到樣本熵值斜率的影響,本文最終選擇r=0.2Std為IDS系統的設置閾值。

圖5 不同閾值下的樣本熵變化情況
考慮到樣本熵計算的輸入數據有閾值、時間窗口長度、維數等因素,繼續加做了一組以時間窗口長度為自變量的樣本熵值變化情況。圖6 示出在不同的時間窗口下,樣本熵均能穩定變化,由于過高的迭代時間會導致樣本熵變化較慢,因此只做了兩組實驗。綜上,考慮到迭代時間對檢測過程的影響,最終的IDS系統采用20 ms的時間窗口進行計算。

圖6 不同時間窗口下的樣本熵變化情況
本節還對比分析了傳統的信息熵方法[21]是否能夠解決上述攻擊問題。將傳統的信息熵方法寫入ECU 中,觀察信息熵隨攻擊的變化,如圖7 所示。圖中實驗設置為每隔10 s 進行5 s 攻擊。可以看出,通過信息熵獲取的數據并不會跟隨攻擊的進行產生規律性的變化。尤其是第20 s 攻擊后,信息熵會突增至3 左右,但通過后續的局部放大圖(圖7(b))觀察該熵值極不穩定,盡管熵值已降低到一定程度,但很難選擇特征參數(如斜率或閾值)等準確地定位攻擊行為。由此可見,本文所采用的樣本熵方法比傳統信息熵方法更適用于車載CAN 網絡安全防護。

圖7 信息熵方法有效性的對比結果
3.2.2 模糊攻擊實驗結果與分析
本節進一步探究樣本熵方法對于模糊攻擊、bus-off 攻擊的識別效果。由圖8 可知,樣本熵方法對于檢測模糊攻擊同樣有效果,且隨ID 平均值的變化而變化。這是由于樣本熵方法計算報文之間的相對距離,當插入攻擊報文時,由于原時間窗口中的距離關系被打破,所以樣本熵值產生了不同變化趨勢,在攻擊注入時刻及攻擊結束時刻,樣本熵值均有尖點出現,該變化趨勢受到攻擊報文的ID、攻擊報文ID相對原有報文ID的距離的影響。

圖8 模糊攻擊測試結果
3.2.3 bus-off攻擊實驗結果與分析
理論上bus-off 作為屏蔽一類或多類ID 的攻擊方式,出現攻擊后報文ID 距離會相應改變,樣本熵曲線同樣發生改變,因此樣本熵方法對bus-off 的檢測也應是有效的。通過主動關閉總線上的某幾個ID 報文來模擬該報文的bus-off 攻擊行為,計算的樣本熵如圖9 所示。可以看出隨著ID 報文的關閉,樣本熵曲線出現明顯的不可導點,因此利用斜率變化很容易鑒別bus-off攻擊。

圖9 bus-off攻擊測試結果
本文中所提出的SE-IDS 是一種靈活、低成本的基于樣本熵的入侵檢測系統,閾值檢測的方式具有抗干擾能力,對樣本熵值進行二次差分檢測突變點,能夠實時響應和檢測多種形式的攻擊。SE-IDS 對數據量要求低,反應靈敏,由于進行的對數級運算少,對計算資源的要求低。實驗結果表明,SE-IDS方法響應速度快,準確率高,需求低,易于部署,能有效應對各種攻擊。通過實物ECU 的測試實驗可以發現,提出的SE-IDS 方法在檢測CAN 網絡的入侵檢測方面要優于傳統的信息熵方法,且提出的方法采樣點數量降低了一個量級,有利于實車應用。此外,提出的SE-IDS 還可以檢測常見的DOS 攻擊、模糊攻擊、bus-off攻擊等入侵行為。