加密貨幣

Conscrypt 模組可加速安全改進,提高設備安全性,無需依賴 OTA 更新。它使用 Java 程式碼和本機程式庫來提供 Android TLS 實作以及大部分 Android 加密功能,例如金鑰產生器、密碼和訊息摘要。 Conscrypt 可作為開源程式庫使用,但在 Android 平台中包含時它有一些專業化。

Conscrypt 模組使用BoringSSL ,這是一個本機庫,它是OpenSSL 的Google 分支,在許多Google 產品中用於加密和TLS(最著名的是Google Chrome),並與Conscrypt 程式碼(Java 和本機程式碼)結合使用。 BoringSSL 沒有正式版本(所有使用者從頭開始建置)並且不保證 API 或 ABI 穩定性。

Android 14 的變化

Android 14 在 Conscrypt 中引入了可更新的根信任儲存。 CA 憑證(或憑證)為 Android 和整個網路中使用的公鑰提供信任根源。定期檢查這些憑證以確保正確的加密簽名,因此必須提供它們並將其儲存在依賴它們的所有裝置上。

在 Mainline 之前,Android 將證書儲存在系統分區中(在system/ca-certificates中),並在每個 Android 版本中更新它們。現在,透過 Mainline,可以使用 Mainline 列車更新更頻繁地更新證書。這項新功能應該能夠簡化更新流程,讓我們更快解決問題,並有助於延長設備的使用壽命。

從 Android 14 開始,根信任憑證儲存在 Conscrypt 模組 APEX 和系統分割區中。應用程式仍然可以選擇自己的憑證並使用NetworkSecurityConfig修改憑證行為。

Android 14 包括以下其他 Conscrypt 模組變更:

  • 新增了 AES-CMAC MAC 實作。
  • 棄用並刪除了“PBEwithHmacSHA2-*” MAC 實作。
  • 新增了對 X25519 金鑰、金鑰協定和簽章的有限支援。
  • 更新了 BoringSSL 以確保 X.509 的正確性。
  • 公共 CertPath API 中不再支援 MD5 簽署憑證。自 API 等級 16 以來,TLS 連線不再接受此類憑證。

Android 10 的變化

Android 9 不包含適用於Conscrypt 的Android 特定公共API,而是使用安全提供者來實作Java 加密架構(JCA) 的標準類,包括Cipher 和MessageDigest,以及Java 安全通訊端擴充(JSSE),包括SSLSocket 和SSLEngine。使用者與這些類別交互, libcore或框架程式碼使用一些非公共 Conscrypt API。

Android 10 在android.net.ssl中加入了少量公共 API 方法,以存取javax.net.ssl下的類別未公開的 Conscrypt 功能。 Android 10 還包含Bouncy Castle的精簡版,以作為 Android 運行時的一部分提供不太受歡迎的加密工具(不包含在 Conscrypt 模組中)。

格式和依賴關係

Conscrypt 模組 ( com.android.conscrypt ) 作為APEX檔案分發,其中包含 Conscrypt Java 程式碼和動態連結到 Android NDK 庫(例如liblog )的 Conscrypt 本機庫。本機庫還包括 BoringSSL 的副本,該副本已通過 NIST 的加密模組驗證計劃 (CMVP)進行驗證( 憑證#3753 )。

Conscrypt 模組公開以下 API:

  • 公共 APIjava.*javax.*下的套件中的類別和介面以及android.net.ssl.*下的類別的擴展。外部應用程式程式碼不會直接呼叫 Conscrypt。平台 API 標準確保這些 API 保持向後和向前相容。
  • 核心平台 API是框架用來存取非公共功能的隱藏 API。這些都是相對有限的;最大的用戶是NetworkSecurityConfig ,它擴展了 Conscrypt 信任管理器(驗證憑證的元件)來實現網路安全配置功能
  • 核心內 API僅限於由 JCA 和 JSEE 機制反射呼叫的零參數建構函數。