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 du service 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 de blocs de données arbitraires (les API doivent être bien définies).
- Service de réparation automobile Mises à jour autorisées uniquement via OTA (ou USB), avec chiffrement de disque complet et démarrage validé. Impossible de le télécharger en parallèle.
- 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 sous-systèmes critiques pour la sécurité. De plus, les interfaces des différents véhicules peuvent être différentes et présenter des fonctionnalités différentes exposées à Android. Pour rendre ces fonctionnalités sûres et simplifié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 HAL du véhicule. Cela offre une interface prévisible aux développeurs Android et une interaction sécurisée avec le reste du véhicule.
Les messages HAL du véhicule sont filtrés à deux niveaux:
- Niveau de l'application Les applications non système peuvent accéder au HAL du véhicule via le service de voiture avec les autorisations appropriées.
- Niveau de la couche d'abstraction du matériel du véhicule. Fournit une couche de protection et d'assurance supplémentaire pour que les messages envoyés aux sous-systèmes du véhicule proviennent d'une source légitime. Peut également être utilisé pour limiter la fréquence des messages, ce qui empêche les applications malveillantes d'inonder le bus CAN et d'interférer avec les sous-systèmes du véhicule.
HAL véhicule
Le HAL du véhicule est une couche inférieure qui interagit avec le véhicule, communique avec les réseaux embarqués et d'autres équipements du véhicule via des appels ioctl (controle d'entrée/sortie du pilote).
Le HAL du véhicule est le seul composant d'Android Automotive connecté au système IVI, soit via une connexion directe entre le processeur d'application/microcontrôleur, soit via un VMCU. L'accès au HAL du véhicule doit être limité aux applications système à l'aide de règles SELinux et d'autorisations appropriées sur les interfaces du noyau.
Règles SELinux
Android Automotive étend SELinux pour filtrer l'accès des pilotes, y compris les appels open, close, read, write et ioctl. L'utilisation du filtrage ioctl (avec d'autres fonctionnalités SELinux) limite le type de messages CAN autorisés et acceptés par le HAL du véhicule, ce qui réduit considérablement la surface d'attaque. Pour en savoir plus sur SELinux, consultez Security-Enhanced Linux dans Android.
De plus, les cas d'utilisation dans le secteur automobile incluent de nouveaux types de données sensibles qui doivent être isolés et contrôlés. Les données sensibles disposent d'autorisations distinctes. Les autres fonctionnalités telles que les commandes de CVC et l'ajustement des fenêtres ne doivent être attribuées qu'aux applications système. Exemple de règle 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 au secteur 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 de 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 qui reçoivent explicitement cette autorisation.
Blocage des applications et des activités
Pour réduire la distraction au volant, Android Automotive fournit des commandes supplémentaires (une liste d'autorisation) pour s'assurer que les applications installées en mode hors connexion ne peuvent pas être utilisées lorsque le véhicule est en mouvement. Ces applications peuvent toujours s'exécuter lorsqu'un véhicule est stationné ou à l'arrêt.
La liste d'autorisations spécifie les applications pouvant être utilisées lorsque le véhicule est en mouvement. Seules les applications système approuvées peuvent mettre à jour la liste d'autorisation. Bien que les mises à jour puissent se produire sur le réseau, elles ne doivent pas être considérées comme fiables.