安全啟動在 Windows 8 和 10 上的工作原理,以及它對 Linux 的意義
已發表: 2022-01-29現代 PC 附帶了一項名為“安全啟動”的功能。 這是 UEFI 中的一個平台功能,它取代了傳統的 PC BIOS。 如果 PC 製造商想要在他們的 PC 上貼上“Windows 10”或“Windows 8”標誌貼紙,微軟要求他們啟用安全啟動並遵循一些準則。
不幸的是,它還會阻止您安裝一些 Linux 發行版,這可能會很麻煩。
安全啟動如何保護您 PC 的啟動過程
安全啟動不僅僅是為了讓運行 Linux 變得更加困難。 啟用安全啟動具有真正的安全優勢,甚至 Linux 用戶也可以從中受益。
傳統的 BIOS 將啟動任何軟件。 當您啟動 PC 時,它會根據您配置的啟動順序檢查硬件設備,並嘗試從它們啟動。 典型的 PC 通常會找到並啟動 Windows 啟動加載程序,該加載程序會繼續啟動完整的 Windows 操作系統。 如果您使用 Linux,BIOS 將找到並引導大多數 Linux 發行版使用的 GRUB 引導加載程序。
但是,惡意軟件(例如 rootkit)可能會替換您的引導加載程序。 rootkit 可以加載您的正常操作系統而沒有任何跡象表明有任何問題,在您的系統上保持完全不可見和無法檢測到。 BIOS 不知道惡意軟件和受信任的引導加載程序之間的區別——它只會引導它找到的任何東西。
安全啟動旨在阻止這種情況。 Windows 8 和 10 電腦附帶存儲在 UEFI 中的 Microsoft 證書。 UEFI 將在啟動之前檢查引導加載程序並確保它已由 Microsoft 簽名。 如果 rootkit 或其他惡意軟件確實替換了您的引導加載程序或篡改了它,UEFI 將不允許它啟動。 這可以防止惡意軟件劫持您的啟動過程並將自己隱藏在您的操作系統中。
微軟如何允許 Linux 發行版通過安全啟動啟動
從理論上講,此功能只是為了防止惡意軟件而設計的。 所以微軟提供了一種方法來幫助 Linux 發行版無論如何啟動。 這就是為什麼一些現代 Linux 發行版(如 Ubuntu 和 Fedora)將在現代 PC 上“正常工作”,即使啟用了安全啟動。 Linux 發行版可以一次性支付 99 美元的費用來訪問 Microsoft Sysdev 門戶,在那裡他們可以申請簽署他們的引導加載程序。
Linux 發行版通常有一個“shim”簽名。 shim 是一個小型引導加載程序,它可以簡單地引導 Linux 發行版的主 GRUB 引導加載程序。 Microsoft 簽名的 shim 檢查以確保它正在引導由 Linux 發行版簽名的引導加載程序,然後 Linux 發行版正常啟動。
Ubuntu、Fedora、Red Hat Enterprise Linux 和 openSUSE 目前支持安全啟動,並且無需對現代硬件進行任何調整即可工作。 可能還有其他人,但這些是我們所知道的。 一些 Linux 發行版在哲學上反對申請微軟簽名。
如何禁用或控制安全啟動
如果這就是 Secure Boot 所做的一切,您將無法在您的 PC 上運行任何未經 Microsoft 批准的操作系統。 但是您可以通過 PC 的 UEFI 固件控制安全啟動,這與舊 PC 中的 BIOS 類似。
有兩種方法可以控制安全啟動。 最簡單的方法是前往 UEFI 固件並完全禁用它。 UEFI 固件不會檢查以確保您正在運行簽名的引導加載程序,並且任何東西都會引導。 您可以啟動任何 Linux 發行版,甚至可以安裝不支持安全啟動的 Windows 7。 Windows 8 和 10 可以正常工作,您將失去安全啟動保護您的啟動過程的安全優勢。

您還可以進一步自定義安全啟動。 您可以控制 Secure Boot 提供哪些簽名證書。 您可以自由安裝新證書和刪除現有證書。 例如,在其 PC 上運行 Linux 的組織可以選擇刪除 Microsoft 的證書並在其位置安裝組織自己的證書。 然後,這些 PC 將僅啟動由該特定組織批准和簽名的引導加載程序。
個人也可以這樣做——您可以簽署自己的 Linux 引導加載程序,並確保您的 PC 只能引導您親自編譯和簽名的引導加載程序。 這就是 Secure Boot 提供的控制和能力。
微軟對 PC 製造商的要求
如果 PC 供應商想要在他們的 PC 上貼上漂亮的“Windows 10”或“Windows 8”認證標籤,微軟不僅要求他們啟用安全啟動。 Microsoft 要求 PC 製造商以特定方式實施它。
對於 Windows 8 PC,製造商必須為您提供關閉安全啟動的方法。 微軟要求 PC 製造商將安全啟動終止開關置於用戶手中。
對於 Windows 10 PC,這不再是強制性的。 PC 製造商可以選擇啟用安全啟動,而不是為用戶提供關閉它的方法。 但是,我們實際上並不知道有任何 PC 製造商這樣做。
同樣,雖然 PC 製造商必須包含 Microsoft 的主要“Microsoft Windows Production PCA”密鑰才能啟動 Windows,但他們不必包含“Microsoft Corporation UEFI CA”密鑰。 僅推薦使用第二個密鑰。 這是 Microsoft 用來簽署 Linux 引導加載程序的第二個可選密鑰。 Ubuntu 的文檔解釋了這一點。
換句話說,並不是所有的 PC 都必須在安全啟動開啟的情況下啟動簽名的 Linux 發行版。 同樣,在實踐中,我們還沒有看到任何 PC 做到了這一點。 也許沒有 PC 製造商願意製造唯一一款無法安裝 Linux 的筆記本電腦。
至少就目前而言,主流 Windows PC 應該允許您根據需要禁用安全啟動,並且即使您不禁用安全啟動,它們也應該啟動已由 Microsoft 簽名的 Linux 發行版。
無法在 Windows RT 上禁用安全啟動,但 Windows RT 已死
相關:什麼是 Windows RT,它與 Windows 8 有何不同?
以上所有情況都適用於標準 Intel x86 硬件上的標準 Windows 8 和 10 操作系統。 對於 ARM,情況有所不同。
在 Windows RT(Microsoft 的 Surface RT 和 Surface 2 以及其他設備上提供的適用於 ARM 硬件的 Windows 8 版本)上,無法禁用安全啟動。 如今,仍然無法在 Windows 10 移動版硬件上禁用安全啟動,即運行 Windows 10 的手機。
這是因為微軟希望您將基於 ARM 的 Windows RT 系統視為“設備”,而不是 PC。 正如微軟告訴 Mozilla 的那樣,Windows RT “不再是 Windows”。
但是,Windows RT 現在已經死了。 沒有適用於 ARM 硬件的 Windows 10 桌面操作系統版本,因此您不必再擔心這一點。 但是,如果 Microsoft 確實恢復了 Windows RT 10 硬件,您可能無法在其上禁用安全啟動。
圖片來源:大使基地,約翰布里斯托