自 Android 12 起,遠端金鑰佈建 (RKP) 就已是 AOSP 的一部分。Android 14 推出可更新的遠端佈建模組,可透過改善服務 API 的健全性,並縮短導入任何改善項目的時間,進而提升功能的彈性。
動機
將所有內容封裝成 APEX,簡化 RKP 服務。
在 Android 14 之前,RKP 已分離為應用程式 RemoteProvisioner
和 Keystore 2.0。RemoteProvisioner
應用程式負責與 RKP 後端聯絡,Keystore 2.0 則負責儲存金鑰並與 HAL 通訊。這並非理想的架構,因為 RKP 金鑰與 Keystore 金鑰在附加中繼資料方面有顯著差異。此外,這項作業需要對 Keystore 架構程式碼進行不便的修改,才能提醒 RemoteProvisioner
潛在的資源耗盡問題。
RKP 是 Mainline 模組,旨在將所有內容整齊地打包至 APEX,以改善這些問題。
模組邊界
RKP Mainline APEX (com.android.rkpd
) 包含遠端金鑰佈建 Daemon (RKPD) 應用程式,以及遠端佈建系統伺服器元件 (使用 Java 建構)。
堆疊架構
圖 1 說明 RKP 堆疊架構。
圖 1. RKP 堆疊架構。
內部架構
圖 2 說明 RKP 內部架構。
圖 2. RKP 內部架構。
關於 RKP 內部架構的其他資訊:
RKPD Mainline APEX -
com.android.rkpd
- RKPD 應用程式 (Java)
packages/modules/RemoteKeyProvisioning/app
- RKPD 系統伺服器片段 (Java)
packages/modules/RemoteKeyProvisioning/system-server
- RKPD 應用程式 (Java)
HAL 介面/實作 (Rust/C++)
IRemotelyProvisionedComponent
hardware/interfaces/security/keymint
套件格式
模組的應用程式和其他功能會封裝為 APEX 檔案 com.android.rkpd
。
依附元件
RKP 模組仍會依賴 IRemotelyProvisionedComponent
實作項目的存在,以提供認證金鑰和憑證要求。
測試策略
應用程式 APEX 的 AOSP 版本包含原始設備製造商 (OEM) 可執行的單元測試。