??摘要
控制器局域網(wǎng)(CAN)安全網(wǎng)關(guān)通常用于將車輛的不可信部分與可信部分隔離開來。盡管從概念上講,它很簡(jiǎn)單,但有時(shí)可能會(huì)造成一些難以察覺的問題。這些問題在測(cè)試階段可能不會(huì)被發(fā)現(xiàn),直到車輛投入使用或遭遇復(fù)雜的安全攻擊時(shí)才會(huì)顯現(xiàn)出來。特別是在處理傳輸幀時(shí),常見的問題有加密保護(hù)間歇性失效、消息丟失或損壞,以及受保護(hù)的CAN總線上的通信中斷。想要構(gòu)建穩(wěn)健安全的網(wǎng)關(guān)就必須避免這些問題。
01. 引言
安全網(wǎng)關(guān)是保障CAN總線安全的常用技術(shù)(與加密消息傳遞、入侵檢測(cè)和硬件安全一同使用[1])。其主要目的是保護(hù)硬實(shí)時(shí)機(jī)電控制總線,使其免受無線連接的易受攻擊設(shè)備的干擾,例如遠(yuǎn)程信息處理控制單元(TCU)和車載信息娛樂系統(tǒng)(IVI)。這是非常必要的,因?yàn)椋▽?duì)于足夠復(fù)雜的系統(tǒng)而言,是「何時(shí)」而非「是否」[2])當(dāng)這些易受攻擊的設(shè)備在攻擊中被攻破時(shí),安全網(wǎng)關(guān)等技術(shù)可以保證攻擊者無法危及車輛的基本控制功能。
安全網(wǎng)關(guān)在車輛網(wǎng)絡(luò)中還有第二個(gè)用途:將CAN總線劃分為多個(gè)網(wǎng)段,能做到當(dāng)某個(gè)網(wǎng)段受到物理攻擊時(shí),其他網(wǎng)段仍能繼續(xù)正常運(yùn)行而不受干擾。例如,CAN注入攻擊[3]通過汽車上易于觸及的部位(如大燈連接器)接入CAN總線,使盜竊裝置能夠偽造消息(例如發(fā)送禁用防盜器或解鎖車門的指令)。而在易于竊入的CAN總線與車輛其他部分之間設(shè)置安全網(wǎng)關(guān),就可以防止此類攻擊。

一種常見的定義安全性的方法是通過「CIA 三元組」:保密性(Confidentiality)、完整性(Integrity)、可用性(Availability)。對(duì)于CAN總線來說,最常見的攻擊是完整性攻擊:攻擊者選擇CAN標(biāo)識(shí)符來發(fā)送偽造消息,使接收者誤以為是真實(shí)消息并據(jù)此執(zhí)行操作。
因此,CAN安全網(wǎng)關(guān)在概念上很簡(jiǎn)單:它是一個(gè)連接兩條CAN總線的設(shè)備,能夠過濾幀,僅將合適的子集從一條總線復(fù)制到另一條總線(見圖 1)。
但是,安全網(wǎng)關(guān)有許多容易被忽視的細(xì)節(jié),尤其是在可用性方面。如果處理不當(dāng),將會(huì)導(dǎo)致網(wǎng)絡(luò)不安全或無法正常運(yùn)行。
美國(guó)國(guó)家汽車貨運(yùn)協(xié)會(huì)(NMFTA)制定了一套安全網(wǎng)關(guān)的要求,以確保其正確運(yùn)行。這些要求以正式的需求語言定義,并已公開[5]。本文基于這些要求,重點(diǎn)討論CAN安全網(wǎng)關(guān)的兩個(gè)關(guān)鍵方面:1)幀傳輸;2)幀丟棄。
02. 幀傳輸
幀的傳輸看似簡(jiǎn)單,實(shí)則暗藏陷阱。首先是傳輸順序問題。CAN安全網(wǎng)關(guān)絕不能重新排序幀,因?yàn)槭录捻樞驅(qū)?yīng)用程序至關(guān)重要。例如,ISO-TP[6]傳輸協(xié)議會(huì)從一系列CAN幀中組合一條大消息,如果幀的順序被打亂,整個(gè)消息的接收可能會(huì)失敗(每個(gè)CAN幀都附有序列號(hào),但有些檢錯(cuò)實(shí)現(xiàn)方式只是檢查是否有間隙,然后觸發(fā)錯(cuò)誤,甚至有些直接忽略序列號(hào))。

