Zur Verdeutlichung dieses Prinzips ist es sinnvoll, sich auf zwei Beispiele zu konzentrieren, die Separation unterschiedlicher Bereich und die Anwendung sicherer Codierpraktiken.
Bereichsseparation und Hochrisikobereiche
Es ist nicht praktikabel, die Sicherheit in sämtlichen Teilen aller Systeme zu maximieren, besonders wenn zum Beispiel ein Linux-basiertes Betriebssystem einer Head Unit im Spiel ist, mit einem enormen Umfang sowie Software unbekannter Herkunft. Pragmatischer ist es dagegen, die Aufmerksamkeit gezielt auf die besonders gefährdeten Bestandteile des Systems zu richten, wie es der »Threat Analysis and Risk Assessment«-Prozess der Norm SAE J3061 skizziert. Einige Beispiele für solche Hochrisikobereiche sind:
Betrachtet man das Prinzip im Vergleich zu einem System, in dem die Technik der Bereichsseparation angewandt wird – in diesem Fall mit einem Separations-Kernel oder Hypervisor (Bild 1) –, dann sieht man, dass es nicht schwierig ist, in diesem Szenario Hochrisikobereiche auszumachen.
Ein Beispiel ist die Gateway-Virtual-Machine (VM). Wie sicher sind ihre Verschlüsselungsalgorithmen? Wie gründlich validiert sie die aus der Cloud kommenden Daten? Wie gut validiert sie Daten, die an die verschiedenen Bereiche übermittelt werden?
Hinzu kommen die Daten-Endpunkte (Bild 2). Ist es möglich, aggressive Daten einzu-schleusen? Wie ist der Applikations-Code konfiguriert, um das sicher zu verhindern?
Eine weitere potenzielle Schwachstelle resultiert daraus, dass viele Systeme bereichsübergreifend kommunizieren müssen. Ein Beispiel ist die Zentralverriegelung, die eigentlich einem relativ unkritischen Bereich angehört. Allerdings kommt es zum Beispiel in einer Notsituation nach einem Unfall darauf an, dass die Türen entriegelt werden – und das erfordert die Kommunikation mit einem sicherheitskritischen Bereich. Wie immer man eine solche Kommunikation zwischen verschiedenen virtuellen Maschinen auch gestaltet, es ist zwingend erforderlich, dass die Implementierung sicher ist.
Nachdem diese mit einem hohen Risiko behafteten Software-Komponenten identifiziert sind, kann die Aufmerksamkeit auf den damit zusammenhängenden Code gerichtet werden. Das Resultat ist ein System, in dem der sichere Code nicht nur als eine zusätzliche Verteidigungslinie fungiert, sondern aktiv zur Effizienz der zugrunde liegenden Architektur beiträgt, indem ihre Schwachpunkte gestärkt werden. Damit die Sicherheit dieses Applikations-Codes optimiert werden kann, sind die kombinierten Beiträge einer ganzen Reihe von Faktoren erforderlich, die den vielfältigen Security-Ansatz des Systems als Ganzes widerspiegeln.
Die Computer-Emergency-Readiness-Team-Abteilung (CERT) des Software Engineering Institute (SEI) hat insgesamt zwölf sichere Codierpraktiken angeführt, die in dem Code des in Bild 1 skizzierten Automobilsystems alle eine Rolle spielen. Dazu diese Beispiele:
Es sollte ein sicherer Codierstandard angewandt werden. CERT C und MISRA C:2012 sind zwei Beispiele für solche Standards – abweichend von der gängigen Fehleinschätzung, dass der letztere Standard nur für Safety-relevante Entwicklungen ausgelegt ist. Zusätzlich gestärkt wurde seine Eignung als sicherer Codierstandard durch die Einführung von MISRA C:2012 Amendment 1 mit den darin enthaltenen 14 zusätzlichen Richtlinien sowie durch deren kürzliche Einbindung in MISRA C:2012 (3. Edition, 1. Revision).
Kein vernetztes Automobilsystem wird jemals sowohl nützlich als auch absolut unangreifbar sein. Es ist sinnvoll, das jeweilige System proportional zu dem Risiko abzusichern, das im Fall seiner Kompromittierung droht. Das wiederum verlangt nach der Anwendung mehrerer Schutzebenen, damit beim Ausfall einer Ebene die anderen weiterhin zur Verfügung stehen. Weil die speziellen Systeme von Elektrofahrzeugen besonders verwundbar sein können, sollte ihnen besondere Beachtung geschenkt werden.
Die Separation der einzelnen Bereiche sowie die Verwendung von sicherem Applikations-Code sind zwei Beispiele für derartige Verteidigungslinien. Der Aufwand, der zur Realisierung eines hinreichend sicheren Systems getrieben werden muss, lässt sich optimieren, indem man die besonders risikobehafteten Elemente der Architektur identifiziert und bei der Entwicklung des Applikations-Codes, der mit diesen Elementen in Zusammenhang steht, sichere Codiertechniken anwendet.
Elektrofahrzeuge sind, wie das Beispiel Tesla gezeigt hat, gegen böswillige Zeitgenossen ebenso anfällig wie Fahrzeuge mit Verbrennungsmotor. Effektive Abwehrmaßnahmen gegen solche Akteure haben höchste Priorität, wenn der Trend zur vermehrten Verbreitung von Elektrofahrzeugen nicht durch potenzielle Sicherheitsrisiken ausgebremst werden soll.
Der Autor
Mark Pitchford
erwarb seinen Abschluss als Bachelor of Science an der Trent University, Nottingham, und ist seit mehr als 20 Jahren Diplomingenieur. Von 2007 bis 2014 arbeitete er als FAE bei LDRA. Im Anschluss wechselte er als Technical Manager für den Bereich EMEA zu Lynx Software Technologies, bevor er im Februar 2017 zu LDRA zurückkehrte. Dort ist Pitchford als Technical Specialist tätig.