Provisionamento de chaves remoto

O provisionamento remoto de chaves (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 dos recursos, melhorando a robustez da API de serviço e diminuindo o tempo necessário para introduzir melhorias.

Motivação

Simplificar o serviço 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 as HALs. Essa não era uma boa arquitetura porque as chaves RKP são significativamente diferentes das chaves Keystore em termos de metadados anexados. Além disso, isso exigia modificações estranhas no código do framework Keystore para alertar o RemoteProvisioner sobre uma possível escassez de recursos.

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

Limite do módulo

O APEX Mainline do RKP, com.android.rkpd, contém o aplicativo do daemon de provisionamento remoto de chaves (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 de pilha do RKP.

Arquitetura da pilha 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:

  • APEX Mainline do RKPD: 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 o arquivo APEX com.android.rkpd.

Dependências

O módulo RKP continua dependendo da existência de implementações IRemotelyProvisionedComponent para fornecer as chaves de atestado e as 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.