當(dāng)幀受到加密保護(hù)時(shí),也會(huì)出現(xiàn)這個(gè)問題,例如使用SecOC[7]或CryptoCAN[8]。加密方案旨在防范重放攻擊[9],即攻擊者復(fù)制合法幀并在稍后重新發(fā)送,以誘使接收者執(zhí)行操作。這些方案通常會(huì)將重排序的幀視為重放攻擊的嘗試,這往往會(huì)導(dǎo)致誤報(bào),而過多的誤報(bào)會(huì)導(dǎo)致真正的攻擊被忽視。

CAN幀通常不是由專門編寫的安全網(wǎng)關(guān)軟件重新排序,而是由CAN控制器硬件造成的。大多數(shù)CAN控制器都有一個(gè)傳輸優(yōu)先級(jí)隊(duì)列,隊(duì)列中的下一個(gè)要發(fā)送的幀不是隊(duì)首的幀,而是CAN標(biāo)識(shí)符最低的幀。有些控制器硬件通過一組比較器電路來比較每個(gè)幀緩沖區(qū)槽的標(biāo)識(shí)符,有些則通過狀態(tài)機(jī)順序掃描幀緩沖區(qū)槽,跟蹤目前看到的最低數(shù)值。無論哪種方式,當(dāng)隊(duì)列中有兩個(gè)或更多具有相同標(biāo)識(shí)符的CAN幀時(shí),就會(huì)出現(xiàn)問題:硬件必須決定先發(fā)送哪一個(gè)。在大多數(shù)情況下,這種「平局」是隨機(jī)解決的(例如根據(jù)幀緩沖區(qū)槽的編號(hào),或者順序掃描中最后看到的幀)。

兩個(gè)具有相同標(biāo)識(shí)符的幀同時(shí)出現(xiàn)在傳輸隊(duì)列中的一個(gè)原因是幀到達(dá)抖動(dòng)(Frame Arrival Jitter)。一般來說,抖動(dòng)是指周期性事件特定時(shí)間的變化性。車輛控制網(wǎng)絡(luò)中的大多數(shù)CAN幀是周期性生成的(通常它們攜帶由電子控制單元ECU中的周期性控制回路產(chǎn)生的數(shù)據(jù))。雖然它們是嚴(yán)格周期性生成的(即生成一個(gè)幀與下一個(gè)幀之間有固定的時(shí)間間隔),但到達(dá)接收者的時(shí)間并不相同:基本周期相同,但到達(dá)時(shí)間存在抖動(dòng)(見圖5)。

抖動(dòng)意味著如果將周期性幀直接從輸入的CAN控制器先進(jìn)先出隊(duì)列(FIFO)復(fù)制到輸出的優(yōu)先級(jí)隊(duì)列中,那么同一時(shí)間隊(duì)列中可能會(huì)有多個(gè)具有相同標(biāo)識(shí)符的幀(見圖6)。
幀抖動(dòng)是一個(gè)特別棘手的問題,因?yàn)?span style="color:rgb(13,39,77);">在運(yùn)行時(shí)觀察到的給定幀的抖動(dòng)取決于兩條CAN總線上的特定流量模式。在測(cè)試期間,可能不會(huì)觀察到CAN幀的重排序,但在兩條總線處于特定負(fù)載情況下,安全或ISO-TP消息傳遞可能會(huì)出現(xiàn)高度間歇性故障,從而暴露這個(gè)問題。在后期制作環(huán)境中可能根本無法追蹤此類故障的原因,而且在任何情況下,故障都不是簡(jiǎn)單的錯(cuò)誤造成的,而是安全網(wǎng)關(guān)的設(shè)計(jì)缺陷。

解決重排序問題的方法是在傳輸隊(duì)列中采用FIFO緩沖。然而,這又會(huì)直接導(dǎo)致另一個(gè)問題:CAN優(yōu)先級(jí)反轉(zhuǎn)[4]。當(dāng)FIFO隊(duì)列的前端是一個(gè)低優(yōu)先級(jí)幀,而緊急的高優(yōu)先級(jí)幀在其后時(shí),就會(huì)發(fā)生優(yōu)先級(jí)反轉(zhuǎn)。如果總線長(zhǎng)時(shí)間被更高優(yōu)先級(jí)的流量占用,隊(duì)列前端的幀將長(zhǎng)時(shí)間無法贏得仲裁,從而導(dǎo)致緊急幀被長(zhǎng)時(shí)間延遲(見圖7)。

