- 什么是安全啟動(dòng)?
安全啟動(dòng)是 UEFI (Unified Extensible Firmware Interface) 中定義的功能,它定義了如何進(jìn)行固件驗證以及固件與操作系統之間的接口(協(xié)議),從而保證整個(gè)系統啟動(dòng)過(guò)程的安全性。現在的服務(wù)器主板上都有一塊 TPM (Trusted Platform Module) 安全芯片,安全啟動(dòng)基于公鑰基礎設施(PKI Public Key Infrastructure)來(lái)驗證固件代碼,利用 TPM 來(lái)實(shí)現固件代碼的數字簽名,通過(guò)數字簽名來(lái)保證所執行的固件代碼都是可信的。
服務(wù)器開(kāi)機時(shí)將執行 UEFI 啟動(dòng)代碼,配置處理器、內存、和硬件外圍設備,以便為執行操作系統做好準備。在切換到操作系統加載程序之前,UEFI 將檢查硬件外圍設備(如網(wǎng)卡、存儲控制器)中固件代碼的數字簽名,如果該簽名與UEFI 中的簽名數據庫匹配,則允許執行該模塊。UEFI 簽名數據庫中包含“允許”和“禁止”列表,用于確定哪些設備可以執行啟動(dòng)過(guò)程。這可以防止設備固件被注入惡意代碼,任何被篡改的代碼因為跟允許的數字簽名不相符,都會(huì )被拒絕執行。
在網(wǎng)卡或 Raid 控制器固件中注入惡意代碼,有人會(huì )質(zhì)疑這可能嗎?安全的基本指導原則就是要堵上任何可能造成安全隱患的漏洞。盡管我們還沒(méi)有看到過(guò)相關(guān)案例,但是還是要確保所有的安全漏洞都被堵上了。那 UEFI 代碼自己的安全性如何來(lái)保證呢?UEFI 代碼也有數字簽名,是在刷固件代碼的時(shí)候檢查的。
UEFI 也定義了跟操作系統之間的接口,在運行操作系統加載代碼之前,也需要檢查加載代碼數字簽名,只有認證的加載代碼才能被執行,保證啟動(dòng)的是一個(gè)可信的 OS。而上一代的系統固件 BIOS 則沒(méi)有這一套安全機制,它允許執行任何加載代碼,這當然是一個(gè)潛在的安全隱患。

當年微軟推出 Windows 8(首個(gè)支持安全啟動(dòng)的 Windows 操作系統),曾經(jīng)要求各 PC 廠(chǎng)商在 UEFI 中僅放置微軟的數字簽名,從而只允許 PC 啟動(dòng) Windows 操作系統,從而引起 Linux 廠(chǎng)商和用戶(hù)的一致抗議。所以現在的 UEFI 中多了一個(gè) Secure Boot 的選項,如果 UEFI 中沒(méi)有相關(guān)的數字簽名,用戶(hù)可以選擇關(guān)閉安全啟動(dòng),從而可以繼續安裝和使用一個(gè)未經(jīng)認證的操作系統。還有另一種選項,有的服務(wù)器提供工具讓用戶(hù)自己向 UEFI 中寫(xiě)入缺少的操作系統廠(chǎng)商數字簽名。
當執行權被交給 vSphere 之后,vSphere 也會(huì )進(jìn)行一系列的安全檢查,保證 vSphere 系統中沒(méi)有被注入惡意代碼。vSphere 在加載每一個(gè)驅動(dòng)程序之前,會(huì )檢查該驅動(dòng)的 VIB,如果發(fā)現某個(gè) VIB 的數字簽名沒(méi)有通過(guò)安全檢查,就會(huì )進(jìn)入到 vSphere 的紫屏錯誤 PSOD (Purple Screen Of Death) 狀態(tài)。
同樣的道理,虛擬機也可以支持安全啟動(dòng)。只要把虛擬機的固件配置成為 EFI 的話(huà),就可以選擇 Secure Boot 選項,以配合 Windows 和 Linux 等操作系統的安全啟動(dòng)功能。
