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