與幀抖動(dòng)一樣,優(yōu)先級(jí)反轉(zhuǎn)也可能是間歇性的:它可能在測(cè)試中不會(huì)出現(xiàn),因?yàn)檫@取決于總線上排隊(duì)和傳輸?shù)腃AN幀的特定順序。但若發(fā)生其后果同樣嚴(yán)重:一個(gè)周期為10ms的緊急幀有時(shí)可能會(huì)被延遲90ms,這可能會(huì)導(dǎo)致各種故障(包括觸發(fā)超時(shí),使組件被誤認(rèn)為發(fā)生故障)。在量產(chǎn)車輛中,此類故障的后果可能非常嚴(yán)重。
解決既要保證優(yōu)先級(jí)又要保證FIFO傳輸這一看似矛盾的問題的方法是,認(rèn)識(shí)到FIFO傳輸?shù)囊笫轻槍?duì)具有相同標(biāo)識(shí)符的幀。這意味著網(wǎng)關(guān)中正確的幀傳輸策略不是僅設(shè)置一個(gè)優(yōu)先級(jí)隊(duì)列,而是為每個(gè)幀標(biāo)識(shí)符設(shè)置一個(gè)FIFO,再將其輸入到優(yōu)先級(jí)隊(duì)列中(見圖8)。

幀抖動(dòng)還會(huì)給安全網(wǎng)關(guān)帶來另一個(gè)問題:它會(huì)破壞目標(biāo)總線的實(shí)時(shí)特性。
從圖6中可以看出,CAN A的到達(dá)抖動(dòng)會(huì)導(dǎo)致幀在時(shí)間上「聚集」,而安全網(wǎng)關(guān)會(huì)將這些幀立即放入CAN B的隊(duì)列中,這使得兩個(gè)幀在比在CAN A上短得多的時(shí)間內(nèi)排隊(duì)。而這意味著在短時(shí)間間隔內(nèi),由于轉(zhuǎn)發(fā)幀導(dǎo)致的總線負(fù)載會(huì)高得多(當(dāng)然,在長(zhǎng)時(shí)間間隔內(nèi),總線負(fù)載是相同的,但實(shí)時(shí)系統(tǒng)關(guān)注的是短期利用率)。
安全網(wǎng)關(guān)導(dǎo)致的這種較高的短期總線負(fù)載意味著攻擊者可以在CAN總線上精心設(shè)計(jì)一種流量模式,在受安全網(wǎng)關(guān)保護(hù)的CAN總線上引發(fā)定時(shí)故障,從而導(dǎo)致故障(例如上文提到的錯(cuò)過超時(shí))。在CIA三元組中,這是可用性故障的一個(gè)例子,屬于一種拒絕服務(wù)攻擊。
為了抵御這種類型的攻擊(并消除由于抖動(dòng)導(dǎo)致的間歇性定時(shí)故障),安全網(wǎng)關(guān)應(yīng)實(shí)施幀延遲機(jī)制:在自上一個(gè)幀排隊(duì)起至少經(jīng)過一個(gè)幀周期時(shí)間之前,不應(yīng)將幀放入其傳輸FIFO中(見圖9)。

