傳輸介面

更換收發器簡便易行 CAN通訊安全甩掉密鑰負擔

要有效保障控制器區域網路(CAN)通訊安全是一項挑戰,目前有許多不同的酬載認證(Payload Authentication)解決方案,如AUTOSAR聯盟頒定的車載通訊安全(SecOC)方案,這些解決方案採用加密的方式,換言之需要更高的頻寬、更長的傳輸延遲及更高的處理能力,同時還需要管理加密鑰匙本身。

本文認為,只要收發器具備分散式入侵檢測與遏制方法,無需加密即可有效保障CAN通訊安全。另外,在發送和接收路徑中採用CAN訊息識別(ID)過濾機制,將有助於防止如欺騙(Spoofing)、遠端訊框篡改(Remote Frame Tampering)與洪水攻擊(Flooding)等網路攻擊。透過監視及過濾控制器區域網路匯流排(CAN Bus)上的網路流量,安全型CAN收發器能夠有效遏制電子控制單元(ECU)試圖發送未授權的惡意訊息的行為,從而為CAN匯流排提供安全保護。 

從安全角度出發,人們往往會選擇使用尖端技術解決方案來防範安全威脅,比如基於加密與關聯式安全密鑰管理的加密訊息認證碼(Message Authentication Code, MAC)。各種安全微控制器(MCU)也採用加密加速器來為這類最先進的解決方案提供硬體支持。但即便如此,這種解決方案對於保障CAN通訊安全而言也不是最有效率的。安全微控制器可用於保護多個CAN網路或其他網路(如乙太網或LTE)上的端對端通訊,實現安全啟動、認證診斷和認證韌體更新。  

而本文將要展示的是一種更高效率的CAN匯流排保護解決方案,即安全型CAN收發器。這種解決方案無頻寬開銷(Bandwidth Overhead),而且對於配置與生命週期管理的需求極低。透過執行密碼檢查來認證訊息真實性,勢必會造成訊息延遲、匯流排負載與運算功耗的增加。因此,這類解決方案可能會遭到抑制,或者造成以下折衷後的結果:  

·只將MAC應用於網路中的一小部分CAN訊息 

·將超出合理限制範圍的MAC或新鮮度(Freshness Value)截斷 

·可能存在無保護的寬限期(Grace Period) 

當所選的微控制器系列沒有足夠的運算能力來加解密CAN訊息時,將會導致現有的電子控制單元設計無法升級。此外,整個車輛生命週期的密鑰管理也會是一個複雜的挑戰。最終可能需要對整個系統進行從典型CAN(Classical CAN)到CAN彈性資料速率(CAN FD)的重新設計,以此補償引入安全處理晶片所導致的匯流排負載增加,因此這種方案並不總是可行的。但無論是哪種情況下,安全型CAN收發器則都能夠有效提供強有力的保護並遏制駭客攻擊。 

安全型CAN收發器的功能  

  防範發送端欺騙  

  安全型CAN收發器在發送路徑中提供了一種方法來保護匯流排不受已遭破壞的電子控制單元侵害,即根據CAN訊息ID對訊息進行過濾。如果電子控制單元試圖用原來非分配給它的ID發送訊息,安全型CAN收發器可以拒絕向匯流排發送該訊息,使訊息失效並拒絕執行後續發送。 

CAN訊息ID的過濾對策可透過使用者配置的ID白名單來實現。例如,可以從白名單中排除ISO 14229標準針對非車載測試儀規定的統一診斷服務(UDS)ID。這樣做可以防止被破壞的電子控制單元利用另一個車載電子控制單元啟動診斷會話,以操縱校準值(Calibration Values)。 

防範接收端欺騙 

當接收到分配給用於發送的CAN訊息ID時,有一種補救保護措施是使匯流排上的訊息失效。這種方法意謂著每個電子控制單元都可以在不法電子控制單元使用相同ID發送訊息時保護自己的ID,例如,不屬於汽車OEM製造商控制範圍並因此沒有配有發送白名單的安全型CAN收發器的售後元件。 

當任何電子控制單元在匯流排上發送訊息時,合法電子控制單元的安全型CAN收發器都可以透過向匯流排寫入作用中的錯誤訊框,主動使該訊息失效。被破壞的發送方重複被騙訊息16次後,暫停發送行為介入,限制被騙訊息加重匯流排負載,接著,再重複16次以後,攻擊電子控制單元會進入匯流排關閉狀態。這一短暫的匯流排負載高峰可視為對策的負面影響,不過只有當系統受到攻擊時才會採取這種措施,因此不必過於擔心。 

防篡改保護 

