Isolierung des Fahrzeugsystems

Um die Integrität des Fahrzeugsystems sicherzustellen, schützt Android Automotive eingehende Daten auf folgenden Ebenen:

Komponenten des EVS-Systems

Abbildung 1. Systemdienstarchitektur

  • Apps. Das System überprüft, ob eine App die Berechtigung hat, mit Auto-Subsystemen zu kommunizieren.
  • Gut definierte APIs. Generische APIs akzeptieren keine beliebigen Datenblobs (APIs müssen gut definiert sein).
  • Autowerkstatt. Updates sind nur über OTA (oder USB) mit vollständiger Festplattenverschlüsselung und verifiziertem Start zulässig. Kann nicht seitlich geladen werden.
  • Fahrzeug HAL. Überprüft, ob bestimmte Nachrichten zulässig sind.

Apps und APIs

Android Automotive basiert auf Android und interagiert direkt mit zahlreichen sicherheitskritischen Subsystemen. Darüber hinaus verfügen verschiedene Fahrzeuge möglicherweise über unterschiedliche Schnittstellen mit unterschiedlichen Android-Funktionalitäten. Um diese Funktionen sicher und optimiert zu machen, sind sie in einer Abstraktionsschicht isoliert und vom Rest von Android getrennt. Nur klar definierte APIs mit strenger Formatierung von Nachrichten, die über fahrzeuginterne Netzwerke gesendet werden, können mit dem Fahrzeug-HAL kommunizieren. Dies stellt eine vorhersehbare Schnittstelle für Android-Entwickler bereit und sorgt für eine sichere Interaktion mit dem Rest des Fahrzeugs.

Fahrzeug-HAL-Nachrichten werden auf zwei Ebenen gefiltert:

  • App-Ebene. Nicht-System-Apps können über den Autoservice mit den entsprechenden Berechtigungen auf Fahrzeug-HAL zugreifen.
  • Fahrzeug-HAL-Level. Ermöglicht eine zusätzliche Schutzebene und stellt sicher, dass an Fahrzeugsubsysteme gesendete Nachrichten von einer legitimen Quelle stammen. Kann auch zur Ratenbegrenzung von Nachrichten verwendet werden, um zu verhindern, dass bösartige Apps den CAN-Bus überfluten und möglicherweise Fahrzeugsubsysteme stören.

Fahrzeug HAL

Fahrzeug-HAL ist eine untere Schicht, die mit dem Fahrzeug interagiert und über ioctl-Aufrufe (Driver Input/Output Control) mit fahrzeuginternen Netzwerken und anderer Fahrzeughardware kommuniziert.

Der Fahrzeug-HAL ist die einzige Komponente in Android Automotive, die mit dem IVI-System verbunden ist, entweder über eine direkte App-Prozessor-/MicroController-Verbindung oder über eine VMCU. Der Zugriff auf die Fahrzeug-HAL sollte auf System-Apps beschränkt werden, die SELinux-Regeln und entsprechende Berechtigungen für Kernel-Schnittstellen verwenden.

SELinux-Richtlinien

Android Automotive erweitert SELinux, um den Treiberzugriff zu filtern, einschließlich Öffnen, Schließen, Lesen, Schreiben und Ioctl-Aufrufen. Durch die Verwendung der ioctl-Filterung (zusammen mit anderen SELinux-Funktionen) wird die Art der CAN-Nachrichten begrenzt, die vom Fahrzeug-HAL zugelassen und akzeptiert werden, wodurch die Angriffsfläche drastisch reduziert wird. Einzelheiten zu SELinux finden Sie unter Security-Enhanced Linux in Android .

Darüber hinaus umfassen Anwendungsfälle im Automobilbereich neue Arten sensibler Daten, die isoliert und kontrolliert werden sollten. Für sensible Daten gelten gesonderte Berechtigungen. Andere Funktionen wie HVAC-Steuerung und Fensteranpassung sollten nur System-Apps zur Verfügung gestellt werden. Beispiel einer automobilspezifischen SELinux-Richtlinie:

<permission-group
 android:name=”android.support.car.permission.CAR_MONITORING />

<permission
 android:name=”android.support.car.permission.CAR_MILEAGE”
 android:protectionLevel=”signature|privileged” />
<permission
 android:name=”android.support.car.permission.CAR_SPEED”
 android:permissionGroup=”android.permission-group.LOCATION”
 android:protectionLevel=”dangerous” />
<permission
 android:name=”android.support.car.permission.CAR_VENDOR_EXTENSION”
 android:permissionGroup=”android.support.car.permission.CAR_INFORMATION”
 android:protectionLevel=”signature|privileged” />

Die Berechtigungsgruppe CAR_MONITORING wurde für automobilbezogene Berechtigungen erstellt. Die aktuelle Geschwindigkeit kann als sensible Information angesehen werden. Daher wurden CAR_SPEED Berechtigungen mit der Schutzstufe „gefährlich“ erstellt. Diese Ebene bedeutet, dass die Informationen privat und vertraulich sind. Die Berechtigung CAR_VENDOR_EXTENSION wurde mit der Berechtigung auf System- oder Signaturebene erstellt, die für System-Apps oder signierte Apps verwendet wird, denen diese Berechtigung explizit gewährt wird.

App- und Aktivitätsblockierung

Um abgelenktes Fahren zu reduzieren, bietet Android Automotive zusätzliche Kontrollen (eine Zulassungsliste), um sicherzustellen, dass seitlich geladene Apps nicht verwendet werden können, während das Fahrzeug in Bewegung ist. Diese Apps können weiterhin ausgeführt werden, wenn ein Fahrzeug geparkt oder angehalten wird.

Die Zulassungsliste gibt Apps an, die während der Fahrt verwendet werden können. Nur vertrauenswürdige System-Apps können die Zulassungsliste aktualisieren. Obwohl Updates über das Netzwerk erfolgen können, sollten Updates nicht als zuverlässig angesehen werden.