Antarmuka Stabil Vendor OMAPI

Pengantar

Open Mobile API (OMAPI) adalah API standar yang digunakan untuk berkomunikasi dengan Elemen Aman perangkat. Sebelum Android 13, hanya aplikasi dan modul framework yang memiliki akses ke antarmuka ini. Dengan mengonversinya ke antarmuka stabil vendor, modul HAL juga dapat berkomunikasi dengan elemen aman melalui layanan OMAPI.

Entri akses baru ke OMAPI ditambahkan untuk modul HAL tanpa mengubah API apa pun di antarmuka yang ada saat ini. Tidak ada perubahan yang diperlukan untuk modul aplikasi dan framework yang ada menggunakan antarmuka ini.

Sebagai bagian dari program Android Ready SE, kami menyediakan fitur keamanan Android inti seperti Keymaster, Keymint, Kredensial Identitas, dan Penyediaan Kunci Jarak Jauh di Elemen Aman. Untuk mengaktifkannya, HAL (komponen vendor) dari fitur ini harus berkomunikasi dengan Elemen Pengaman melalui antarmuka stabil vendor OMAPI.

Arsitektur desain

Arsitektur Desain
Gambar 1: Arsitektur Desain

OEM yang mengintegrasikan fitur Elemen Pengaman dan Android Ready SE ke dalam perangkat mereka harus mengaktifkan antarmuka ini karena dinonaktifkan secara default. Sebelum update ini, aturan akses Elemen Pengaman ditentukan oleh nama paket atau hash tanda tangannya (referensi aplikasi perangkat) dan AID (referensi aplikasi SE). Modul HAL tidak memiliki ID unik seperti nama paket atau sertifikat tanda tangan. Sekarang di Android 13, Layanan Stabil Vendor OMAPI memungkinkan modul HAL mengakses Elemen Pengaman. Vendor SE dapat menentukan UUID ID unik 16 byte. Untuk menerapkan aturan akses ini ke modul HAL, vendor SE diwajibkan untuk memetakan UUID ID unik 16 byte ini ke UID modul HAL dalam XML konfigurasi pemetaan UUID vendor mereka.

Layanan Stabil Vendor OMAPI menambahkan FF ke UUID jika diperlukan untuk membuatnya menjadi 20 byte, sesuai dengan bagian 6.1, halaman DeviceAppID-REF-DO: 66 dan menentukan aturan akses di elemen aman menggunakan UUID 20 byte ini sebagai referensi aplikasi perangkat.

Nama file pemetaan UUID vendor dibentuk dengan awalan yang telah ditentukan hal_uuid_map_ dan ditambahkan dengan nilai properti sistem ro.boot.product.hardware.sku

    hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml

Layanan Stabil Vendor OMAPI menelusuri file ini di folder /odm/etc/, /vendor/etc/, dan /etc/. Deskripsi mendetail tentang file konfigurasi pemetaan UUID vendor tersedia di sini.

Implementasi

Perubahan berikut diperlukan untuk mengaktifkan fitur Layanan Stabil Vendor OMAPI pada build target.

SecureElement

SecureElement

Aktifkan flag layanan secure_element_vintf_enabled menggunakan overlay resource di folder khusus perangkat.

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

Tentukan xml pemetaan UID dan UUID untuk layanan Anda.

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

Sediakan AR Elemen Pengaman untuk layanan HAL menggunakan UUID sebagai referensi aplikasi perangkat. Tambahkan entri pemetaan dalam konfigurasi pemetaan tempat Anda dapat memetakan UUID ini ke UID modul HAL. Dengan pemetaan ini, vendor mengizinkan modul HAL mengakses Elemen Pengaman. Pengujian VTS OMAPI dapat digunakan sebagai implementasi referensi untuk mengaktifkan Layanan Stabil Vendor OMAPI di modul HAL.

Memperbarui sepolicy modul HAL: Menambahkan aturan sepolicy untuk modul HAL guna mengizinkan domain mereka mengakses layanan stabil vendor OMAPI.

    allow hal_module_label secure_element_service:service_manager find

Menghubungkan ke layanan stabil vendor OMAPI: Dari modul HAL, gunakan label layanan android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default vendor OMAPI untuk terhubung ke layanan.

Validasi

Validasi bahwa Layanan Stabil Vendor OMAPI telah berhasil diimplementasikan dengan menjalankan pengujian VTS OMAPI.

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases