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 améliorant 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 empaquetant tout dans un APEX.

Avant Android 14, RKP était séparé 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. Il ne s'agissait pas d'une bonne architecture, 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 nécessitait des modifications maladroites du code du framework Keystore pour alerter RemoteProvisioner sur un manque de ressources potentiel.

En tant que module de ligne principale, RKP est conçu pour améliorer ces points en regroupant tous les éléments dans un APEX.

Limite du module

L'APEX principale du 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 en 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 du RKP.

Architecture interne du RKP

Figure 2. Architecture interne du RKP.

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

  • RKPD Mainline APEX - com.android.rkpd

    • Application RKPD (Java)
      • packages/modules/RemoteKeyProvisioning/app
    • Fragment de serveur 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 empaquetées sous la forme de 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 requêtes de certificat.

Stratégie de test

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