加密

Conscrypt 模塊可在不依賴 OTA 更新的情況下加速安全改進並提高設備安全性。它使用 Java 代碼和本機庫來提供 Android TLS 實現以及大部分 Android 加密功能,例如密鑰生成器、密碼和消息摘要。 Conscrypt可作為一個開放源碼庫,儘管它有一些特例包含在Android平台時。

該Conscrypt模塊使用BoringSSL ,即OpenSSL的谷歌的叉子,這是在許多谷歌產品為加密和TLS(最明顯的是谷歌瀏覽器)使用的機庫。 BoringSSL 沒有正式版本(所有用戶都從頭構建)並且不保證 API 或 ABI 穩定性。

Android 10 中的變化

Android 9 不包含用於 Conscrypt 的特定於 Android 的公共 API,而是使用一個安全提供程序來實現 Java 密碼體系結構 (JCA) 的標準類,包括 Cipher 和 MessageDigest,以及 Java 安全套接字擴展 (JSSE),包括 SSLSocket 和 SSLEngine。與這些類和一些非公開的API Conscrypt交互的用戶通過使用libcore或框架的代碼。

Android的10增加了少量的公共API方法android.net.ssl訪問Conscrypt功能,不會被課下暴露javax.net.ssl 。機器人10還包括的瘦身拷貝充氣城堡以提供較低的普及加密工具的Android運行時(不包括Conscrypt模塊中)的一部分。

格式和依賴

所述Conscrypt模塊分佈為APEX包含Conscrypt Java代碼和一個Conscrypt本地庫文件動態地鏈接到Android NDK庫(如liblog )。本機庫還包括BoringSSL的副本已被驗證( 證書編號3753通過NIST的) 加密模塊驗證計劃(CMVP) 。

Conscrypt 模塊公開了以下 API:

  • 公共API是在包中的類的擴展和接口下java.*javax.* ,加上下類android.net.ssl.* 。外部應用程序代碼不直接調用 Conscrypt。平台 API 標準確保這些 API 保持向後和向前兼容。
  • 核心平台API隱藏所用的框架來訪問非公開的API功能。這些是相對有限的;最大的用戶是NetworkSecurityConfig ,它擴展了Conscrypt信任管理器來實現(即驗證證書的組件)的網絡安全配置功能
  • 內部核心API僅限於由JCA和JSEE機械反思所謂的無參數的構造函數。