Provisionnement de clés à distance

Le provisionnement de clés à distance (RKP) fait partie d'AOSP depuis Android 12. Android 14 introduit un module de provisionnement à distance pouvant être mis à jour, qui améliore la résilience des fonctionnalités en renforçant la robustesse de l'API de service et en réduisant le temps nécessaire pour y apporter des améliorations.

Motivation

Simplifiez le service RKP en regroupant tous les éléments dans un APEX.

Avant Android 14, RKP était divisé en une application, RemoteProvisioner, et Keystore 2.0. L'application RemoteProvisioner était chargée de contacter le backend RKP, et Keystore 2.0 était chargé à la fois de stocker les clés et de communiquer avec les HAL. Cette architecture n'était pas idéale, car les clés RKP sont très différentes des clés Keystore en termes de métadonnées associées. De plus, cela a nécessité des modifications maladroites du code du framework Keystore pour alerter RemoteProvisioner sur une éventuelle pénurie de ressources.

Le RKP en tant que module Mainline est conçu pour améliorer ces points en regroupant soigneusement tous les éléments dans un APEX.

Limite du module

L'APEX Mainline RKP, com.android.rkpd, contient l'application Remote Key Provisioning Daemon (RKPD) et un composant de serveur de système de provisionnement à distance (créé avec Java).

Architecture de la pile

La figure 1 illustre l'architecture de la pile RKP.

Architecture de la pile RKP

Figure 1 : Architecture de la pile RKP.

Architecture interne

La figure 2 illustre l'architecture interne de RKP.

Architecture interne de RKP

Figure 2. Architecture interne de RKP.

Informations supplémentaires sur l'architecture interne de RKP :

  • RKPD Mainline APEX - com.android.rkpd

    • Application RKPD (Java)
      • packages/modules/RemoteKeyProvisioning/app
    • Fragment de serveur du système RKPD (Java)
      • packages/modules/RemoteKeyProvisioning/system-server
  • Interface/implémentation HAL (Rust/C++)

    • IRemotelyProvisionedComponent
      • hardware/interfaces/security/keymint

Format du package

L'application et les autres fonctionnalités du module sont regroupées dans le fichier APEX com.android.rkpd.

Dépendances

Le module RKP continue de dépendre de l'existence d'implémentations IRemotelyProvisionedComponent pour fournir les clés d'attestation et les demandes de certificat.

Stratégie de test

La version AOSP de l'APEX de l'application contient des tests unitaires que les OEM peuvent exécuter.