Questo articolo è incentrato su Secure Boot e sul modo in cui viene esteso a Linux, nello specifico a RHEL7. Inoltre vengono fornite alcune informazioni dettagliate su 'trusted kernel Boot' di Linux e le implicazioni sulle applicazioni dello spazio utente.
Secure Boot è progettato per evitare che vengano installati root kit al momento dell'avvio in-memory tramite meccanismi come la ROM facoltativa o il record di avvio principale per il caricamento nel sistema operativo, assumendo il controllo del sistema senza essere identificati dai programmi anti-malware. Questo problema è aumentato nel corso del tempo e ricopre ora un ruolo significativo nella perdita, nel danneggiamento e nel furto di dati. I malware possono insinuarsi nel caricatore del BIOS e del sistema operativo o anche tra il caricatore e il sistema operativo stesso.
UEFI è il nuovo standard di interfaccia hardware/software per le moderne piattaforme server con un'ampia serie di interfacce utente, di modularità e standard per IHV per lo sviluppo di driver di dispositivi in UEFI che funzionano in modo trasparente in un ambiente di pre-avvio, più flessibile rispetto a un ambiente BIOS legacy. L'adozione di UEFI nei sistemi operativi e nelle piattaforme è in continua crescita, supportato da molte delle versioni principali dei sistemi operativi client e server.
Gestito da Microsoft, l'organismo di normalizzazione UEFI ha identificato un modo per impedire l'installazione di rootkit di malware in fase di avvio tramite un meccanismo di caricamento ed esecuzione di file binari non modificati e noti alla piattaforma. Questo meccanismo è denominato "avvio protetto". Vedere l'articolo sull'avvio protetto di Microsoft per le informazioni relative a Microsoft e scoprire come, in modi simili, vari fornitori di sistemi operativi hanno integrato modi diversi per ottenere un avvio protetto.
Le piattaforme UEFI protette caricano solo i file binari software, come i driver della ROM facoltativa, i caricatori di avvio e i caricatori del sistema operativo, non modificati e considerati attendibili dalla piattaforma. La specifica UEFI descrive in dettaglio il meccanismo di avvio protetto qui.
La specifica UEFI definisce l'infrastruttura richiesta per l'avvio sicuro. Verrà fornita una breve introduzione sulla terminologia usata in Secure Boot, utile per coloro che desiderano comprenderla più in dettaglio.
Secure Boot non protegge il sistema mentre è in funzione e i relativi dati. Secure Boot interrompe l'avvio nel sistema operativo se un componente non viene autenticato nel processo di avvio, in modo da impedire l'esecuzione di malware nascosti nei sistemi.
Queste parole chiave sono la base di Secure Boot. La specifica UEFI offre maggiori indicazioni su queste parole chiave. Queste specifiche spiegano in dettaglio come firmare i file binari. Nello specifico, vedere la sezione 28.
Authenticated Variables: UEFI fornisce un servizio chiamato Authenticated Variables in base al quale solo un modulo certificato o un modulo di codice autentico può effettuare operazioni di scrittura, ovvero solo un modulo di codice che dispone di un certificato chiave. Le operazioni di lettura delle variabili sono autorizzate per qualsiasi parte.
Platform Key (PK): chiave della piattaforma, stabilisce relazioni di trust tra il proprietario della piattaforma e il firmware installato in NVM dal produttore della piattaforma.
KEK: Key Exchange Key, chiave che stabilisce l'attendibilità tra i sistemi operativi e il firmware della piattaforma. Le chiavi vengono installate nella piattaforma dal sistema operativo e/o da componenti di terze parti che desiderano comunicare con il firmware della piattaforma.
DB: database autorizzato contenente le chiavi pubbliche e i certificati del modulo di codice autorizzato a interagire con il firmware della piattaforma.
DBX: database in blacklist. Non sarà consentito l'avvio del caricamento di eventuali moduli di codice corrispondenti a questi certificati.
Signature: firma generata dalla chiave privata e dall'hash del binario che verrà firmato.
Certificate: certificato Authenticode contenente la chiave pubblica che corrisponde alla chiave privata utilizzata per firmare l'immagine
Il firmware della piattaforma UEFI caricherà i driver di terze parti, le ROM facoltative e i caricatori di sistemi operativi firmati dall'autorità di certificazione (CA), in questo caso Microsoft. Qualsiasi fornitore di hardware può scrivere i driver nel BIOS UEFI e ottenerne la firma da Microsoft per l'esecuzione sulla piattaforma UEFI. Gli OEM installano la parte pubblica della chiave nel database della piattaforma e il servizio protocollo del caricatore di UEFI convalida la firma del binario rispetto al database autorizzato prima che possa essere eseguito sulla piattaforma. Questa catena di autenticazione prosegue da UEFI al sistema operativo e al caricatore del sistema operativo.
In sintesi, UEFI permette di eseguire i caricatori dei sistemi operativi firmati la cui chiave è presente nel database. Questo meccanismo di chiave garantisce che il caricatore del sistema operativo o le ROM facoltative possano essere eseguiti solo se autorizzati e non modificati da una delle parti.
Figura 1: firmware della piattaforma UEFI