Conformément au document de définition de compatibilité Android, Les OEM doivent proposer un moyen de développer des applications. Toutefois, si vous fournissez des les options de développement dans les voitures rendent ces voitures vulnérables aux attaques. Accès au développeur peuvent désormais être contrôlées par un OEM à l'aide d'un mécanisme de jeton cryptographique authentifié. Plus précisément, un OEM peut:
- Définissez les restrictions par défaut souhaitées avant le premier démarrage.
- Autorisez les développeurs en toute sécurité, en utilisant des cryptomonnaies si vous préférez.
- Appliquez les modifications des restrictions une fois qu'un développeur est à la fois authentifié et autorisé.
Cet article décrit une implémentation de référence qui consiste en une restriction de débogage. une application de contrôleur et un point de terminaison de l'émetteur de jetons distant.
Terminologie
En plus de Terminologie, ces termes sont utilisés dans cet article:
- Signature Web JSON (JWS), définie dans le document RFC 7515
- Institut national des normes et de la technologie (NIST)
Conception
Les OEM peuvent autoriser les développeurs à l'aide de jetons de signature Web JSON (JWS) (RFC7515). Dans mise en œuvre de référence, les jetons d'accès sont émis par les OEM et consommés par la restriction de la manette. Les jetons d'accès sont conçus pour résister aux attaques par rejeu et aux jetons falsifiés.
Figure 1 : Conception
Intégration et configuration
Les OEM doivent spécifier les restrictions par défaut souhaitées lors du premier démarrage. Cela se fait avec plusieurs superpositions de ressources statiques pour remplacer les valeurs par défaut dans le framework AOSP.
Les restrictions par défaut pour l'utilisateur du système headless peuvent être configurées avec le
Chaîne config_defaultFirstUserRestrictions
dans
frameworks/base/core/res/res/values/config.xml
, par exemple:
<!-- 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>
Vous pouvez configurer les restrictions par défaut pour les conducteurs, les passagers et les invités dans
frameworks/base/core/res/res/xml/config_user_types.xml
Un OEM peut superposer|
ces chaînes pour définir les restrictions par défaut pour chaque type d'utilisateur respectivement, par exemple:
<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>
Une implémentation de référence est fournie à l'emplacement suivant dans AOSP:
packages/apps/Car/DebuggingRestrictionController
Tests
Google recommande aux OEM de commencer par l'implémentation de référence.
- Après avoir configuré les restrictions souhaitées dans les fichiers de superposition, compilez AAOS et et valider les flux définis. Utiliser l'application de référence et le service local compatible avec JWS pour vérifier vos paramètres d'accès.
- Configurez le système pour qu'il utilise votre service cloud compatible avec JWS (facultatif). Confirmez que vous êtes d'observer le flux souhaité sur votre service de backend.