Provisionamento de chaves remotas

O provisionamento de chaves remoto (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 nele.

Motivação

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

Antes do Android 14, o RKP era separado em um app, RemoteProvisioner e 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, essas modificações exigiam modificações estranhas no código do framework do Keystore para alertar o RemoteProvisioner sobre uma possível privação de recursos.

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

Limite do módulo

O APEX Mainline 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 de 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.