Isolamento del sistema del veicolo

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

Componenti del sistema SVE

Figura 1. Architettura dei servizi di sistema

  • App. Il sistema verifica che un'app sia autorizzata a 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 dell'intero disco e avvio verificato. Non può essere trasferito lateralmente.
  • Veicolo HAL. Verifica che siano consentiti messaggi specifici.

App e API

Android Automotive è basato su Android e interagisce direttamente con numerosi sottosistemi critici per la sicurezza. Inoltre, veicoli diversi potrebbero avere interfacce diverse con funzionalità diverse esposte ad Android. Per rendere queste funzionalità sicure e ottimizzate, sono isolate in un livello di astrazione, separato dal resto di Android. Solo le API ben definite con una formattazione rigorosa sui messaggi inviati attraverso le reti a bordo del veicolo possono comunicare con l'HAL del veicolo. Ciò fornisce un'interfaccia prevedibile per gli sviluppatori Android e fornisce un'interazione sicura 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 adeguate.
  • 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 valutare i messaggi di limite, impedendo ad app dannose di inondare il bus CAN e interferire potenzialmente con i sottosistemi del veicolo.

Veicolo HAL

L'HAL del veicolo è un livello inferiore che interagisce con il veicolo, comunicando con le reti di bordo e altro hardware veicolare tramite chiamate di controllo input/output del conducente (ioctl).

L'HAL del veicolo è l'unico componente di Android Automotive connesso al sistema IVI, tramite connessione diretta al processore/microcontroller dell'app o tramite una VMCU. L'accesso all'HAL del veicolo deve essere limitato alle app di sistema che utilizzano le regole SELinux e le autorizzazioni adeguate sulle interfacce del kernel.

Politiche SELinux

Android Automotive estende SELinux per filtrare l'accesso ai conducenti, comprese le chiamate di apertura, chiusura, lettura, scrittura 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, vedere Linux con sicurezza avanzata in Android .

Inoltre, i casi d’uso automobilistici includono nuovi tipi di dati sensibili che dovrebbero essere isolati e controllati. I dati sensibili hanno autorizzazioni separate; altre funzionalità come i controlli HVAC e la regolazione delle finestre dovrebbero essere fornite solo alle app di sistema. Esempio di policy SELinux specifica per il settore automobilistico:

<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 al settore automobilistico. 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 significa che le informazioni sono private e sensibili. L'autorizzazione CAR_VENDOR_EXTENSION è stata creata con l'autorizzazione a livello di sistema o di firma, utilizzata per le app di sistema o le app firmate a cui viene concessa esplicitamente questa autorizzazione.

Blocco di app e attività

Per ridurre la distrazione della guida, Android Automotive fornisce controlli aggiuntivi (una lista consentita) per garantire che le app trasferite lateralmente non possano essere utilizzate quando il veicolo è in movimento. Queste app possono comunque funzionare 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 tramite la rete, gli aggiornamenti non devono essere considerati affidabili.