使CAN匯流排上訊息失效的方法也可以用以預防篡改攻擊。安全型CAN收發器可以檢查匯流排上是否存在電子控制單元已經贏得仲裁卻停止在資料域中發送的有效訊息(因為在發送隱性位元時收到顯性位元),以及該訊息是否由篡改電子控制單元完成。這是有被破壞電子控制單元介入發送的明顯警訊,這在電子控制單元的CAN控制器沒有報告錯誤時的被動錯誤狀態期間特別有價值。須注意,訊息篡改是繞過接收端欺騙防範的一種方法。 

防範洪水攻擊 

在發送端實施時,限制電子控制單元在單位時間內對整體匯流排負載,有助於防止匯流排遭到洪水攻擊。要防止洪水攻擊,可以使用漏桶機制(Leaky Bucket Mechanism)。漏桶在訊息發送時填充並不斷清空,一旦漏桶溢出便停止後續發送。因此,洪水攻擊保護提高了匯流排的可用性,從而阻止亂碼洗版(Babbling Idiots)。為了使一個電子控制單元的訊息猝發持續一定的時間,可以適當地配置漏桶容量。填充漏桶時可以將低優先級的訊息排除,因為它們必將失去仲裁而不利於防止洪水攻擊。這樣一來,診斷服務便能以高速率交換低優先級的訊息,且不會觸發洪水攻擊防護。 

使用這些對策防止欺騙和篡改,無需克服密碼協議與相關資產管理方法方面的障礙,即可使發送方合法化。與最先進的解決方案相比,這種方案的破壞性比較低。此外它還支持深度防禦(Defense-in-Depth)概念,可以使向不法電子控制單元發送被盜加密密鑰的行為失效,因為該電子控制單元無法發送它用被盜密鑰認證的訊息之CAN訊息ID。 

加密式方案潛在問題  

為了透過最先進的解決方案使訊息合法化,須使用基於加密的有效酬載認證,在原始未受保護的有效酬載中補充MAC與參數,以標示訊息的新鮮程度。訊息認證碼基於加密算法與共享密鑰進行運算。新鮮度用於重播保護,它可確保重複的有效酬載擁有不同的新MAC。 

經認證的有效酬載採用普通或加密格式,但會以相同的方式處理以達到認證目的。建議的安全做法要求將加密與認證分開,例如對每個操作使用不同的共享密鑰。因此,在下面的討論中,本文將有效酬載加密視為不相關的。對CAN網路應用基於加密的有效酬載認證解決方案時,產生的值可能會受到下面將討論的幾項因素影響,但相關程度取決於安全設計及體系架構,因此下述因素並不一定適用於任何情況。 

安全通訊啟動延遲 

在系統通電之後,需要一定的時間來協調與調整即將到來的經認證訊息的新鮮度屬性。這段時間會造成第一批重要訊息的認證準備發生延遲。儘管有不同的方法可供使用,但通常都會涉及到相關電子控制單元之間的少量或大量有效酬載交換的協議。例如,可以就安全的時間分配或安全的單調計數器同步達成一致;另一種方法是在每次啟動時刷新共享密鑰,並使用重置的新鮮度值。但通電後電子控制單元的重啟週期數可能會出現不可預測、非同步(Asynchronous)及不相等的情況,因此協議可能複雜且耗費時間。 

不可預測性可能來自發動機啟動時潛在的功率損失,而不相等則是由於功率損失不同所導致。AUTOSAR定義了一個寬限期來因應這個問題,但是當關鍵訊息沒有受到保護時,將導致通電後出現一段延遲(或者由於攻擊而強制重啟)。在稍後的穩定時期刷新密鑰為一種替代方案,這樣可將複雜性轉移到單調計數器的管理上,但也可能導致其他問題,如非揮發性記憶體(Non-volatile Memory)耗損或者計數器在混亂的通電狀態下失去同步。 

增加匯流排負載與頻寬 

如果透過增加匯流排負載來傳輸像MAC與新鮮度的附加參數(Additional Parameters),那頻寬需求也會隨之增大。附加參數的大小會影響安全級別,或另一匯流排負載的消耗速率。美國國家標準與技術研究院(NIST)建議MAC至少為64位元,這對於典型CAN而言損失相當大。新鮮度計數器的大小決定了密鑰的刷新速率,或一些其他安全型基本計數器/新鮮度同步(Counter/Freshness Synchronization)的速率。 

 

圖1 典型CAN頻寬開銷範例

圖1顯示了頻寬開銷對500kbps條件下的典型CAN訊息與11位元CAN訊息ID的傳輸時間進行了比較。最初的普通有效酬載在灰色區域,相應的值對應不同的認證參數。以圈起處為例,假設一個普通的典型CAN訊息的無保護訊息有效酬載為16位元,那麼2bytes的計數器與5bytes的MAC用於可接受的保護,匯流排負載將增大2.5倍。圖中的數字僅指訊息認證開銷,不包括運行管理協議刷新密鑰或新鮮度值時可能增加的匯流排負載。 

增加處理器負載與功能延遲 

