OMAPI 공급업체 공개 인터페이스

소개

Open Mobile API(OMAPI)는 기기의 보안 요소와 통신하는 데 사용되는 표준 API입니다. Android 13 전에는 애플리케이션과 프레임워크 모듈만 이 인터페이스에 액세스할 수 있었습니다. HAL 모듈은 이 인터페이스를 공급업체 공개 인터페이스로 변환하여 OMAPI 서비스를 통해 보안 요소와도 통신할 수 있습니다.

현재 기존 인터페이스의 API를 수정하지 않고 OMAPI에 액세스할 수 있는 새로운 항목을 HAL 모듈에 추가했습니다. 이 인터페이스를 사용하는 기존 애플리케이션과 프레임워크 모듈은 수정할 필요가 없습니다.

Google은 Android Ready SE 프로그램의 일환으로 보안 요소에서 사용할 수 있는 Keymaster, Keymint, ID 사용자 인증 정보 및 원격 키 프로비저닝과 같은 핵심 Android 보안 기능을 개발하고 있습니다. 이러한 기능을 사용 설정하려면 OMAPI 공급업체 공개 인터페이스를 통해 보안 요소와 통신할 수 있는 기능의 HAL(공급업체 구성요소)이 필요합니다.

설계 아키텍처

설계 아키텍처
그림 1: 설계 아키텍처

기기에 보안 요소 및 Android Ready SE 기능을 통합하는 OEM은 이 인터페이스를 사용 설정해야 합니다(기본적으로 사용 중지되어 있음). 이 업데이트를 진행하기 전에는 보안 요소 액세스 규칙이 패키지 이름이나 서명 해시(기기 애플리케이션 참조) 및 AID(SE 애플리케이션 참조)로 정의되었습니다. HAL 모듈에는 패키지 이름이나 서명 인증서와 같은 고유 식별자가 없었습니다. 이제 Android 13에서는 OMAPI 공급업체 공개 서비스를 통해 HAL 모듈이 보안 요소에 액세스할 수 있습니다. SE 공급업체는 16바이트의 고유 식별자 UUID를 정의할 수 있습니다. 이 액세스 규칙을 HAL 모듈에 적용하려면 SE 공급업체가 이 16바이트 고유 식별자 UUID를 공급업체 UUID 매핑 구성 XML에 있는 HAL 모듈 UID에 매핑해야 합니다.

OMAPI 공급업체 공개 서비스는 필요한 경우 6.1, DeviceAppID-REF-DO page: 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 공급업체 공개 서비스는 /odm/etc/, /vendor/etc/, /etc/ 폴더에서 이 파일을 검색합니다. 공급업체 UUID 매핑 구성 파일에 관한 자세한 설명은 여기에서 확인할 수 있습니다.

구현

타겟 빌드에서 OMAPI 공급업체 공개 서비스 기능을 사용 설정하려면 다음과 같은 변경이 필요합니다.

SecureElement

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 테스트는 HAL 모듈에서 OMAPI 공급업체 공개 서비스를 사용 설정하기 위한 참조 구현으로 사용될 수 있습니다.

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 공급업체 공개 서비스가 성공적으로 구현되었는지 검증합니다.

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases