Pour garantir l'intégrité du système de la voiture, Android Automotive protège les données entrantes aux niveaux suivants:
Figure 1 : Architecture de service système
- Applications. Le système vérifie qu'une appli est autorisée à communiquer avec la voiture sous-systèmes.
- Des 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).
- Entretien automobile. Mises à jour autorisées uniquement via OTA (ou USB), avec un disque complet le chiffrement et le démarrage validé. Le téléchargement indépendant ne peut pas être effectué.
- HAL du véhicule. Vérifie que des messages spécifiques sont autorisés.
Applications et API
Android Automotive est basé sur Android et interagit directement avec de nombreux dispositifs de sécurité essentiels sous-systèmes. En outre, différents véhicules peuvent avoir différentes interfaces avec différentes exposées à Android. Pour simplifier et sécuriser ces fonctionnalités, isolées dans une couche d'abstraction, séparée du reste d'Android. Seules des API bien définies avec une mise en forme stricte des messages envoyés via les réseaux embarqués peut communiquer avec le Véhicule CARL. Cette solution offre aux développeurs Android une interface prévisible, et permet une interaction sécurisée avec le reste du véhicule.
Les messages HAL des véhicules sont filtrés à deux niveaux:
- Au niveau de l'application. Les applications non-système peuvent accéder au HAL du véhicule via la voiture avec les autorisations appropriées.
- Niveau HAL du véhicule. Offre un niveau supplémentaire de protection et d'assurance que les messages envoyés aux sous-systèmes des véhicules proviennent d'une source légitime. Peut également être utilisé pour limiter le débit des messages, en empêchant les applications malveillantes de submerger le bus CAN et potentiellement interférer avec les sous-systèmes des véhicules.
HAL du véhicule
Le HAL du véhicule est une couche inférieure qui interagit avec le véhicule et communique avec des réseaux et autres équipements automobiles via des appels de contrôle d'entrée/sortie de pilote (ioctl).
Le HAL du véhicule est le seul composant d'Android Automotive connecté au système IVI : via une connexion directe au processeur d'application/microcontrôleur, ou contrôlée par une VMCU. Accès à la La couche HAL de véhicule doit être limitée aux applications système utilisant les règles SELinux et les autorisations appropriées sur les interfaces de noyau.
Règles SELinux
Android Automotive étend SELinux pour filtrer les accès des pilotes (ouverture, fermeture, lecture, écriture, et les appels ioctl. L'utilisation du filtrage ioctl (ainsi que d'autres fonctionnalités SELinux) limite le type Messages CAN autorisés et acceptés par le HAL du véhicule, ce qui réduit considérablement la surface d'attaque. Pour plus d'informations sur SELinux, consultez Linux avec sécurité renforcée sur 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é. Les données sensibles ont des autorisations distinctes ; d'autres fonctionnalités, comme les commandes du système CVC et l'ajustement de la fenêtre ne doit être accordé qu'aux applications système. Exemple d'annonce spécifique à l'automobile Règles de SELinux:
<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, CAR_SPEED
autorisations créées avec un niveau de protection dangereux. Ce niveau signifie
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 utilisée pour les applications système ou signées
disposent explicitement de cette autorisation.
Blocage d'applications et d'activités
Pour réduire les distractions au volant, Android Automotive propose des commandes supplémentaires (liste d'autorisation) pour garantir que les applications téléchargées indépendamment ne peuvent pas être utilisées lorsque le véhicule est en mouvement. Ces applications peuvent toujours lorsqu'un véhicule est garé ou arrêté.
La liste d'autorisation spécifie les applications qui peuvent être utilisées lorsque le véhicule est en mouvement. Uniquement les les applications système peuvent mettre à jour la liste d'autorisation. Bien que les mises à jour puissent avoir lieu sur le réseau, elles ne doivent pas être considérés comme fiables.