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