Giới thiệu
Mở Mobile API (OMAPI) là một API tiêu chuẩn dùng để giao tiếp với giao thức Secure Phần tử. Trước Android 13, chỉ có các ứng dụng và mô-đun khung mới truy cập vào giao diện này. Bằng cách chuyển đổi sang một 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ử bảo mật thông qua dịch vụ OMAPI.
Mục truy cập mới vào OMAPI đã được thêm vào cho các mô-đun HAL mà không có sửa đổi bất kỳ API nào trong giao diện hiện có. Không có các nội dung sửa đổi cần thiết đối với các mô-đun khung và ứng dụng hiện có bằng giao diện này.
Là một phần của chương trình Android Sẵn sàng SE chúng tôi đang tạo ra các tính năng bảo mật cốt lõi của Android như Keymaster, Keymint, Thông tin đăng nhập danh tính và Cấp phép khoá từ xa có sẵn trên Secure Phần tử. Để bật các lớp này, bạn cần có HAL (thành phần của nhà cung cấp) để giao tiếp với Phần tử bảo mật thông qua nhà cung cấp OMAPI ổn định.
Kiến trúc thiết kế
OEM tích hợp các tính năng Phần tử bảo mật và Android Sẵn sàng SE vào các thiết bị 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 Phần tử bảo mật đã được xác định theo gói tên hoặc hàm băm chữ ký của tên đó (tham chiếu ứng dụng trên thiết bị) và AID (Tài liệu tham khảo về ứ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ý. Hiện có trong Android 13, OMAPI Dịch vụ ổn định của nhà cung cấp 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 mã nhận dạng duy nhất (UUID) là 16 byte. Để áp dụng quy tắc truy cập này cho các mô-đun HAL, nhà cung cấp SE phải liên kết UUID định danh duy nhất 16 byte này cho UID mô-đun HAL trong nhà cung cấp của họ XML cấu hình ánh xạ UUID.
Dịch vụ ổn định của nhà cung cấp OMAPI bổ sung UUID bằng FF nếu cần thành 20 byte, theo từng phần 6.1, Trang DeviceAppID-Ref-DO: 66 và xác định các quy tắc truy cập trong chế độ bảo mật 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 bằng giá trị của hệ thống
tài sản ro.boot.product.hardware.sku
hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml
Tìm kiếm dịch vụ Ổn định của nhà cung cấp OMAPI cho tệp này trong
/odm/etc/
, /vendor/etc/
và /etc/
. Nội dung mô tả chi tiết về cấu hình liên kết mã nhận dạng duy nhất (UUID) của nhà cung cấp
tệp có sẵn
tại đây.
Triển khai
Những thay đổi sau đây là bắt buộc để bật Phiên bản ổn định của nhà cung cấp OMAPI Tính năng dịch vụ trên bản dựng mục tiêu.
Phần tử bảo mật
Phần tử bảo mật
Bật cờ dịch vụ
secure_element_vintf_enabled
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 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 dưới dạng các tham chiếu ứng dụng trên thiết bị. Thêm một mục nhập ánh xạ vào bản đồ config nơi bạn có thể ánh xạ UUID này tới UID mô-đun HAL. Bằng cách này nhà cung cấp dịch vụ ánh xạ đang cho phép các mô-đun HAL truy cập Phần tử bảo mật. Thử nghiệm VTS OMAPI có thể được dùng làm các hoạt động triển khai tham chiếu để bật Nhà cung cấp OMAPI Dịch vụ ổn định trong các mô-đun HAL.
Cập nhật sepolicy của mô-đun HAL: Thêm quy tắc sepolicy 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à cung cấp OMAPI
nhãn dịch vụ
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 Dịch vụ ổn định của nhà cung cấp OMAPI đã được được triển khai bằng cách chạy Thử nghiệm VTS OMAPI.
run vts -m VtsHalOmapiSeServiceV1_TargetTest run vts -m VtsHalOmapiSeAccessControlTestCases