Kernel

如何查詢 EFI 簽名

  • July 31, 2020

Grub-EFI 似乎只會引導一個“簽名”的 Linux 核心。是否有一些命令可以讓我查詢給定的核心映像以找出其中存在哪些簽名(如果有)?

這取決於您在談論哪種簽名。如果您有 EFI 系統,您可以簽署 EFI 執行檔 ( *.efi) 並強制您的 EFI 韌體僅執行具有已知簽名的那些。這稱為安全啟動。要檢查 EFI 二進製文件的簽名,您可以使用該工具sbverify

$ sbverify --no-verify signed-binary.efi
Signature verification OK
$ sbverify --no-verify unsigned-binary.efi
No signature table present
Unable to read signature data from unsigned-binary.efi
Signature verification failed

不幸的是,我沒有看到提取和顯示 EFI 簽名的簡單方法。:(

您正在尋找的更有可能是 GRUB 自身檢查其要引導的模組和核心是否有有效簽名的能力(安全引導只會影響 GRUB 二進製文件本身,GRUB 載入的所有內容都不一定需要 EFI 簽名)。這些是(據我所知)普通的舊分離 GPG 簽名(例如,對於一個名為的核心,vmlinuz-1.2.3您將擁有一個vmlinuz-1.2.3.sig帶有簽名的文件)。這些可以簡單地顯示和驗證

$ gpg --verify vmlinuz-1.2.3.sig vmlinuz-1.2.3
gpg: Signature made Tue Apr  1 12:34:56 2014 CEST using RSA key ID d3adb33f
gpg: Good signature from "John Doe <john.doe@nonexistent.foo>"

如果您的核心沒有*.sig文件,則顯然沒有簽名。

set check_signature=no您可以通過在 GRUB 命令提示符下輸入來禁用 GRUB 中的簽名檢查。您可以在此處獲得有關該主題的更多資訊(此功能相當新,官方 GRUB 網站只有線上 2.00 版的手冊,缺少此功能)。這也解釋瞭如何使用您自己的密鑰簽署您的模組和核心,並告訴 GRUB。

引用自:https://unix.stackexchange.com/questions/126094