Isolamento dei sistemi per veicoli

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

Componenti del sistema EVS

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.