In questa pagina viene descritto come attivare le funzionalità di origine della crittografia delle associazioni basate sul veicolo.
Panoramica
L'obiettivo principale della funzionalità di origine dell'associazione di veicoli è proteggere ulteriormente la privacy dell'utente protezione dei dati sul sistema di infotainment nel veicolo (IVI) contro la rimozione dal veicolo. Questo è mediante l'associazione di chiavi di crittografia a un'altra ECU (Electronic Control Unit), in modo che, se L'IVI viene rimosso e posizionato su un altro veicolo (o eseguito su un banco di prova), con dati utente criptati e non possono essere decriptati.
Per associare le chiavi di crittografia dei file, Vold combina un seed specifico del veicolo con la crittografia della chiave
in modo che le chiavi siano univoche e associate fisicamente al veicolo. Il seed è un array di byte,
visualizzata come nuova proprietà Veicolo Abstraction Layer (VHAL) dall'OEM,
STORAGE_ENCRYPTION_BINDING_SEED
. Le autorizzazioni di questa proprietà sono limitate affinché
può essere interrogato solo da daemon di sistema con privilegi.
Diagramma dell'architettura
Questa figura illustra l'architettura dell'integrazione legata ai veicoli:
Figura 1. Architettura legata ai veicoli.
Attiva l'associazione basata su veicolo
L'associazione della crittografia dello spazio di archiviazione al veicolo deve essere esplicitamente abilitata e non può essere attivata senza dover ripristinare i dati di fabbrica. Ciò significa che un aggiornamento over-the-air (OTA) non può attivare la funzionalità senza cancellare anche i dati del dispositivo. Un OEM potrebbe scegliere di attivare la funzionalità eseguire l'upgrade se hanno anche ripristinato i dati di fabbrica del dispositivo. Ad esempio, durante una visita di servizio.
Questa funzionalità viene attivata supportando la proprietà STORAGE_ENCRYPTION_BINDING_SEED
nell'HAL del veicolo fornito dal fornitore. Questa proprietà contiene una stringa di byte di 16 byte di lunghezza
dovrebbe rimanere su una ECU separata dalla IVI. La proprietà è inizialmente impostata dal
Android Automotive OS (AAOS), che lo genera utilizzando un numero casuale protetto tramite crittografia.
Generatore (CSRNG). AAOS legge la proprietà negli avvii successivi.
La modalità di archiviazione del valore di STORAGE_ENCRYPTION_BINDING_SEED
da parte di VHAL è specifica del fornitore.
Abbiamo consigli generali per proteggere il seed:
- (Consigliato) Il seme viene immagazzinato da una ECU nel veicolo che si trova fisicamente ben protetti. In caso contrario, è banale che sia il veicolo sia l'ECU vengano estratti dalla veicolo.
- (Consigliato) IVI ed ECU devono autenticarsi reciprocamente per scambiare il seme con impedire le richieste di spoofing per il seed dalla ECU.
- (Consigliato) Il seed deve essere trasmesso utilizzando un canale sicuro per evitare CAN sniffing bus.
Inoltre, aggiungi quanto segue per garantire che il fornitore init.target.rc
sulla
late-fs
prima del mount_all --late
:
# feed vehicle binding seed to vold
exec_start vold_seed_binding
L'HAL del veicolo deve essere avviato in early_hal
anziché in hal now
.
Non è possibile accedere a qualsiasi proprietà di sistema persist.*
in early-hal
perché
La partizione /data
non è ancora montata.
Configura l'associazione basata su veicolo
Se il seed della ECU non corrisponde, il dispositivo si riavvia e chiede all'utente di resettare.
la partizione /data
o riprova.
Il comportamento di prompt e cancellazione dei dati può essere modificato in buildins.cpp:
- Cambia
prompt_and_wipe_data
inwipe_data
. Il dispositivo cancella i dati e e poi si riavvia senza visualizzare un messaggio. - Il messaggio è contenuto in
recovery.cpp.
Figura 2. Messaggio di richiesta.
Testa l'associazione basata su veicolo
Test di simulazione
Viene fornito un test di simulazione
packages/services/Car/cpp/security/vehicle_binding_util/tests
.
Per eseguire questo test fittizio:
attest libvehicle_binding_util_test
Test di integrazione
Viene fornito un test Atest in
packages/services/Car/cpp/security/vehicle_binding_util/tests
.
Per eseguire questo test di integrazione:
atest vehicle_binding_integration_test