Usa la crittografia dei file associati al veicolo

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:

  1. (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.
  2. (Consigliato) IVI ed ECU devono autenticarsi reciprocamente per scambiare il seme con impedire le richieste di spoofing per il seed dalla ECU.
  3. (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:

  1. Cambia prompt_and_wipe_data in wipe_data. Il dispositivo cancella i dati e e poi si riavvia senza visualizzare un messaggio.
  2. 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