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 Ausfallsicherheit von Funktionen erhöht, indem die Robustheit der Dienst-API verbessert und die Zeit für die Einführung von Verbesserungen verkürzt wird.

Ziel

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

Vor Android 14 war RKP in eine App,RemoteProvisionerund Keystore 2.0 unterteilt. Die RemoteProvisioner-App war für die Kontaktaufnahme mit dem RKP-Backend verantwortlich 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 dadurch 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

Der RKP-Mainline-APEX, com.android.rkpd, enthält die RKPD-Anwendung (Remote Key Provisioning Daemon) und eine Serverkomponente des Remote-Provisioning-Systems (in Java erstellt).

Stack-Architektur

Abbildung 1 zeigt die Architektur des RKP-Stacks.

RKP-Stackarchitektur

Abbildung 1: RKP-Stackarchitektur.

Interne Architektur

Abbildung 2 zeigt die interne Architektur des RKP.

Interne RKP-Architektur

Abbildung 2: Interne RKP-Architektur.

Zusätzliche Informationen zur internen RKP-Architektur:

  • RKPD Mainline APEX – com.android.rkpd

    • RKPD-App (Java)
      • packages/modules/RemoteKeyProvisioning/app
    • RKPD-Systemserver-Fragment (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 der Existenz von IRemotelyProvisionedComponent-Implementierungen abhängig, um die Attestierungsschlüssel und Zertifikatsanfragen bereitzustellen.

Teststrategie

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