Fahrzeugisolierung

Um die Integrität des Autosystems zu gewährleisten, schützt Android Automotive eingehende Daten auf folgenden Ebenen:

Komponenten des EVS-Systems

Abbildung 1: System Service Architecture

  • Apps Das System prüft, ob eine App berechtigt ist, mit den Subsystemen des Autos zu kommunizieren.
  • Gut definierte APIs Generische APIs akzeptieren keine beliebigen Datenblobs. APIs müssen klar definiert sein.
  • Autoservice Updates sind nur über OTA (oder USB) mit Volllaufwerkverschlüsselung und Verified Boot zulässig. Kann nicht per Sideload installiert werden.
  • Fahrzeug-HAL Prüft, ob bestimmte Nachrichten zulässig sind.

Apps und APIs

Android Automotive basiert auf Android und interagiert direkt mit zahlreichen sicherheitsrelevanten Subsystemen. Außerdem können verschiedene Fahrzeuge unterschiedliche Schnittstellen mit unterschiedlichen Funktionen für Android haben. Um diese Funktionen sicher und effizient zu gestalten, sind sie in einer Abstraktionsschicht isoliert, die vom Rest von Android getrennt ist. Nur gut definierte APIs mit strikter Formatierung von Nachrichten, die über In-Car-Netzwerke gesendet werden, können mit dem Vehicle HAL kommunizieren. So erhalten Android-Entwickler eine vorhersehbare Benutzeroberfläche und eine sichere Interaktion mit dem Rest des Fahrzeugs.

HAL-Nachrichten für Fahrzeuge werden auf zwei Ebenen gefiltert:

  • App-Ebene Nicht systemeigene Apps können mit den entsprechenden Berechtigungen über den Autodienst auf die HAL des Fahrzeugs zugreifen.
  • Fahrzeug-HAL-Ebene Bietet eine zusätzliche Schutzebene und Sicherheit, um sicherzustellen, dass Nachrichten, die an Fahrzeugsubsysteme gesendet werden, aus einer legitimen Quelle stammen. Kann auch verwendet werden, um Nachrichten zu bewerten und zu begrenzen, um zu verhindern, dass schädliche Apps den CAN-Bus überfluten und möglicherweise die Fahrzeuguntersysteme beeinträchtigen.

Fahrzeug-HAL

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

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

SELinux-Richtlinien

Android Automotive erweitert SELinux, um den Treiberzugriff zu filtern, einschließlich „open“, „close“, „read“, „write“ und „ioctl“-Aufrufe. Durch die Verwendung der ioctl-Filterung (zusammen mit anderen SELinux-Funktionen) wird der Typ der CAN-Nachrichten eingeschränkt, die von der Vehicle HAL zugelassen und akzeptiert werden. Dadurch wird die Angriffsfläche drastisch reduziert. Weitere Informationen zu SELinux finden Sie unter Security-Enhanced Linux in Android.

Darüber hinaus umfassen Anwendungsfälle für die Automobilbranche neue Arten von vertraulichen Daten, die isoliert und kontrolliert werden sollten. Für sensible Daten gelten separate Berechtigungen. Andere Funktionen wie die Steuerung der Heizung, Lüftung und Klimatisierung sowie die Fenstereinstellung sollten nur System-Apps zugewiesen werden. Beispiel für eine spezifische SELinux-Richtlinie für die Automobilbranche:

<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 fahrzeugbezogene Berechtigungen erstellt. Die aktuelle Geschwindigkeit kann als vertrauliche Information betrachtet werden. Daher wurden CAR_SPEED-Berechtigungen mit dem Schutzniveau gefährlich erstellt. Diese Stufe bedeutet, dass die Informationen vertraulich und sensibel sind. Die Berechtigung CAR_VENDOR_EXTENSION wurde mit der Berechtigung auf System- oder Signaturebene erstellt. Diese wird für System- oder signierte Apps verwendet, denen diese Berechtigung ausdrücklich gewährt wurde.

Apps und Aktivitäten blockieren

Um Ablenkungen beim Fahren zu vermeiden, bietet Android Automotive zusätzliche Steuerelemente (eine Zulassungsliste), damit per Sideload installierte Apps nicht verwendet werden können, wenn sich das Fahrzeug in Bewegung befindet. Diese Apps können auch ausgeführt werden, wenn ein Fahrzeug geparkt oder angehalten ist.

Die Zulassungsliste enthält Apps, die verwendet werden können, wenn sich das Fahrzeug bewegt. Nur vertrauenswürdige System-Apps können die Zulassungsliste aktualisieren. Updates können zwar über das Netzwerk erfolgen, sollten aber nicht als zuverlässig betrachtet werden.