De acordo com o documento de definição de compatibilidade do Android , os OEMs devem fornecer uma maneira de permitir o desenvolvimento de aplicativos. No entanto, fornecer opções de desenvolvedor semelhantes às dos dispositivos móveis nos carros deixa esses carros vulneráveis a ataques. O acesso às opções do desenvolvedor agora pode ser controlado por um OEM usando um mecanismo de token criptográfico autenticado. Especificamente, um OEM pode:
- Defina as restrições padrão desejadas antes da primeira inicialização.
- Autorize os desenvolvedores com segurança, com tokens criptográficos, se preferir.
- Aplique alterações de restrição quando um desenvolvedor estiver autenticado e autorizado.
Este artigo descreve uma implementação de referência que consiste em um aplicativo controlador de restrição de depuração e um ponto de extremidade emissor de token remoto.
Terminologia
Além da Terminologia , estes termos são usados neste artigo:
- Assinatura JSON Web (JWS), definida na RFC 7515
- Instituto Nacional de Padrões e Tecnologia (NIST)
Projeto
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 pelos OEMs e consumidos pelo aplicativo controlador de restrição. Os tokens de acesso são projetados para resistir a ataques de repetição e tokens forjados.
Figura 1. Projeto
Integração e configuração
Os OEMs devem 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 na estrutura AOSP.
As restrições padrão para o usuário do sistema headless podem ser configuradas com a 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 em frameworks/base/core/res/res/xml/config_user_types.xml
. Um OEM pode sobrepor | essas strings para definir as restrições padrão para 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 desenvolvam a partir daí.
- Após configurar as restrições desejadas nos arquivos de sobreposição, compile o AAOS e valide os fluxos definidos. Use o aplicativo de referência e o serviço local habilitado para JWS para verificar suas configurações de acesso.
- Configure o sistema para usar seu serviço de nuvem habilitado para JWS (opcional). Verifique se você está observando o fluxo desejado no seu serviço de back-end.