Isolation du système du véhicule

Pour garantir l'intégrité du système du véhicule, Android Automotive protège les données entrantes à ces niveaux :

Composants du système EVS

Figure 1. Architecture des services système

  • Applications. Le système vérifie qu'une application est autorisée à communiquer avec les sous-systèmes de la voiture.
  • API bien définies. Les API génériques n'acceptent pas les blobs de données arbitraires (les API doivent être bien définies).
  • Service automobile. Mises à jour autorisées uniquement via OTA (ou USB), avec cryptage complet du disque et démarrage vérifié. Ne peut pas être téléchargé.
  • Véhicule HAL. Vérifie que des messages spécifiques sont autorisés.

Applications et API

Android Automotive est construit sur Android et interagit directement avec de nombreux sous-systèmes critiques pour la sécurité. De plus, différents véhicules peuvent avoir différentes interfaces avec différentes fonctionnalités exposées à Android. Pour rendre ces fonctionnalités sûres et rationalisées, elles sont isolées dans une couche d’abstraction, distincte du reste d’Android. Seules les API bien définies avec un formatage strict des messages envoyés via les réseaux embarqués peuvent communiquer avec le Vehicle HAL. Cela fournit une interface prévisible aux développeurs Android et permet une interaction sécurisée avec le reste du véhicule.

Les messages HAL du véhicule sont filtrés à deux niveaux :

  • Au niveau de l'application. Les applications non système peuvent accéder au véhicule HAL via le service automobile avec les autorisations appropriées.
  • Niveau HAL du véhicule. Permet une couche supplémentaire de protection et d'assurance que les messages envoyés aux sous-systèmes du véhicule proviennent d'une source légitime. Peut également être utilisé pour limiter les messages, empêchant ainsi les applications malveillantes d'inonder le bus CAN et d'interférer potentiellement avec les sous-systèmes du véhicule.

Véhicule HAL

Vehicle HAL est une couche inférieure qui interagit avec le véhicule, communiquant avec les réseaux embarqués et d'autres matériels du véhicule via des appels de contrôle d'entrée/sortie du conducteur (ioctl).

Le HAL du véhicule est le seul composant d'Android Automotive connecté au système IVI, soit via une connexion directe au processeur d'application/microcontrôleur, soit via une VMCU. L'accès au Vehicle HAL doit être limité aux applications système utilisant les règles SELinux et les autorisations appropriées sur les interfaces du noyau.

Politiques SELinux

Android Automotive étend SELinux pour filtrer l'accès des pilotes, y compris les appels d'ouverture, de fermeture, de lecture, d'écriture et ioctl. L'utilisation du filtrage ioctl (ainsi que d'autres fonctionnalités SELinux) limite le type de messages CAN autorisés et acceptés par le HAL du véhicule, réduisant ainsi considérablement la surface d'attaque. Pour plus de détails sur SELinux, consultez Linux à sécurité améliorée sous Android .

De plus, les cas d’utilisation dans le secteur automobile incluent de nouveaux types de données sensibles qui doivent être isolées et contrôlées. Les données sensibles ont des autorisations distinctes ; d'autres fonctionnalités telles que les commandes CVC et le réglage des fenêtres doivent être accordées uniquement aux applications système. Exemple de politique SELinux spécifique à l'automobile :

<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” />

Le groupe d'autorisations CAR_MONITORING a été créé pour les autorisations liées à l'automobile. La vitesse actuelle peut être considérée comme une information sensible. Par conséquent, les autorisations CAR_SPEED ont été créées avec un niveau de protection dangereux . Ce niveau signifie que les informations sont privées et sensibles. L'autorisation CAR_VENDOR_EXTENSION a été créée avec l'autorisation au niveau du système ou de la signature, qui est utilisée pour les applications système ou les applications signées auxquelles cette autorisation est explicitement accordée.

Blocage d'applications et d'activités

Pour réduire la distraction au volant, Android Automotive fournit des contrôles supplémentaires (une liste verte) pour garantir que les applications téléchargées ne peuvent pas être utilisées lorsque le véhicule est en mouvement. Ces applications peuvent toujours fonctionner lorsqu'un véhicule est garé ou arrêté.

La liste verte spécifie les applications qui peuvent être utilisées lorsque le véhicule est en mouvement. Seules les applications système approuvées peuvent mettre à jour la liste verte. Même si les mises à jour peuvent s'effectuer sur le réseau, elles ne doivent pas être considérées comme fiables.