通過將幀延遲到其周期時(shí)間結(jié)束,目標(biāo)總線上的定時(shí)行為與原始發(fā)送 ECU 直接排隊(duì)該幀時(shí)沒有區(qū)別。唯一的區(qū)別是,在這種情況下,延遲會(huì)增加第二個(gè)幀的延遲時(shí)間。但是,通過網(wǎng)關(guān)的額外延遲不會(huì)導(dǎo)致最壞情況下的延遲增加:實(shí)際上,抖動(dòng)會(huì)使幀比預(yù)期更早出現(xiàn),而延遲機(jī)制僅適用于提前到達(dá)的幀。通過延遲提前到達(dá)的幀,安全網(wǎng)關(guān)可以維持現(xiàn)有CAN定時(shí)分析[10]所保證的最壞情況延遲,從而維持從一條CAN總線到另一條CAN總線的端到端延遲保證。
03. 幀丟棄
CAN在常見的現(xiàn)場(chǎng)總線中獨(dú)具特色,它提供原子廣播功能。這一特性對(duì)于構(gòu)建穩(wěn)健的系統(tǒng)非常有用,許多應(yīng)用程序都依賴于它(即使是在不知情的情況下)。當(dāng)發(fā)送方將消息標(biāo)記為「已發(fā)送」時(shí),發(fā)送方就知道每個(gè)在線節(jié)點(diǎn)都接收到了該消息的有效副本。
實(shí)際上,CAN在硬件層面實(shí)現(xiàn)了共識(shí)機(jī)制。而對(duì)于其他協(xié)議,如以太網(wǎng),如果接收到的消息不正確(例如以太網(wǎng)幀的CRC,即幀校驗(yàn)序列不匹配),則該幀將被丟棄。這意味著總線上的簡(jiǎn)單噪聲就可能導(dǎo)致節(jié)點(diǎn)對(duì)系統(tǒng)狀態(tài)的看法出現(xiàn)分歧(一個(gè)接收方只能看到舊的傳感器讀數(shù),而另一個(gè)接收方看到的是較新的讀數(shù))。分布式共識(shí)是穩(wěn)健的分布式實(shí)時(shí)控制系統(tǒng)的關(guān)鍵組成部分,要在非穩(wěn)健的現(xiàn)場(chǎng)總線上通過軟件協(xié)議實(shí)現(xiàn)這一特性非常困難。事實(shí)上,蘭伯特的拜占庭將軍問題就源于一個(gè)試圖解決此問題的研究項(xiàng)目[11]。
這就對(duì)安全網(wǎng)關(guān)提出了一個(gè)重要要求:維護(hù)CAN的分布式共識(shí)特性。引入安全網(wǎng)關(guān)不應(yīng)破壞現(xiàn)有應(yīng)用程序的假設(shè),尤其是那些隱含的假設(shè)。換句話說,安全網(wǎng)關(guān)絕不能丟棄幀(當(dāng)然,除非系統(tǒng)確實(shí)存在故障,這里的「故障」包括對(duì)系統(tǒng)的攻擊)。
當(dāng)然,有時(shí)為了抵御攻擊,安全網(wǎng)關(guān)必須丟棄某些幀。例如,除非連接了合法的診斷測(cè)試儀,否則診斷測(cè)試儀幀應(yīng)被丟棄;在遭受泛洪攻擊時(shí),相關(guān)幀也應(yīng)被丟棄等。但是,安全網(wǎng)關(guān)也絕不能因?yàn)樗矐B(tài)過載導(dǎo)致緩沖區(qū)空間不足而丟棄幀。
在接收端,這意味著必須以CAN總線的全速接收和處理幀:如果兩個(gè)具有相同標(biāo)識(shí)符的幀連續(xù)到達(dá),CAN控制器硬件及其驅(qū)動(dòng)軟件絕不能丟失其中任何一個(gè)幀。通常,這意味著要通過中斷服務(wù)程序(ISR)來處理CAN幀,并且CPU的調(diào)度必須能夠在各自的截止時(shí)間內(nèi)處理來自所有CAN控制器的所有中斷(以及CPU的所有其他需求)。這通常需要對(duì)CPU進(jìn)行仔細(xì)的調(diào)度,并了解ISR的最壞情況執(zhí)行時(shí)間。對(duì)于CAN幀的傳輸,必須有足夠的空間來存儲(chǔ)所有待發(fā)送的幀(包括延遲的幀)。
一種限制緩沖區(qū)空間的方法,類似于在ECU軟件中限制堆棧空間,即不斷增加緩沖區(qū)空間,直到不再出現(xiàn)溢出情況。顯然,這不是一種好方法,因?yàn)樗蕾囉谠跍y(cè)試期間觀察到最壞情況(因此,幾乎不可能同時(shí)觀察到兩條CAN總線上的最壞情況流量模式)。更好的方法是通過計(jì)算給定幀在隊(duì)列中可能停留的最長(zhǎng)時(shí)間(即其在CAN目標(biāo)總線上的最壞情況延遲)、可以延遲但仍存儲(chǔ)的時(shí)間,以及在這些時(shí)間內(nèi)從源CAN總線合法接收的最大次數(shù),來限制緩沖區(qū)空間。
總結(jié) .
安全網(wǎng)關(guān)必須滿足一些非功能性要求,以充分保護(hù)CAN總線免受攻擊,同時(shí)也不能給系統(tǒng)引入故障。美國(guó)國(guó)家汽車貨運(yùn)協(xié)會(huì)(NMFTA)已經(jīng)用正式的描述語言列舉了此類網(wǎng)關(guān)的所有要求,并將其公開。
安全網(wǎng)關(guān)在保護(hù)CAN總線的實(shí)時(shí)性和分布式共識(shí)特性方面有非常具體的要求,這需要在傳輸CAN幀時(shí)仔細(xì)處理幀的順序和緩沖,以避免常見CAN控制器硬件設(shè)計(jì)的陷阱以及CAN總線上的幀到達(dá)抖動(dòng)問題。
在設(shè)計(jì)階段如果不考慮這些問題,可能會(huì)在瞬態(tài)過載情況下導(dǎo)致故障。這些故障在測(cè)試期間可能難以觀察到,但在量產(chǎn)車輛數(shù)百萬小時(shí)的運(yùn)行過程中很可能會(huì)顯現(xiàn)出來,進(jìn)而引發(fā)可靠性和安全問題,甚至可能導(dǎo)致業(yè)務(wù)層面的失敗。能夠限制CAN總線的實(shí)時(shí)行為是確保在開發(fā)過程中通過分析發(fā)現(xiàn)問題的關(guān)鍵,而不是將問題留到實(shí)際使用中才被發(fā)現(xiàn)。
文章來源
本文基于Ben Gardiner(美國(guó)國(guó)家貨運(yùn)協(xié)會(huì),NMFTA)、John Maag(康明斯)、Dr. Ken Tindell(JK能源)在第18屆國(guó)際CAN大會(huì)(iCC)的演講。已刊于《第18屆iCC會(huì)議論文集》2024版,由CiA出版。虹科智能互聯(lián)團(tuán)隊(duì)翻譯并分享,旨在與行業(yè)同仁共享前沿技術(shù)成果。
參考文獻(xiàn)
[1] Defending The CAN Bus: Security Gateways (https://kentindell.github.io/2021/11/24/cansecurity-part-3)
[2] Pwn2Own Automotive 2024 (https://vicone.com/pwn2own-automotive)
[3] CVE-2023-29389 (https://nvd.nist.gov/vuln/detail/CVE-2023-29389)
[4] CAN Priority Inversion (https://kentindell.github.io/2020/06/29/can-priority-inversion)
[5] Implementation Requirements for Secured Gateways, NMFTA (https://nmfta.org/whitepaper/implementation-requirements-for- secured-gateways)
[6] ISO 15765-2:2016 Road vehicles, Diagnostic communication over Controller Area Network (DoCAN) Part 2: Transport protocol andmnetwork layer services
[7] Specifcation of Secure Onboard ommunication Protocol, AUTOSAR 969 R23-11 2023-11-23
[8] Securing CAN: Introduction to CryptoCAN, CAN Newsletter December 2022, (CAN in Automation)
[9] Replay attack (https://en.wikipedia.org/wiki Replay_attack)
[10] Guaranteeing Message Latencies on
Controller Area Network (CAN), K. Tindell and A. Burns, Proceedings 1st International CAN Conference, 1994
[11] The Byzantine Generals Problem, L. Lamport, R. Shostak, M. Pease, ACM Transactions on Programming Languages and SystemsVolume 4 Issue 3, 1982
虹科是一家在通訊領(lǐng)域,尤其是汽車電子和智能自動(dòng)化領(lǐng)域擁有超過16年經(jīng)驗(yàn)的高科技公司,致力于為客戶提供CAN/CAN FD、LIN、車載以太網(wǎng)、TSN等全方位的一站式智能互聯(lián)解決方案。????
審核編輯 黃宇
-
CAN
+關(guān)注
關(guān)注
57文章
2856瀏覽量
466569 -
安全網(wǎng)關(guān)
+關(guān)注
關(guān)注
0文章
11瀏覽量
7326
發(fā)布評(píng)論請(qǐng)先 登錄
基于嵌入式Linux操作系統(tǒng)實(shí)現(xiàn)VPN安全網(wǎng)關(guān)的設(shè)計(jì)方案

什么是汽車安全網(wǎng)關(guān)?
如何實(shí)現(xiàn)安全網(wǎng)絡(luò)通信?
求一種IPv4/IPv6安全網(wǎng)關(guān)解決方案
下列哪些是密目式安全網(wǎng)進(jìn)行貫穿實(shí)驗(yàn)的要點(diǎn)
基于嵌入式系統(tǒng)的安全網(wǎng)關(guān)的設(shè)計(jì)
基于IXP2400的安全網(wǎng)關(guān)實(shí)現(xiàn)研究

跨平臺(tái)嵌入式安全網(wǎng)關(guān)設(shè)計(jì)

香港應(yīng)科院與風(fēng)河合作支援在NFV環(huán)境實(shí)現(xiàn)虛擬小基站和安全網(wǎng)關(guān)
韓國(guó)SK將推出量子安全網(wǎng)關(guān)解決方案
如何在英特爾Edison上部署藍(lán)牙安全網(wǎng)關(guān)

虹科干貨 | 如何通過JMobile軟件實(shí)現(xiàn)虹科物聯(lián)網(wǎng)HMI/網(wǎng)關(guān)的報(bào)警功能

虹科干貨 | 虹科物聯(lián)網(wǎng)HMI/網(wǎng)關(guān)結(jié)合JMobile軟件實(shí)現(xiàn)調(diào)度器功能

工業(yè)安全網(wǎng)關(guān) 國(guó)密加密 IPSec/SSL VPN加密網(wǎng)關(guān)

評(píng)論