Remote Key Provisioning

Remote Key Provisioning (RKP) ist seit Android 12 Teil von AOSP. Mit Android 14 wird ein aktualisierbares Modul für die Remote-Bereitstellung eingeführt, das die Zuverlässigkeit der Funktionen erhöht, indem die Robustheit der Dienst-API verbessert und die Zeit bis zur Einführung von Verbesserungen verkürzt wird.

Motivation

Der RKP-Dienst soll vereinfacht werden, indem alles in einem APEX-Paket zusammengefasst wird.

Vor Android 14 war RKP in eine App (RemoteProvisioner) und Keystore 2.0 unterteilt. Die App RemoteProvisioner war für die Kontaktaufnahme mit dem RKP-Back-End zuständig und Keystore 2.0 für das Speichern der Schlüssel und die Kommunikation mit HALs. Das war keine gute Architektur, da sich RKP-Schlüssel in Bezug auf die angehängten Metadaten erheblich von Keystore-Schlüsseln unterscheiden. Außerdem waren umständliche Änderungen am Keystore-Framework-Code erforderlich, um RemoteProvisioner über potenzielle Ressourcenknappheit zu informieren.

RKP als Mainline-Modul soll diese Punkte verbessern, indem alles in einem APEX-Paket zusammengefasst wird.

Modulgrenze

Das RKP-Mainline-APEX-Paket com.android.rkpd enthält die Anwendung Remote Key Provisioning Daemon (RKPD) und eine Systemserverkomponente für die Remote-Bereitstellung (in Java erstellt).

Stack-Architektur

Abbildung 1 zeigt die RKP-Stack-Architektur.

RKP-Stackarchitektur

Abbildung 1 : RKP-Stack-Architektur.

Interne Architektur

Abbildung 2 zeigt die interne RKP-Architektur.

Interne RKP-Architektur

Abbildung 2 : Interne RKP-Architektur.

Weitere Informationen zur internen RKP-Architektur:

  • RKPD-Mainline-APEX-Paket – com.android.rkpd

    • RKPD-App (Java)
      • packages/modules/RemoteKeyProvisioning/app
    • RKPD-Systemserverfragment (Java)
      • packages/modules/RemoteKeyProvisioning/system-server
  • HAL-Schnittstelle/Implementierung (Rust/C++)

    • IRemotelyProvisionedComponent
      • hardware/interfaces/security/keymint

Paketformat

Die Anwendung und andere Funktionen des Moduls sind als APEX-Datei com.android.rkpd verpackt.

Abhängigkeiten

Das RKP-Modul ist weiterhin von IRemotelyProvisionedComponent-Implementierungen abhängig, um die Attestierungsschlüssel und Zertifikatsanfragen bereitzustellen.

Teststrategie

Die AOSP-Version des Anwendungs-APEX-Pakets enthält Unittests, die OEMs ausführen können.