Isolamento do sistema do veículo

Para garantir a integridade do sistema do carro, o Android Automotive protege os dados de entrada nestes níveis:

Componentes do sistema EVS

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.