Das Conscrypt-Modul beschleunigt Sicherheitsverbesserungen und verbessert die Gerätesicherheit, ohne dass OTA-Updates erforderlich sind. Es verwendet Java-Code und eine native Bibliothek, um die Android-TLS-Implementierung sowie einen Großteil der kryptografischen Funktionen von Android wie Schlüsselgeneratoren, Chiffren und Nachrichten-Digests bereitzustellen. Conscrypt ist als Open-Source-Bibliothek verfügbar, hat aber einige Spezialisierungen, wenn es in der Android-Plattform enthalten ist.
Das Conscrypt-Modul verwendet BoringSSL, eine native Bibliothek, die eine Google-Ableitung von OpenSSL ist und in vielen Google-Produkten für Kryptografie und TLS (insbesondere Google Chrome) in Verbindung mit Conscrypt-Code (sowohl Java- als auch nativer Code) verwendet wird. BoringSSL hat keine offiziellen Releases (alle Nutzer bauen aus dem Head-Branch). Außerdem gibt es keine Garantien für die Stabilität der API oder des ABI.
Änderungen in Android 15
Unter Android 15 ist die Verwendung der TLS-Versionen 1.0 und 1.1 eingeschränkt. Diese Versionen wurden bereits in Android eingestellt, sind aber jetzt für Apps, die auf Android 15 ausgerichtet sind, nicht mehr zulässig.
Änderungen in Android 14
In Android 14 wird in Conscrypt ein aktualisierbarer Root-Truststore eingeführt. Zertifizierungsstellenzertifikate (oder Zertifikate) bilden die Grundlage für öffentliche Schlüssel, die in Android und im Internet allgemein verwendet werden. Diese Zertifikate werden regelmäßig auf ordnungsgemäße kryptografische Signatur geprüft. Sie müssen daher auf allen Geräten bereitgestellt und gespeichert werden, auf denen sie verwendet werden.
Vor Mainline speicherte Android Zertifikate in der Systempartition (in system/ca-certificates
) und aktualisierte sie mit jeder Android-Version. Mit Mainline können Zertifikate jetzt häufiger mithilfe von Mainline-Zugupdates aktualisiert werden. Diese neue Funktion sollte die Aktualisierungsprozesse optimieren, die Bearbeitungszeit bei Problemen verkürzen und die Lebensdauer der Geräte verlängern.
Ab Android 14 werden Root-Trust-Zertifikate im Conscrypt-Modul APEX und in der Systempartition gespeichert. Apps können weiterhin eigene Zertifikate auswählen und das Zertifikatsverhalten mit NetworkSecurityConfig
ändern.
Android 14 enthält außerdem die folgenden Änderungen am Conscrypt-Modul:
- AES-CMAC-MAC-Implementierung hinzugefügt
- MAC-Implementierungen von „PBEwithHmacSHA2-*“ wurden eingestellt und entfernt.
- Es wurde eine eingeschränkte Unterstützung für X25519-Schlüssel, Schlüsselvereinbarungen und Signaturen hinzugefügt.
- BoringSSL wurde für die Richtigkeit von X.509-Zertifikaten aktualisiert.
- Die Unterstützung für MD5-signierte Zertifikate in den öffentlichen CertPath APIs wurde eingestellt. Seit API-Level 16 werden solche Zertifikate für TLS-Verbindungen nicht mehr akzeptiert.
Änderungen in Android 10
Android 9 enthält keine Android-spezifische öffentliche API für Conscrypt, sondern verwendet stattdessen einen Sicherheitsanbieter, der Standardklassen für die Java Cryptography Architecture (JCA) implementiert, einschließlich Cipher und MessageDigest, sowie die Java Secure Socket Extension (JSSE), einschließlich SSLSocket und SSLEngine.
Nutzer interagieren mit diesen Klassen und einige nicht öffentliche Conscrypt APIs werden von libcore
- oder Framework-Code verwendet.
In Android 10 werden in android.net.ssl
einige öffentliche API-Methoden hinzugefügt, um auf Conscrypt-Funktionen zuzugreifen, die von den Klassen unter javax.net.ssl
nicht bereitgestellt werden. Android 10 enthält außerdem eine optimierte Kopie von Bouncy Castle, um kryptografische Tools mit geringerer Beliebtheit als Teil der Android Runtime bereitzustellen (nicht im Conscrypt-Modul enthalten).
Format und Abhängigkeiten
Das Conscrypt-Modul (com.android.conscrypt
) wird als APEX-Datei verteilt, die den Conscrypt-Java-Code und eine native Conscrypt-Bibliothek enthält, die dynamisch mit Android-NDK-Bibliotheken (z. B. liblog
) verknüpft ist. Die native Bibliothek enthält auch eine Kopie von BoringSSL, die über das Cryptographic Module Validation Program (CMVP) des NIST (Zertifikat 3753) validiert wurde.
Das Conscrypt-Modul stellt die folgenden APIs bereit:
- Öffentliche APIs sind Erweiterungen von Klassen und Schnittstellen in Paketen unter
java.*
undjavax.*
sowie Klassen unterandroid.net.ssl.*
. Externer App-Code ruft Conscrypt nicht direkt auf. Plattform-API-Standards sorgen dafür, dass diese APIs abwärts- und vorwärtskompatibel bleiben. - Kernplattform-APIs sind ausgeblendete APIs, die vom Framework zum Zugriff auf nicht öffentliche Funktionen verwendet werden. Diese sind relativ begrenzt. Der größte Nutzer ist
NetworkSecurityConfig
, der den Conscrypt-Vertrauensmanager (die Komponente, die Zertifikate überprüft) erweitert, um die Funktion zur Netzwerksicherheitskonfiguration zu implementieren. - Intra-Core-APIs sind auf Konstruktoren mit null Argumenten beschränkt, die von der JCA- und JSEE-Maschinerie rekursiv aufgerufen werden.