Isolamento do sistema do veículo

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

Componentes do Sistema EVS

Figura 1. Arquitetura de serviços do sistema

  • Aplicativos. O sistema verifica se um aplicativo tem permissão para se comunicar com os subsistemas do carro.
  • APIs bem definidas. APIs genéricas não aceitam blobs de dados arbitrários (as APIs devem ser bem definidas).
  • Serviço automotivo. Atualizações permitidas apenas através de OTA (ou USB), com criptografia completa de disco e inicialização verificada. Não pode ser transferido de lado.
  • Veículo HAL. Verifica se mensagens específicas são permitidas.

Aplicativos e APIs

O Android Automotive é baseado no Android e interage diretamente com vários subsistemas críticos para a segurança. Além disso, diferentes veículos podem ter diferentes interfaces com diferentes 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. Somente APIs bem definidas com formatação rigorosa nas mensagens enviadas através de redes no veículo podem se comunicar com o HAL do veículo. Isso fornece uma interface previsível para desenvolvedores Android e proporciona uma interação segura com o resto do veículo.

As mensagens HAL do veículo são filtradas em dois níveis:

  • Nível do aplicativo. Aplicativos que não são do sistema podem acessar o HAL do veículo por meio do serviço automotivo com as permissões adequadas.
  • Nível HAL do veículo. Permite uma camada adicional de proteção e garantia de que as mensagens enviadas aos subsistemas do veículo provêm de uma fonte legítima. Também pode ser usado para mensagens de limite de taxa, evitando que aplicativos maliciosos inundem o barramento CAN e interfiram potencialmente nos subsistemas do veículo.

Veículo HAL

O HAL do veículo é uma camada inferior que interage com o veículo, comunicando-se com as redes do veículo e outros hardwares veiculares por meio de chamadas de controle de entrada/saída do motorista (ioctl).

O HAL do veículo é o único componente do Android Automotive conectado ao sistema IVI, seja por meio de conexão direta do processador de aplicativo/microcontrolador ou por meio de uma VMCU. O acesso ao HAL do veículo deve ser restrito a aplicativos do sistema que usam regras SELinux e permissões adequadas nas interfaces do kernel.

Políticas SELinux

O Android Automotive estende o SELinux para filtrar o acesso ao driver, incluindo chamadas de abertura, fechamento, leitura, gravação e ioctl. O uso da filtragem ioctl (juntamente com outras funcionalidades do SELinux) limita o tipo de mensagens CAN permitidas e aceitas pelo Veículo HAL, reduzindo drasticamente a superfície de ataque. Para obter detalhes sobre o SELinux, consulte Linux com segurança aprimorada no Android .

Além disso, os casos de uso automotivo incluem novos tipos de dados confidenciais que devem ser isolados e controlados. Os dados confidenciais têm permissões separadas; outros recursos, como controles HVAC e ajuste de janela, devem ser fornecidos apenas para aplicativos do sistema. Exemplo de uma política SELinux específica para automóveis:

<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 ao setor automotivo. A velocidade atual pode ser considerada uma informação sensível. Portanto, as permissões CAR_SPEED foram criadas com um nível de proteção perigoso . Este nível significa que as informações são privadas e confidenciais. A permissão CAR_VENDOR_EXTENSION foi criada com a permissão em nível de sistema ou assinatura, que é usada para aplicativos de sistema ou aplicativos assinados que recebem explicitamente essa permissão.

Bloqueio de aplicativos e atividades

Para reduzir a distração ao dirigir, o Android Automotive fornece controles adicionais (uma lista de permissões) para garantir que aplicativos transferidos não possam ser usados ​​quando o veículo estiver em movimento. Esses aplicativos ainda podem ser executados quando um veículo está estacionado ou parado.

A lista de permissões especifica aplicativos que podem ser usados ​​quando o veículo está em movimento. Somente aplicativos de sistema confiáveis ​​podem atualizar a lista de permissões. Embora as atualizações possam ocorrer pela rede, as atualizações não devem ser consideradas confiáveis.