Cung cấp khóa từ xa (RKP) đã là một phần của AOSP kể từ Android 12. Android 14 giới thiệu một mô-đun có thể cập nhật cấp phép từ xa giúp tăng khả năng phục hồi tính năng bằng cách cải thiện tính mạnh mẽ của API dịch vụ và giảm thời gian đưa ra bất kỳ cải tiến nào cho API đó.
Động lực
Đơn giản hóa dịch vụ RKP bằng cách đóng gói mọi thứ vào APEX.
Trước Android 14, RKP được tách thành một ứng dụng RemoteProvisioner
và Keystore 2.0. Ứng dụng RemoteProvisioner
chịu trách nhiệm liên hệ với phần phụ trợ RKP và Keystore 2.0 chịu trách nhiệm lưu trữ khóa và liên lạc với HAL. Đây không phải là kiến trúc tốt vì khóa RKP khác biệt đáng kể so với khóa Keystore về siêu dữ liệu đính kèm. Ngoài ra, điều này đòi hỏi phải có những sửa đổi khó xử đối với mã khung Keystore để cảnh báo RemoteProvisioner
về khả năng thiếu tài nguyên.
RKP với tư cách là mô-đun Mainline được thiết kế để cải thiện những điểm này bằng cách đóng gói gọn gàng mọi thứ vào một APEX.
Ranh giới mô-đun
RKP Mainline APEX, com.android.rkpd
, chứa ứng dụng Daemon cung cấp khóa từ xa (RKPD) và thành phần máy chủ hệ thống cung cấp từ xa (được xây dựng bằng Java).
Kiến trúc ngăn xếp
Hình 1 minh họa kiến trúc ngăn xếp RKP.
Hình 1. Kiến trúc ngăn xếp RKP.
Kiến trúc bên trong
Hình 2 minh họa kiến trúc bên trong RKP.
Hình 2. Kiến trúc bên trong RKP.
Thông tin bổ sung về kiến trúc nội bộ RKP:
APEX tuyến chính của RKPD -
com.android.rkpd
- Ứng dụng RKPD (Java)
-
packages/modules/RemoteKeyProvisioning/app
-
- Đoạn máy chủ hệ thống RKPD (Java)
-
packages/modules/RemoteKeyProvisioning/system-server
-
- Ứng dụng RKPD (Java)
Giao diện/triển khai HAL (Rust/C++)
-
IRemotelyProvisionedComponent
-
hardware/interfaces/security/keymint
-
-
Định dạng gói
Ứng dụng và các chức năng khác của mô-đun được đóng gói dưới dạng tệp APEX com.android.rkpd
.
phụ thuộc
Mô-đun RKP tiếp tục phụ thuộc vào sự tồn tại của việc triển khai IRemotelyProvisionedComponent
để cung cấp khóa chứng thực và yêu cầu chứng chỉ.
Chiến lược thử nghiệm
Phiên bản AOSP của ứng dụng APEX chứa các bài kiểm tra đơn vị mà OEM có thể chạy.