Lennart Poettering ha pubblicato una proposta per modernizzare il processo di avvio delle distribuzioni Linux, mirata a risolvere i problemi esistenti e semplificare l'organizzazione di un avvio completamente verificato, che confermi l'autenticità del kernel e dell'ambiente di sistema di base. Le modifiche necessarie per l'applicazione della nuova architettura sono già incluse nel codice sorgente di systemd e riguardano componenti come systemd-stub, systemd-measure, systemd-cryptenroll, systemd-cryptsetup, systemd-pcrphase e systemd-creds.
Le modifiche proposte si riducono alla creazione di un'unica immagine universale UKI (Unified Kernel Image), che combina l'immagine del kernel Linux, il gestore per il caricamento del kernel da UEFI (UEFI boot stub) e l'ambiente di sistema initrd, utilizzato per l'inizializzazione iniziale nella fase precedente al montaggio del File System radice. Invece dell'immagine RAM-disco initrd, nel UKI può essere compreso l'intero sistema, consentendo di creare ambienti di sistema completamente verificati caricati in memoria. L'immagine UKI è formattata come un file eseguibile nel formato PE, che può essere caricato non solo tramite caricatori tradizionali, ma anche richiamato direttamente dal firmware UEFI.
La possibilità di richiamare da UEFI consente di utilizzare la verifica dell'integrità e dell'autenticità tramite firma digitale, che copre non solo il kernel, ma anche il contenuto di initrd. Nel contempo, il supporto al richiamo dai caricatori tradizionali permette di mantenere funzioni come la fornitura di più versioni del kernel e il ripristino automatico del kernel di lavoro in caso di problemi con il nuovo kernel dopo l'installazione di un aggiornamento.
Attualmente, nella maggior parte delle distribuzioni Linux, durante il processo di inizializzazione viene utilizzata una catena "firmware → shim layer firmato digitalmente da Microsoft → bootloader GRUB firmato digitalmente dalla distribuzione → kernel Linux firmato digitalmente dalla distribuzione → ambiente initrd non firmato → File System radice". L'assenza di verifica di initrd nelle distribuzioni tradizionali crea problemi di sicurezza, poiché, tra le altre cose, in questo ambiente avviene l'estrazione delle chiavi per la decrittazione del File System radice.
La verifica dell'immagine initrd non è supportata poiché questo file viene creato sul sistema locale dell'utente e non può essere firmato digitalmente dalla distribuzione, il che complica notevolmente l'organizzazione del controllo quando si utilizza la modalità SecureBoot (per firmare initrd, l'utente deve generare le proprie chiavi e caricarle nel firmware UEFI). Inoltre, l'attuale organizzazione di avvio non consente di utilizzare le informazioni dai registri TPM PCR (Platform Configuration Register) per controllare l'integrità dei componenti dello spazio utente, a parte shim, grub e il kernel. Tra i problemi esistenti viene menzionata anche la complessità dell'aggiornamento del bootloader e l'assenza della possibilità di limitare l'accesso alle chiavi nel TPM per le versioni più vecchie del sistema operativo, che sono diventate obsolete dopo l'installazione dell'aggiornamento.
Obiettivi principali dell'implementazione della nuova architettura di avvio:
- Fornire un processo di avvio completamente verificato, che copra tutte le fasi dalla firmware allo spazio utente, e che confermi l'autenticità e l'integrità dei componenti caricati.
- Collegamento delle risorse controllate ai registri TPM PCR con divisione per proprietari.
- Possibilità di calcolare in anticipo i valori PCR sulla base di kernel, initrd, configurazione e identificatore locale del sistema utilizzati durante l'avvio.
- Protezione dagli attacchi di rollback, legati al ritorno a una versione vulnerabile precedente del sistema.
- Semplificazione e aumento dell'affidabilità degli aggiornamenti.
- Supporto per gli aggiornamenti del sistema operativo che non richiedono una riapplicazione o una preparazione locale delle risorse protette da TPM.
- Prontezza del sistema per effettuare attestazioni remote per confermare la correttezza del sistema operativo caricato e delle impostazioni.
- Possibilità di associare dati riservati a determinate fasi di caricamento, ad esempio il recupero da TPM delle chiavi di crittografia per il filesystem principale.
- Fornire un processo sicuro, automatico e funzionante senza l'intervento dell'utente per lo sblocco delle chiavi per la decrittazione del disco con la partizione principale.
- Utilizzo di chip che supportano la specifica TPM 2.0, con possibilità di tornare a sistemi privi di TPM.
Fonte: opennet.ru
