Para garantir a integridade do sistema do carro, o Android Automotive protege os dados de entrada nestes níveis:
Figura 1. Arquitetura de serviços do sistema
- Apps. O sistema verifica se um app tem permissão para se comunicar com o carro subsistemas.
- APIs bem definidas. APIs genéricas não aceitam blobs de dados arbitrários (as APIs precisam ser bem definidos).
- Oficina mecânica. Atualizações permitidas apenas por OTA (ou USB), com disco completo e inicialização verificada. Não é possível transferir por sideload.
- HAL do veículo: Verifica mensagens específicas permitidas.
Apps e APIs
O Android Automotive foi criado com base no Android e interage diretamente com vários protocolos subsistemas. Além disso, veículos diferentes podem ter interfaces diferentes e funcionalidades expostas ao Android. Para tornar essas funcionalidades seguras e simplificadas, elas são isoladas em uma camada de abstração, separada do restante do Android; Apenas APIs bem definidas com formatação rígida em mensagens enviadas por redes internas do veículo, pode se comunicar com o veículo HAL Isso oferece uma interface previsível para desenvolvedores Android e uma interação segura com o restante do veículo.
As mensagens da HAL de veículo são filtradas em dois níveis:
- Nível do app. Apps que não são do sistema podem acessar a HAL do veículo pelo carro com as permissões adequadas.
- Nível da HAL do veículo. Permite uma camada adicional de proteção e garantia que as mensagens enviadas aos subsistemas do veículo sejam provenientes de uma fonte legítima. Também pode ser usado para limitar a taxa de mensagens, impedir que aplicativos maliciosos sobrecarreguem o barramento CAN e interferir nos subsistemas do veículo.
HAL do veículo
A HAL do veículo é uma camada inferior que interage com o veículo, comunicando-se com o sistema interno redes e outros hardwares do veículo por meio de chamadas de controle de entrada/saída do driver (ioctl).
A HAL do veículo é o único componente do Android Automotive conectado ao sistema IVI, seja por conexão direta com o processador do app/MicroController ou controlado por uma VMCU. O A HAL do veículo precisa ser restrita a apps do sistema que usam regras SELinux e permissões adequadas em interfaces com kernel.
Políticas do SELinux
O Android Automotive estende o SELinux para filtrar o acesso do motorista, incluindo abrir, fechar, ler, gravar, e chamadas ioctl. Usar a filtragem ioctl (junto com outras funcionalidades do SELinux) limita o tipo de Mensagens de CAN permitidas e aceitas pela HAL do veículo, reduzindo drasticamente a superfície de ataque. Para detalhes sobre o SELinux, consulte Linux com segurança avançada no Android.
Além disso, casos de uso automotivos incluem novos tipos de dados sensíveis que precisam ser isolados e controladas. Os dados sensíveis têm permissões separadas. outros recursos, como controles de AVAC (aquecimento, ventilação e ar-condicionado) e o ajuste de janela devem ser dados apenas a apps do sistema. Exemplo de especificação para automóveis Política do SELinux:
<permission-group android:name=”android.support.car.permission.CAR_MONITORING /> <permission android:name=”android.support.car.permission.CAR_MILEAGE” android:protectionLevel=”signature|privileged” /> <permission android:name=”android.support.car.permission.CAR_SPEED” android:permissionGroup=”android.permission-group.LOCATION” android:protectionLevel=”dangerous” /> <permission android:name=”android.support.car.permission.CAR_VENDOR_EXTENSION” android:permissionGroup=”android.support.car.permission.CAR_INFORMATION” android:protectionLevel=”signature|privileged” />
O grupo de permissões CAR_MONITORING
foi criado para permissões relacionadas a automóveis.
A velocidade atual pode ser considerada uma informação sensível. Portanto, CAR_SPEED
foram criadas com um nível de proteção perigoso. Nesse nível,
as informações são particulares e sensíveis. A permissão CAR_VENDOR_EXTENSION
foi criada
com a permissão no nível do sistema ou da assinatura, que é usada para apps do sistema ou assinados que
recebem explicitamente essa permissão.
Bloqueio de apps e atividades
Para reduzir a distração ao volante, o Android Automotive oferece mais controles (uma lista de permissões) para: garantir que apps transferidos por sideload não possam ser usados quando o veículo estiver em movimento. Esses apps ainda podem executar quando um veículo estiver estacionado ou parado.
Essa lista especifica os apps que podem ser usados com o veículo em movimento. Somente confiáveis apps do sistema podem atualizar a lista de permissões. As atualizações podem ocorrer pela rede, mas não para ser considerado confiável.