Einführung
Die Open Mobile API (OMAPI) ist eine Standard-API, die für die Kommunikation mit dem Secure Element eines Geräts verwendet wird. Vor Android 13 hatten nur Anwendungen und Framework-Module Zugriff auf diese Schnittstelle. Durch die Umwandlung in eine anbieterunabhängige Schnittstelle können HAL-Module auch über den OMAPI-Dienst mit den sicheren Elementen kommunizieren.
Für die HAL-Module wurde ein neuer Zugriffseintrag für OMAPI hinzugefügt, ohne dass APIs in der aktuellen Benutzeroberfläche geändert wurden. Für vorhandene Anwendungs- und Framework-Module, die diese Schnittstelle verwenden, sind keine Änderungen erforderlich.
Im Rahmen des Android Ready SE-Programms stellen wir wichtige Android-Sicherheitsfunktionen wie Keymaster, Keymint, Identitäts-Anmeldedaten und Remote Key Provisioning auf Secure Elements zur Verfügung. Zum Aktivieren dieser Funktionen müssen HALs (Anbieterkomponenten) dieser Funktionen über die OMAPI-Ansicht des Anbieters mit dem Secure Element kommunizieren.
Designarchitektur

OEMs, die ein Secure Element und Android Ready SE-Funktionen in ihre Geräte einbinden, müssen diese Schnittstelle aktivieren, da sie standardmäßig deaktiviert ist. Vor diesem Update wurden Regeln für den Secure Element-Zugriff anhand des Paketnamens oder der Signatur-Hashes (Geräteanwendungsreferenz) und der AID (SE-Anwendungsreferenz) definiert. HAL-Module hatten keine eindeutigen Kennungen wie Paketnamen oder Signaturzertifikate. In Android 13 können HAL-Module jetzt über den OMAPI Vendor Stable Service auf das Secure Element zugreifen. SE-Anbieter können eine eindeutige Kennung (UUID) von 16 Byte definieren. Um diese Zugriffsregel auf HAL-Module anzuwenden, müssen SE-Anbieter diese 16-Byte-UUID in ihrer UUID-Zuordnungs-Konfigurations-XML-Datei dem HAL-Modul zuordnen.
Der OMAPI Vendor Stable Service füllt die UUID bei Bedarf mit FF auf, um eine Länge von 20 Byte zu erreichen (siehe Abschnitt 6.1, DeviceAppID-REF-DO page: 66). Außerdem werden Zugriffsregeln in sicheren Elementen mit dieser 20-Byte-UUID als Geräteanwendungsreferenz definiert.
Der Dateiname der UUID-Zuordnung des Anbieters wird mit dem vordefinierten Präfix hal_uuid_map_
gebildet und der Wert der Systemeigenschaft ro.boot.product.hardware.sku
angehängt.
hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml
Der OMAPI-Dienst „Vendor Stable“ sucht in den Ordnern /odm/etc/
, /vendor/etc/
und /etc/
nach dieser Datei. Eine detaillierte Beschreibung der Konfigurationsdatei für die UUID-Zuordnung des Anbieters finden Sie hier.
Implementierung
Die folgenden Änderungen sind erforderlich, um die OMAPI-Funktion „Vendor Stable Service“ in einem Zielbuild zu aktivieren.
SecureElement
SecureElement
Aktivieren Sie das Dienst-Flag
secure_element_vintf_enabled
mithilfe des Ressourcen-Overlays in den gerätespezifischen Ordnern.
<bool name="secure_element_vintf_enabled">true</bool>
Definieren Sie die UID- und UUID-Zuordnungs-XML-Datei für Ihren Dienst.
<ref_do> <uuid_ref_do> <uids> <uid>0</uid> </uids> <uuid>9f36407ead0639fc966f14dde7970f68</uuid> </uuid_ref_do> <uuid_ref_do> <uids> <uid>1096</uid> <uid>1097</uid> </uids> <uuid>a9b7ba70783b317e9998dc4dd82eb3c5</uuid> </uuid_ref_do> </ref_do>
Stellen Sie die Secure Element-ARs für den HAL-Dienst mit UUIDs als Geräteanwendungsreferenzen bereit. Fügen Sie in der Zuordnungskonfiguration einen Zuordnungseintrag hinzu, in dem Sie diese UUID den HAL-Modul-UIDs zuordnen können. Durch diese Zuordnung erlauben Anbieter HAL-Modulen den Zugriff auf das Secure Element. OMAPI-VTS-Tests können als Referenzimplementierungen verwendet werden, um den OMAPI-Stable-Dienst in HAL-Modulen zu aktivieren.
HAL-Modul-SEPolicy aktualisieren: Fügen Sie eine SEPolicy-Regel für das HAL-Modul hinzu, damit die Domain auf den stabilen OMAPI-Anbieterdienst zugreifen kann.
allow hal_module_label secure_element_service:service_manager find
Verbindung zum stabilen OMAPI-Anbieterdienst herstellen: Verwenden Sie in HAL-Modulen das OMAPI-Anbieterdienstlabel android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default
, um eine Verbindung zum Dienst herzustellen.
Zertifizierungsstufe
Prüfen Sie, ob der OMAPI-Anbieter-stabile Dienst erfolgreich implementiert wurde, indem Sie OMAPI-VTS-Tests ausführen.
run vts -m VtsHalOmapiSeServiceV1_TargetTest run vts -m VtsHalOmapiSeAccessControlTestCases