OMAPI 供應商穩定版介面

簡介

開啟 Mobile API (OMAPI) 是用於與裝置安全通訊的標準 API 元素。在 Android 13 之前,只有應用程式和架構模組 可存取這個介面只要將其轉換為供應商的穩定介面 HAL 模組也能夠與安全元素通訊 必須透過 OMAPI 服務執行

HAL 模組新增了 OMAPI 的存取權項目,但沒有 修改目前介面中的所有 API。沒有任何 現有應用程式和架構模組需要修改 只要利用這個介面即可

加入 Android Ready SE 計畫 我們針對 Keymaster、Keymint 等 可透過 Secure 取得身分憑證和遠端金鑰佈建 元素。要啟用這些功能,需要具備這些硬體的 HAL (供應商元件) 功能,透過 OMAPI 供應商與安全元件通訊 以及穩定性。

設計架構

設計架構
圖 1:設計架構

原始設備製造商 (OEM) 會在 這個介面預設為停用,因此裝置必須啟用。 在本次更新前 (由套件定義) 安全元件存取規則 名稱或其簽章雜湊值 (裝置應用程式參考資料) 和 AID (SE 應用程式參考)。HAL 模組沒有專屬 ID 例如套件名稱或簽名憑證在 Android 13 中,OMAPI 供應商穩定服務允許 HAL 模組存取安全元件。 SE 供應商可以定義 16 個位元組的專屬 ID UUID。 如要將這項存取規則套用至 HAL 模組,SE 供應商需進行對應 連結至供應商的 HAL 模組 UID,這個 16 位元組的專屬 ID UUID UUID 對應設定 XML。

OMAPI 供應商穩定版服務 (如有必要) 使用 FF 將 UUID 填充 改成 20 個位元組 6.1、 DeviceAppID-REF-DO 頁面:66,並定義安全的存取規則 元素,並使用此 20 位元組 UUID 做為裝置應用程式參照。

供應商 UUID 對應檔案名稱是由預先定義的前置字元組成 hal_uuid_map_,並加上系統值。 屬性 ro.boot.product.hardware.sku

    hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml

OMAPI 供應商穩定服務會在以下位置搜尋這個檔案: /odm/etc//vendor/etc//etc/ 資料夾。供應商 UUID 對應設定的詳細說明 檔案可供下載 請按這裡

實作

必須進行以下變更,才能啟用 OMAPI 廠商穩定版 目標版本的服務功能。

安全元件

SecureElement

啟用服務旗標 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 模組存取安全元件。 OMAPI VTS 測試 可用於啟用 OMAPI 供應商 HAL 模組中的穩定版服務。

更新 HAL 模組 Sepolicy:為 HAL 模組新增政策規則以允許 存取 OMAPI 廠商穩定服務。

    allow hal_module_label secure_element_service:service_manager find

連線至 OMAPI 供應商穩定服務:從 HAL 模組使用 OMAPI 供應商 服務標籤 android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default 連線至服務。

驗證

確認 OMAPI Vendor Stable Service 已成功完成 來處理 OMAPI VTS 測試

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases