Opzioni sicure per gli sviluppatori

In base al Android Compatibility Definition Document, Gli OEM devono fornire un modo per consentire lo sviluppo di app. Tuttavia, fornire contenuti le opzioni di sviluppo all'interno di un'auto rendono le auto vulnerabili agli attacchi. Accesso allo sviluppatore possono ora essere controllate da un OEM utilizzando un meccanismo di token crittografici autenticato. Nello specifico, un OEM può:

  • Imposta le limitazioni predefinite desiderate prima del primo avvio.
  • Autorizza gli sviluppatori in modo sicuro con token di crittografia, se preferisci.
  • Applica le modifiche alle limitazioni dopo che uno sviluppatore è autenticato e autorizzato.

Questo articolo descrive un'implementazione di riferimento che prevede una limitazione di debug dell'app del controller e un endpoint che ha emesso il token remoto.

Terminologia

Oltre alla Terminologia, nell'articolo vengono utilizzati questi termini:

  • JWS (JSON Web Signature), definita in RFC 7515
  • National Institute of Standards and Technology (NIST)

Design

Gli OEM possono autorizzare gli sviluppatori con token JWS (JSON Web Signature) (RFC7515). Nella di riferimento, i token di accesso vengono emessi dagli OEM e utilizzati in base alla limitazione dell'app controller. I token di accesso sono progettati per resistere agli attacchi di ripetizione e ai token falsi.

Figura 1. Design

Integrazione e configurazione

Gli OEM devono specificare le limitazioni predefinite desiderate al primo avvio. Questo viene fatto diversi overlay di risorse statici per sostituire i valori predefiniti nel framework AOSP.

Le restrizioni predefinite per l'utente di sistema headless possono essere configurate con config_defaultFirstUserRestrictions stringa 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>

È possibile configurare le limitazioni predefinite per conducenti, passeggeri e ospiti frameworks/base/core/res/res/xml/config_user_types.xml. Un OEM può sovrapporsi| queste stringhe per impostare rispettivamente le restrizioni predefinite per 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>

È disponibile un'implementazione di riferimento nella seguente posizione in AOSP:

packages/apps/Car/DebuggingRestrictionController

Test

Google consiglia agli OEM di iniziare con l'implementazione di riferimento e di partire da lì.

  1. Dopo aver configurato le limitazioni desiderate nei file di overlay, compila il codice AAOS e convalidare i flussi definiti. Usa l'app di riferimento e il servizio abilitato per JWS locale per verificare le tue impostazioni di accesso.
  2. Configura il sistema in modo che utilizzi il servizio cloud abilitato per JWS (facoltativo). Conferma di essere osservando il flusso desiderato sul tuo servizio di backend.