Provisionamento de chaves remotas

O provisionamento de chaves remotas (RKP, na sigla em inglês) faz parte do AOSP desde o Android 12. O Android 14 apresenta um módulo atualizável de provisionamento remoto que aumenta a resiliência do recurso melhorando a robustez da API do serviço e diminuindo o tempo para introduzir melhorias.

Motivação

Simplifique o serviço de RKP empacotando tudo em um APEX.

Antes do Android 14, o RKP era separado em um app, RemoteProvisioner, e no Keystore 2.0. O app RemoteProvisioner era responsável por entrar em contato com o back-end do RKP, e o Keystore 2.0 era responsável por armazenar as chaves e se comunicar com os HALs. Essa não era uma boa arquitetura porque as chaves RKP são significativamente diferentes das chaves do Keystore em termos de metadados anexados. Além disso, isso exigiu modificações estranhas no código da estrutura do Keystore para alertar RemoteProvisioner sobre a possível falta de recursos.

O RKP como um módulo principal foi projetado para melhorar esses pontos, agrupando tudo em um APEX.

Limite do módulo

O APEX principal do RKP, com.android.rkpd, contém o aplicativo daemon de provisionamento de chaves remotas (RKPD, na sigla em inglês) e um componente de servidor do sistema de provisionamento remoto criado com Java.

Arquitetura de pilha

A Figura 1 ilustra a arquitetura da pilha RKP.

Arquitetura da pilha do RKP

Figura 1. Arquitetura de pilha do RKP.

Arquitetura interna

A Figura 2 ilustra a arquitetura interna do RKP.

Arquitetura interna do RKP

Figura 2. Arquitetura interna do RKP.

Outras informações sobre a arquitetura interna do RKP:

  • RKPD Mainline APEX - com.android.rkpd

    • App RKPD (Java)
      • packages/modules/RemoteKeyProvisioning/app
    • Fragmento do servidor do sistema RKPD (Java)
      • packages/modules/RemoteKeyProvisioning/system-server
  • Interface/implementação HAL (Rust/C++)

    • IRemotelyProvisionedComponent
      • hardware/interfaces/security/keymint

Formato do pacote

O aplicativo e outras funcionalidades do módulo são empacotados como arquivo APEX com.android.rkpd.

Dependências

O módulo RKP continua dependendo da existência de implementações de IRemotelyProvisionedComponent para fornecer as chaves de atestado e solicitações de certificado.

Estratégia de teste

A versão do AOSP do APEX do aplicativo contém testes de unidade que os OEMs podem executar.