Bei der Sicherheit eines Embedded-Systems geht es in erster Linie darum, menschliches Leben zu schützen. Die Entwickler trennen sehr deutlich zwischen Safety (Betriebssicherheit, Schutz vor zufälligen Fehlern und Ereignissen) und Security (Angriffssicherheit, Schutz vor absichtlicher Manipulation). Obwohl beide Disziplinen sehr kritische Eigenschaften eines Systems bestimmen, existieren sie in sehr verschiedenen Welten. Unterschiedliche Umweltfaktoren, Problemzonen und gesetzliche Rechtsvorschriften führen zu ganz eigenen Erfordernissen, wenn es darum geht, grundlegende Technologien wie das Plattform-Betriebssystem zu wählen.

Auf einen Blick

Safety und Security klingen zwar sehr ähnlich und wollen letztlich Menschen schützen, sie brauchen aber sehr unterschiedliche Maßnahmen, um dieses Ziel zu erreichen. Lynuxworks hat daher auch zwei unabhängige RTOS entwickelt: Lynx-OS-178 und Lynx-Secure. Dank der Virtualisierung in beiden Betriebssystemen können sie aber auf einer gemeinsamen Hardware laufen und sowohl Betriebs- als auch Angriffssicherheit gewähren.

Betriebssicherheit und Angriffssicherheit widersprechen sich nicht zwangsläufig. Für die Entwicklung eines kritischen Systems ist es aber unerlässlich, das richtige Werkzeug für den jeweiligen Job zu haben. Für beide Bereiche gibt es keine einheitliche Pauschallösung, ohne den einen oder anderen speziellen Sicherheitsaspekt zu opfern. Folglich bietet zum Beispiel Lynuxworks zwei unabhängige Echtzeitbetriebssysteme (RTOS): Lynx-OS-178 für betriebssichere und Lynx-Secure für angriffssichere Plattformen.

Safety mit Lynx-OS-178

Betriebssichere Systeme müssen den Betrieb aufrechterhalten. In Avionik-, Medizin-, Fahrzeug- und SCADA-Geräten kann der kleinste Fehler einen Systemausfall hervorrufen und Menschenleben kosten. Obwohl die Robustheit im Vordergrund steht, werden diese Geräte für immer höhere Funktionalität, kleinere Abmessungen und geringere Betriebskosten weiterentwickelt. Das führt zu immer mehr und immer komplexerer Software, was wiederum die Robustheit gefährdet.

In einem Flugzeug beispielsweise befinden sich unterschiedlich kritische Funktionen auf der gleichen Plattform, um Wartungskosten für separate Plattformen zu sparen. So kann die Kabinenunterhaltung auf demselben Betriebssystem gehostet werden wie die Flugsteuerung. Beschädigt das Entertainmentsystem jetzt den Datenspeicher der Flugsteuerung, kann dies zum verhängnisvollen Totalausfall der Querruder führen.

Partitionierung

Bild 1: Das p-RTOS Lynx-OS-178 sorgt für Betriebssicherheit. Es trennt mehrere Partitionen, in denen durchaus sehr komplexe Betriebssysteme laufen können, ohne sich gegenseitig die Ressourcen streitig zu machen.

Bild 1: Das p-RTOS Lynx-OS-178 sorgt für Betriebssicherheit. Es trennt mehrere Partitionen, in denen durchaus sehr komplexe Betriebssysteme laufen können, ohne sich gegenseitig die Ressourcen streitig zu machen.Lynuxworks

Um dieser Gefahr zu begegnen, wurde eine neue Betriebssystemklasse erschaffen: so genannte partitionierende RTOS. Ein p-RTOS erzeugt isolierte Rechenzonen oder Partitionen für die Software. Alle Programme, die in einer dieser Partitionen laufen, können sich weder auf das Verhalten, noch auf die Leistung einer anderen Partition auswirken. Lynx-OS-178 (Bild 1) ist so aufgebaut. Mit ihm können unterschiedlich sicherheitskritische Funktionen gleichzeitig auf derselben Plattform ablaufen, ohne dass eine Funktion grundlegende Plattformressourcen beschädigen oder andere Timing-kritische Funktionen aushungern könnte.

