一種特別陰險的惡意軟件形式是通過rootkit(或bootkit)攻擊注入系統的固件,因為它在操作系統啟動之前加載并且可以隱藏普通的反惡意軟件。Rootkit 也很難檢測和刪除。防御 rootkit 攻擊的一種方法是使系統能夠使用安全啟動設備,該設備旨在檢測預操作系統環境中的未授權固件。
使用硬件信任根進行安全啟動至關重要,因為它可以在威脅加載到系統之前保護系統免受威脅。安全引導過程僅允許系統使用制造商信任的軟件引導。什么使安全啟動安全?安全引導有兩個主要方面:
? 安全引導加載程序存儲在不可變的內存中 - 換句話說,它無法更改
? 安全引導加載程序在系統內執行第一階段固件引導加載程序之前對其進行身份驗證,以驗證它是否已由受信任的原始設備制造商 (OEM) 簽名。
讓我們研究一下安全啟動,以及如何在支持安全啟動的嵌入式和 PC 平臺中將嵌入式控制器用作主啟動加載程序(即信任根)。
嵌入式控制器
嵌入式控制器長期以來一直是個人計算機 (PC) 移動平臺的一部分,包括筆記本電腦、上網本和平板電腦。嵌入式控制器也是服務器、工業、電信和工業領域嵌入式設計不可或缺的一部分。當今的嵌入式控制器具有高度可配置性,OEM 使用它為其系統實現差異化功能,包括待機電源排序、熱監控、風扇控制和電池充電。
嵌入式控制器還用作系統中的信任根或信任錨,以支持安全啟動。圖 1 顯示了系統及其基本組件的示例。
系統中可能有許多嵌入式處理器用于執行固件。任何執行可在系統中更新的固件的處理器都必須經過固件身份驗證,然后才能允許運行。嵌入式控制器安全引導加載程序是存儲在ROM中的不可變代碼,是系統中執行的第一個代碼。它負責驗證和執行存儲在系統閃存中的 OEM 第一階段固件引導加載程序。
由于 OEM 第一階段引導加載程序駐留在閃存中,并且可以在系統中更新,因此此代碼不能被視為不可變或信任根。在支持安全啟動的系統中執行之前,必須對其進行身份驗證。安全啟動可防止惡意或未經授權的代碼在系統中執行。一旦系統完全運行并且主 CPU 正在執行代碼,它就可以使用本地受信任的平臺模塊或遠程服務器來驗證或證明硬件平臺的完整性。
系統啟動順序
當系統通電時,不可變的安全啟動加載程序初始化嵌入式控制器子系統,然后加載并驗證存儲在系統閃存中的 OEM 固件。OEM 固件通過驗證下一層固件(如系統 BIOS)來維護信任鏈,配置系統并啟動使系統退出重置的過程。每一層固件都對下一層進行身份驗證,直到安全啟動過程完成。引導過程完成后,主系統 CPU 將從重置中釋放并開始執行操作系統。
UEFI(統一可擴展固件接口規范)是廣泛接受的標準,用于描述固件啟動順序和系統操作系統之間的接口。
安全啟動身份驗證
安全啟動是在執行之前對系統中的所有固件或軟件進行身份驗證的操作。惡意軟件的一種形式是通過 rootkit 攻擊注入系統的固件,它可以取代 OEM 的第一階段固件引導加載程序并隱藏反惡意軟件,加載正常操作系統,沒有任何跡象表明存在任何問題并且無法檢測到(參見圖 2a)。
圖 2a:UEFI 引導序列示例。
圖 2b:具有硬件信任錨的 UEFI 啟動序列示例。
Microchip的嵌入式控制器是固件信任根。它的工作是驗證 OEM 第一階段引導加載程序的數字簽名。OEM 的第一階段引導加載程序將對第二階段固件加載程序進行身份驗證,后者又將驗證要在系統中運行的下一個固件或軟件代碼。這稱為信任鏈。嵌入式控制器安全引導加載程序是鏈中的第一個環節,稱為信任錨。
數字簽名
數字簽名
提供兩個功能:完整性檢查和身份驗證。使用數字簽名的公鑰預配的信任根或信任錨可以驗證固件映像是否是 OEM 批準的代碼映像,以便在系統中使用。
若要創建數字簽名,OEM 首先生成滿足所選簽名算法(如 RSA-2048 或橢圓曲線)要求的非對稱密鑰對。消息(即代碼消息)通過散列算法(例如SHA-384)進行處理,并使用私鑰進行簽名(參見圖3)。
為了驗證數字簽名,消息(即代碼圖像)通過用于對圖像進行簽名的相同哈希算法進行處理。數字簽名使用生成的非對稱公鑰與簽名期間提供的公鑰進行比較進行驗證。如果兩個結果相同,則圖像的真實性已經過驗證,表明消息未被更改,并且與最初簽名的消息相同(請參閱圖 4)。
圖 4:驗證數字簽名。
Microchip的嵌入式控制器安全引導加載程序
Microchip最近宣布推出一款新的支持加密技術的微控制器(MCU),即帶有Soteria-G2定制固件的CEC1712 MCU,旨在阻止rootkit攻擊為從外部串行外設接口(SPI)閃存啟動的系統注入的惡意惡意軟件。
Microchip嵌入式控制器安全引導加載程序是指存儲在EC只讀存儲器(ROM)中的固件,該固件執行用于加載、驗證和執行配置和打開系統電源的 OEM 第一階段引導加載程序的受信任代碼。
Microchip的嵌入式控制器被假定為可信的(即信任錨)。Microchip的嵌入式控制器引導ROM負責加載、驗證和執行存儲在外部SPI閃存中的OEM引導固件,同時保持系統復位。根據設計,嵌入式控制器是平臺中第一個上電的組件。安全引導加載程序(在ROM中硬編碼)使系統的其余部分處于復位狀態,直到它加載并驗證負責初始化系統、電源排序和使系統退出復位的OEM應用程序固件。
首次通電時,應用處理器和更高級別的組件將保持復位狀態,直到嵌入式控制器啟動 ROM 加載、驗證并執行 OEM 啟動固件(參見圖 5)。
圖 5:系統中 Microchip 的嵌入式控制器。
OEM 使用簽名映像對外部 SPI 閃存進行編程。映像使用 OEM 的私鑰、SHA-384 哈希算法和橢圓曲線數字簽名算法 (ECDSA) 進行簽名。使用的橢圓曲線是NIST標準的P-384橢圓曲線。OEM 必須始終對此密鑰保密。OEM 在嵌入式控制器的 OTP(一次性可編程)存儲器中對用于驗證簽名的公鑰進行編程。嵌入式控制器安全引導加載程序使用存儲在 OTP 中的 ECDSA 公鑰對 OEM 固件映像進行身份驗證,作為嵌入式控制器安全啟動序列的一部分。
嵌入式控制器安全啟動順序
下面總結了Microchip在多個器件(包括CEC1712)中實現的嵌入式控制器安全啟動序列:
1. 在POR或芯片復位后,RSMRST#引腳為三態,并在外部拉低以保持系統復位。
2. 嵌入式控制器引導ROM初始化設備(即采樣帶,清除內存等)。
3. 嵌入式控制器引導 ROM 執行安全引導加載程序,用于驗證 SPI 閃存映像的 ECDSA 簽名。
4. 如果映像加載成功(成功 = 有效真實映像),啟動 ROM 將保護設備(例如,清除加密內存、鎖定密鑰等)并跳轉到固件應用程序代碼(即 OEM 啟動代碼)。
5. 如果映像未成功加載(即簽名檢查失敗),引導 ROM 將保護設備(例如,清除加密內存、鎖定密鑰等)并等待 POR 事件。系統無法引導。
隨著 5G 蜂窩基礎設施的快速增長、不斷增長的網絡和數據中心支持不斷擴展的云計算,開發人員需要新的方法來確保操作系統保持安全和不受影響。
Microchip在其功能齊全的CEC1712 Arm? Cortex-M4?微控制器上推出的新型Soteria-G2定制固件,可為從外部SPI閃存啟動的操作系統提供預啟動模式下的硬件信任根保護的安全啟動。
審核編輯:郭婷
-
處理器
+關注
關注
68文章
19165瀏覽量
229123 -
控制器
+關注
關注
112文章
16203瀏覽量
177403 -
嵌入式
+關注
關注
5068文章
19019瀏覽量
303267
發布評論請先 登錄
相關推薦
評論