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 anbieterstabile Schnittstelle können HAL-Module auch über den OMAPI-Dienst mit den Secure Elements kommunizieren.
Für die HAL-Module wurde ein neuer Zugriffs-Eintrag für OMAPI hinzugefügt, ohne dass APIs in der aktuellen Schnittstelle geändert wurden. Für bestehende 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, Identity Credentials und Remote Key Provisioning auf Secure Elements zur Verfügung. Dazu müssen die HALs (Anbieterkomponenten) dieser Funktionen über die OMAPI-Anbieter-Schnittstelle mit dem Secure Element kommunizieren.
Design-Architektur

OEMs, die ein Secure Element und Android Ready SE-Funktionen in ihre Geräte integrieren, müssen diese Schnittstelle aktivieren, da sie standardmäßig deaktiviert ist. Vor diesem Update wurden die Zugriffsregeln für das Secure Element durch den Paketnamen oder seine Signatur-Hashes (Geräteanwendungsreferenz) und die AID (SE-Anwendungsreferenz) definiert. HAL-Module hatten keine eindeutigen Kennungen wie Paketnamen oder Signaturzertifikate. In Android 13 ermöglicht der OMAPI Vendor Stable Service HAL-Modulen den Zugriff auf das Secure Element. SE-Anbieter können eine eindeutige Kennung (UUID) mit 16 Byte definieren. Damit diese Zugriffsregel auf HAL-Module angewendet werden kann, müssen SE-Anbieter diese 16 Byte lange eindeutige Kennung (UUID) in ihrer XML-Konfiguration für die UUID-Zuweisung des Anbieters der HAL-Modul-UID zuordnen.
Der OMAPI Vendor Stable Service füllt die UUID bei Bedarf mit FF auf, um sie auf 20 Byte zu verlängern, wie in Abschnitt 6.1, DeviceAppID-REF-DO, Seite 66 beschrieben. Außerdem werden Zugriffsregeln in sicheren Elementen definiert, die diese 20‑Byte-UUID als Geräteanwendungsreferenz verwenden.
Der Dateiname der Vendor-UUID-Zuordnung wird mit dem vordefinierten Präfix hal_uuid_map_
gebildet und mit dem Wert der Systemeigenschaft ro.boot.product.hardware.sku
ergänzt.
hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml
Der OMAPI Vendor Stable-Dienst sucht in den Ordnern /odm/etc/
, /vendor/etc/
und /etc/
nach dieser Datei. Eine detaillierte Beschreibung der Konfigurationsdatei für die Zuordnung von Anbieter-UUIDs finden Sie hier.
Implementierung
Die folgenden Änderungen sind erforderlich, um das OMAPI Vendor Stable Service-Feature in einem Ziel-Build zu aktivieren.
SecureElement
SecureElement
Aktivieren Sie das Dienst-Flag
secure_element_vintf_enabled
mit einem Ressourcen-Overlay in gerätespezifischen Ordnern.
<bool name="secure_element_vintf_enabled">true</bool>
Definieren Sie die XML-Datei für die UID- und UUID-Zuordnung 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 der Zuordnungskonfiguration einen Zuordnungseintrag hinzu, in dem Sie diese UUID HAL-Modul-UID(s) zuordnen können. Mit dieser Zuordnung ermöglichen Anbieter von HAL-Modulen den Zugriff auf das Secure Element. OMAPI-VTS-Tests können als Referenzimplementierungen verwendet werden, um den OMAPI-Vendor-Stable-Service in HAL-Modulen zu aktivieren.
Aktualisieren Sie die SELinux-Richtlinie des HAL-Moduls: Fügen Sie eine SELinux-Regel für das HAL-Modul hinzu, damit die zugehörige Domain auf den stabilen OMAPI-Vendordienst zugreifen kann.
allow hal_module_label secure_element_service:service_manager find
Verbindung zum stabilen OMAPI-Anbieterservice herstellen: Verwenden Sie in HAL-Modulen das OMAPI-Anbieterservicelabel android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default
, um eine Verbindung zum Dienst herzustellen.
Zertifizierungsstufe
Prüfen Sie, ob der OMAPI Vendor Stable Service erfolgreich implementiert wurde, indem Sie die OMAPI-VTS-Tests ausführen.
run vts -m VtsHalOmapiSeServiceV1_TargetTest run vts -m VtsHalOmapiSeAccessControlTestCases