Auf bewährten Pfaden: Separation, Microkernel und Virtualisierung

Auf bewährten Pfaden: Separation, Microkernel und Virtualisierung

Unsere Security Laptops vs-top und cyber-top kombinieren einen L4-Microkernel mit Virtualisierungsfunktionen, so dass auf einer Hardware mehrere Standard-Betriebssysteme vertrauenswürdig voneinander getrennt betrieben werden können. Dieser Artikel erläutert die dahinter liegenden Prinzipien und zeigt, dass die grundlegenden Ideen schon eine lange Historie haben.

Referenzmonitor und Security-Kernel

Bereits eine der ersten größeren Forschungsarbeiten zur IT-Sicherheit, der 1972 veröffentlichte Anderson-Report, formulierte ein grundlegendes Architekturprinzip für sichere Betriebssysteme: Die Funktionen zur Kontrolle von Zugriffen auf Daten und Ressourcen sollten an einer zentralen Stelle – damals bezeichnet als Referenzmonitor – implementiert werden. Dieser Referenzmonitor darf nicht manipuliert oder umgangen werden können und muss so klein sein, dass man ihn genau untersuchen kann, um sich von seiner korrekten Funktion zu überzeugen.

Auf Basis dieser Idee wurden in den 1970er Jahren einige Betriebssysteme entwickelt, die über einen "Security Kernel" verfügten, der im privilegiertesten Hardware-Modus des Prozessors läuft und im Sinne eines Referenzmonitors alle Zugriffe auf Ressourcen kontrolliert. Diese Security-Kernel setzten jeweils eine feste, einprogrammierte Sicherheitsrichtlinie (Policy) um – typischerweise die für den Geheimschutz wichtige "no read-up/no write-down"-Policy nach Bell-LaPadula: Kein User darf Daten lesen, die eine höhere Vertraulichkeitseinstufung haben als die, für die der User ermächtigt ist, und umgekehrt dürfen User Daten nicht in solche Bereiche schreiben, die für User mit niedrigerer Ermächtigung lesbar sind.

Separation Kernel

Der britische IT-Sicherheitsforscher John Rushby hatte dann 1981 die Idee, die Policy nicht mehr fest im Kernel zu implementieren, sondern sich sichere IT-Systeme als verteilte Systeme aus mehreren, voneinander isolierten Komponenten vorzustellen, die nur über definierte Kommunikationswege miteinander interagieren dürfen.

Welche Policy durchgesetzt wird, lässt sich dann flexibel für den jeweiligen Anwendungszweck des Systems festlegen. Die Policy ergibt sich durch die Funktionen der einzelnen Komponenten sowie durch die möglichen Kommunikationsverbindungen zwischen ihnen. Will man beispielsweise sicherstellen, dass alle zwischen zwei Komponenten übertragenen Daten kontrolliert werden, fügt man einfach dazwischen eine zusätzliche Prüfkomponente ein und konfiguriert das System so, dass die beiden äußeren Komponenten nur über die Prüfkomponente miteinander kommunizieren können.

Wenn ein solches verteiltes System auf einer einzigen Hardware laufen soll, ist keine physikalische Trennung mehr gegeben. Dann muss der Kernel für die vertrauenswürdige Separation der Komponenten sorgen und die Kommunikation zwischen ihnen auf die erlaubten Verbindungen beschränken. Ein solcher Kernel wird heute Separation Kernel genannt. Die voneinander getrennten Teilbereiche aus Komponenten, heißen meist Partitionen, Domänen oder Compartments. genua verwendet den Begriff Compartment, um Verwechslungen mit Festplattenpartitionen und Netzwerkdomänen zu vermeiden.

Microkernel

Microkernel führen die Idee der Minimalisierung, die schon im Anderson-Report für den Referenzmonitor gefordert wurde, ins Extrem. Auf den Punkt brachte es Jochen Liedtke 1995: ein Microkernel soll nur solche Funktionen enthalten, die sich nicht außerhalb des Kernels implementieren lassen. Der von Liedtke nach diesem Prinzip entwickelte Microkernel L4 zeigte, dass sich durch strenge Minimalisierung und geschickte Programmierung eine sehr gute Performance erreichen lässt – was bis dahin aufgrund schlechter Erfahrungen mit früheren Microkerneln wie Mach und Chorus noch unmöglich schien.

