遠程密鑰配置

自Android 12 起,遠端金鑰配置(RKP) 就成為AOSP 的一部分。Android 14 引入了遠端配置可更新模組,該模組透過提高服務API 的穩健性並減少對其進行任何改進的時間來提高功能彈性。

動機

透過將所有內容打包到 APEX 中來簡化 RKP 服務。

在 Android 14 之前,RKP 被分為應用程式RemoteProvisioner和 Keystore 2.0。 RemoteProvisioner應用程式負責聯絡 RKP 後端,Keystore 2.0 負責儲存金鑰並與 HAL 通訊。這不是一個好的架構,因為 RKP 金鑰在附加元資料方面與金鑰庫金鑰顯著不同。此外,這需要對 Keystore 框架程式碼進行笨拙的修改,以警告RemoteProvisioner潛在的資源匱乏。

RKP 作為主線模組旨在透過將所有內容整齊地打包到 APEX 中來改進這些點。

模組邊界

RKP 主線 APEX com.android.rkpd包含遠端金鑰配置守護程式 (RKPD) 應用程式和遠端設定係統伺服器元件(使用 Java 建置)。

堆疊架構

圖 1 展示了 RKP 堆疊架構。

RKP堆疊架構

圖 1.RKP堆疊架構。

內部架構

圖 2 展示了 RKP 內部架構。

RKP內部架構

圖 2.RKP內部架構。

有關 RKP 內部架構的其他資訊:

  • RKPD 主線 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 可以運行的單元測試。