基于Autosar的網絡安全理解
來源 | 汽車電子與軟件
一 車載網絡安全說明
主要解決的網絡安全/信息安全問題包括:信息的機密性、新鮮性、完整性、真實性以及可用性是汽車網絡通信的最基本的安全需求。
目前網絡安全標準為 ISO/SAE 21434(道路車輛-汽車網絡安全工程)
其中提到的主要安全做法包括:
1)最低特權原則
2) 認證
3) 授權
4) 審核
5) 端到端安全
6)架構信任度(接口的隔離、防御的深度)
7)接口隔離(以便進行適當的網絡安全分析)
8)保護服務期間的可維護性(測試接口、OBD)
9)開發過程中的可測試性(測試界面)和運行過程
10)默認的安全(簡單、不復雜、不依賴專家用戶)
二 常用的安全加密算法
2.1 對稱加密
所謂的對稱加密,指的是,加密秘鑰和解密秘鑰是一樣的。
常見的對稱加密算法有:
常用的AES加密解密過程如下:
1. 將輸入數據分組,逐個字節的對分組內 16 個字節輸入數據作 SubBytes 處理,即以每個字節值為索引,從一張擁有 256 個值的替換表(S-Box)中查找出替換值;
2. 進行 ShiftRows 處理,即將 SubBytes 的輸出以字節為單位有規律的打亂;
3. 進行 MixColumns 處理,將 ShiftRows 的輸出按照 4 字節一組分為 4 組,依次對每組的值進行比特運算;
4.進行 AddRoundKey處理,即將 MixColumns 的輸出與輪密鑰進行 XOR。至此,加密一輪操作結束,
5. 以上過程重復 10~14 次可得最終密文,需要注意的是最后一輪并不進行MixColumns 處理。
6.解密的每一步都與加密操作互逆且順序相反,因此算法的正確性得以保證。
7.加解密過程中的輪密鑰經過密鑰擴展算法得出。
2.2 非對稱加密
核心特點是,加密秘鑰(公鑰)和解密秘鑰(私鑰)是不一致的。如下圖RSA加密解密過程:
常見的非對稱加密算法有:
RSA加密算法的安全性是基于對極大整數做因數分解的困難。
RSA加密解密過程:
c 表示密文, m 表示明文
公鑰(n,e) 私鑰(n,d)
加密:c = m^e mod n
解密:m = c^d mod n
備注:
公鑰基礎設施(Public Key Infrastructure,簡稱 PKI)是針對公鑰的使用制定的一系列規范和規格的總稱。PKI 引入可信認證機構(Certification Authority,簡稱 CA)解決公鑰歸屬問題。一般情況下,密鑰對由認證機構或用戶生成,公鑰相關信息在 CA 注冊的同時用戶身份也會在 CA 進行認證, CA 使用自身私鑰對用戶身份及公鑰簽名,這個簽名文件就是證書,之后 CA 會負責證書的更新、吊銷等管理工作。
2.3 混合加密
所謂混合加密,就是將對稱密碼和非對稱密碼相結合。
對稱加密主要的優點是 加密效率高資源消耗較少,但是缺點是秘鑰傳輸不安全,容易泄露;
非對稱加密則加密效率較低,資源消耗多,但是優點是公鑰方便傳輸,不會泄露;
因此混合加密就是 使用對稱密碼加密明文,用公鑰密碼加密會話對稱密鑰,既提高了加密的效率也保證了對稱密鑰傳輸不安全的問題。接收方接受到信息后首先使用私鑰解密得到會話密鑰,之后用會話密鑰解密得出明文。
2.4 單向散列函數
單向散列函數可以接受任意長度的輸入生成長度很短且固定的散列值,可以用于消息完整性的檢測。
典型的散列函數包括:MD5、 SHA-1、 SHA-256、 SHA-384;
如MD5,主要是計算一個信息摘要MD5的值,接收方和發送方分別計算,或MD5' 和MD5'';
比對 MD5' == MD5'' 就可以確認數據的完整性。
2.5 消息認證碼
Message Authentication Code,簡稱 MAC,使用對稱密鑰實現身份認證的基本原理是發送方和接收方共享密鑰。
計算 MAC時需要輸入一個任意長度的消息以及一個發送者與接收者之間協商好的的密鑰,計算得出的結果長度固定,這個計算值就是 MAC。
發送方計算好MAC后,傳遞給接收方,接收方同樣計算MAC,比對兩個MAC是否一致,進行消息的認證。
2.6 數字簽名
使用非對稱密鑰實現身份認證的基本原理是:
發送方使用自己的私鑰對消息進行加密并與原文一起組成發送給接收方;
接收方接收簽名后使用發送方公鑰對簽名進行解密并和原文進行對比,若兩者一致表示驗證通過。
生成數字簽名常用方法是:
對消息的散列值進行簽名,利用單向散列函數求出消息散列值再對其進行加密,接收方在接受到簽名和原文后,計算出原文的散列值并與簽名解密所得結果比對。
一種典型的數字簽名過程如下:
三 Autosar的加密模塊
3.1 模塊說明
Csm模塊:
> 訪問加密服務
> 用于執行服務的加密服務和算法的配置
> 同步或異步執行的配置
> 安全計數器的配置
> 配置加密密鑰操作
> 證書操作配置
CryptoIf模塊:
> CryptoIf 模塊為不同的加密解決方案提供了統一的接口,例如:軟件加密-硬件加密等
Crypto模塊:
> Crypto (SW) 模塊在通過 CSM 提供的軟件中提供加密算法和功能的實現。所有計算都在軟件中執行,不需要特殊的硬件來執行密碼操作。
> Crypto (HW) 模塊充當訪問安全算法和功能的驅動程序,這些算法和功能通過硬件信任錨 (HTA) 提供。可以使用不同的 HTA 類型,例如安全硬件擴展 (SHE) 和硬件安全模塊 (HSM)。
3.2 關鍵數據流說明
對于Csm模塊處理的任務,根據用戶需求緊急程度,可以配置任務的優先級(優先級越高,任務越先被處理),還可以將任務配置成異步或者同步任務。
當任務需求緊急程度高時,用戶將任務配置成同步任務,這樣當該任務調度的時候如果有異步任務正在處理,該同步任務會搶占異步任務的硬件資源;異步任務直接返回錯誤狀態碼并等待下一步的調用,當同步任務處理結束之后 才會進行下一次的任務調度;
在同步任務調度時,如果有另一個同步任務正在處理,則該次同步任務的調度直接失敗并返回錯誤碼。
對于異步任務來說,會有一個優先級隊列來存放當前待處理的任務,當任務調度函數將任務分配到某個硬件單元或者使用軟件實現時,系統會將任務插入到對應的優先級隊列中等待調度。
從Csm隊列通過密碼服務接口層到密碼服務驅動對象的路徑稱為通道(channel)。Csm的每個隊列都對應于一個通道,以訪問到密碼服務驅動對象所對應的密碼服務底層模塊,隊列的大小可以通過配置來改變。為了優化密碼服務驅動對象的硬件使用,密碼服務驅動也可以有一個隊列。
同步邏輯調用
異步邏輯調用
四 Autosar的 SecOC
4.1 SecOC說明
SecOC 模塊,也稱為 Authenticated Messaging,用于驗證兩個 ECU 之間的通信。此驗證可防止第三方進行干預或偽裝成正確的通信伙伴,防止操縱性干預。SecOC 與 PDUR交互。這種交互可以由應用程序控制。該模塊提供以下功能:
> 傳輸經過身份驗證和完整性保護的 I-PDU。
> 使用消息身份驗證代碼 (MAC) 進行身份驗證, 消息認證代碼的實際生成和驗證由 Csm執行。
> 防止重放攻擊。這里使用了一個計數器,即“新鮮度值”。
4.2 典型的SecOC通信架構
其中的SecOC主要和Csm模塊以及PDUR模塊交互;
其中Csm模塊為SecOC提供密碼服務;
與PDUR交互,主要進行MAC以及新鮮值處理。
4.3 SecOC通信過程
發送方:
>插入新鮮值 cnt 或 timestamp 得到PDU+CNT
>將PDU+CNT 經過秘鑰K 加密產生MAC=En(PDU+CNT,K);
>將MAC插入到消息 得到 PDU+CNT+MAC
>將完整的消息發送到總線
接收方:
> 接收消息后,獲得PDU+CNT+MAC
> 解析得到CNT,若CNT與本地的CNT一致(或大于)則繼續認證,否則丟失
> 通過加密秘鑰K,得到MAC值,驗證PDU中的MAC與計算MAC是否一致,一致則認證通過;
> 認證通過后,繼續將PDU傳給使用方(如com),否則直接丟失。
如下圖所示,為基于CAN的PDU
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















