Lennart Pottering 提出了一種新的 Linux 驗證引導架構

Lennart Poettering 發布了一項現代化 Linux 發行版啟動過程的提案,旨在解決現有問題並簡化全面驗證啟動的組織,確認內核和底層系統環境的真實性。 實施新架構所需的更改已包含在 systemd 代碼庫中,並影響 systemd-stub、systemd-measure、systemd-cryptenroll、systemd-cryptsetup、systemd-pcrphase 和 systemd-creds 等組件。

提議的更改被簡化為創建一個單一的通用 UKI(統一內核映像)映像,該映像結合了 Linux 內核映像、從 UEFI(UEFI 引導存根)加載內核的處理程序和加載到內存中的 initrd 系統環境,用於在安裝根 FS 之前的階段進行初始初始化。 可以將整個系統打包在 UKI 中,而不是 initrd RAM 磁盤映像,從而允許創建加載到 RAM 中的完全驗證的系統環境。 UKI-image以PE格式的可執行文件的形式製作,不僅可以使用傳統的bootloader加載,還可以直接從UEFI固件中調用。

從 UEFI 調用的能力允許您使用數字簽名完整性和有效性檢查,不僅涵蓋內核,還包括 initrd 的內容。 同時,對從傳統引導加載程序調用的支持允許您保存多個內核版本的交付和自動回滾到工作內核等功能,以防在安裝更新後檢測到新內核出現問題。

目前,大多數 Linux 發行版在初始化過程中使用鏈條“固件→數字簽名的 Microsoft shim 層→數字簽名的分發 GRUB 引導程序→數字簽名的分發 Linux 內核→未簽名的 initrd 環境→根 FS”。 傳統發行版中缺少 initrd 驗證會產生安全問題,因為除其他外,此環境會提取密鑰來解密根文件系統。

不支持對 initrd 鏡像的驗證,因為這個文件是在用戶本地系統上生成的,無法通過發行版的數字簽名進行認證,這使得使用 SecureBoot 模式時的驗證組織變得非常複雜(要驗證 initrd,用戶需要生成他的密鑰並將它們加載到 UEFI 固件中)。 此外,現有的引導組織不允許使用來自 TPM PCR(平台配置寄存器)寄存器的信息來控制除 shim、grub 和內核之外的用戶空間組件的完整性。 在現有問題中,還提到了更新引導加載程序的複雜性以及無法限制對安裝更新後變得無關緊要的舊操作系統版本的 TPM 中密鑰的訪問。

實施新引導架構的主要目標是:

  • 提供完全驗證的下載流程,涵蓋從固件到用戶空間的所有階段,確認下載組件的有效性和完整性。
  • 將受控資源綁定到 TPM PCR 寄存器,並按所有者劃分。
  • 能夠根據內核引導、initrd、配置和本地系統 ID 預先計算 PCR 值。
  • 防止與回滾到以前易受攻擊的系統版本相關的回滾攻擊。
  • 簡化並提高更新的可靠性。
  • 支持不需要重新應用或本地配置受 TPM 保護的資源的操作系統更新。
  • 系統準備好進行遠程認證,以確認可啟動操作系統和設置的正確性。
  • 將敏感數據附加到特定引導階段的能力,例如,從 TPM 中提取根 FS 的加密密鑰。
  • 提供安全、自動和靜默的過程來解鎖密鑰以解密具有根分區的驅動器。
  • 使用支持 TPM 2.0 規範的芯片,能夠回退到沒有 TPM 的系統。

來源: opennet.ru

添加評論