Provisionamento de chave remota

O provisionamento remoto de chave (RKP) faz parte do AOSP desde o Android 12. O Android 14 introduz um módulo atualizável de provisionamento remoto que aumenta a resiliência dos recursos, melhorando a robustez da API do serviço e diminuindo o tempo para introduzir quaisquer melhorias nela.

Motivação

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

Antes do Android 14, o RKP era separado em um aplicativo, RemoteProvisioner e Keystore 2.0. O aplicativo RemoteProvisioner foi responsável por entrar em contato com o backend RKP, e o Keystore 2.0 foi responsável por armazenar as chaves e se comunicar com HALs. Esta 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 exigiu modificações estranhas no código da estrutura do Keystore para alertar RemoteProvisioner sobre a possível falta de recursos.

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

Limite do módulo

O RKP Mainline APEX, com.android.rkpd , contém o aplicativo Remote Key Provisioning Daemon (RKPD) e um componente de servidor do sistema de provisionamento remoto (construído com Java).

Arquitetura de pilha

A Figura 1 ilustra a arquitetura da pilha RKP.

Arquitetura de pilha RKP

Figura 1. Arquitetura da pilha RKP.

Arquitetura interna

A Figura 2 ilustra a arquitetura interna do RKP.

Arquitetura interna RKP

Figura 2. Arquitetura interna do RKP.

Informações adicionais sobre a arquitetura interna do RKP:

  • Linha principal RKPD APEX - com.android.rkpd

    • Aplicativo 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 a depender 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 AOSP do aplicativo APEX contém testes de unidade que os OEMs podem executar.