本頁說明如何啟用車輛型繫結加密種子功能。
總覽
繫結種子功能的主要目標在於 保護車輛資訊娛樂 (IVI) 系統上的資料,防止車輛從車上取下。這是 將儲存空間加密金鑰繫結至其他電子控制單位 (ECU), IVI 會移除並放置在另一輛車上 (或在測試台上運作),則在 IVI 無法解密。
為了繫結檔案加密金鑰,Vn 會混合使用車輛專用「種子」和金鑰加密機制
索引鍵,確保索引鍵不會重複,且會將實體繫結至車輛。種子是位元組陣列
原始設備製造商 (OEM) 會以新車硬體抽象層 (VHAL) 屬性公開。
STORAGE_ENCRYPTION_BINDING_SEED
。這項資源的權限受到限制
只能透過具有特殊權限的系統 Daemon 進行查詢。
架構圖
下圖說明車輛繫結整合的架構:
圖 1. 車輛繫結架構。
啟用車輛型繫結
車輛的儲存空間加密繫結必須明確啟用,且無法開啟 而不會恢復原廠設定也就是說,無線更新 (OTA) 無法 在不清除裝置資料的情況下啟用這項功能。原始設備製造商 (OEM) 可以選擇為 如果使用者也將裝置恢復原廠設定,請先升級。例如:造訪服務。
透過支援 STORAGE_ENCRYPTION_BINDING_SEED
屬性即可啟用這項功能
中,這個屬性可保留長度為 16 個位元組的位元組字串,
應保存在獨立於 IVI 的 ECU 上。這個屬性一開始是由
Android Automotive OS (AAOS):使用經過加密編譯的安全隨機號碼產生 Android Automotive OS
產生器 (CSRNG)。AAOS 接著會在後續開機時讀取屬性。
VHAL 如何儲存供應商專屬的 STORAGE_ENCRYPTION_BINDING_SEED
值。
我們對於保護種子,制定了一般建議:
- (建議) ECU 會將種子儲存在實體車上 並受到完善保護如果不是的話,從 IVI 和 ECU 提取出來並不容易 。
- (建議) IVI 和 ECU 應相互驗證,以便將種子交換到 避免 ECU 假冒種子請求。
- (建議) 傳輸種子時,請務必使用安全的通道防範 CAN 公車窺探。
此外,請加入下列內容來確保供應商「init.target.rc
」已啟用
mount_all --late
之前的late-fs
:
# feed vehicle binding seed to vold
exec_start vold_seed_binding
車輛 HAL 應以 early_hal
啟動,而非 hal now
。
無法存取 early-hal
中的任何 persist.*
系統屬性,因為
尚未掛接「/data
」分區。
設定車輛型繫結
如果 ECU 種子不相符,裝置會重新啟動並提示使用者清除資料
/data
分區或重試。
你可以前往以下頁面變更提示和抹除資料行為: buildins.cpp:
- 將
prompt_and_wipe_data
變更為wipe_data
。裝置會抹除, 並在系統不提示的情況下重新啟動 - 提示訊息包含在
recovery.cpp。
圖 2. 提示訊息。
測試車輛型繫結
模擬測試
系統會透過
packages/services/Car/cpp/security/vehicle_binding_util/tests
。
如何執行模擬測試:
attest libvehicle_binding_util_test
整合測試
這裡提供的測試測試
packages/services/Car/cpp/security/vehicle_binding_util/tests
。
如何執行這項整合測試:
atest vehicle_binding_integration_test