Lennart Poettering publikoval návrh na modernizaci procesu spouštění linuxových distribucí, zaměřený na řešení stávajících problémů a zjednodušení organizace plně ověřeného spouštění, které potvrzuje pravost jádra a základního systémového prostředí. Nezbytné změny pro implementaci nové architektury již byly zahrnuty do kódové základny systemd a týkají se takových komponentů, jako jsou systemd-stub, systemd-measure, systemd-cryptenroll, systemd-cryptsetup, systemd-pcrphase a systemd-creds.
Navrhované změny spočívají ve vytvoření jednotného univerzálního obrazu UKI (Unified Kernel Image), který spojuje obraz jádra Linuxu, zavaděč pro načtení jádra z UEFI (UEFI boot stub) a do paměti načítané systémové prostředí initrd, používané pro počáteční inicializaci ve fázi před připojením kořenového FS. Místo obrazu RAM-disk initrd může být v UKI zabalena celá systém, což umožňuje vytváření plně ověřených systémových prostředí, která se načítají do operační paměti. UKI obraz je prezentován jako spustitelný soubor ve formátu PE, který může být načten nejen pomocí tradičních zavaděčů, ale přímo vyvolán z firmwaru UEFI.
Možnost vyvolání z UEFI umožňuje využití kontroly integrity a pravosti prostřednictvím digitálního podpisu, který pokrývá nejen jádro, ale i obsah initrd. Přitom podpora volání z tradičních zavaděčů umožňuje zachovat takové možnosti, jako je dodávání několika verzí jádra a automatický návrat na funkční jádro v případě zjištění problémů s novým jádrem po instalaci aktualizace.
V současnosti v drtivé většině linuxových distribucí během inicializace probíhá řetězec „firmware → podepsaná digitálním podpisem Microsoft shim vrstva → podepsaný digitálním podpisem distribuce zavaděč GRUB → podepsané digitálním podpisem distribuce linuxové jádro → nepodepsané prostředí initrd → kořenový FS“. Nepřítomnost verifikace initrd v tradičních distribucích vytváří problémy s bezpečností, neboť mimo jiné v tomto prostředí dochází k extrakci klíčů pro dešifrování kořenového FS.
Verifikace obrazu initrd není podporována, protože tento soubor je generován na místním systému uživatele a nemůže být podepsán digitálním podpisem distribuce, což značně komplikuje organizaci kontroly při použití režimu SecureBoot (uživatel musí vygenerovat své klíče a nahrát je do firmwaru UEFI pro podepsání initrd). Kromě toho stávající organizace bootování neumožňuje aplikovat informace z registrů TPM PCR (Platform Configuration Register) pro kontrolu integrity komponentů uživatelského prostoru, kromě shim, grub a jádra. Mezi existujícími problémy se také zmiňuje komplikace při aktualizaci bootloaderu a absence možnosti omezení přístupu k klíčům v TPM pro starší verze OS, které se staly zastaralými po instalaci aktualizace.
Hlavní cíle zavedení nové architektury bootování:
- Poskytnout plně ověřený proces bootování, který pokrývá všechny fáze od firmwaru po uživatelský prostor, a potvrzuje pravdivost a integritu načítaných komponentů.
- Propojení kontrolovaných zdrojů s registry TPM PCR podle vlastnictví.
- Možnost předběžného výpočtu hodnot PCR na základě použitých při bootování jádra, initrd, konfigurace a místního identifikátoru systému.
- Ochrana před rollback útoky spojenými s návratem na starší zranitelnou verzi systému.
- Zjednodušení a zvýšení spolehlivosti aktualizací.
- Podpora aktualizací OS, které nevyžadují opakování nebo místní přípravu zdrojů chráněných TPM.
- Připravenost systému na provádění vzdálené attestation pro potvrzení správnosti načítané OS a nastavení.
- Možnost připojení citlivých údajů k určitým fázím bootování, například extrakce klíčů šifrování pro kořenový FS z TPM.
- Poskytnutí bezpečného, automatického a fungujícího bez zásahu uživatele procesu odemykání klíčů pro dešifrování disku s kořenovým oddílem.
- Použití čipů podporujících specifikaci TPM 2.0 s možností návratu na systémy bez TPM.
Zdroj: opennet.ru