額外的功能延遲可能來自額外的緩衝區、中斷處理或與硬體加速器之間的通訊,而不是在生成與認證期間運算MAC所導致。額外的處理負載會降低應用程式的效能,附加位在匯流排上的傳輸時間也會以圖1中匯流排開銷的數量級增加。如圖1所示,16位元無保護訊息有效酬載需要172μs,而受保護的同一訊息有效酬載需要436μs。 

增加軟體複雜性 

CAN控制器負責管理TX緩衝區(TX Buffers)或TX佇列(TX Queues),從而使應用程式從複雜的管理及中斷處理任務中脫身。在汽車應用中,處理不同優先級的訊息是很常見的。不同的部分(如軟體線程)彼此之間並行,它們在CAN驅動器或CAN控制器中使用不同的TX緩衝區或TX佇列。應用部分或線程將訊息傳遞給CAN驅動程序或控制器的順序,不一定對應於訊息在匯流排上出現的順序。對於使用全局新鮮度值(如全局同步時間)的已認證訊息,匯流排上的順序必須遵循用於運算MAC的新鮮度值的順序,否則它將被視為舊訊息或者被接收器重播。 

等待贏得仲裁的待處理CAN訊息有效酬載中已經包含MAC與新鮮度值,因此應用程式提供的任何更高優先級的訊息都將使所有待處理訊息的新鮮度與相關認證失效。這意謂著CAN控制器的TX緩衝區與TX佇列已經耗盡,不能再輕易地向CAN控制器發送任何訊息。此外,它須要設計為重新運算在等待傳輸之無效訊息的認證,這可能為應用程式增加了額外的處理任務,並增加系統延遲。  

需要密鑰管理 

任何基於加密的解決方案都依賴密鑰的使用,或對稱或不對稱。適當的密鑰管理通常比較複雜,須付出極大的努力,而這一點往往會被低估。考慮到用於實時通訊的有效酬載認證與高效能要求,通常會採用對稱加密(Symmetric Cryptography),即共享密鑰(Shared Secret Keys)。系統的安全級別在一定程度上取決於共享密鑰的保護與特權。透過設計,密鑰應當具備有限的專用特權,以便降低密鑰本身或使用過程中的安全漏洞影響。在這兩種情況下,應用都將獲得密鑰特權,亦即未經授權的訪問特權。 

每個車輛的密鑰都應該是獨特或多樣化的,這樣即便車輛A的密鑰被盜也不能授予對任何其他類似車輛同功能的訪問權,也就是所謂的車隊攻擊應變力。在製造過程與車輛生命週期中,需要特別考慮密鑰特權的分配以及密鑰的創建與分配。可以部署每個車輛與功能的靜態多樣化密鑰,並在更換模組期間維護用於密鑰注入的中央資料庫。或者,也可以選擇為每個電子控制單元的角色分配密鑰使用擴展憑證與非對稱加密憑證,讓車輛動態分配或重新分配密鑰。 

DH(Diffie-Hellman)協議有時會被理解為分配密鑰的標準方式,但這是不夠的。該協議可保證密鑰在兩個實體之間秘密交換,但並未指出交換密鑰的具體實體。這意謂著,攻擊者也可以加入DH對話並獲取有價值的相關密鑰。後者需要通過額外的流程來認證另一方,如非對稱憑證方案。因此,用於有效酬載認證的對稱密鑰管理可以轉化為車輛內的認證管理與動態使用。 

整個汽車生命週期的密鑰管理策略選擇是多樣的,但需要具體的想法與部署工作,且傳統的密鑰管理解決方案可能無法直接應用於汽車產業。密鑰管理策略可能取決於上述其他方面的設計選擇,例如通電後的新鮮度管理。 

而本文提出的概念無須採用加密解決方案,僅僅依靠安全型CAN收發器即可實現,該元件完全獨立於微控制器單獨運行,這意謂著它具備固有的安全級別,且是以將系統影響降至最低為前提而設計的,因此能夠克服CAN協議規範中缺少發送方身份的問題。此外,該元件可以逐各電子控制單元引入網路,不會影響其他電子控制單元,也不會影響訊息延遲、匯流排負載或增加處理器負載。實施的欺騙保護機制可確保目標電子控制單元接收到的受保護訊息都是由預期的發送方發送,而匯流排也會在通電之後立即受到保護,因此不需要任何初始化或同步操作。 

安全型CAN收發器可以作為當今標準CAN收發器的硬體替代產品,無須更換電子控制單元上的主要硬體與軟體,且不會影響其他電子控制單元的運行,提供了快速、省力、非破壞性且具有高成本效益的方式為CAN匯流排引入安全性,其既可以作為獨立的保護機制,也可以作為其他安全解決方案的第二道安全防線。 

(本文作者皆任職於恩智浦半導體)

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!