AUTOSAR BSW 深度精解 · 通訊安全模組

【EB AutoCore 模組精解】
SecOC 安全車載通訊

深度拆解 FVM 新鮮度管理、MAC 截斷校驗與防重放攻擊實務。CAN / CAN FD 匯流排天生缺乏身分鑑別機制,極易面臨報文偽造與重放攻擊。深入解析 EB AutoCore SecOC 的 Secured I-PDU 組裝邏輯、新鮮度值管理器(FVM)同步機制、滑動窗口校驗演算法,以及如何以微秒級開銷構築 ISO 21434 規範下的匯流排縱深防禦。

SecOC MAC 驗證 FVM 同步 防重放攻擊

1. 為什麼 CAN FD 必須強制引入 SecOC?

在 ISO/SAE 21434 車載網路安全工程體系中,「通訊報文未經身分鑑別與防竄改保護」向來是 TARA(威脅分析與風險評估)中最顯著的高風險攻擊途徑之一。

傳統 CAN / CAN FD 採用廣播機制,匯流排上任一節點皆可監聽並偽造其他節點的訊息 ID。攻擊者若透過 OBD-II 介面、外加惡意硬體或滲透車載網關(Gateway),即可在匯流排上發送偽造的煞車、轉向或動力扭矩報文。

AUTOSAR 定義了 SecOC(Secure Onboard Communication,安全車載通訊) 規範。在 EB AutoCore 架構中,SecOC 作為 PduR 與底層介面之間的通訊資安防火牆,為每幀關鍵控制訊號提供兩大核心防護:

  • 真實性與完整性校驗(Authenticity & Integrity):附加訊息鑑別碼(MAC),保證報文確實由合法發送端發出且未遭竄改。
  • 防重放攻擊(Anti-Replay Protection):結合單調遞增的新鮮度值(Freshness Value),確保歷史抓包的合法報文無法被黑客重新注入執行。

2. Secured I-PDU 結構深度拆解:安全性與頻寬開銷的極致平衡

在 EB AutoCore 實作中,SecOC 將上層應用資料(Authentic I-PDU)包裝為匯流排傳輸的 Secured I-PDU:

flowchart TD classDef inBox fill:#e9f2ff,stroke:#0052cc,stroke-width:2px,color:#091e42; classDef calcBox fill:#fff0b3,stroke:#d97008,stroke-width:2px,color:#091e42; classDef truncBox fill:#f3e8ff,stroke:#6554c0,stroke-width:2px,color:#091e42; classDef pduBox fill:#e3fcef,stroke:#00875a,stroke-width:2px,color:#091e42; DATA["【輸入元素】原始載荷 (Authentic Payload)
車載控制訊號資料"]:::inBox FV_FULL["【輸入元素】完整新鮮度值 (Complete FV)
64-bit 完整新鮮度計數器"]:::inBox KEY["【輸入元素】對稱金鑰 (CryptoKey)
AES-128 / CMAC Key"]:::inBox MAC_ENGINE["【密碼學運算:調用 CSM】
AES-128-CMAC 演算法
輸入:Data + Complete FV"]:::calcBox MAC_FULL["【計算結果】完整 128-bit MAC 認證碼"]:::calcBox FV_TRUNC["【新鮮度截斷】Truncated FV
發送低 4~8 bits 降低頻寬開銷"]:::truncBox MAC_TRUNC["【MAC 截斷】Truncated MAC
截取高 28~64 bits 安全認證標籤"]:::truncBox FINAL_PDU["【最終傳輸:Secured I-PDU】
Authentic Payload + Truncated FV + Truncated MAC"]:::pduBox DATA --> MAC_ENGINE FV_FULL --> MAC_ENGINE KEY --> MAC_ENGINE MAC_ENGINE --> MAC_FULL MAC_FULL --> MAC_TRUNC FV_FULL -.->|截斷處理| FV_TRUNC DATA --> FINAL_PDU FV_TRUNC --> FINAL_PDU MAC_TRUNC --> FINAL_PDU
圖 1:SecOC Secured I-PDU 封裝與 MAC 截斷計算全景圖
💡 為什麼需要雙重截斷(Truncation)?
CAN FD 單幀最大負載僅 64 位元組,若每次傳輸均附帶完整 16 位元組(128-bit)MAC 與 8 位元組(64-bit)計數器,將耗費近 40% 的傳輸頻寬。EB AutoCore SecOC 支援標準的截斷傳輸演算法,匯流排上僅傳遞低位新鮮度與截斷後的 MAC,接收端本地透過歷史狀態重建完整數據再行驗證。

3. FVM 新鮮度值管理器演算法精析:抗重放的心臟

新鮮度值管理器(FVM, Freshness Value Manager)是 SecOC 體系中最具技術深度的核心。EB AutoCore 支援靈活的 FVM 外掛與適配架構。

常見複合計數器架構:

