Stable-Schnittstelle des OMAPI-Anbieters

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 Umwandlung in eine anbieterstabile 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 für OMAPI hinzugefügt, ohne dass irgendwelche APIs in der derzeit vorhandenen Schnittstelle geändert wurden. Für vorhandene Anwendungs- und Framework-Module, die diese Schnittstelle verwenden, sind keine Änderungen erforderlich.

Als Teil des Android Ready SE-Programms stellen wir zentrale Android-Sicherheitsfunktionen wie Keymaster, Keymint, Identity Credentials und Remote Key Provisioning auf Secure Elements zur Verfügung. Um diese zu aktivieren, sind HALs (Anbieterkomponenten) dieser Funktionen erforderlich, um mit dem Secure Element über die stabile Schnittstelle des OMAPI-Anbieters zu kommunizieren.

Architektur entwerfen

Architektur entwerfen
Abbildung 1 : Entwurfsarchitektur

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 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 Kennung UUID von 16 Bytes definieren. Um diese Zugriffsregel auf HAL-Module anzuwenden, müssen SE-Anbieter diese eindeutige 16-Byte-ID UUID der HAL-Modul-UID in ihrer UUID-Zuordnungskonfigurations-XML des Anbieters zuordnen.

Der OMAPI Vendor Stable Service füllt die UUID bei Bedarf mit FF auf, um sie gemäß Abschnitt 6.1, DeviceAppID-REF-DO Seite: 66 auf 20 Byte zu bringen, 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_ 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 /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 OMAPI Vendor Stable Service-Funktion in einem Ziel-Build 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 die 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 ARs von Secure Element für den HAL-Dienst unter Verwendung von UUIDs als Geräteanwendungsreferenzen bereit. 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 zum Aktivieren des OMAPI Vendor Stable Service in HAL-Modulen verwendet werden.

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

    allow hal_module_label secure_element_service:service_manager find

Verbindung zum stabilen Dienst des OMAPI-Anbieters herstellen: Verwenden Sie in HAL-Modulen das Dienstlabel 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