Använda digitala signaturer
19.2 Använda digitala signaturer i GRUB
GRUB:s `core.img` kan valfritt säkerställa att alla filer som senare läses från disken är täckta av en giltig digital signatur. Detta dokument täcker inte hur du säkerställer att din plattforms firmware (t.ex. Coreboot) validerar `core.img`.
Om miljövariabeln `check_signatures` (check_signatures) är inställd på `enforce`, kommer varje försök från GRUB:s `core.img` att ladda en annan fil `foo` implicit att anropa `verify_detached foo foo.sig` (verify_detached). `foo.sig` måste innehålla en giltig digital signatur över innehållet i `foo`, vilken kan verifieras med en offentlig nyckel som för närvarande är betrodd av GRUB (list_trusted, trust och distrust). Om valideringen misslyckas kan filen `foo` inte öppnas. Detta misslyckande kan stoppa eller på annat sätt påverka uppstartsprocessen.
En initial betrodd offentlig nyckel kan bäddas in i GRUB:s `core.img` genom att använda alternativet `--pubkey` till `grub-install` (Invoking grub-install).
GRUB använder GPG-liknande separata signaturer (vilket innebär att en fil `foo.sig` kommer att skapas när filen `foo` signeras) och stöder för närvarande signaturalgoritmerna DSA och RSA. En signeringsnyckel kan genereras på följande sätt:
gpg --gen-key
En enskild fil kan signeras på följande sätt:
gpg --detach-sign /path/to/file
För framgångsrik validering av alla GRUB:s underkomponenter och den inladdade OS-kärnan, måste de alla vara signerade. Ett sätt att uppnå detta är följande (efter att du redan har skapat den önskade `grub.cfg`-filen, t.ex. genom att köra `grub-mkconfig` (Invoking grub-mkconfig)):
# Redigera /dev/shm/passphrase.txt för att innehålla lösenfrasen för din signeringsnyckel 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 intern signaturtvingning kontrolleras genom att sätta miljövariabeln `check_signatures` till `enforce`. Genom att passera ett eller flera `--pubkey` alternativ till `grub-mkimage` definieras `check_signatures` implicit till `enforce` i `core.img` innan några konfigurationsfiler bearbetas.
Observera att signaturkontroll inte hindrar en angripare med (seriell, fysisk, ...) konsolåtkomst från att manuellt gå till GRUB-konsolen och köra:
set check_signatures=no
För att förhindra detta är lösenordsskydd (Authentication and authorisation) avgörande. Observera att även med GRUB:s lösenordsskydd kan GRUB själv inte hindra någon med fysisk åtkomst till maskinen från att ändra den maskinens firmware (t.ex. Coreboot eller BIOS) konfiguration för att få maskinen att starta från en annan (attackerarkontrollerad) enhet. GRUB är som bäst 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
Det är 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.