Opções seguras para desenvolvedores

De acordo com o Documento de definição de compatibilidade do Android, Os OEMs precisam oferecer uma maneira de possibilitar o desenvolvimento de apps. No entanto, fornecer recursos opções de desenvolvedores dentro dos carros deixa esses carros vulneráveis a ataques. Acesso ao desenvolvedor agora podem ser controladas por um OEM usando um mecanismo de token criptográfico autenticado. Especificamente, um OEM pode:

  • Defina as restrições padrão antes da primeira inicialização.
  • Autorize os desenvolvedores com segurança, com tokens de criptografia, se preferir.
  • Aplique as mudanças de restrição quando um desenvolvedor for autenticado e autorizado.

Este artigo descreve uma implementação de referência que consiste em uma restrição de depuração e um endpoint remoto do emissor de token.

Terminologia

Além da Terminologia, esses termos são usados neste artigo:

  • JSON Web Signature (JWS), definido na RFC 7515
  • Instituto Nacional de Padrões e Tecnologia (NIST)

Design

Os OEMs podem autorizar desenvolvedores com tokens JSON Web Signature (JWS) (RFC7515). Na implementação de referência, os tokens de acesso são emitidos por OEMs e consumidos pela restrição aplicativo controlador. Os tokens de acesso são projetados para resistir a ataques de repetição e forjados.

Figura 1. Design

Integração e configuração

Os OEMs precisam especificar as restrições padrão desejadas na primeira inicialização. Isso é feito com várias sobreposições de recursos estáticos para substituir os padrões no framework do AOSP.

As restrições padrão para o usuário do sistema headless podem ser configuradas com o String config_defaultFirstUserRestrictions em frameworks/base/core/res/res/values/config.xml, por exemplo:

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

As restrições padrão para motoristas, passageiros e convidados podem ser configuradas no frameworks/base/core/res/res/xml/config_user_types.xml: Um OEM pode sobrepor| essas strings para definir as restrições padrão em cada tipo de usuário, respectivamente, por exemplo:

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

Uma implementação de referência é fornecida no seguinte local no AOSP:

packages/apps/Car/DebuggingRestrictionController

Teste

O Google recomenda que os OEMs comecem com a implementação de referência e se desenvolvam a partir dela.

  1. Depois de configurar as restrições desejadas nos arquivos de sobreposição, compile o AAOS e para validar os fluxos definidos. Use o app de referência e o serviço local ativado para o JWS para verificar suas configurações de acesso.
  2. Configure o sistema para usar o serviço de nuvem ativado para JWS (opcional). Confirme seu observando o fluxo desejado no serviço de back-end.