Protezione delle opzioni per gli sviluppatori

Secondo il documento di definizione della compatibilità Android , gli OEM devono fornire un modo per consentire lo sviluppo di app. Tuttavia, fornire opzioni di sviluppo di tipo mobile all’interno delle auto rende tali auto vulnerabili agli attacchi. L'accesso alle opzioni sviluppatore può ora essere controllato da un OEM utilizzando un meccanismo di token crittografico autenticato. Nello specifico, un OEM può:

  • Imposta le restrizioni predefinite desiderate prima del primo avvio.
  • Autorizza gli sviluppatori in modo sicuro, se preferisci con token crittografici.
  • Applica le modifiche alle restrizioni una volta che uno sviluppatore è autenticato e autorizzato.

Questo articolo descrive un'implementazione di riferimento costituita da un'app controller delle restrizioni di debug e da un endpoint emittente del token remoto.

Terminologia

Oltre alla terminologia , in questo articolo vengono utilizzati questi termini:

  • JSON Web Signature (JWS), definita nella RFC 7515
  • Istituto nazionale di standard e tecnologia (NIST)

Progetto

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 del controller delle restrizioni. I token di accesso sono progettati per resistere agli attacchi di replay e ai token contraffatti.

Figura 1. Progettazione

Integrazione e configurazione

Gli OEM devono specificare le restrizioni predefinite desiderate al primo avvio. Questa operazione viene eseguita con diverse sovrapposizioni di risorse statiche per sovrascrivere le impostazioni predefinite nel framework AOSP.

Le restrizioni predefinite per l'utente del 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 restrizioni predefinite per conducenti, passeggeri e ospiti possono essere configurate in frameworks/base/core/res/res/xml/config_user_types.xml . Un OEM può sovrapporsi| queste stringhe per impostare rispettivamente le restrizioni predefinite su ciascuna tipologia 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 è fornita nella seguente posizione in AOSP:

packages/apps/Car/DebuggingRestrictionController

Test

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

  1. Dopo aver configurato le restrizioni desiderate nei file overlay, compila AAOS e convalida i flussi definiti. Utilizza l'app di riferimento e il servizio abilitato JWS locale per verificare le tue impostazioni di accesso.
  2. Configura il sistema per utilizzare il tuo servizio cloud abilitato JWS (opzionale). Verifica di osservare il flusso desiderato sul tuo servizio di backend.