OMAPI-Anbieterschnittstelle

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 Apps 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 Zugriffseintrag für die OMAPI hinzugefügt, ohne dass APIs in der aktuellen Schnittstelle 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ätsnachweise und Remote Key Provisioning auf Secure Elements zur Verfügung. Dazu müssen die HALs (Anbieterkomponenten) dieser Funktionen über die anbieterstabile OMAPI Schnittstelle mit dem Secure Element kommunizieren.

Design-Architektur

Design-Architektur

Abbildung 1 : 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 Paket namen oder seine Signatur-Hashes (Geräteanwendungsreferenz) und die AID (SE-Anwendungsreferenz) definiert. HAL-Module hatten keine eindeutigen IDs wie Paketnamen oder Signaturzertifikate. In Android 13 und höher können HAL-Module über den anbieterstabilen OMAPI -Dienst auf das Secure Element zugreifen. SE-Anbieter können eine eindeutige 16-Byte-UUID definieren. Damit diese Zugriffsregel auf HAL-Module angewendet werden kann, müssen SE-Anbieter diese 16-Byte-UUID in ihrer XML-Konfiguration für die UUID-Zuordnung des Anbieters der HAL-Modul-UID zuordnen.

Der anbieterstabile OMAPI-Dienst füllt die UUID bei Bedarf mit FF auf 20 Byte auf, wie in Abschnitt 6.1, DeviceAppID-REF-DO, Seite 66 beschrieben. Außerdem werden Zugriffsregeln in Secure Elements definiert, wobei diese 20-Byte-UUID als Geräteanwendungsreferenz verwendet wird.

Der Dateiname für die UUID-Zuordnung des Anbieters besteht aus dem vordefinierten Präfix hal_uuid_map_ und dem Wert der Systemeigenschaft ro.boot.product.hardware.sku

    hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml

Der anbieterstabile OMAPI-Dienst sucht nach dieser Datei in den Ordnern /odm/etc/, /vendor/etc/ und /etc/. Eine detaillierte Beschreibung der Konfigurationsdatei für die UUID-Zuordnung des Anbieters finden Sie hier.

Implementierung

Die folgenden Änderungen sind erforderlich, um die Funktion des anbieterstabilen OMAPI Dienstes in einem Ziel-Build zu aktivieren.

SecureElement

SecureElement

Aktivieren Sie das Dienst-Flag secure_element_vintf_enabled mit einer Ressourcenüberlagerung 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 ARs des Secure Element 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. Mit dieser Zuordnung ermöglichen Anbieter HAL-Modulen den Zugriff auf das Secure Element. OMAPI VTS-Tests können als Referenzimplementierungen verwendet werden, um den anbieterstabilen OMAPI-Dienst in HAL-Modulen zu aktivieren.

Aktualisieren Sie die sepolicy des HAL-Moduls: Fügen Sie eine sepolicy-Regel für das HAL-Modul hinzu, damit seine Domain auf den anbieterstabilen OMAPI-Dienst zugreifen kann.

    allow hal_module_label secure_element_service:service_manager find

Verbindung mit dem anbieterstabilen OMAPI-Dienst herstellen: Verwenden Sie in HAL-Modulen die anbieterstabile OMAPI-Dienstkennzeichnung android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default , um eine Verbindung zum Dienst herzustellen.

Validierung

Prüfen Sie mit OMAPI VTS-Tests, ob der anbieterstabile OMAPI-Dienst erfolgreich implementiert wurde, indem Sie die Tests ausführen.

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases