UEFI & SecureBoot 的影響,有多嚴重?
我計劃在未來幾天購買一台新的筆記型電腦,我對全新酷炫的超極本印象深刻。作為一個長期使用 GNU/Linux 的使用者,我當然會在上面安裝我選擇的發行版。
我可能不得不購買一台預裝了 Windows 8 的電腦。它很可能會執行 UEFI 並具有“安全啟動”,未簽名的核心將無法啟動。
UEFI 可能很好,BIOS 可能需要退役。我想毛茸茸的是Secure Boot。
據我了解,一些受信任的證書將嵌入到韌體中,然後嵌入到核心等中。如果核心的證書可以追溯到韌體中的任何一個,則核心將啟動,否則 UEFI 將告訴我關閉並拒絕啟動。此過程將防止未經認證的軟體啟動。儘管我看不到它們,但這可能有好處。
我想知道開源核心如何獲得這些密鑰之一併且仍然是免費的。我已經閱讀了 Linux 郵件列表上的一個執行緒,其中 Red hat 員工要求 Linus Torvalds 拉出一個變更集,該變更集實現了解析 PE 二進製文件並採取一組複雜的操作以讓核心在安全啟動模式下啟動(據我所知)。他們想要這樣做是因為微軟只簽署 PE 二進製文件。Torvalds 先生友好地拒絕了這個變更集,稱核心已經實現了標準,而不是 PE。RedHat 正試圖將這段程式碼推送到核心,這樣他們就不必有一天分叉它。
看,這是一件複雜的事情。讓我問我的問題:
- 作為家庭使用者,我將通過 UEFI 和安全啟動獲得什麼好處?
- 這個簽約是怎麼做的?
- 誰可以獲得簽名/證書?是付費的嗎?可以公開嗎?(它應該在 Linux 的原始碼中可用,不是嗎?)
- Microsoft 是唯一提供簽名的機構嗎?不應該有一個獨立的基金會來提供它們嗎?
- 這將如何影響開源和免費核心、愛好者/學術核心開發人員等。。例如,這個引導(一個非常基本的引導扇區程式碼):
hang: jmp hang times 510-($-$$) db 0 db 0x55 db 0xAA
這個網站上的一條新聞就是這個問題的靈感來源。一個名為Hispalinux的西班牙 Linux 使用者組已就此問題向歐洲委員會提出了針對微軟的投訴。
我應該擔心嗎?我拒絕使用專有軟體或受信任公司簽署的軟體。我一直這樣做到現在,我想繼續這樣做。提前致謝。
此過程將防止未經認證的軟體啟動。儘管我看不到它們,但這可能有好處。
您有一個新的安全機制來控制哪些可以從您的硬體啟動,哪些不能啟動。一種安全功能。直到為時已晚,您才覺得自己需要它。但我離題了。
我已經閱讀了 Linux 郵件列表上的一個執行緒,其中 Red hat 員工要求 Linus Torvalds 提取一個變更集,該變更集實現了解析 PE 二進製文件並採取一組複雜的操作以讓核心在安全啟動模式下啟動(據我所知)。
驅動程序,如您的 GPU 韌體,必須按照安全啟動進行簽名,否則它可能是另一個 rootkit。現狀是這些驅動程序以 PE 格式簽名。無論如何,核心可以在沒有這些的情況下啟動,但硬體將無法工作。在核心中解析 PE 格式只是一個技術上更簡單的選擇,而不是要求每個硬體供應商為每個發行版簽署他們的 blob,或者設置一個使用者空間框架來執行此操作。Linus 決定不吸微軟的雞巴。這不是技術論點。
作為家庭使用者,我將通過 UEFI 和安全啟動獲得什麼好處?
最明顯的功能是 UEFI 快速啟動。我已經使用了幾個 Windows 8 徽標桌面,它們的啟動速度非常快,以至於我經常錯過彈出啟動菜單。英特爾和原始設備製造商在這方面進行了相當多的工程設計。
如果你是那種討厭臃腫和程式碼重複的 linux 使用者,你可能還想在韌體級別管理多重引導並完全擺脫引導載入程序。UEFI 提供了一個引導管理器,您可以使用它直接引導到核心或選擇使用韌體菜單引導其他作業系統。雖然它可能需要一些修補。
此外,在啟動時和韌體菜單中的圖形更精美。啟動期間更好的安全性(安全啟動)。其他功能(IPv4/6 網路引導、2TB+ 引導設備等)主要面向企業使用者。
無論如何,正如 Linus所說,BIOS/UEFI 應該“只需載入作業系統並離開那裡”,對於快速啟動的家庭使用者來說,UEFI 確實如此。它肯定比 BIOS 做更多的事情,但如果我們談論的是家庭使用者,他們不會在意這一點。
這個簽約是怎麼做的?
理論上,二進製文件用私鑰加密以產生簽名。然後可以用公鑰驗證簽名,證明二進制是由私鑰的所有者簽名的,然後二進制驗證。在維基百科上查看更多資訊。
從技術上講,僅對二進制的雜湊進行簽名,並且簽名以 PE 格式和附加格式旋轉嵌入二進制中。
在程序上,公鑰由您的 OEM 儲存在您的韌體中,並且來自 Microsoft。你有兩個選擇:
- 生成您自己的密鑰對並安全地管理它們,將您自己的公鑰安裝到韌體中,並使用您自己的私鑰(來自 Ubuntu 的 sbsign 或來自Fedora 的 pesign)對二進製文件進行簽名,或者
- 將您的二進製文件發送給 Microsoft 並讓他們簽名。
誰可以獲得簽名/證書?是付費的嗎?可以公開嗎?(它應該在 Linux 的原始碼中可用,不是嗎?)
由於簽名/證書嵌入在二進製文件中,所有使用者都應該獲得它們。任何人都可以設置自己的 CA 並為自己生成證書。但是如果你想讓微軟為你生成證書,你必須通過威瑞信來驗證你的身份。該過程的成本為 99 美元。公鑰在韌體中。私鑰在 Microsoft 的保險箱中。證書在簽名的二進製文件中。不涉及原始碼。
Microsoft 是唯一提供簽名的機構嗎?不應該有一個獨立的基金會來提供它們嗎?
與管理 PKI、驗證身份、與每個已知的 OEM 和硬體供應商協調的過程相比,技術方面相當微不足道。這要花很多錢。Microsoft 恰好擁有多年的基礎架構 (WHQL) 和經驗。所以他們提議簽署二進製文件。任何獨立基金會都可以加緊提供同樣的東西,但到目前為止還沒有一個人這樣做過。
從 IDF 2013 的 UEFI 會議上,我看到 Canonical 也開始將自己的密鑰用於某些平板電腦韌體。因此,Canonical 可以在不通過 Microsoft 的情況下簽署自己的二進製文件。但是他們不太可能為您簽署二進製文件,因為他們不知道您是誰。
這將如何影響開源和免費核心、愛好者/學術核心開發人員等?
您自定義建構的核心不會在安全啟動下啟動,因為它沒有簽名。不過,您可以將其關閉。
安全啟動的信任模型鎖定了核心的某些方面。就像你不能通過寫入 /dev/kmem 來破壞你的核心,即使你現在是 root。您不能休眠到磁碟(在上游工作),因為無法確保核心映像在恢復時不會更改為 bootkit。當您的核心崩潰時,您無法轉儲核心,因為 kdump (kexec) 機制可用於引導 bootkit(也在上游工作)。這些是有爭議的,並且沒有被 Linus 接受到主線核心中,但是一些發行版(Fedora、RHEL、Ubuntu、openSUSE、SUSE)無論如何都附帶了自己的安全啟動更新檔。
個人而言,建構安全啟動核心所需的模組簽名需要 10 分鐘,而實際編譯只需 5 分鐘。如果我關閉模組簽名並打開 ccache,核心建構只需要一分鐘。
UEFI 是與 BIOS 完全不同的引導路徑。UEFI 韌體不會呼叫所有 BIOS 引導程式碼。
一個名為 Hispalinux 的西班牙 Linux 使用者組已就此問題向歐洲委員會提出了針對微軟的投訴。
如前所述,除了微軟之外,沒有人站出來做公共服務。目前沒有證據表明微軟有意為此作惡,但也沒有什麼可以阻止微軟濫用其事實上的壟斷地位進行權力之旅。因此,雖然 FSF 和 Linux 使用者組可能看起來不太務實,也沒有真正坐下來建設性地解決問題,但人們還是有必要向微軟施加壓力並警告它的後果。
我應該擔心嗎?我拒絕使用專有軟體或受信任公司簽署的軟體。我一直這樣做到現在,我想繼續這樣做。
採用安全啟動的原因:
- 它消除了真正的安全攻擊媒介。
- 這是一種技術機制,可以讓使用者更自由地控制他們的硬體。
- Linux 使用者需要了解安全啟動機制並在微軟過度壟斷安全啟動策略之前採取主動行動。