SeL4
seL4 (Secure Embedded L4) je svobodné jádro operačního systému, přesněji mikrojádro třetí generace, zaměřené na vysokou bezpečnost a spolehlivost.

Mikrojádro seL4 bylo vytvořeno jako pokračovatel revolučního mikrojádra druhé generace L4 německého počítačového vědce jménem Jochen Liedtke.

Mikrojádro L4 bylo vytvořeno zejména s důrazem na co nejvyšší výkon. Také mikrojádro seL4 bylo vytvořeno s důrazem na vysoký výkon, avšak zároveň s přihlédnutím k otázkám bezpečnosti a formální bezchybnosti. Důležité zlepšení také spočívá v lepší přenositelnosti, a to nejen uživatelských serverů (poskytovatelů služeb mikrojádra běžících v uživatelském prostoru), ale též vlastního mikrojádra.

Historie

První generace mikrojader 
Operační systém typu mikrojádro vznikl jako reakce na neustálé zvětšování klasických monolitických operačních systémů, u kterých tak začal být obtížný další vývoj a údržba. Návrh mikrojádra proto odpovídá teorii strukturovaného programování. Výhoda mikrojádra spočívá v rozdělení systému na menší části (uživatelské servery a vlastní mikrojádro), což přináší vyšší přehlednost kódu.

Nevýhodou mikrojádra je nutnost častější změny kontextu při systémovém volání mezi uživatelským procesem, mikrojádrem a obsluhujícími servery a s tím související ztráty výkonu.

Špatný výkon první generace mikrokernelů, jako byl zejména Mach 3, vedl v polovině devadesátých let 20. století množství vývojářů k redefinici celého konceptu mikrokernelu.

Asynchronní vnitro-kernelový koncept meziprocesové komunikace (IPC) mikrokernelu Mach 3, používající velkou vyrovnávací paměť (buffer), se ukázal být jedním z hlavních důvodů pro jeho špatný výkon. Toto přimělo vývojáře na Machu založených operačních systémů k přenesení některých časově kritických komponent, jako jsou ovladače (systém GNU Hurd) a souborové systémy, zpět do jádra, často až k přechodu k hybridnímu jádru (systémy macOS, NT). I když to poněkud zmírnilo problémy s výkonem, je to jasné porušení minimalistického konceptu opravdových mikrokernelů (a plýtvá jejich hlavními výhodami).

Detailní analýza úzkého hrdla operačního systému Mach indikuje, že (jakékoliv další) požadavky na mikrokernel, dělají problém příliš složitým: kód meziprocesové komunikace (IPC), jehož většina je v jádře, představuje špatnou lokalizaci; což ve výsledku znamená příliš mnoho neúspěšných čtení cache CPU (musí se číst z mnohem pomalejší paměti). Tato analýza vedla k závěru, že efektivní mikrokernel musí být dostatečně malý, aby většina výkonu kritického kódu byla k dispozici v cache první úrovně (pokud možno malý zlomek zmíněné cache).

Druhá generace mikrojader 
Po zkušenosti s použitím svého mikrokernelu L3, dospěl Liedtke k závěru, že i několik dalších konceptů Machu bylo špatných (vizte též). Prostřednictvím zjednodušení konceptu mikrokernelu ještě vynalezl první mikrokernely L4 (první vlna mikrojader druhé generace), které byly od počátku primárně navrženy pro vysoký výkon. Za účelem vyždímat každý kousek výkonu jádra, byly celé napsány v assembleru a jejich meziprocesová komunikace (IPC) tak byla 20krát rychlejší než v případě Machu.

První vlna mikrojader druhé generace, je reprezentována zejména originálním systémem L4, který byl velice pečlivě vytvořen Jochenem Liedtkem v assembleru, což bylo důležité zejména pro vysoký výkon a rychlost tohoto systému. Ale brzy se ukázalo, že by bylo vhodné, aby nejen uživatelské servery, ale též vlastní mikrojádro, bylo co nejlépe přenositelné na jiné systémy, s jiným hardware a jinými CPU.

Proto se objevila druhá vlna (druhé generace mikrojader), která dala vzniknout mikrojádrům napsaným z větší části ve vyšších programovacích jazycích, zejména jako jsou programovací jazyky C a C++, a to mikrojádro L4Ka::Hazelnut a zejména L4Ka::Pistachio na univerzitě v Karlsruhe, a Fiasco na Technické univerzitě Drážďany.

Třetí generace mikrojader 
Další vývoj přinesl potřebu třetí generace mikrojader, s vysokou bezpečností a dostupností, což vyústilo v požadavek formální (matematicky ověřené) bezchybnosti zdrojového kódu mikrojader. Tato nová situace vedla k vývoji třetí generace mikrojader, jako jsou seL4 a pozdější verze Fiasco (Fiasco.OC, které je součástí systému L4Linux).

V roce 2006 tedy zahájila skupina NICTA programování třetí generace mikrokernelu, který se jmenuje seL4, s cílem poskytnout základ pro vysoce bezpečné a spolehlivé systémy, vhodné pro uspokojování bezpečnostních požadavků, jako jsou ty z Common Criteria i mimo ně. Od začátku byl vývoj zaměřený na formální verifikaci jádra. Pro usnadnění splnění někdy vzájemně si odporujícími požadavků na výkon a verifikaci, tým použil middle-out softwarový proces, počínaje spustitelnou (modelovou) specifikací napsanou v jazyce Haskell. seL4 používá zabezpečení založené na způsobilosti (Capability-based access control) pro umožnění formální (matematické) kontroly ohledně přístupnosti objektů. Poté je však tento modelový kód v Haskellu (přibližně 5700 řádek zdrojového kódu) přepsán do jazyka C (přibližně 8700 řádek) a assembleru (přibližně 600 řádek).

Bezpečnost 
seL4 je vyvíjen se zvláštním přihlédnutím k otázkám bezpečnosti a formální bezchybnosti mikrojádra organizací NICTA a dalšími vývojáři. Právě kvůli těmto vlastnostem byl vytvořen vývojový model, který umožňuje ověřit zdrojový kód ve funkcionálním jazyce Haskell pomocí formálních (matematických) důkazů.

Výhoda mikrojader ověřených formálním důkazem 
Ověření bezpečnosti operačních systémů pomocí matematického důkazu funguje i proti útokům využívající strojové učení. Ukazuje se, že útočník je ve výhodě, pokud útočí na komplikovaný systém, který navíc současnými prostředky nelze matematicky ověřit. Více zveřejňuje na svém blogu spoluautor seL4, Gernot Heiser.

Architektura 
Operační systém seL4, na rozdíl od původního operačního systému L4, implementuje jako uživatelský server navíc i správu paměti mikrojádra. Tento uživatelský server se tak stává nezbytnou součástí mikrokernelu. Výsledkem však je další snížení nezbytného počtu systémových volání a neúspěšných čtení paměti cache.

Open Source 
29. července 2014, NICTA a General Dynamics C4 Systems uvedly, že seL4 s příslušnými důkazy bylo uvolněno jako otevřený software. Zdrojové kódy jádra a matematické důkazy (o jeho správnosti a bezpečnosti) byly uvolněny pod licencí GPLv2 a většina knihoven a nástrojů byla uvolněna pod 2-klauzulovou BSD licencí.

Odkazy

Reference

Související články

GNU – GNU GPL (licence) 
 Free Software Foundation (FSF) – organizace (nadace), která zastřešuje Projekt GNU
 Projekt GNU – projekt původně Richarda Stallmana, který má za cíl vyvinout kvalitní a svobodný operační systém – GNU
 GNU GPL – licence napsané Richardem Stallmanem a dalšími, k uskutečnění cílů Projektu GNU
 GNU Hurd – svobodný operační systém založený na mikrokernelu GNU Mach, vyvíjený Projektem GNU
 KataOS – svobodný operační systém od Google založený na mikrokernelu seL4
 Linux (jádro) – jádro svobodného operačního systému, vyvíjené Linux Foundation; modulární monolitické jádro
 Linux-libre – jádro svobodného operačního systému, vyvíjené dcerou FSF (FSFLA), fork Linux (jádro); modulární monolitické jádro

BSD – BSD licence 
 Berkeley Software Distribution – obchodní organizace při University of California, Berkeley, která vyvinula licenci BSD a používala pro práce nad operačním systémem BSD Unix.
 BSD licence – licence organizace BSD, která používala pro BSD Unix a odvozená díla
 FreeBSD – svobodný operační systém, který vznikl z BSD Unixu; modulární monolitické jádro
 DragonFly BSD – svobodný operační systém, fork FreeBSD 4.8 s hybridním jádrem
 NetBSD – svobodný operační systém, který vznikl z BSD Unixu (před FreeBSD); modulární monolitické jádro
 OpenBSD – svobodný operační systém, fork NetBSD zaměřený na bezpečnost; monolitické jádro
 MINIX 3 – svobodný operační systém; mikrojádro navržené a vytvořené profesorem jménem Andrew S. Tanenbaumem; kompatibilita s NetBSD

Související systémy 
 Fiasco.OC - mikrojádro třetí generace, pokračovatel L4, vytvořené Technickou univerzitou Drážďany. Více vizte L4Linux.
 SELinux - bezpečnostní rozšíření systému Linux
Související témata
 prof. Jochen Liedtke - autor původního návrhu L4, některé jeho názory a myšlenky
 Formální verifikace - moderní metoda ověřování kvality software
 Bezpečnostně zaměřený operační systém

Další čtení 
 Jochen Liedtke, Ulrich Bartling, Uwe Beyer, Dietmar Heinrichs, Rudolf Ruland, Gyula Szalay. Two years of experience with a μ-Kernel based OS, ACM Press 1991
  (on L4 kernel and compiler)
 Cheng Guanghui, Nicholas Mc Guire. L4/Fiasco/L4Linux Kickstart, Distributed & Embedded Systems Lab – Lanzhou University
   Evolution of L4 design and implementation approaches

Externí odkazy 
  Google oznámil nový operační systém KataOS
  Gernot Heiser's web page
  Gernot Heiser's blog
  Why No Operating System Is Safe
  L4Hq: L4 headquarters, community site for L4 projects
  The L4 microkernel family: Overview over L4 implementations, documentation and projects
  Official TUD:OS Wiki
  L4Ka: Implementations L4Ka::Pistachio and L4Ka::Hazelnut
  UNSW: Implementations for DEC Alpha and MIPS architecture
  OKL4: Commercial L4 version from Open Kernel Labs
  NICTA L4: Research Overview and Publications
  Genode Operating System Framework, an offspring of the L4 community
  Zdrojové kódy seL4 otevřeny
  Vyvinutý operačný systém s matematickým dôkazom o svojej bezpečnosti

Operační systémy
Mikrojádra
Systémový software
Svobodný software
Svobodný software naprogramovaný v Haskellu
Software v C