Using digital signatures in GRUB

Från Wiki.linux.se
Version från den 23 september 2024 kl. 07.19 av Admin (diskussion | bidrag) (→‎9.2 Använda digitala signaturer i GRUB)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

GRUB:s core.img kan valfritt tillhandahålla kontroll att alla filer som därefter läses från disk täcks av en giltig digital signatur. Detta dokument täcker inte hur man säkerställer att din plattforms firmware (t.ex. Coreboot) validerar core.img.

Om miljövariabeln check_signatures (se check_signatures) är satt till enforce, kommer varje försök av GRUB:s core.img att ladda en annan fil foo implicit att anropa verify_detached foo foo.sig (se verify_detached). foo.sig måste innehålla en giltig digital signatur över innehållet i foo, som kan verifieras med en offentlig nyckel som för närvarande är betrodd av GRUB (se list_trusted, se trust och se distrust). Om valideringen misslyckas kan filen foo inte öppnas. Detta fel kan stoppa eller på annat sätt påverka uppstartsprocessen.

En initial betrodd offentlig nyckel kan bäddas in i GRUB:s core.img med alternativet --pubkey till grub-install (se Använda grub-install).

GRUB använder GPG-stil separata signaturer (vilket innebär att en fil foo.sig kommer att skapas när filen foo signeras), och stödjer för närvarande DSA- och RSA-signeringsalgoritmerna. En signeringsnyckel kan genereras på följande sätt:

gpg --gen-key

En enskild fil kan signeras så här:

gpg --detach-sign /path/to/file

För att lyckas validera alla GRUB:s delkomponenter och den laddade OS-kärnan måste de alla vara signerade. Ett sätt att uppnå detta är följande (efter att redan ha skapat den önskade filen grub.cfg, t.ex. genom att köra grub-mkconfig (se Använda grub-mkconfig):

# Redigera /dev/shm/passphrase.txt för att innehålla din signeringsnyckels lösenfras
for i in `find /boot -name "*.cfg" -or -name "*.lst" -or \
  -name "*.mod" -or -name "vmlinuz*" -or -name "initrd*" -or \
  -name "grubenv"`;
do
  gpg --batch --detach-sign --passphrase-fd 0 $i < \
    /dev/shm/passphrase.txt
done
shred /dev/shm/passphrase.txt

Se även: check_signatures, verify_detached, trust, list_trusted, distrust, load_env, save_env.

Observera att signaturkontroll styrs internt genom att sätta miljövariabeln check_signatures till enforce. Om en eller flera --pubkey-alternativ skickas till grub-mkimage definieras implicit check_signatures till enforce i core.img innan några konfigurationsfiler bearbetas.

Observera att signaturkontroll inte förhindrar en angripare med (seriell, fysisk, ...) konsolåtkomst från att manuellt hoppa till GRUB-konsolen och köra:

set check_signatures=no

För att förhindra detta är lösenordsskydd (se Autentisering och auktorisation) nödvändigt. Observera att även med lösenordsskydd i GRUB kan GRUB självt inte hindra någon med fysisk åtkomst till maskinen från att ändra maskinens firmware (t.ex. Coreboot eller BIOS) konfiguration för att få maskinen att starta från en annan (angriparkontrollerad) enhet. GRUB är i bästa fall bara en länk i en säker uppstartskedja.

Sidslut

Orginalhemsidan på Engelska :https://www.gnu.org/software/grub/manual/grub/html_node/Using-digital-signatures.html#Using-digital-signatures

GNU GRUB Manual


Det här är en maskinöversättning av GNU-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp Stockholm som har sponsrat Linux.se med webserver.