Per garantire l'integrità del sistema dell'auto, Android Automotive protegge i dati in arrivo ai seguenti livelli:
Figura 1. Architettura del servizio di sistema
- App. Il sistema verifica che un'app sia autorizzata a comunicare con l'auto sottosistemi.
- API ben definite. Le API generiche non accettano BLOB di dati arbitrari (le API devono ben definiti).
- Servizio auto. Aggiornamenti consentiti solo tramite OTA (o USB), con disco pieno la crittografia e l'avvio verificato. Non può essere trasferita tramite sideload.
- HAL per veicoli. Verifica che messaggi specifici siano consentiti.
App e API
Android Automotive è basato su Android e interagisce direttamente con numerosi eventi critici per la sicurezza sottosistemi. Inoltre, veicoli diversi possono avere interfacce diverse con di funzionalità esposte ad Android. Per rendere queste funzionalità sicure e semplificate, sono isolati in un livello di astrazione, separato dal resto di Android. Solo API ben definite con formattazione rigorosa per i messaggi inviati attraverso le reti del veicolo possono comunicare con il Veicolo HAL Fornisce un'interfaccia prevedibile per gli sviluppatori Android e un'interazione sicura con il resto del veicolo.
I messaggi HAL dei veicoli vengono filtrati in due livelli:
- A livello di app. Le app non di sistema possono accedere all'HAL del veicolo tramite l'auto con le autorizzazioni appropriate.
- Livello HAL del veicolo. Offre un ulteriore livello di protezione e garanzia che i messaggi inviati ai sottosistemi dei veicoli provengano da una fonte legittima. Si possono usare anche per limitare la frequenza dei messaggi, impedendo ad app dannose di inondare il CAN bus. che potrebbero interferire con i sottosistemi dei veicoli.
HAL per veicoli
L'HAL del veicolo è un livello inferiore che interagisce con il veicolo, comunicando con il veicolo reti e altro hardware di veicoli tramite chiamate di controllo input/output driver (Ioctl).
Il veicolo HAL è l'unico componente di Android Automotive collegato al sistema IVI, tramite connessione diretta del processore di app/microController o con gate tramite una VMCU. L'accesso ai L'HAL del veicolo deve essere limitato ad app di sistema che utilizzano regole SELinux e autorizzazioni appropriate sulle interfacce del kernel.
Criteri di SELinux
Android Automotive estende SELinux per filtrare l'accesso dei conducenti, tra cui apertura, chiusura, lettura, scrittura e chiamate IoT. L'uso del filtro ioctl (insieme ad altre funzionalità SELinux) limita il tipo di Messaggi CAN consentiti e accettati dall'HAL per veicoli, riducendo drasticamente la superficie di attacco. Per su SELinux, consulta Linux avanzato su Android.
Inoltre, i casi d'uso relativi al settore automobilistico includono nuovi tipi di dati sensibili che devono essere isolati e controllato. I dati sensibili hanno autorizzazioni separate. come altre funzionalità, tra cui i controlli dell'impianto di climatizzazione e la regolazione della finestra deve essere applicata solo alle app di sistema. Esempio di un modello di auto Criterio 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” />
Il gruppo di autorizzazioni CAR_MONITORING
è stato creato per le autorizzazioni relative ad auto e motori.
La velocità attuale può essere considerata un'informazione sensibile. Pertanto, CAR_SPEED
sono state create con un livello di protezione di 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 che
a cui viene concessa esplicitamente questa autorizzazione.
Blocco di app e attività
Per ridurre le distrazioni alla guida, Android Automotive fornisce controlli aggiuntivi (una lista consentita) per garantire che non si possano usare le app installate tramite sideload quando il veicolo è in movimento. Queste app possono ancora correre quando il veicolo è parcheggiato o fermo.
La lista consentita specifica le app che possono essere utilizzate quando il veicolo è in movimento. Solo attendibile le app di sistema possono aggiornare la lista consentita. Gli aggiornamenti possono avvenire sulla rete, ma non devono essere considerati affidabili.