Entwickleroptionen sichern

Gemäß dem Android Compatibility Definition Document müssen OEMs eine Möglichkeit bieten, die App-Entwicklung zu ermöglichen. Durch die Bereitstellung mobiler Entwickleroptionen in Autos sind diese Autos jedoch anfällig für Angriffe. Der Zugriff auf Entwickleroptionen kann jetzt von einem OEM mithilfe eines authentifizierten kryptografischen Token-Mechanismus eingeschränkt werden. Konkret kann ein OEM:

  • Legen Sie vor dem ersten Start die gewünschten Standardeinschränkungen fest.
  • Autorisieren Sie Entwickler sicher, bei Bedarf mit Krypto-Tokens.
  • Wenden Sie Einschränkungsänderungen an, sobald ein Entwickler sowohl authentifiziert als auch autorisiert ist.

In diesem Artikel wird eine Referenzimplementierung beschrieben, die aus einer Debug-Einschränkungs-Controller-App und einem Remote-Token-Aussteller-Endpunkt besteht.

Terminologie

Zusätzlich zur Terminologie werden in diesem Artikel folgende Begriffe verwendet:

  • JSON Web Signature (JWS), definiert in RFC 7515
  • Nationales Institut für Standards und Technologie (NIST)

Design

OEMs können Entwickler mit JSON Web Signature (JWS)-Tokens (RFC7515) autorisieren. In der Referenzimplementierung werden Zugriffstokens von OEMs ausgegeben und von der Restriction Controller-App genutzt. Zugriffstoken sind so konzipiert, dass sie Replay-Angriffen und gefälschten Token widerstehen.

Abbildung 1. Design

Integration und Konfiguration

OEMs müssen beim ersten Start die gewünschten Standardeinschränkungen angeben. Dies erfolgt mit mehreren statischen Ressourcen-Overlays, um die Standardeinstellungen im AOSP-Framework zu überschreiben.

Die Standardeinschränkungen für den Headless-Systembenutzer können mit der Zeichenfolge config_defaultFirstUserRestrictions in frameworks/base/core/res/res/values/config.xml konfiguriert werden, zum Beispiel:

<!-- 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>

Die Standardeinschränkungen für Fahrer, Passagiere und Gäste können in frameworks/base/core/res/res/xml/config_user_types.xml konfiguriert werden. Ein OEM kann überlagern| Verwenden Sie diese Zeichenfolgen, um die Standardeinschränkungen für jeden Benutzertyp festzulegen, zum Beispiel:

<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>

Eine Referenzimplementierung wird an der folgenden Stelle in AOSP bereitgestellt:

packages/apps/Car/DebuggingRestrictionController

Testen

Google empfiehlt OEMs, mit der Referenzimplementierung zu beginnen und von dort aus weiterzuentwickeln.

  1. Nachdem Sie die gewünschten Einschränkungen in den Overlay-Dateien konfiguriert haben, kompilieren Sie AAOS und validieren Sie die definierten Abläufe. Verwenden Sie die Referenz-App und den lokalen JWS-fähigen Dienst, um Ihre Zugriffseinstellungen zu überprüfen.
  2. Konfigurieren Sie das System für die Verwendung Ihres JWS-fähigen Cloud-Dienstes (optional). Stellen Sie sicher, dass Sie den gewünschten Ablauf in Ihrem Back-End-Dienst beobachten.