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 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

Designarchitektur
Abbildung 1: 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