Aprovisionamiento de claves remotas

El aprovisionamiento de claves remoto (RKP) forma parte de AOSP desde Android 12. Android 14 presenta un módulo de aprovisionamiento remoto actualizable que aumenta la resiliencia de las funciones al mejorar la solidez de la API de servicio y disminuir el tiempo para introducir mejoras.

Motivación

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

Antes de Android 14, RKP se separa 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 del almacén de claves para alertar a RemoteProvisioner sobre una posible falta de recursos.

RKP como módulo de línea principal está diseñado para mejorar estos puntos empaquetando todo de forma prolija en un APEX.

Límite del módulo

El APEX de la línea principal de RKP, com.android.rkpd, contiene la aplicación Daemon de aprovisionamiento de claves remotas (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 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 de 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.