M-CRPS(Modular Common Redundant Power Supply)作為新一代的伺服器規格 Open Comput Project 的一部份,新增了不少規範來強化其安全性,最大的目的在於保證所有運作的設備都是由可以被信任的發行商提供的,以避免遭到惡意的攻擊事件。
為了確保設備的可信任性,M-CRPS 上添加了 Secure 方面的要求,來確保在裝置上被執行的韌體都有透過可信賴的手段檢驗其來源。這使得以往負責電源控制的 DSP 或 MCU 也需具備可靠的安全性設計,並且配合設計好的驗證機制在韌體功能上添加自我檢驗與被他人檢驗的功能。
在規範中,所有設備都需具有 Secure Boot 以及 Measurement Boot 功能,這兩個功能在 OCP 中有被具體的定義其代表的意義,其定義如下:
1. Secure boot
-
驗證每段代碼的完整性,只有通過驗證的程式才能執行。
-
驗證包括檢查程式是否具有經核准簽署者的有效簽名。
-
在驗證不通過時,設備並非一定不可運行,而是依據定義好的恢復策略來採取措施。
2. Measured Boot
-
收集每段加載程式的測量值(Hash),並通過證明流程以安全方式回報。
-
此功能使認證流程中的驗證者 ( 通常在程式執行後才發生 ) 可以決定什麼是「良好」或「不良」狀態,並採取相關的措施。
從定義可得知,Secure boot 指的是開機時針對自身內部程式的驗證,Measured Boot 指的是開機後由驗證方設備發起的交互驗證機制。透過這兩個功能來確保被執行的設備受到信任。
其中 Measurement Boot 還可以透過軟體方式實現,但在實現 Secure Boot 時,硬體的配合是其中不可或缺的。因此本文主要介紹 Secure boot 的部分。
M-CRPS 對於 Secure Boot 的功能要求可以整理為以下幾點:
1. Secure Boot 第一階段必須是不可被變更的,並且需要強制驗證下一個階段被執行的程式。例如開機後強制執行對要加載的 Bootloader 進行完整性與簽章檢查。
2. 設備每次啟動或重新加載都需強制驗證所有可變更的程式。不得允許任何未經驗證的可變代碼在設備上執行,除非該代碼已成功通過數位簽名驗證。
3. 驗證機制應該使用公鑰、公鑰的 Hash、公鑰表或 Hash 表,不可在任何階段使用本地私鑰驗證。Hash 強度最低至少應為 SHA2-384,並滿足 FIPS 186-4 第 4.2 節對雜湊函數安全強度的要求。推薦的數位簽名算法是 RSA 和 ECDSA,用於生成簽名,並遵循 CNSA 指南中的安全強度。
4. 使用的密鑰需要提供更新密鑰的方法或是被撤銷有效性的方法。建議應提供錯誤檢測機制以保護密鑰或簽章的完整性。
5. Secure Boot 的認證失敗不應造成設備無法恢復,但所有恢復的路徑應強制執行程式的數位簽章認證。建議設備提供記錄 Secure Boot 啟動失敗的機制。
6. 未經驗證的程式和韌體更新不得被允許執行。
7. 如果存儲韌體的記憶體具有加密功能,則在執行例如數位簽名驗證等韌體安全操作時,解密的韌體應僅能從內部記憶體存取。
以上的要求,會根據 MCU 本身具備的硬體 Secure 功能而有不同的實現方式,在 Open Compute Projec 的 Hardware Secure Boot 白皮書中,提供了三種 Secure Boot 流程的範例,但並非絕對必須按照這些範例的流程,實際的 Secure boot 流程還是有可能會因為 MCU 的 Secure 功能不同而有所差異,因此只是參考。三個範例的框圖如下:
1. Embedded Public Key (內建公鑰) 的流程

2. Key manifest (公鑰清單) 流程

3. Manifest with Hash Table (雜湊表) 流程

由於篇幅問題,關於三種 Secure Boot 範例的詳細流程將另外撰文描述,或是可以直接聯繫我們以取得更多資訊。
資料來源:Hardware Secure Boot V1.0 - OPEN Compute Project
評論