Product SiteDocumentation Site

3.2. Shim

Fedora usa un loader di primo stadio chiamato shim il quale incorpora un certificato CA auto-firmato. Questo CA è poi usato per verificare il bootloader GRUB 2 (versione UEFI, programma PE/COFF firmato con AuthentiCode). Prima dell'avvio del kernel, GRUB 2 richiama shim per verificare la firma AuthentiCode del kernel.
Oltre alla chiave Microsoft, shim supporta un certificato sicuro addizionale fornito dal proprietario ed un meccanismo per disabilitare la verifica della firma. L'informazione è mantenuta nelle variabili UEFI, non può essere scritta dopo l'avvio del sistema operativo. Shim contiene un controllo di presenza fisica e chiede conferma prima di aggiornare le impostazioni memorizzate nelle variabili UEFI.
In Fedora ci sono due pacchetti alla base di shim. Quello chiamato "shim" è il risultato della compilazione del codice sorgente e non avvia il sistema siccome non è firmato. La compilazione serve ad incorporare la firma nel pacchetto shim; il risultante pacchetto shim-firmato poi contiene il file binario firmato che permette l'avvio del sistema.
Il pacchetto shim contiene anche una blacklist delle chiavi corrotte conosciute o dei binari che non dovrebbero essere avviati. La blacklist è un file chiamato dbx.esl. Attualmente è incorporata nel binario shim durante la costruzione del pacchetto. Impedisce l'avvio di apposite versioni di grub. Sviluppi futuri potrebbero prevedere l'inserimento della blacklist nella memeoria UEFI. Nella sua forma corrente, l'aggiornamento della lista non fornirà ulteriore sicurezza come è possibile fare un downgrade del pacchetto shim per non aggiornarla volutamente. Se la blacklist viene memorizzata nel BIOS, sopravviverebbe al downgrade.
Esiste anche una blacklist mantenuta e firmata da Microsoft, memorizzata nel BIOS. Microsoft fornirà tale lista a Fedora Project per includerla. In base ad essa è possibile avere degli aggiornamenti periodici del pacchetto shim-firmato che non cambieranno il binario di shim. Il file della blacklist non esiste ancora siccome non c'é niente da listare. Probabilmete verrà pacchettizzata singolarmente per evitare aggiornamenti continui del pacchetto shim-firmato.
I dettagli sulla blacklist devono arrivare da Microsoft. Noi non siamo in grado di aggiornarla autonomamente. I dati sono firmati con una chiave Microsoft che impedisce l'aggiornamento non autorizzato della lista. Microsoft ha dichiarato che la blacklist serve ad impedire che il computer utilizzi chiavi compromesse e non venga esposto a vulnerabilità conosciute.
In entrambi i metodi, shim, GRUB ed il kernel verificheranno che sia attiva la "modalità User", così come descritto da UEFI, che prevede il Secure Boot abilitato, e in base a questo rilevamento convaliderà la fase successiva con una chiave crittografica pubblica Fedora-specifica prima dell'avvio. La validazione è fatta tramite shim per GRUB, quest'ultimo richiamerà shim per validare il kernel. Una volta avviato, il kernel verificherà a sua volta che sia attiva la modalità Secure Boot, iniziando una serie di controlli:
Questo validerà la linea di comando di boot per permettere solo determinate impostazioni kernel
verificherà la firma dei moduli kernel prima di caricarli e si rifiuterà di caricarli se sono senza firma o firmati con una firma non trovata nelle variabili del key store UEFI (vedi note)
rifiuterà ogni operazione dallo spazio utente che possa causare una DMA
Informazioni addizionali su shim possono essere trovati sul repository di sviluppo di shim.

Note

Altre distribuzioni hanno scelto di non richiedere moduli del kernel firmati nella loro implementazione del Secure Boot. Fedora crede che per il pieno supporto a Secure Boot questo sia necessario. Stiamo lavorando per limitare l'impatto di questa scelta, pur continuando a non permettere l'esecuzione dei moduli non fidati.