Aprovisionamiento de claves remoto

El aprovisionamiento remoto de claves (RKP) forma parte del AOSP desde Android 12. Android 14 introduce un módulo actualizable de aprovisionamiento remoto que aumenta la resiliencia de las funciones, ya que mejora la solidez de la API del servicio y reduce el tiempo necesario para introducir cualquier mejora en ella.

Motivación

Simplifica el servicio de RKP empaquetando todo en un APEX.

Antes de Android 14, el RKP se separaba en una app, RemoteProvisioner, y Keystore 2.0. La app de RemoteProvisioner era responsable de comunicarse con el backend del RKP, y Keystore 2.0 era responsable de almacenar las claves y comunicarse con las HAL. Esta no era una buena arquitectura porque las claves de RKP son significativamente diferentes de las claves de Keystore 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 falta de recursos.

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

Límite del módulo

El APEX de Mainline del 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 la 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 del RKP.

Arquitectura interna del RKP

Figura 2: Arquitectura interna del RKP.

Información adicional sobre la arquitectura interna del RKP:

  • RKPD Mainline APEX - com.android.rkpd

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

    • IRemotelyProvisionedComponent
      • hardware/interfaces/security/keymint

Formato del paquete

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

Dependencias

El módulo del 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 del AOSP del APEX de la aplicación contiene pruebas de unidades que los OEM pueden ejecutar.