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

Giới thiệu

API di động mở (OMAPI) là một API tiêu chuẩn được sử 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ác ứng dụng và mô-đun khung công tác mới có quyền truy cập vào giao diện này. Bằng cách chuyển đổi nó sang giao diện ổn định của nhà cung cấp, các mô-đun HAL cũng có khả năng giao tiếp với các phần tử an toàn thông qua dịch vụ OMAPI.

Một mục truy cập mới vào OMAPI đã được thêm vào cho các mô-đun HAL mà không sửa đổi bất kỳ API nào trong giao diện hiện có hiện tại. Không có sửa đổi cần thiết cho các mô-đun ứng dụng và khuôn khổ hiện có sử dụng giao diện này.

Là một phần của 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à Cấp phép khóa từ xa khả dụng trên Phần tử bảo mật. Việc bật các tính năng này yêu cầu 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 Phần tử bảo mật thông qua giao diện ổn định của nhà cung cấp OMAPI.

Kiến trúc thiết kế

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

Các OEM tích hợp Phần tử bảo mật và các tính năng Android Ready SE vào thiết bị của họ cần phải bật giao diện này vì nó 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 Phần tử bảo mật được xác định bằng tên gói hoặc hàm băm chữ ký của nó (tham chiếu ứng dụng thiết bị) và AID (tham chiếu ứng dụng SE). Mô-đun HAL không có số nhận dạng duy nhất như tên gói hoặc chứng chỉ chữ ký. Hiện đã có 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 Phần tử bảo mật. Nhà cung cấp SE có thể xác định một UUID định danh duy nhất 16 byte. Để áp dụng quy tắc truy cập này cho mô-đun HAL, nhà cung cấp SE được yêu cầu ánh xạ UUID định danh duy nhất 16 byte này thành UID mô-đun HAL trong XML cấu hình ánh xạ UUID của nhà cung cấp của họ.

Dịch vụ ổn định của nhà cung cấp OMAPI đệm UUID bằng FF nếu cần thiết để tạo thành 20 byte, theo phần 6.1, trang DeviceAppID-REF-DO: 66 và xác định quy tắc truy cập trong các phần tử an toàn 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 với tiền tố hal_uuid_map_ được xác định trước và được nối với 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 tìm kiếm tệp này trong thư mục /odm/etc/ , /vendor/etc//etc/ . Mô tả chi tiết về tệp cấu hình ánh xạ UUID của nhà cung cấp có sẵn tại đây .

Thực hiện

Các thay đổi sau là bắt buộc để bật tính năng Dịch vụ ổn định của nhà cung cấp OMAPI trên 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 cụ thể của thiết bị.

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

Xác định 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 AR 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ập ánh xạ trong cấu hình ánh xạ nơi bạn có thể ánh xạ UUID này với (các) UID mô-đun HAL. Với việc lập bản đồ này, các nhà cung cấp đang cho phép các mô-đun HAL truy cập Phần tử an toàn. Các bài kiểm tra OMAPI VTS có thể được sử dụng làm triển khai tham chiếu để bật Dịch vụ ổn định của nhà cung cấp OMAPI trong mô-đun HAL.

Cập nhật chính sách riêng của mô-đun HAL: Thêm quy tắc riêng 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ừ mô-đun HAL, 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ụ.

Thẩm định

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

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases