Стабильный интерфейс поставщика OMAPI

Введение

Open Mobile API (OMAPI) — это стандартный API, используемый для связи с элементом безопасности устройства. До Android 13 доступ к этому интерфейсу имели только приложения и модули платформы. Преобразовав его в стабильный интерфейс поставщика, модули HAL также могут взаимодействовать с защищенными элементами через службу OMAPI.

Для модулей HAL была добавлена ​​новая запись доступа к OMAPI без изменения каких-либо API в текущем существующем интерфейсе. Для существующих модулей приложения и платформы, использующих этот интерфейс, не требуется никаких изменений.

В рамках программы Android Ready SE мы делаем доступными в Secure Elements основные функции безопасности Android, такие как Keymaster, Keymint, идентификационные данные и удаленное предоставление ключей. Для их включения требуются HAL (компоненты поставщика) этих функций для связи с Secure Element через стабильный интерфейс поставщика OMAPI.

Проектная архитектура

Дизайн Архитектуры
Рисунок 1 : Архитектура проектирования

OEM-производители, интегрирующие функции Secure Element и Android Ready SE в свои устройства, должны включить этот интерфейс, поскольку по умолчанию он отключен. До этого обновления правила доступа к элементу безопасности определялись по имени пакета или его хэшам подписи (ссылка на приложение устройства) и AID (ссылка на приложение SE). Модули HAL не имели уникальных идентификаторов, таких как имена пакетов или сертификаты подписи. Теперь в Android 13 служба стабильной работы поставщика OMAPI позволяет модулям HAL получать доступ к защищенному элементу. Поставщики SE могут определить уникальный идентификатор UUID длиной 16 байт. Чтобы применить это правило доступа к модулям HAL, поставщики SE должны сопоставить этот 16-байтовый уникальный идентификатор UUID с UID модуля HAL в XML-файле конфигурации сопоставления UUID своего поставщика.

Служба стабильной работы поставщика OMAPI дополняет UUID с помощью FF, если необходимо, чтобы сделать его длиной 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 Vendor Stable ищет этот файл в папках /odm/etc/ , /vendor/etc/ и /etc/ . Подробное описание файла конфигурации сопоставления UUID поставщика доступно здесь .

Выполнение

Следующие изменения необходимы для включения функции стабильной службы поставщика OMAPI в целевой сборке.

SecureElement

SecureElement

Включите служебный флаг secure_element_vintf_enabled , используя наложение ресурсов в папках конкретного устройства.

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

Определите XML-код сопоставления UID и UUID для вашего сервиса.

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

Предоставьте AR Secure Element для службы HAL, используя UUID в качестве ссылок на приложение устройства. Добавьте запись сопоставления в конфигурацию сопоставления, где вы можете сопоставить этот UUID с UID модуля HAL. Благодаря этому сопоставлению поставщики разрешают модулям HAL получать доступ к Secure Element. Тесты OMAPI VTS можно использовать в качестве эталонных реализаций для включения стабильной службы поставщика OMAPI в модулях HAL.

Обновите политику sepolicy модуля 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 успешно реализована, выполнив тесты OMAPI VTS .

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases