- Ironclad ist ein echtzeitfähiger Unix-artiger Kernel auf Basis formaler Verifikation für allgemeine und eingebettete Umgebungen
- Formale Verifikation: eine Reihe von Prozessen und Prüfungen, die der Kernel-Code durchläuft, um Freiheit von Laufzeitfehlern (AoRTE, Absence of Runtime Errors) und die Korrektheit der Komponenten zu gewährleisten
- Geschrieben in SPARK und Ada und besteht zu 100 % aus freier Software
- Unterstützt POSIX-kompatible Schnittstellen, präemptives Multitasking, Mandatory Access Control (MAC) und Hard-Real-Time-Scheduling
- Wird unter der GPLv3-Lizenz veröffentlicht und behält eine vollständig Open-Source-Struktur ohne Firmware-Blobs bei
- Auf mehrere Plattformen portierbar; das Ökosystem wird über Distributionen wie Gloire erweitert
Überblick über den Ironclad-Betriebssystemkernel
- Ironclad ist ein echtzeitfähiger UNIX-artiger Kernel, bei dem formale Verifikation teilweise angewendet wird
- Für allgemeine Zwecke und eingebettete Systeme konzipiert
- Formale Verifikation: eine Reihe von Prozessen und Prüfungen, die der Kernel-Code durchläuft, um Freiheit von Laufzeitfehlern (AoRTE, Absence of Runtime Errors) und die Korrektheit der Komponenten zu gewährleisten
- Dafür wird SPARK verwendet, eine Teilmenge von Ada
- Der gesamte Code besteht aus freier Software
- Der Kernel bietet POSIX-kompatible Schnittstellen und unterstützt präemptives Multitasking, Mandatory Access Control (MAC) und Hard-Real-Time-Scheduling
- Bietet eine Entwicklungsumgebung ähnlich zu bestehenden UNIX-Umgebungen
- Geeignet für Systeme, die Echtzeitsteuerung erfordern
Eigenschaften als freie Software
- Ironclad wird unter der GPLv3-Lizenz als vollständiges Open Source veröffentlicht
- Der Kernel enthält keine Firmware-Blobs
- Alle Komponenten des Stacks werden als Open Source bereitgestellt
Formale Verifikation
- Nutzt die Funktionen zur formalen Verifikation der SPARK-Sprache, um Fehlerfreiheit und Korrektheit wichtiger Komponenten zu gewährleisten
- SPARK verifiziert die logische Konsistenz des Codes mathematisch, indem in Ada-Code Vorbedingungen (Pre), Nachbedingungen (Post) und Abhängigkeiten (Depends) angegeben werden
- Zu den verifizierten Bereichen gehören Kryptomodule, MAC-Systeme und Funktionen rund um die Benutzeroberfläche
Portabilität und Entwicklungsumgebung
- Ironclad wurde auf verschiedene Plattformen und Boards portiert und ist so ausgelegt, dass weitere Portierungen leicht möglich sind
- Abhängig nur von der GNU-Toolchain, wodurch einfaches Cross-Compiling möglich ist
- Dank POSIX-Kompatibilität sind Software-Portierung und Entwicklung unkompliziert
Distributionen und Ökosystem
- Das Ironclad-Projekt bietet Distributionen für verschiedene Architekturen und Boards an
- Eine repräsentative freie Open-Source-Distribution ist Gloire
- Es werden herunterladbare Distributions-Images im Tarball-Format bereitgestellt
Projektförderung und Nachhaltigkeit
- Ironclad wird als Projekt zur freien Nutzung, Erforschung und Modifikation erhalten
- Der Betrieb des Projekts hängt von Spenden und Fördergeldern ab
- Jeder Beitrag wirkt sich direkt auf die Erweiterung und Weiterentwicklung des Projekts aus
1 Kommentare
Hacker-News-Kommentare
Ein interessantes Projekt. Ich frage mich, wo die Grenzen der formalen Verifikation der Worst-Case Execution Time (WCET) liegen
Es gibt auch andere verifizierte Kernel wie seL4 und atmosphere, und man könnte wie bei genode auch eine POSIX-kompatible Schicht darüberlegen
Es gibt zudem vollständig kompatible und ausgereifte Kernel wie QNX oder VxWorks, daher ist vollständige Verifikation möglicherweise kein so großer Mehrwert
Aber Beispiele, die WCET + formale Verifikation + POSIX-Kompatibilität zugleich bieten, habe ich kaum gesehen
Im aktuellen Stadium würde ich den Reifegrad noch nicht für hoch genug halten, um es direkt für die in der Dokumentation genannten Echtzeit-Anwendungsfälle einzusetzen
seL4 ist viel schneller als Linux, aber das hier wirkt eher langsam. POSIX hat von Natur aus Mängel, und MAC ist zu komplex, um in der Praxis leicht nutzbar zu sein
Ada gehört zur Wirth-Sprachfamilie (Pascal-Familie). Bisher kannte ich als Unix-ähnlichen Kernel aus einer Wirth-Sprache nur TUNIS
TUNIS wurde in Concurrent Euclid implementiert
Außerdem wurde in den 80ern bei INRIA Sol in einem Pascal-Dialekt implementiert und bot eine Unix-kompatible Umgebung; später ging daraus Chorus hervor
Es gibt auch ein NDA-bezogenes Unternehmen namens Ironclad. Man sollte bei Markenrechtsproblemen vorsichtig sein
Trotzdem freue ich mich sehr über solche Versuche. In der Realität ist jedoch die schwächste Stelle der Sicherheit die Firmware-Ebene
Mein Traum ist Hardware wie die Computer von Framework, die verifizierte EFI-Firmware und für jede Komponente auditierte Firmware mitbringt
Ein neues OS zu bauen ist wirklich ambitioniert. Kürzlich wurde auch Radiant Computer vorgestellt, und ich frage mich, ob es noch mehr ähnliche spannende Projekte gibt
Ich hoffe, dass sich ein vollständig formal verifizierter Kernel irgendwann verbreitet
Das gesamte Linux zu verifizieren ist wohl unmöglich, aber seL4 könnte in Märkten wie Smartphones vielleicht eine Chance haben
Wenn man sich ihre Verifikations-Roadmap ansieht, ist die Bezeichnung „formale Verifikation“ übertrieben
Es gibt keine Beweise für zentrale Kernel-Eigenschaften, und das Niveau von Kerneln wie seL4 oder Tock erreicht es nicht
CuBit ist ein weiteres in SPARK/Ada geschriebenes OS
Den Quellcode gibt es auf GitHub
Aus Sicht normaler Nutzer ist ein Kernel allein nicht besonders nützlich
Ein Beispiel für ein OS, das den Ironclad-Kernel verwendet, ist Gloire
Die Dokumentation zu MAC ist gut aufbereitet (Mandatory Access Control)
Wenn man bei SPARK den Hinweis „Preis auf Anfrage“ sieht, klingt das weniger nach „freier Software“ als nach einer anderen Bedeutung von „free“