No centro do SDV do AAOS está a arquitetura orientada a serviços (SOA, na sigla em inglês), que oferece modularidade ao decompor todo o sistema em componentes individuais chamados de pacotes de serviços. Esses pacotes de serviços precisam ser identificados e autenticados para garantir a operação segura do sistema distribuído.
O controlador e o registro de serviços automotivos nativos (agente de descoberta de serviços) é um sistema distribuído implementado no perfil principal do SDV do AAOS para facilitar os serviços com identificação e autenticação.
Um pacote de serviços pode ter várias instâncias em uma ou mais VMs. Cada instância do pacote de serviços recebe uma identidade exclusiva do veículo do agente de descoberta de serviços.
Identificadores de instâncias de pacote de serviços
Uma instância em execução de um pacote de serviços, que é um processo do SO, tem dois identificadores exclusivos em todo o veículo:
- Um nome de instância de pacote de serviços totalmente qualificado (FQIN)
- Um número de ID da instância do pacote de serviços (SID)
O FQIN permanece o mesmo em reinicializações de processos do SO e reinicializações do sistema. Ele é válido independentemente do estado do ciclo de vida da instância do pacote de serviços a que se refere.
O SID está vinculado ao ciclo de vida do processo do SO da instância do pacote de serviços. Portanto, sempre que uma instância de pacote de serviços é iniciada (ou reiniciada), o agente de descoberta de serviços atribui a ela um SID diferente. É um valor imprevisível e opaco. Assim como um ID de processo do SO, um SID se torna inválido assim que o processo do SO da instância do pacote de serviços a que ele se refere é interrompido. Os dois identificadores não são equivalentes.
Como o SID é um identificador temporário, na maioria das situações em que você especifica uma instância de pacote de serviços, use um FQIN.
Identificação local
Quando uma instância de pacote de serviços é iniciada, ela se registra no agente local de descoberta de serviços, que é a autoridade local que atribui identidades de pacote de serviços (FQIN e SID) aos processos do SO. O agente de descoberta de serviços reconhece uma instância de pacote de serviços local pelo ID de usuário (UID) do Linux.
Controle remoto
Uma instância de pacote de serviços pode criar um par de chaves assimétricas e associar a chave pública ao FQIN em um certificado X.509. Para isso, ele envia uma solicitação de assinatura de certificado ao agente de descoberta de serviços local, que é a autoridade certificadora de todas as instâncias de pacote de serviços em uma VM do SDV.
Junto com o certificado X.509 assinado pelo agente de descoberta de serviços local, uma instância de pacote de serviços também recebe uma lista das chaves públicas raiz de todos os agentes de descoberta de serviços no veículo.
Com essas informações, duas instâncias de pacote de serviços localizadas em VMs SDV diferentes podem se identificar e autenticar para estabelecer conexões TLS seguras.