Abbildung 1: Je nach Funktion sind unterschiedliche ASIL-Level erforderlich. D ist der stringenteste
Bei der IT-Sicherheit geht es dabei vor allem darum, kritische Systeme vor unerlaubten Zugriffen zu schützen und damit vor Manipulation, aber auch vor dem unbefugten Zugriff auf personenbezogene Daten. Auch in der Security gibt es internationale Standards für sicherheitskritische Systeme. Der weltweit wichtigste ist die ISO 15408, besser bekannt als CC oder Common Criteria (for information technology security evaluation) für die Prüfung und Bewertung der Sicherheitseigenschaften von IT-Produkten. Er führt sieben Evaluation Assurance Levels (EAL 1-7) für die Vertrauenswürdigkeit ein. Im Bereich der Automobilindustrie arbeitet die SAE (ehemals Society of Automotive Engineers) derzeit an einer Reihe von Standards zu unterschiedlichen Aspekten von IT-Systemen in Automobilen und führt dabei im 2016 veröffentlichten Draft J3061 angelehnt an die Safety Integrity Levels auch den Begriff ACsIL (Automotive Cybersecurity Integrity Level) ein. In der ISO wird zudem an der ISO 21434 (Road Vehicles - Cybersecurity Engineering) gearbeitet. Es steht zu erwarten, dass nach Verabschiedung dieser Standards für viele Produkte auch eine entsprechende Zertifizierung erforderlich werden wird. Schon heute besitzen einige Produkte eine Zertifizierung nach Common Criteria. Dies bedeutet jedoch nicht automatisch, dass sie deswegen sicher sind - es muss auf jeden Fall detailliert darauf geachtet werden, was hier genau zertifiziert wurde.
Safety und Security lassen sich am einfachsten gewährleisten, wenn sämtliche IT-Systeme strikt voneinander getrennt sind und sich daher nicht gegenseitig beeinflussen können. Doch heute werden in Fahrzeugen immer mehr sicherheitskritische und unkritische Anwendungen betrieben, und um Kosten und Gewicht zu sparen, dient eine Hardware als Plattform für unterschiedlichste Funktionen auch verschiedener Kritikalitätsstufen. Dieser Trend birgt erhebliche Risiken. Erhält beispielsweise ein Angreifer Zugriff auf ein vergleichsweise unsicheres Entertainment-System auf Basis von Android und kann er über dieses Einfallstor auch auf sicherheitskritische Systeme zugreifen, hat das unter Umständen sehr gravierende Konsequenzen. Es ist daher unabdingbar, Anwendungen mit unterschiedlichen Kritikalitäts-Levels strikt voneinander zu trennen, auch wenn sie auf der gleichen Hardware laufen. Hier kann die Automobilindustrie von den Erfahrungen in der Luft- und Raumfahrt mit ihren extremen Anforderungen profitieren, in der sich bereits Hypervisor-basierte Lösungen durchgesetzt haben.
Mehrere Partitionen statt multipler CPUs
Ein Hypervisor kann auf einem Controller unterschiedliche Funktionen in mehreren Partitionen hosten, die bisher separate CPUs erforderten. Allerdings muss dabei absolut sichergestellt werden, dass die Software, die die Hypervisor-Funktionalität zur Verfügung stellt, tatsächlich eine strikte Trennung zwischen den Partitionen garantiert. Ansonsten hat man zwar eine einheitliche Hardware-Plattform, aber möglicherweise Interaktionen zwischen kritischen und nicht kritischen Anwendungen wie etwa Audiosystem und Bremsen. Eine Zertifizierung nach ASIL-D und ISO 26262 gibt hier die Sicherheit, dass Funktionen in unterschiedlichen Partitionen tatsächlich so voneinander getrennt sind, als liefen sie auf unterschiedlichen CPUs.
Insbesondere auf Multicore-Systemen ist der Einsatz von Hypervisoren grundsätzlich eine geeignete Möglichkeit, den Herausforderungen beim System-Design zu begegnen. Primär werden solche CPUs zwar aus Performance-Gründen verwendet, doch sie können auch die verlangte Trennung einzelner Funktionen unterstützen. Allerdings ist die Zertifizierung von Multicore-Systemen sehr komplex, und viele zertifizierte Systeme nutzen tatsächlich nur einen Kern. Werden allerdings unterschiedliche Funktionen in einer einzelnen Software gebündelt, die unter einem Echtzeit-Betriebssystem auf nur einem CPU-Kern läuft, können sehr leicht Interferenzen zwischen den Funktionen auftreten – die strikte Trennung ist nicht gewährleistet. Beispielsweise kann die Auswirkung einer Anwendung auf das Laufzeitverhalten einer anderen Anwendung zu Sicherheitsproblemen führen, etwa das Überschreiten von Fristen bei Echtzeitanwendungen. Auf ähnliche Weise können Timing-Effekte aufgrund der gemeinsamen Nutzung der Systemressourcen, wie z.B. Caches und Speicherbusse, zu verborgenen Informationskanälen führen, die gegen die Vertraulichkeitsanforderungen der Anwendung verstoßen. Diese potentiellen Probleme rühren vor allem daher, dass die meisten Hypervisoren nachträglich einem RTOS (Real Time Operating System) zugefügt werden, das vom eigenen Design her eine solche Trennung nicht unterstützt. Gerade in sicherheitskritischen Anwendungen ist es aber wichtig, dass bereits das RTOS speziell für die getrennte Ausführung unterschiedlicher Funktionen ausgelegt ist, es also vom Design her eher ein Separation Kernel ist denn ein simples RTOS.
Räumliche und zeitliche Trennung
Ein solcher Separation Kernel ermöglicht die räumliche und zeitliche Trennung zwischen Anwendungen und stellt die Partitionen für die Ausführung von Benutzeranwendungen bereit. Die zeitliche Trennung erfolgt dabei durch Zeitpartitionierung, bei der die CPU-Zeit während der Konfiguration in Zeitpartitionen aufgeteilt wird. Räumliche Trennung erfolgt durch Ressourcenpartitionierung, bei der die Systemressourcen wie Hauptspeicher, Dateien, Geräte, sichere Kommunikationskanäle und Kerne partitioniert und Containern, den so genannten Ressourcenpartitionen, statisch zugewiesen werden. Benutzeranwendungen werden dabei im Kontext einer Ressourcenpartition ausgeführt.
Ein Beispiel für eine Softwareumgebung mit strikter Trennung von Anwendungen ist PikeOS von SYSGO, das sich bereits in der Flugzeugindustrie bewährt hat. PikeOS bietet sowohl ein volles Echtzeit-Betriebssystem (Hard RTOS) als auch ein Virtualisierungs- und Partitionierungssystem, um die besonderen Anforderungen von Anwendungen in der Automobilindustrie zu unterstützen (Abbildung 2).