Aprovisionamiento de claves remotas

El aprovisionamiento de claves remoto (RKP) forma parte de AOSP desde Android 12. Android 14 presenta un módulo actualizable de aprovisionamiento remoto que aumenta la resiliencia de las funciones mejorando la solidez de la API del servicio y disminuyendo el tiempo para realizar mejoras en ella.

Motivación

Para simplificar el servicio de RKP, empaqueta todo en un APEX.

Antes de Android 14, RKP se separaba en una app, RemoteProvisioner, y Keystore 2.0. La app de RemoteProvisioner era responsable de comunicarse con el backend de RKP, y Keystore 2.0 era responsable de almacenar las claves y comunicarse con los HAL. Esta no era una buena arquitectura porque las claves de RKP son muy diferentes de las claves del almacén de claves en términos de metadatos adjuntos. Además, esto requirió modificaciones incómodas en el código del framework de Keystore para alertar a RemoteProvisioner sobre una posible escasez de recursos.

El RKP, como módulo de Mainline, está diseñado para mejorar estos puntos empaquetando todo de forma ordenada en un APEX.

Límite del módulo

El APEX principal de RKP, com.android.rkpd, contiene la aplicación del daemon de aprovisionamiento de claves remoto (RKPD) y un componente de servidor del sistema de aprovisionamiento remoto (compilado con Java).

Arquitectura de pila

En la Figura 1, se ilustra la arquitectura de la pila de RKP.

Arquitectura de la pila de RKP

Figura 1: Arquitectura de la pila de RKP.

Arquitectura interna

En la figura 2, se ilustra la arquitectura interna de la RKP.

Arquitectura interna de RKP

Figura 2: Arquitectura interna de RKP.

Información adicional sobre la arquitectura interna de RKP:

  • APEX de RKPD Mainline: com.android.rkpd

    • App de RKPD (Java)
      • packages/modules/RemoteKeyProvisioning/app
    • Fragmento del servidor del sistema RKPD (Java)
      • packages/modules/RemoteKeyProvisioning/system-server
  • Implementación o interfaz de HAL (Rust/C++)

    • IRemotelyProvisionedComponent
      • hardware/interfaces/security/keymint

Formato del paquete

La aplicación y otras funciones del módulo se empaquetan como archivo com.android.rkpd de APEX.

Dependencias

El módulo de RKP sigue dependiendo de la existencia de implementaciones de IRemotelyProvisionedComponent para proporcionar las claves de certificación y las solicitudes de certificados.

Estrategia de pruebas

La versión de AOSP del APEX de la aplicación contiene pruebas de unidades que los OEMs pueden ejecutar.