V druhé části článku o přípravě podpory pro bezpečné UEFI bootování se mimo jiné mluví o tom, jak provádět uživatelské úpravy (vlastní jádro, vlastní distribuce), a co dělat, pokud nevěříte klíčům podepsaným Microsoftem.
Článek původně vyšel v blogu Matthew Garretta jako Implementing UEFI Secure Boot in Fedora. Na fedora.cz vychází se svolením autora.
Předchozí část: Implementace bezpečného bootování pomocí UEFI ve Fedoře.
A moduly?
I moduly jsou jen kód. Je to trošku komplikovanější, ale pokud vaše podepsané jádro natáhne nepodepsaný modul, může ten nepodepsaný modul vytvořit falešné prostředí UEFI a získat kompromitovaný bootloader operačního systému. Útočník bude potřebovat jen podepsané jádro a minimální iniramfs, který natáhne jeho škodlivý modul. Boot to zpomalí o pár sekund, ale jinak to nelze odhalit. X? Můžete-li přistupovat k registrům na GPU, můžete GPU přimět k přímému přístupu do paměti (DMA) za zády jádra a spustit libovolný kód. Jistě, je to komplikovanější, ale proveditelné – a pokud jsou všechny ostatní možnosti útoku uzavřeny, je to i lákavé.
Vyprodukujeme-li podepsaný kód, který lze využít k útoku na jiné operační systémy, pak mají tyto operační systémy právo nás zařadit na blacklist. To nevypadá jako dobrý výsledek.
Uživatelské úpravy
Mnoho našich uživatelů si chce kompilovat svoje vlastní jádra. Někteří chtějí dokonce sestavovat své vlastní distribuce. Podepsání našeho bootloaderu a jádra to komplikuje. Dáme k dispozici všechny nástroje, které používáme pro podepisování binárek, ale ze zjevných důvodů nemůžeme poskytnout naše klíče. Nabízí se tři postupy. První možnost předpokládá, že si uživatel vygeneruje svůj vlastní klíč a zadá ho do svého systémového firmwaru. Budeme důvěřovat všemu, co je podepsané klíčem, který je ve firmwaru. Druhá možnost je rekompilovat ten jednoduchý bootloader s vlastním klíčem, zaplatit 99 dolarů a podepsat to u Microsoftu. To by znamenalo, že by bylo možné dávat kopie dalším lidem, kteří by mohli instalovat, aniž by se museli v něčem šťourat. Třetí možnost je prostě bezpečnost úplně vypnout, takže by se počítač choval stejně jako dnes.
Ale já Microsoftu nevěřím
Systém v režimu vlastního nastavení by vám měl umožnit smazat všechny existující klíče a nahradit je svými vlastními. Pak už jde jen o nové podepsání bootloaderu z Fedory (jak jsem psal, dáme k tomu k dispozici nástroje a dokumentaci) a budete mít počítač, který nabootuje Fedoru, ale odmítne bootovat jakýkoliv kód od Microsoftu. U desktopů to možná bude trochu hůře použitelné, protože se budete muset vypořádat s UEFI ovladači grafických a síťových karet podepsanými Microsoftem – ale i to je řešitelné. Zabývám se způsoby, jak implementovat nástroj, který by umožnil automatické zařazení instalovaných ovladačů na seznam povolených [whitelist]. Pomineme-li zadní vrátka ve firmwarech, tak je možné nakonfigurovat bezpečné bootování tak, aby na počítači běžel jen software, kterému důvěřujete. Svoboda znamená volnost výběru softwaru, který chcete spouštět, ale také softwaru, který spouštět nechcete.
Zaprodali jste se
Pracujeme na tom měsíce. Není to lákavé řešení, ale funguje. Došli jsme k závěru, že všechny ostatní přístupy nefungují. Věci svobodného softwaru by nepomohlo, kdybychom nezkušeným uživatelům ztížili nebo znemožnili používání Linuxu. A i když má tento přístup své mínusy, neocitneme se aspoň tam, kde jsme byli v 90. letech. Uživatelům zůstane možnost spouštět upravený software – žádné řešení, které by to znemožnilo, bychom nepřijali.
Ale je to kompromis? Samozřejmě. Už teď není vztah mezi Fedorou a uživateli úplně rovný – obchodní známky brání distribuci grafických prvků Fedory s modifikovanými distribucemi a značná část infrastruktury Fedory je licencována tak, že někteří lidé mají větší moc než jiní. Tato věc nerovnost prohlubuje. Pro nikoho tento výsledek není ideální a opravdu mne mrzí, že se nám nepodařilo přijít s lepším řešením. Není to tak zlé, jak jsem se bál, ale ani tak dobré, jak jsem doufal.
A co ARM?
Certifikační požadavky Microsoftu pro počítače s ARM prodejcům zakazují nabízet možnost vypnout bezpečné bootování nebo nasadit vlastní klíče. Ačkoliv bychom mohli bezpečné bootování podporovat stejným způsobem, jako to plánujeme na x86, uživatelům by to bránilo ve spouštění modifikovaného softwaru, pokud by za podepisovací klíč nezaplatili. Nepovažujeme to za přijatelné, takže nemáme v plánu takovou podporu.
Naštěstí to snad nebude až takový problém, jako by byl ve světě x86. Microsoft má na trhu s ARM mnohem menší vliv, a jediné stroje, které tím budou postiženy, budou ty explicitně určené pro podporu Windows. Chcete-li provozovat Linux na ARM, nebude o hardware nouze.
Už je to na beton?
Ne. Strávili jsme přemýšlením o tom všem dlouhou dobu a jsme rádi, že to dokážeme implementovat včas pro Fedoru 18. Ale je možné, že jsme něco přehlédli nebo že se objeví nový nápad. Kdyby se nám podařilo přidat volnost uživatelům, aniž bychom museli přistoupit na nepěkné kompromisy na jiném místě, půjdeme do toho.