Das Kürzel "L4" lässt sich übrigens aus dem ersten Buchstaben des Nachnamens von Jochen Liedtke und der Tatsache, dass er vorher bereits drei andere Kernel entwickelt hatte erklären. Inzwischen steht L4 für eine ganze Familie von Microkerneln, die sich am Design von Liedtke orientieren und von verschiedenen Forschungsgruppen in Deutschland und Australien entwickelt wurden.

Weil L4-Microkernel so extrem klein sind und sich daher gut evaluieren lassen, wurde in diesem Jahrtausend damit begonnen, sie in der Art eines Separation Kernels als Basis für sicherheitskritische Anwendungen einzusetzen. Ihre Möglichkeiten der Interprozesskommunikation werden dabei genutzt, um erlaubte Verbindungen zwischen den einzelnen Compartments zu definieren. Die Zugriffskontrolle wird in modernen L4-Microkerneln über sogenannte Capabilities realisiert.

Ein Programm kann genau dann eine bestimmte Operation auf einem Objekt ausführen (z. B. Lesen eines Speicherbereichs oder Ausführen einer Funktion), wenn es über eine entsprechende Capability verfügt. Capabilities werden vom Kernel verwaltet; Programme können Capabilities an andere Programme weitergeben, aber nicht verändern oder neu erstellen. Es zeigt sich, dass sich mit Capabilities Zugriffsrechte besonders feingranular und flexibel festlegen lassen.

Virtualisierung

Ein sicherer Kernel hilft in der Praxis nicht, wenn es keine Anwendungen gibt, die darauf laufen. Hier kommt schließlich die Virtualisierung ins Spiel. Ein sogenannter Virtual Machine Monitor (VMM) bietet eine Schnittstelle, die im wesentlichen realer Hardware entspricht. Vorhandene Betriebssysteme können daher in der vom VMM bereitgestellten virtuellen Maschine so laufen wie auf realer Hardware – entweder ohne Änderungen (vollvirtualisiert) oder mit Anpassungen an optimierte Schnittstellen des VMM (paravirtualisiert).

Virtualisierungslösungen wurden für IBM-Großrechner bereits in den 1970er Jahren entwickelt, für Standard-PCs aufgrund technischer Einschränkungen der Prozessoren aber erst um die Jahrtausendwende populär. Weil ein VMM es erlaubt, mehrere virtuelle Maschinen gleichzeitig zu betreiben, könnte man versuchen, einen VMM wie einen Separation Kernel einzusetzen. Jede virtuelle Maschine ist dann ein Compartment. Es bleibt dann allerdings das Problem, dass ein VMM aufgrund seiner umfangreichen Funktionalität in der Regel eine umfangreiche Code-Basis hat und daher nur schlecht evaluierbar ist. Die Vertrauenswürdigkeit solcher Lösungen bleibt daher fraglich.

Security Laptop von genua für sicheres Arbeiten unterwegSichere Separation durch den L4-Microkernel auf unseren Security Laptops

Virtualised Separation Laptop

In den Security Laptops vs-top und cyber-top kombiniert genua daher einen L4-Microkernel als Separationsplattform mit einer Standard-Virtualisierungslösung (KVM/QEMU). Der L4-Microkernel sorgt dabei für die vertrauenswürdige Separation der Compartments. Innerhalb dieser Compartments läuft dann jeweils ein Virtual Machine Monitor.

So können dort Standard-Betriebssysteme wie Microsoft Windows und GNU/Linux installiert werden, aber die Compartments bleiben durch den Microkernel strikt voneinander getrennt. Wie man sieht, stehen unsere Security Laptops damit in einer Tradition von IT Sicherheitslösungen, die mehr als 40 Jahre zurückreichen: Aktuelle Technologie, aber auf der Basis von Prinzipien, die schon vor langer Zeit als wichtig und richtig für sichere Betriebssysteme erkannt wurden.

Lesen Sie auch: Der Mikrokern als nationale Technologiekompetenz


Diskutieren Sie mit

Sie können diesen Artikel sofort ohne Registrierung als Gast-User kommentieren.

Registrieren Sie sich jetzt! Mit einem User Account genießen Sie Vorteile:
Ihr Kommentar wird sofort im genublog veröffentlicht und Sie werden über Reaktionen auf Ihre Kommentare informiert.

Bereits registrierte User gelangen hier zum Login.



Registrieren Sie sich jetzt! Mit einem User Account genießen Sie Vorteile:
Ihr Kommentar wird sofort im genublog veröffentlicht und Sie werden über Reaktionen auf Ihre Kommentare informiert.

Bereits registrierte User gelangen hier zum Login.