計數器層級 位元寬度(典型) 遞增條件與更新規則 匯流排傳輸方式
Trip Counter 16 ~ 24 bit 每次車輛上電(KL15 ON)或重新發起 Session 時遞增;持久化保存於 NvM。 不傳輸(僅本地維護)
Reset Counter 16 ~ 24 bit 當 Message Counter 達到上限溢位時遞增。 透過專用同步 PDU 定期廣播
Message Counter 16 ~ 32 bit 每次發送該 PDU 時單調遞增 1。 僅傳輸最低 4~8 bit (Truncated FV)

接收端重建邏輯(Reconstruction Algorithm):

接收端維護本地期望的 Expected_Message_Counter。當收到截斷的 Truncated_FV 時,比較兩者的低位差值:

  • 若接收低位在允許的滑動窗口範圍內(如 $+1 \sim +3$),則直接繼承本地高位計數器,判定為合法順序並重建完整 64 位元 FV。
  • 若低位小於或等於歷史值,或差值超出窗口,判定發生嚴重的通訊脫節或重放攻擊,拒絕重建並上報驗證失敗。

4. EB AutoCore SecOC 雙向流水線

sequenceDiagram participant App as 應用層 SW-C participant PduR as PduR 模組 participant SecOC as EB SecOC 模組 participant FVM as FVM (新鮮度管理) participant CSM as CSM 服務層 participant Lower as CanIf / CanTp rect rgb(245, 249, 255) Note over App, Lower: 發送端流水線 (Tx Pipeline) App->>PduR: 1. PduR_Transmit(PduId, Data) PduR->>SecOC: 2. SecOC_Transmit(SecuredPduId, Data) SecOC->>FVM: 3. Fvm_GetTxFreshness(PduId) FVM-->>SecOC: 4. 回傳 Complete FV & Truncated FV SecOC->>CSM: 5. Csm_MacGenerate(JobId, Data+FV) CSM-->>SecOC: 6. 回傳 Generated MAC Note over SecOC: 7. 組裝 Authentic Data + Truncated FV + Truncated MAC SecOC->>Lower: 8. CanIf_Transmit(SecuredPduId) end rect rgb(255, 251, 242) Note over Lower, App: 接收端流水線 (Rx Pipeline) Lower->>SecOC: 9. SecOC_RxIndication(SecuredPdu) SecOC->>FVM: 10. Fvm_GetRxFreshness(Truncated FV) FVM-->>SecOC: 11. 回傳重建之 Complete FV SecOC->>CSM: 12. Csm_MacVerify(JobId, Data+FV, Received MAC) CSM-->>SecOC: 13. 驗證結果回傳 (MAC_VALID) SecOC->>PduR: 14. PduR_SecOCRxIndication(AuthenticPayload) PduR->>App: 15. 安全交付應用層執行 end
圖 2:EB AutoCore SecOC 發送與接收雙向交互時序全流程圖

5. EB tresos 配置實踐與關鍵調優參數

在 EB tresos 配置 SecOC 專案時,需特別關注以下核心參數項:

配置容器 / 參數項 典型設定值 工程含義與調優建議
SecOCRxAuthDataFreshnessStartPosition 位元組偏移量(如 0) 定義新鮮度值在原始報文中的拼接起始位置。
SecOCFreshnessValueTruncLength 4 ~ 8 bits 匯流排上傳輸的新鮮度長度。越長同步越穩,但佔用頻寬越多。
SecOCAuthInfoTruncLength 28 ~ 64 bits 截斷 MAC 長度。動力安全報文建議至少 32-bit 以上。
SecOCUseCryptoCVMSyncRef 指向 CSM Job 關聯底層非同步 MAC 驗證任務。

🚀 Jotactic(捷策動能):EB AUTOSAR SecOC 技術支持與配置服務

SecOC 的導入涉及通訊矩陣定義、新鮮度值介面與 CSM 密碼運算的模組協同。Jotactic(捷策動能) 基於 EB AUTOSAR 原生架構與標準配置工作流程,在不修改 EB 原廠代碼的前提下,為客戶提供專業技術服務:

  • EB tresos SecOC 模組參數配置服務:協助客戶在 EB tresos Studio 中進行 Secured I-PDU 映射、截斷位元數(MAC / FV)、CSM Job 關聯與新鮮度介面的標準參數配置與 ARXML 匯入匯出。
  • 技術支持與諮詢服務:提供 EB AUTOSAR SecOC 模組標準配置流程與驗證機制的技術諮詢,協助客戶排查配置過程中的問題。
  • 基於 EB 機制的客製化 Demo 專案開發:基於 EB 原生架構與標準 Callout 機制建立 SecOC 驗證 Demo 專案,輔助客戶進行模組功能驗證。

💡 備註:EB AUTOSAR 提供標準化 SecOC 安全通訊模組供客戶開發使用;ECU 與整車是否符合法規或通過通訊安全認證,屬於 Tier 1 與 OEM 客戶系統層級之工程範疇。捷策動能基於 EB 原生機制提供配置與技術支持服務,不修改 EB 原廠代碼,非 AUTOSAR 基礎軟體開發商。歡迎聯絡捷策動能團隊獲取技術支持。