LiberSystem je moderní český operační systém s velkými ambicemi

Každý měsíc vychází bezpečnostní aktualizace pro operační systémy, webové prohlížeče i běžné aplikace. Vývojáři v nich opravují zranitelnosti, které útočníci mohou využívat ke krádeži dat nebo získání neoprávněného přístupu k zařízení. Přestože jsou dnešní operační systémy technologicky vyspělé, absolutní bezpečnosti se stále nedaří dosáhnout. Proč tomu tak je? Jsou příliš složité, nebo tkví problém v tom, jak byly před desítkami let navrženy?

Moderní software je neuvěřitelně složitý

Operační systém není jen program, který spouští aplikace a ukládá soubory. Musí komunikovat s velkým množstvím hardwaru, spravovat síťovou komunikaci, podporovat virtualizaci, šifrování, více procesorů i rostoucí počet periferních zařízení. Každá nová funkce znamená další kód, další rozhraní a další možné místo, kde může vzniknout chyba. Čím větší systém je, tím vyšší je riziko chybovosti.

Velkou část problémů navíc způsobuje skutečnost, že dnešní operační systéme nevznikaly pro současný svět. Když se začaly vyvíjet první verze Unixu či Windows, nikdo nepředpokládal, že budou jednou řídit průmyslové provozy, cloudová datacentra či miliardy zařízení připojených k internetu. Jenže místo kompletního přepracování se systémy postupně rozšiřovaly. Přibývaly bezpečnostní mechanismy, podpora dalšího hardwaru i nové způsoby komunikace. Základní architektura přitom zůstala stejná. Výsledkem jsou systémy, které musí současně podporovat nejmodernější technologie a mít zpětnou kompatibilitu. Ta je dost omezující.

LiberSystem to přichází změnit

Jako protipól ke starým operačním systémům přichází český projekt LiberSystem. Jde o nově vyvíjený operační systém napsaný v Rustu, za kterým stojí vývojáři z týmu LiberSoft. Jejich konečným cílem je vytvořit moderní a bezpečný operační systém, který bude běžet na desktopových počítačích, serverech, v průmyslu, na IoT zařízeních, v mobilech a všude možně. Ačkoliv si na tohle ještě počkáme, protože vývoj operačního systému je nesmírně komplikovaný, už nyní vidíme základní principy, ve kterých se od stávajících operačních systémů výrazně liší.

Jedním ze základních stavebních kamenů LiberSystemu je mikrojádro. Na rozdíl od monolitických jader ponechává v privilegovaném režimu pouze minimum funkcí. Většina služeb je přesunutá do samostatných procesů. Souborový systém či správci zařízení fungují odděleně od jádra. Pokud se v nich tedy něco pokazí, neznamená to pád celého operačního systému. Problém zůstává izolovaný.

Každá komponenta navíc dostává jen nezbytná oprávnění (to platí pro aplikace i systémové služby). V tradičních systémech program přebírá oprávnění uživatele, v LiberSystemu je to daleko přísnější. I v případě bezpečnostní chyby tedy dopad zůstává dost omezený.

Stejnou filozofii využívá i vlastní souborový systém LiberFS. Není to pouze nástroj pro ukládá dat, aktivně spolupracuje s bezpečnostním modelem systému. Přístup k datům se řídí na základě explicitně udělených oprávnění, nikoliv identity uživatele. LiberFS se navíc stará o integritu dat, ani při výpadku o svá data nepřijdete.

Rozdíl spočívá také v tom, že například Linux používá filozofii „vše je text“ a „vše je soubor“ a má jednu velkou adresářovou strukturu. V LiberSystemu je to oddělené. Data na discích jsou ve vol://[název volume]/, zařízení v dev://[název zařízení]/ apod. a uživatel není limitován výpisem do souboru, ale dostává možnost více druhů reprezentací – např. pokud chci vypsat seznam diskových zařízení, dostane ho buď v běžném textovém formátu (jako je to na Linuxu), a nebo třeba v JSON či CBOR.

Nestačí jeden bezpečnostní mechanismus

Jedním z nejsilnějších aspektů LiberSystemu je skutečnost, že nespoléhá na jediné řešení. Mikrojádro odděluje systémové služby od jádra, capability-based bezpečnost omezuje oprávnění jednotlivých komponent. LiberFS se stará o bezpečný přístup k datům. Typované kontrakty LSIDL zajišťují jednoznačnou komunikaci mezi službami. Aplikace navíc běží jako sandboxované komponenty WebAssembly/WASI, takže jsou izolované od zbytku systému. Třešničkou na dortu je fakt, že je LiberSystem napsán v Rustu, který už sám o sobě pomáhá předcházet spoustě chyb souvisejících se správou paměti.

Každý z těchto mechanismů řeší jinou část problému a s jejich kombinací vzniká architektura, kde se doplňují. Když selže jedna ochrana, pořád tu jsou další mechanismy bránící rozšíření problému.

Stvořen pro vícejádrové procesory

První osobní počítače pracovaly s jedním jádrem, dnešní hardware běžně nabízí několik jader, u serverových procesorů jsou to i desítky či stovky. Operační systém musí umět efektivně rozdělovat práci mezi tato jádra. Zatímco do starých operačních systémů se podpora symetrického multiprocessingu (SMP) postupně doplňovala, LiberSystem je už od začátku navržen pro vícejádrový hardware. Plánovač úloh i klíčové datové struktury s více jádry počítají.

Co to znamená pro běžného uživatele?

Popsali jsme si tu spoustu technických věcí, ale co z toho má běžný uživatel? Přestože tato architektonická rozhodnutí působí velmi technicky, konečný dopad si užije právě uživatel.

Lepší izolace komponent znamená menší pravděpodobnost, že chyba služby způsobí pád systému. Přesnější řízení oprávnění omezuje možnosti škodlivého softwaru. Modulární architektura usnadňuje vývoj, testování i budoucí aktualizace částí systému i aplikací na něj. A kromě toho má celý model skvělou dlouhodobou udržitelnost. Čím lépe jsou jednotlivé komponenty oddělené a definované, tím snazší je systém rozvíjet.

LiberSystem má co nabídnout

LiberSystem nemá být jen nový operační systém vytvořený českými vývojáři. Jde především o pokus ukázat, že bezpečnost nemusí být přidanou vrstvou k existujícímu řešení. Může být součástí architektury už od prvního řádku kódu.

Projekt je aktuálně v začátcích, operační systém podporuje základní operace a je stále ve vývoji. Zdrojový kód je volně přístupný na GitHubu, objevíte tam i spoustu informací a technických detailů jako srovnání LiberFS s jinými souborovými systémy, konkrétní čísla o výkonu, popis LSIDL a mnoho dalšího.