安全之安全(security2)博客目錄導讀
目錄
1、遠程更新
2、本地更新
3、魯棒性
1、遠程更新
Arm歡迎關于CCA固件更新需求的反饋。一般而言,CCA固件更新過程可以描述如下:
- CCA固件更新客戶端使用固件更新協議與遠程更新服務通信。
- CCA固件更新客戶端將下載的CCA固件復制到臨時暫存位置。
- 系統重啟,并在啟動過程中使用更新。
[R0134] Arm建議固件更新協議元數據的簽名和驗證應獨立于固件簽名和固件驗證。
固件更新協議的選擇不在CCA的范圍內。例如,固件更新協議可能包含安全功能,如更新目標控制和防回滾計數器控制。這些功能可能包括協議級固件更新控制消息,以及固件負載。
固件更新客戶端應驗證CCA固件更新或CCA固件更新控制消息來自授權的更新源。在這種情況下,源通常不同于鏡像簽名者。例如,鏡像可能由CCA固件分發者簽名,而更新過程可能由服務提供商或托管提供商單獨控制。
只有在重啟后,更新才會生效。重啟的范圍可能會根據更新的范圍有所不同。
CCA固件更新的示例范圍包括:
- 根更新:影響Monitor安全域或CCA系統安全域中的一個受信子系統
- Realm世界更新:僅影響Realm世界
- RMM更新:僅影響Realm世界中的CCA組件
本文檔使用“執行更新”一詞描述固件更新客戶端將更新提供給CCA固件后,驗證、安裝和執行更新的過程。更新影響CCA的可信性,CCA固件有責任確保只有授權的更新才能被執行。
固件更新只能由更受信的安全域或安全域中最受信的組件執行。
[R0142] 根更新只能由CCA HES主機執行。
[R0143] Realm世界更新可以由Monitor執行。
[R0144] RMM更新可以由RMM執行。
根更新需要系統完全重啟,Realm世界更新僅需要Realm世界的重啟。
RMM更新可能只需要重啟RMM,而不需要重啟所有Realms。這樣的Realm世界動態更新不在當前CCA版本范圍內,但可能在后續版本中解決。
[R0094] 至少更新的有效性應始終在執行更新時進行驗證。
根據生態系統的需求,有效更新可能是任何正確簽名并符合防回滾策略的更新。或者系統可能需要通過安全固件更新協議進行顯式更新授權后才能執行更新。
暫存位置通常是通用的外部存儲。根據生態系統的需求,可能需要額外的完整性控制以防止未經授權的替換。例如,可能的要求是使用本地哈希鎖定方案,或在顯式更新授權消息中實現防重放機制。
[R0098] 在將身份元數據復制到暫存區之前,必須知道并驗證至少加載已簽名的CCA固件身份元數據所需的內存。
[R0135] 必須在將鏡像負載復制到片上內存或受保護的外部內存之前,知道并驗證所需的內存。
[R0136] 必須在從外部存儲復制數據之前,確保分配并可用所需內存。
例如,簽名的固件身份元數據和固件負載可以組合成一個固定最大大小的鏡像。然后實現可以確保在復制之前始終有一個至少該大小的固定緩沖區可用。
或者,簽名的固件身份元數據可以是固定大小,并包含負載的大小。然后,身份元數據可以復制到固定緩沖區并在那里驗證,然后基于已驗證的負載大小分配第二個動態緩沖區。
[R0137] 數據不能復制超出暫存區的邊界。這防止緩沖區溢出攻擊。
[R0099] 重啟后,啟動過程的相關部分檢測到可用的更新,并嘗試以正常方式加載它。
系統在任何更新后必須保持可認證性。
根更新后系統始終是可認證的,因為它需要系統完全重啟。它不會在運行時更改依賴方所認證的系統啟動狀態。
Realm世界更新后,Realm世界將重啟,包括所有的Realms,確保更新后的Realms根據新的Realm世界狀態進行認證。
在動態RMM更新的情況下,系統的啟動狀態在運行時發生了變化,與依賴方在更新之前認證的狀態相比有所不同。RMM執行動態更新的能力必須反映在最初對依賴方的認證中。例如,作為服務級別協議的一部分,針對固件版本和測量值,或者針對已簽名的固件身份元數據。
在動態RMM更新的情況下,無法可靠地更新任何已認證的Realms的狀態。這也是為什么執行動態更新的能力必須是最初認證契約的一部分。
然而,任何動態RMM更新后的認證請求必須反映CCA平臺的新狀態。
同樣,在動態RMM更新的情況下,更新后的狀態可能會影響CCA派生的Realm密鑰。
動態RMM更新和CCA派生的Realm密鑰不在當前CCA版本范圍內,可能會在后續版本中解決。
[R0101] 依賴方可以確定CCA平臺的實現是否具備世界更新或Realm世界增量更新的能力。
2、本地更新
本地更新是指需要物理訪問系統的更新。例如,通過USB更新、串行鏈路更新或啟動過程中的救援加載程序功能。
總體過程及其安全屬性應與遠程更新的情況相同。例如,USB或串行鏈路更新可以視為固件更新協議的不同傳輸方式。或者救援加載程序可以視為CCA固件更新客戶端的特殊情況。
3、魯棒性
[R0100] 任何CCA固件更新機制必須能夠應對更新失敗。
防回滾和恢復應按照CCA固件啟動的定義進行管理。