Lynx-OS-178 erzielt dieses Partitionierungsframework durch Zeit-, Raum- und Ressourcen-Partitionen:

  • Zeit-Partitionierung teilt jeder Partition ein striktes Budget an CPU-Rechenzeit zu. Mit diesen CPU-Budgets, einem Systemzeitgeber, Timer-Interrupt und einem Ablaufplan steuert Lynx-OS-178 die Reihenfolge, in der eine Partition auf der CPU startet und die CPU-Zeit, die der Software in jeder Partition zusteht. Versucht eine Funktion, ihre Budgets zu überschreiten, wird ein Timer-Interrupt ausgelöst. Lynx-OS-178 übernimmt daraufhin die Steuerung der CPU, kommt der fehlerhaften Instruktion zuvor und erlaubt die Ausführung anderer Funktionen innerhalb der nachfolgenden Partition.
  • Raum-Partitionierung teilt jeder Partition ein eigenes Speicherkontingent zu (etwa RAM und Stack). Lynx-OS-178 nutzt hierfür die Memory Management Unit (MMU) der CPU.
  • Ressourcen-Partitionierung teilt jeder Partition einen eindeutigen Zugriffsmodus (lesen/schreiben, nur schreiben, nur lesen, gar keine) auf die Ressourcen zu (Interrupts und Ein-/Ausgänge). Lynx-OS-178 erzwingt die Einhaltung dieser Zugangssteuerung.

Zertifizierung

Lynx-OS-178 ist nach den Richtlinien zur Softwareentwicklung im sicherheitskritischen Bereich der Luftfahrt DO-178B benannt. Für Softwarekomponenten definiert DO-178B so genannte Design Assurance Levels (DAL) in den Stufen A (höchstes) bis E. Die Komponenten werden zur Sicherheitslevel-Bewertung einer Prozess- und Gefahrenanalyse unterzogen. Je höher der Level, desto strenger wird die Software-Korrektheit verifiziert, was Kosten und Zeitaufwand erheblich in die Höhe treibt.

Mit der Partitionierungsplattform Lynx-OS-178 können verschieden kritische Bestandteile einer Software einzeln in isolierte Partitionen platziert sein. Dies erhöht die Systemzuverlässigkeit, vereinfacht die Systemarchitektur und reduziert letztendlich die Kosten für Systementwicklung und Zertifizierung.

Security mit Lynx-Secure

Angriffssichere Systeme sorgen dafür, dass nur autorisierte Zugriffe auf Systeminformation möglich sind. Die kleinste Schwachstelle in sicherheitsspezifischen Funktionen stellt eine ernste Bedrohung dar. Bislang haben zum Beispiel Regierungen ihre sensiblen Informationen in vollständig isolierten Infrastrukturen geschützt. Da sich Regierungsorganisationen ständig wandeln, sind die Zugriffsregeln aber entsprechend komplex und bei verschiedenen Sicherheitsstufen wären getrennte Infrastrukturen nötig.

Auf diese Anforderung hin entwickelten in den USA Regierung, Wirtschaft und die akademische Welt die Spezifikation Multiple Independent Levels of Security: MILS sieht vor, dass ein einzelnes Informationssystem gleichzeitig Daten verschiedener sicherheitsrelevanter Bereiche verarbeiten darf, während die Domänen isoliert bleiben. Eines der ersten MILS-Demosysteme war ein Anwender-PC, der als Host mehrerer verschieden sicherheitskritischer Betriebssysteme fungierte. Damit war der Zugang zu unterschiedlich sicherheitskritischen Daten von einem einzigen Gerät aus möglich, statt wie bisher mehrere Maschinen zu benötigen.

Sauber getrennt

