安全開機

安全開機是 統一可擴充韌體介面(UEFI )的一項功能,可在載入前驗證所有底層韌體與軟體元件。 開機期間,UEFI 安全開機會檢查每個開機軟體的簽章,受到檢查的軟體包括 UEFI 韌體驅動程式 (也稱為選項 ROM)、可延伸韌體介面 (EFI) 應用程式,以及作業系統驅動程式和二進位檔。 如果簽章是原始設備製造商(OEM)有效或信任的,機器就會開機,韌體會將控制權交給作業系統。

元件和程序

安全開機依賴下列重要元件:

  • 平台金鑰 (PK) - 在平台擁有者 (Microsoft) 與韌體之間建立信任。 公用的部分是 PKpub,而私人的部分是 PKpriv。
  • 金鑰註冊金鑰 (KEK) 資料庫 - 在作業系統與平台韌體之間建立信任。 公用的部分是 KEKpub,而私人的部分是 KEKpriv。
  • 簽章資料庫 (db) - 儲存獲授權可與平台韌體互動之韌體與軟體程式碼模組的受信任簽署者(公鑰和憑證)摘要。
  • 撤銷簽名資料庫(dbx)-保存 OEM 認定為惡意、易受攻擊、被入侵或不信任的程式碼模組摘要。 如果某個雜湊值同時存在於簽章資料庫和已撤銷簽章資料庫中,則以已撤銷簽章資料庫為準。

以下圖表與流程說明 OEM 如何更新這些元件:

安全開機流程示意圖,顯示系統啟動時簽署資料庫及金鑰交換驗證。

OEM 會在製造時,將安全開機摘要儲存在機器的非揮發 RAM (NV-RAM) 上。

  1. OEM 會將 UEFI 應用程式的簽章器或映像雜湊值、作業系統載入器(如 Microsoft 作業系統載入器或開機管理器)以及受信任的 UEFI 驅動程式填充到簽章資料庫中。
  2. OEM 會在撤銷簽名資料庫中填入已不再受信任之模組的摘要。
  3. OEM 會在金鑰註冊金鑰(KEK)資料庫中填充簽名金鑰,以更新簽章資料庫及撤銷簽章資料庫。 實體在場的授權使用者可以透過使用正確金鑰簽署的更新或使用韌體選單來編輯資料庫。
  4. OEM 加入資料庫、dbx 與 KEK 資料庫並完成最終韌體驗證與測試後,會鎖定韌體編輯權限,並產生平台金鑰(PK)。 OEM 可以使用 PK 來簽署 KEK 更新或關閉安全開機。

在開機過程中的每個階段,系統會計算韌體、開機載入程式、作業系統、核心驅動程式及其他開機鏈產物的摘要,並將其與可接受的數值進行比較。 系統不允許被發現不信任的韌體和軟體載入。 安全開機可阻擋低階惡意軟體注入或預開機惡意軟體攻擊。

Azure 機群上的安全開機

如今,每台部署到 Azure 運算團隊以承載客戶工作負載的機器,都是從啟用 Secure Boot 的工廠車間來的。 在硬體建置與整合流程的每個階段,都有針對性的工具與流程,確保流程不會因意外或惡意而回退安全啟動啟用。

驗證 db 和 dbx 摘要是否正確可以確保:

  • Bootloader 存在於其中一個資料庫條目中。
  • Bootloader 的簽名是有效的。
  • 主機是用可信軟體開機的。

驗證 KEKpub 與 PKpub 的簽名確認,只有受信任方有權修改受信任軟體的定義。 最後,確保安全啟動啟用,能驗證系統是否執行這些定義。

下一步

想了解更多關於 Microsoft 如何推動平台完整性與安全性的資訊,請參閱: