Giao diện ổn định của nhà cung cấp OMAPI

Giới thiệu

Open Mobile API (OMAPI) là một API chuẩn dùng để giao tiếp với Phần tử bảo mật của thiết bị. Trước Android 13, chỉ các ứng dụng và mô-đun khung mới có quyền truy cập vào giao diện này. Bằng cách chuyển đổi thành giao diện ổn định của nhà cung cấp, các mô-đun HAL cũng có thể giao tiếp với các phần tử bảo mật thông qua dịch vụ OMAPI.

Thêm một mục truy cập mới vào OMAPI cho các mô-đun HAL mà không cần sửa đổi bất kỳ API nào trong giao diện hiện có. Bạn không cần phải chỉnh sửa các mô-đun khung và ứng dụng hiện có bằng cách sử dụng giao diện này.

Trong khuôn khổ chương trình Android Ready SE, chúng tôi đang cung cấp các tính năng bảo mật cốt lõi của Android như Keymaster, Keymint, Thông tin xác thực danh tính và Cung cấp khoá từ xa trên các phần tử bảo mật. Để bật các tính năng này, bạn cần có HAL (thành phần của nhà cung cấp) của các tính năng này để giao tiếp với Secure Element thông qua giao diện ổn định của nhà cung cấp OMAPI.

Cấu trúc thiết kế

Kiến trúc thiết kế
Hình 1: Kiến trúc thiết kế

Các nhà sản xuất thiết bị gốc (OEM) tích hợp Khối bảo mật và tính năng Android Ready SE vào thiết bị của họ cần bật giao diện này vì giao diện này bị tắt theo mặc định. Trước bản cập nhật này, các quy tắc truy cập vào Phần tử bảo mật được xác định theo tên gói hoặc hàm băm chữ ký của gói (tệp tham chiếu ứng dụng thiết bị) và AID (tệp tham chiếu ứng dụng SE). Các mô-đun HAL không có giá trị nhận dạng duy nhất như tên gói hoặc chứng chỉ chữ ký. Giờ đây, trong Android 13, Dịch vụ ổn định của nhà cung cấp OMAPI cho phép các mô-đun HAL truy cập vào Secure Element. Nhà cung cấp SE có thể xác định một mã nhận dạng duy nhất UUID gồm 16 byte. Để áp dụng quy tắc truy cập này cho các mô-đun HAL, nhà cung cấp SE bắt buộc phải ánh xạ mã nhận dạng duy nhất 16 byte này (UUID) đến UID mô-đun HAL trong tệp XML cấu hình ánh xạ UUID của nhà cung cấp.

Dịch vụ ổn định của nhà cung cấp OMAPI sẽ thêm FF vào UUID nếu cần để tạo UUID có kích thước 20 byte, theo mục 6.1, trang DeviceAppID-REF-DO: 66 và xác định các quy tắc truy cập trong các phần tử bảo mật bằng cách sử dụng UUID 20 byte này làm tham chiếu ứng dụng thiết bị.

Tên tệp ánh xạ UUID của nhà cung cấp được tạo bằng tiền tố được xác định trước hal_uuid_map_ và được thêm vào giá trị của thuộc tính hệ thống ro.boot.product.hardware.sku

    hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml

Dịch vụ OMAPI Vendor Stable sẽ tìm kiếm tệp này trong các thư mục /odm/etc/, /vendor/etc//etc/. Bạn có thể xem nội dung mô tả chi tiết về tệp cấu hình ánh xạ UUID của nhà cung cấp tại đây.

Triển khai

Bạn cần thực hiện các thay đổi sau để bật tính năng Dịch vụ ổn định của nhà cung cấp OMAPI trên một bản dựng mục tiêu.

SecureElement

SecureElement

Bật cờ dịch vụ secure_element_vintf_enabled bằng cách sử dụng lớp phủ tài nguyên trong các thư mục dành riêng cho thiết bị.

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

Xác định tệp XML ánh xạ UID và UUID cho dịch vụ của bạn.

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

Cung cấp các AR của phần tử bảo mật cho dịch vụ HAL bằng cách sử dụng UUID làm tham chiếu ứng dụng thiết bị. Thêm một mục ánh xạ trong cấu hình ánh xạ, trong đó bạn có thể ánh xạ UUID này đến(các) UID mô-đun HAL. Với ánh xạ này, các nhà cung cấp đang cho phép các mô-đun HAL truy cập vào Phần tử bảo mật. Bạn có thể sử dụng các kiểm thử OMAPI VTS làm phương thức triển khai tham chiếu để bật Dịch vụ ổn định của nhà cung cấp OMAPI trong các mô-đun HAL.

Cập nhật chính sách bảo mật của mô-đun HAL: Thêm quy tắc chính sách bảo mật cho mô-đun HAL để cho phép miền của họ truy cập vào dịch vụ ổn định của nhà cung cấp OMAPI.

    allow hal_module_label secure_element_service:service_manager find

Kết nối với dịch vụ ổn định của nhà cung cấp OMAPI: Từ các mô-đun HAL, hãy sử dụng nhãn dịch vụ của nhà cung cấp OMAPI android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default để kết nối với dịch vụ.

Xác nhận kết quả

Xác thực rằng bạn đã triển khai thành công Dịch vụ ổn định của nhà cung cấp OMAPI bằng cách chạy các thử nghiệm VTS OMAPI.

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases