自 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
) 包含遠端金鑰佈建精靈 (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 可執行的單元測試。