Per garantire l'integrità del sistema dell'auto, Android Automotive protegge i dati in entrata ai seguenti livelli:

Figura 1. Architettura dei servizi di sistema
- App. Il sistema verifica che un'app abbia l'autorizzazione per comunicare con i sottosistemi dell'auto.
- API ben definite. Le API generiche non accettano blob di dati arbitrari (le API devono essere ben definite).
- Servizio auto. Aggiornamenti consentiti solo tramite OTA (o USB), con crittografia del disco completo e Avvio verificato. Non può essere installato tramite sideload.
- Vehicle HAL. Verifica che messaggi specifici siano consentiti.
App e API
Android Automotive è basato su Android e interagisce direttamente con numerosi sottosistemi di sicurezza. Inoltre, veicoli diversi potrebbero avere interfacce diverse con funzionalità diverse esposte ad Android. Per rendere queste funzionalità sicure e semplici, sono isolate in uno strato di astrazione, separato dal resto di Android. Solo le API ben definite con formattazione rigorosa dei messaggi inviati tramite le reti in-vehicle possono comunicare con l'HAL del veicolo. In questo modo, gli sviluppatori Android hanno a disposizione un'interfaccia prevedibile e possono interagire in modo sicuro con il resto del veicolo.
I messaggi HAL del veicolo vengono filtrati a due livelli:
- A livello di app. Le app non di sistema possono accedere all'HAL del veicolo tramite il servizio auto con le autorizzazioni appropriate.
- Livello HAL del veicolo. Consente un ulteriore livello di protezione e garanzia che i messaggi inviati ai sottosistemi del veicolo provengano da una fonte legittima. Può essere utilizzato anche per limitare la frequenza dei messaggi, impedendo alle app dannose di inondare il bus CAN e potenzialmente interferire con i sottosistemi del veicolo.
Vehicle HAL
L'HAL del veicolo è un livello inferiore che interagisce con il veicolo, comunicando con le reti in-car e con altro hardware del veicolo tramite chiamate di controllo di input/output del driver (ioctl).
L'HAL del veicolo è l'unico componente di Android Automotive connesso al sistema IVI, tramite una connessione diretta del processore dell'app/del microcontrollore o tramite un VMCU. L'accesso all'HAL Vehicle deve essere limitato alle app di sistema che utilizzano regole SELinux e autorizzazioni appropriate sulle interfacce del kernel.
Criteri SELinux
Android Automotive estende SELinux per filtrare l'accesso del driver, incluse le chiamate open, close, read, write e ioctl. L'utilizzo del filtro ioctl (insieme ad altre funzionalità SELinux) limita il tipo di messaggi CAN consentiti e accettati dall'HAL del veicolo, riducendo drasticamente la superficie di attacco. Per dettagli su SELinux, vedi Security-Enhanced Linux in Android.
Inoltre, i casi d'uso nel settore auto e motori includono nuovi tipi di dati sensibili che devono essere isolati e controllati. I dati sensibili hanno autorizzazioni separate; altre funzionalità come i controlli dell'impianto di climatizzazione e la regolazione delle finestre devono essere concesse solo alle app di sistema. Esempio di criterio SELinux specifico per i sistemi di infotainment:
<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” />
Il gruppo di autorizzazioni CAR_MONITORING
è stato creato per le autorizzazioni relative ai veicoli.
La velocità attuale può essere considerata un'informazione sensibile. Pertanto, le autorizzazioni CAR_SPEED
sono state create con un livello di protezione pericoloso. Questo livello indica che le informazioni sono private e sensibili. L'autorizzazione CAR_VENDOR_EXTENSION
è stata creata con l'autorizzazione a livello di sistema o di firma, che viene utilizzata per le app di sistema o le app firmate a cui è stata concessa esplicitamente questa autorizzazione.
Blocco di app e attività
Per ridurre la distrazione alla guida, Android Automotive fornisce controlli aggiuntivi (una lista consentita) per garantire che le app caricate tramite sideload non possano essere utilizzate quando il veicolo è in movimento. Queste app possono comunque essere eseguite quando un veicolo è parcheggiato o fermo.
La lista consentita specifica le app che possono essere utilizzate quando il veicolo è in movimento. Solo le app di sistema attendibili possono aggiornare la lista consentita. Sebbene gli aggiornamenti possano avvenire sulla rete, non devono essere considerati affidabili.