Stabile OMAPI-Schnittstelle für Anbieter

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

Design-Architektur
Abbildung 1: Designarchitektur

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