Linux 6.4 內核引入了一項功能,因此機器密鑰環可以選擇僅存儲 CA 強制密鑰。
Oracle 的 Eric Snowberg 一直致力於 CA 強制密鑰環限制,以便可以對機器密鑰環進行證書頒發機構 (CA) 強制執行。 Snowberg 在補丁系列中解釋道:
“在引入機器密鑰環之前,大多數發行版簡單地允許平台密鑰環中包含的所有密鑰用於內核和模塊驗證。這是通過樹外補丁完成的。一些發行版甚至接受了它進一步並將所有這些密鑰加載到輔助可信密鑰環中。這也允許系統所有者添加他們自己的密鑰以供 IMA 使用。
每個發行版都包含有關如何簽署內核模塊並將密鑰註冊到 MOK 的類似文檔。過程相當簡單。隨著機器密鑰環的引入,過程基本保持不變,不需要任何樹外補丁。
機器密鑰環允許發行版消除樹外補丁內核模塊簽名。但是,它在允許最終用戶為 IMA 添加自己的密鑰方面存在不足。目前,機器密鑰環不能用作將密鑰添加到 ima 密鑰環的另一個信任錨,因為目前不存在 CA 強制執行。這將擴大當前的完整性差距。 IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY Kconfig 指出,如果密鑰由系統內置或輔助可信密鑰環中的 CA 證書有效簽名,則可以將密鑰添加到 ima 密鑰環。目前,沒有強制執行 CA 證書內容的代碼。
本系列介紹一種執行 CA 強制的方法與機器鑰匙圈。它介紹了三種不同的方法來配置機器密鑰環。添加了新的 Kconfig 選項以控制可以添加到其中的鍵的類型。默認選項允許所有 MOK 密鑰進入機器密鑰環。選擇CONFIG_INTEGRITY_CA_MACHINE_KEYRING時,X.509 CA位必須為真,密鑰用法必須包含keyCertSign;也可以設置任何其他使用字段。當還選擇了
CONFIG_INTEGRITY_CA_MACHINE_KEYRING_MAX 時,X.509 CA 位必須為真且密鑰用法必須包含 keyCertSign。使用此選項可能無法設置 digitialSignature 用法。如果一個密鑰沒有通過 CA 限制檢查,它不會進入機器密鑰環,而是被添加到平台密鑰環。由於能夠配置具有 CA 限制的
機器密鑰環,阻止使用 IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY 啟用機器密鑰環的代碼已被刪除。”
同樣,如前所述,這是嚴格的選擇加入默認行為,允許所有 MOK 密鑰進入機器密鑰環。
TPMDD pull request 已於今天針對 Linux 6.4 內核發出並包含此新功能。
“用於機器所有者密鑰 (MOK) 的.machine 密鑰環獲得了僅存儲 CA 強制執行的能力密鑰,並將 rest 放入.platform 密鑰環,從而將代碼簽名密鑰與用於簽署證書的密鑰分開。這實質上解鎖了.machine 密鑰環作為 IMA 信任錨的使用。這是一個可選功能,這意味著額外的約束不會阻礙任何不關心它們的人。”
圍繞完整性測量架構 (IMA) 處理的 Linux 增強仍然是一個很大的興趣領域為企業利益相關者。