遠端金鑰佈建

自 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 堆疊架構。

RKP 堆疊架構

圖 1. RKP 堆疊架構。

內部架構

圖 2 說明 RKP 內部架構。

RKP 內部架構

圖 2. RKP 內部架構。

RKP 內部架構的其他資訊:

  • RKPD Mainline APEX - com.android.rkpd

    • RKPD 應用程式 (Java)
      • packages/modules/RemoteKeyProvisioning/app
    • RKPD 系統伺服器片段 (Java)
      • packages/modules/RemoteKeyProvisioning/system-server
  • HAL 介面/實作 (Rust/C++)

    • IRemotelyProvisionedComponent
      • hardware/interfaces/security/keymint

套件格式

模組的應用程式和其他功能會封裝為 APEX 檔案 com.android.rkpd

依附元件

RKP 模組仍須依附於 IRemotelyProvisionedComponent 實作,才能提供認證金鑰和憑證要求。

測試策略

應用程式 APEX 的 AOSP 版本包含 OEM 可執行的單元測試。