In base al Compatibility Definition Document (CDD) di Android, gli OEM devono fornire un modo per abilitare lo sviluppo di app. Tuttavia, fornire opzioni per gli sviluppatori simili a quelle per i dispositivi mobili all'interno delle auto le rende vulnerabili agli attacchi. Ora l'accesso alle opzioni per gli sviluppatori può essere controllato da un OEM utilizzando un meccanismo di token crittografico autenticato. Nello specifico, un OEM può:
- Imposta le limitazioni predefinite desiderate prima del primo avvio.
- Autorizza gli sviluppatori in modo sicuro, se preferisci, con token criptati.
- Applica le modifiche alle limitazioni una volta che lo sviluppatore è autenticato e autorizzato.
Questo articolo descrive un'implementazione di riferimento composta da un'app di controllo delle limitazioni di debug e da un endpoint di emittente di token remoto.
Terminologia
Oltre alla terminologia, in questo articolo vengono utilizzati i seguenti termini:
- Firma web JSON (JWS), definita in RFC 7515
- National Institute of Standards and Technology (NIST)
Design
Gli OEM possono autorizzare gli sviluppatori con token JSON Web Signature (JWS) (RFC7515). Nell'implementazione di riferimento, i token di accesso vengono emessi dagli OEM e utilizzati dall'app di controllo delle limitazioni. I token di accesso sono progettati per resistere agli attacchi di replay e ai token contraffatti.
Figura 1. Design
Integrazione e configurazione
Gli OEM devono specificare le restrizioni predefinite desiderate al primo avvio. Questo viene fatto con diversi overlay di risorse statiche per sostituire i valori predefiniti nel framework AOSP.
Le limitazioni predefinite per l'utente di sistema headless possono essere configurate con la stringa config_defaultFirstUserRestrictions
in frameworks/base/core/res/res/values/config.xml
, ad esempio:
<!-- User restrictions set when the first user is created. Note: Also update appropriate overlay files. --> <string-array translatable="false" name="config_defaultFirstUserRestrictions"> <item>no_debugging_features</item> </string-array>
Le limitazioni predefinite per conducenti, passeggeri e ospiti possono essere configurate in
frameworks/base/core/res/res/xml/config_user_types.xml
. Un OEM può sovrapporre queste stringhe per impostare le limitazioni predefinite su ciascun tipo di utente, ad esempio:
<user-types> <full-type name="android.os.usertype.full.SECONDARY" > <default-restrictions no_debugging_features="true"/> </full-type> <full-type name="android.os.usertype.full.GUEST" > <default-restrictions no_debugging_features="true"/> </full-type> </user-types>
Un'implementazione di riferimento è disponibile nella seguente posizione in AOSP:
packages/apps/Car/DebuggingRestrictionController
Test
Google consiglia agli OEM di iniziare con l'implementazione di riferimento e di procedere da lì.
- Dopo aver configurato le limitazioni desiderate nei file di overlay, compila AAOS e convalida i flussi definiti. Utilizza l'app di riferimento e il servizio JWS locale abilitato per verificare le impostazioni di accesso.
- (Facoltativo) Configura il sistema in modo che utilizzi il servizio cloud abilitato per JWS. Verifica di osservare il flusso desiderato nel tuo servizio di backend.