Bild 2: Der Separation Kernel und Hypervisor Lynx-Secure folgt dem MILS-Ansatz. Er sorgt dafür, dass keine Informationen zwischen den Sicherheitsdomänen durchsickern.

Bild 2: Der Separation Kernel und Hypervisor Lynx-Secure folgt dem MILS-Ansatz. Er sorgt dafür, dass keine Informationen zwischen den Sicherheitsdomänen durchsickern.Lynuxworks

Grundlage der MILS-Architektur ist ein Separation-Kernel: Dieses RTOS steuert die Plattformressourcen. Es erschafft isolierte Rechenpartitionen, um sicherzustellen, dass alle Informationen, die innerhalb einer Partition verarbeitet werden, auch in dieser bleiben und nicht irrtümlich durch Seitenkanäle aussickern. Der MILS-Separation-Kernel Lynx-Secure (Bild 2) beherrscht Para- und Voll-Virtualisierung von Betriebssystemen. Dies macht ihn gleichzeitig auch zum Separation-Kernel und Hypervisor. Der Administrator zieht schützende Grenzen um die sicherheitskritischen Komponenten, die den Informationsfluss zwischen diesen Grenzen kontrollieren. Innerhalb der geschützten Eingrenzung kann Software laufen, die so einfach ist wie ein Message-Guard oder so komplex wie eine voll virtualisierte Variante von Microsoft Windows 7. Das Sicherheitsgerüst bleibt in beiden Fällen gleich.

Ähnlichkeiten von Safety und Security

Die Separation bei Lynx-Secure erfolgt ähnlich wie bei Lynx-OS-178 durch Zeit-, Raum- und Ressourcen-Partitionierung zwischen sicherheitsrelevanten Bereichen. Dennoch stehen beide Echtzeitbetriebssysteme nicht in Beziehung zueinander: Nach dem Prinzip, dass Sicherheit von Grund auf eingeplant werden muss, hat Lynuxworks das sicherheitskritische System Lynx-Secure von Grund auf neu konstruiert. Dessen Architektur geht davon aus, in schädlichen Umgebungen zu operieren. Spezielle Mechanismen schützen daher aktiv die Integrität der sicherheitswahrenden Funktionen.

Lynx-Secure stellt sicher, dass jeder Code mit privilegiertem Zugriff auf Plattformressourcen auch tatsächlich ausreichend und wirklich notwendig ist, um Gastpartitionen zu hosten, die Separation aufrechtzuerhalten und den Informationsfluss zu steuern. Dies unterscheidet sich erheblich von der Bauweise des Lynx-OS-178 mit privilegierten Funktionalitäten wie Netzwerkstack, Gerätetreiber und Echtzeit-Multithreading-API. Dadurch, dass nur der reine Separation-Kernel und die Virtualisierungslogik implementiert werden, schränkt Lynx-Secure die Angriffsoberfläche drastisch ein.

Lynx-Secure wurde entwickelt, um die Zertifizierung für das strengste Common Criteria Evaluation Assurance Level, EAL 7, zu erhalten. Das bedeutet, dass die sicherheitsspezifischen Komponenten gemäß den im Separation Kernel Protection Profile (SKPP) definierten Sicherheitsanforderungen nachweislich korrekt sind. Für die EAL-7-Einstufung wurde Lynx-Secure so kompakt und einfach wie möglich konstruiert, um eine mathematisch-formale Verifikation zu ermöglichen.

Kein Widerspruch

Angriffssicherheit gewinnt für betriebssicherheitskritische Systeme an Bedeutung. Je höher integriert die Systeme sind und je mehr Fernsteuerung es gibt, desto gefährdeter sind sie. Informationssicherheit wird zur Notwendigkeit. In dieser Situation kann man Lynx-Secure und Lynx-OS kombinieren: Lynx-Secure als Basis errichtet Schutzgrenzen um vollständige betriebssicherheitskritische Systeme und hostet mehrere Instanzen von Lynx-OS-178. Damit sind Safety und Security gleichermaßen erfüllbar.