遠端金鑰佈建

遠端金鑰佈建 (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 堆疊架構。

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) 可執行的單元測試。