OMAPI ベンダー安定インターフェイス

導入

Open Mobile API (OMAPI) は、デバイスのセキュア エレメントと通信するために使用される標準 API です。 Android 13 より前は、アプリケーションとフレームワーク モジュールのみがこのインターフェイスにアクセスできました。 HAL モジュールは、ベンダー安定インターフェイスに変換することで、OMAPI サービスを通じてセキュア エレメントと通信できるようになります。

現在の既存のインターフェイスの API を変更することなく、OMAPI への新しいアクセス エントリが HAL モジュールに追加されました。このインターフェイスを使用する既存のアプリケーションおよびフレームワーク モジュールを変更する必要はありません。

Android Ready SE プログラムの一環として、Keymaster、Keymint、ID 認証情報、リモート キー プロビジョニングなどのコア Android セキュリティ機能を Secure Elements で利用できるようにしています。これらを有効にするには、OMAPI ベンダー安定インターフェイスを介してセキュア エレメントと通信するために、これらの機能の HAL (ベンダー コンポーネント) が必要です。

設計アーキテクチャ

設計アーキテクチャ
図 1 : 設計アーキテクチャ

Secure Element および Android Ready SE 機能をデバイスに統合する OEM は、このインターフェイスがデフォルトで無効になっているため、有効にする必要があります。この更新前は、セキュア エレメントのアクセス ルールは、パッケージ名またはその署名ハッシュ (デバイス アプリケーション参照) および AID (SE アプリケーション参照) によって定義されていました。 HAL モジュールには、パッケージ名や署名証明書などの一意の識別子がありませんでした。 Android 13 では、OMAPI ベンダー安定サービスにより、HAL モジュールがセキュア エレメントにアクセスできるようになります。 SE ベンダーは、16 バイトの一意の識別子 UUID を定義できます。このアクセス ルールを HAL モジュールに適用するには、SE ベンダーは、ベンダー UUID マッピング設定 XML でこの 16 バイトの一意の識別子 UUID を HAL モジュール UID にマッピングする必要があります。

OMAPI ベンダー安定サービスは、セクション6.1、DeviceAppID-REF-DO ページ: 66に従って、必要に応じて UUID に FF を埋め込んで 20 バイトにし、この 20 バイトの UUID をデバイス アプリケーション参照として使用してセキュア エレメントのアクセス ルールを定義します。

ベンダー UUID マッピング ファイル名は、事前定義されたプレフィックスhal_uuid_map_で形成され、システム プロパティro.boot.product.hardware.skuの値が追加されます。

    hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml

OMAPI Vendor Stable サービスは/odm/etc//vendor/etc/および/etc/フォルダーの下でこのファイルを検索します。ベンダー UUID マッピング構成ファイルの詳細な説明は、ここで参照できます。

実装

ターゲット ビルドで OMAPI Vendor Stable Service 機能を有効にするには、次の変更が必要です。

セキュアエレメント

セキュアエレメント

デバイス固有のフォルダーの下のリソース オーバーレイを使用して、サービス フラグsecure_element_vintf_enabledを有効にします。

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

サービスの UID および UUID マッピング XML を定義します。

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

UUID をデバイス アプリケーション参照として使用して、HAL サービスのセキュア エレメント AR をプロビジョニングします。この UUID を HAL モジュール UID にマッピングできるマッピング設定にマッピング エントリを追加します。このマッピングにより、ベンダーは HAL モジュールが Secure Element にアクセスできるようになります。 OMAPI VTS テストは、 HAL モジュールで OMAPI Vendor Stable Service を有効にするためのリファレンス実装として使用できます。

HAL モジュールの sepolicy を更新する: HAL モジュールの sepolicy ルールを追加して、ドメインが OMAPI ベンダーの安定したサービスにアクセスできるようにします。

    allow hal_module_label secure_element_service:service_manager find

OMAPI ベンダー安定サービスに接続する: HAL モジュールから、OMAPI ベンダー サービス ラベルandroid.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default使用してサービスに接続します。

検証

OMAPI VTS テストを実行して、OMAPI Vendor Stable Service が正常に実装されていることを検証します。

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases