遠端金鑰佈建 (RKP) 自 Android 12 起,一直是 Android 開放原始碼計畫的一部分。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) 可執行的單元測試。