OMAPI Vendor Stable Interface

Einführung

Open Mobile API (OMAPI) ist eine Standard-API, die zur 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 Konvertierung in eine herstellerstabile Schnittstelle sind HAL-Module auch in der Lage, über den OMAPI-Dienst mit den sicheren Elementen zu kommunizieren.

Für die HAL-Module wurde ein neuer Zugriffseintrag auf OMAPI hinzugefügt, ohne dass APIs in der aktuell vorhandenen Schnittstelle geändert wurden. Für bestehende Anwendungs- und Framework-Module, die diese Schnittstelle nutzen, 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. Um diese zu aktivieren, müssen HALs (Anbieterkomponenten) dieser Funktionen mit dem Secure Element über die stabile OMAPI-Anbieterschnittstelle kommunizieren.

Design-Architektur

Designarchitektur
Abbildung 1 : Designarchitektur

OEMs, die 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 Secure Element-Zugriffsregeln durch den Paketnamen oder seine Signatur-Hashes (Geräteanwendungsreferenz) und AID (SE-Anwendungsreferenz) definiert. HAL-Module hatten keine eindeutigen Kennungen wie Paketnamen oder Signaturzertifikate. In Android 13 ermöglicht der OMAPI Vendor Stable Service jetzt HAL-Modulen den Zugriff auf das Secure Element. SE-Anbieter können eine eindeutige UUID mit einer Länge von 16 Byte definieren. Um diese Zugriffsregel auf HAL-Module anzuwenden, müssen SE-Anbieter diese 16-Byte-Unique-Identifier-UUID der HAL-Modul-UID in der XML-Konfiguration ihrer Anbieter-UUID-Zuordnung zuordnen.

Der OMAPI Vendor Stable Service füllt die UUID bei Bedarf mit FF auf, um sie auf 20 Bytes zu bringen, gemäß Abschnitt 6.1, DeviceAppID-REF-DO Seite: 66 und definiert Zugriffsregeln in sicheren Elementen unter Verwendung dieser 20-Byte-UUID als Geräteanwendungsreferenz.

Der Name der Hersteller-UUID-Zuordnungsdatei wird mit dem vordefinierten Präfix hal_uuid_map_ gebildet und mit dem Wert der Systemeigenschaft ro.boot.product.hardware.sku angehängt

    hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml

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

Implementierung

Die folgenden Änderungen sind erforderlich, um die Funktion „OMAPI Vendor Stable Service“ auf einem Zielbuild zu aktivieren.

SecureElement

SecureElement

Aktivieren Sie das Service-Flag secure_element_vintf_enabled mithilfe der Ressourcenüberlagerung unter gerätespezifischen Ordnern.

    <bool name="secure_element_vintf_enabled">true</bool>

Definieren Sie die UID- und UUID-Zuordnungs-XML 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 bereit, indem Sie UUIDs als Geräteanwendungsreferenzen verwenden. Fügen Sie einen Zuordnungseintrag in der Zuordnungskonfiguration hinzu, in dem Sie diese UUID HAL-Modul-UID(s) zuordnen können. Mit dieser Zuordnung ermöglichen Anbieter HAL-Modulen den Zugriff auf Secure Element. OMAPI VTS-Tests können als Referenzimplementierungen für die Aktivierung des OMAPI Vendor Stable Service in HAL-Modulen verwendet werden.

Aktualisieren Sie die Sepolicy des HAL-Moduls: Fügen Sie eine Sepolicy-Regel für das HAL-Modul hinzu, um ihrer Domäne den Zugriff auf den stabilen Dienst des OMAPI-Anbieters zu ermöglichen.

    allow hal_module_label secure_element_service:service_manager find

Stellen Sie eine Verbindung zum stabilen Dienst des OMAPI-Anbieters her: Verwenden Sie von HAL-Modulen aus die Dienstbezeichnung des OMAPI-Anbieters android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default , um eine Verbindung zum Dienst herzustellen.

Validierung

Überprüfen Sie, ob der OMAPI Vendor Stable Service erfolgreich implementiert wurde, indem Sie OMAPI VTS-Tests ausführen.

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases