Lennart Poettering ha pubblicato una proposta per modernizzare il processo di avvio. Linux-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ², Π½Π°ΡΠ΅Π»Π΅Π½Π½ΠΎΠ΅ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΉ Π²Π΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡΠ΅ΠΉ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎΡΡΡ ΡΠ΄ΡΠ° ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ systemd ΠΈ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΊΠ°ΠΊ systemd-stub, systemd-measure, systemd-cryptenroll, systemd-cryptsetup, systemd-pcrphase ΠΈ systemd-creds.
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π° UKI (Unified Kernel Image), ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ°Π· ΡΠ΄ΡΠ° Linux, ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ΄ΡΠ° ΠΈΠ· UEFI (UEFI boot stub) ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ΅ Π² ΠΏΠ°ΠΌΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ initrd, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ΅ Π΄Π»Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ Π΄ΠΎ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π€Π‘. ΠΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΠ°Π·Π° RAM-Π΄ΠΈΡΠΊΠ° initrd Π² UKI ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π° ΠΈ Π²ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π²Π΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠ΅ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ. UKI-ΠΎΠ±ΡΠ°Π· ΠΎΡΠΎΡΠΌΠ»ΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ PE, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠ², ΠΈ Π½Π°ΠΏΡΡΠΌΡΡ Π²ΡΠ·Π²Π°Π½ ΠΈΠ· ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ UEFI.
La possibilitΓ di invocare da UEFI consente la verifica dell'integritΓ e della validitΓ della firma digitale, coprendo non solo il kernel ma anche il contenuto dell'initrd. Il supporto per l'invocazione da bootloader tradizionali preserva inoltre funzionalitΓ come il provisioning di piΓΉ versioni del kernel e il rollback automatico a un kernel funzionante se vengono rilevati problemi con il nuovo kernel dopo l'installazione di un aggiornamento.
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² Linux Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠ° Β«ΠΏΡΠΎΡΠΈΠ²ΠΊΠ° β Π·Π°Π²Π΅ΡΠ΅Π½Π½Π°Ρ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ Microsoft shim-ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠ° β Π·Π°Π²Π΅ΡΠ΅Π½Π½ΡΠΉ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ GRUB β Π·Π°Π²Π΅ΡΠ΅Π½Π½ΠΎΠ΅ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° ΡΠ΄ΡΠΎ Linux β Π½Π΅ Π·Π°Π²Π΅ΡΠ΅Π½Π½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ initrd β ΠΊΠΎΡΠ½Π΅Π²Π°Ρ Π€Π‘Β». ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ initrd Π² ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ΅Π΄ΠΈ ΠΏΡΠΎΡΠ΅Π³ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π€Π‘.
La verifica dell'immagine initrd non Γ¨ supportata perchΓ© questo file viene generato sul sistema locale dell'utente e non puΓ² essere firmato digitalmente dalla distribuzione. CiΓ² complica notevolmente la verifica quando si utilizza la modalitΓ SecureBoot (per verificare l'initrd, l'utente deve generare le proprie chiavi e caricarle nel firmware UEFI). Inoltre, l'attuale organizzazione di avvio non consente l'utilizzo delle informazioni del TPM PCR (Platform Configuration Register) per monitorare l'integritΓ dei componenti dello spazio utente diversi da shim, grub e kernel. Altri problemi citati includono la difficoltΓ di aggiornare il bootloader e l'impossibilitΓ di limitare l'accesso alle chiavi TPM per le versioni precedenti del sistema operativo che sono diventate obsolete dopo l'installazione dell'aggiornamento.
Gli obiettivi principali dell'implementazione della nuova architettura di avvio sono:
- Fornire un processo di avvio completamente verificato, che copra tutte le fasi dal firmware allo spazio utente e confermi la validitΓ e l'integritΓ dei componenti avviati.
- Associazione delle risorse controllate ai registri PCR TPM con divisione per proprietari.
- PossibilitΓ di precalcolare i valori PCR in base al kernel, all'initrd, alla configurazione e all'identificatore del sistema locale utilizzati durante l'avvio.
- Protezione contro gli attacchi di rollback, che comportano il ripristino di una versione precedente vulnerabile del sistema.
- Semplificare e migliorare l'affidabilitΓ degli aggiornamenti.
- Supporto per gli aggiornamenti del sistema operativo che non richiedono la riapplicazione o il provisioning locale delle risorse protette da TPM.
- Il sistema Γ¨ pronto per la certificazione remota per confermare la correttezza del sistema operativo avviabile e delle impostazioni.
- PossibilitΓ di allegare dati sensibili a fasi di avvio specifiche, ad esempio estraendo le chiavi di crittografia per il file system root dal TPM.
- Fornisce un processo sicuro, automatico e senza intervento dell'utente per sbloccare le chiavi per decrittografare un'unitΓ con una partizione root.
- Utilizzo di chip che supportano la specifica TPM 2.0, con la possibilitΓ di tornare ai sistemi senza TPM.
Fonte: opennet.ru
