Conscrypt

Le module Conscrypt accélère les améliorations de sécurité et améliore la sécurité de l'appareil sans s'appuyer sur les mises à jour OTA. Il utilise du code Java et une bibliothèque native pour fournir l'implémentation TLS Android, ainsi qu'une grande partie des fonctionnalités cryptographiques Android telles que les générateurs de clés, les algorithmes de chiffrement et les récapitulatifs de message. Conscrypt est disponible en tant que bibliothèque Open Source, mais présente certaines spécialisations lorsqu'il est inclus dans la plate-forme Android.

Le module Conscrypt utilise BoringSSL, une bibliothèque native qui est une fourchette Google d'OpenSSL et qui est utilisée dans de nombreux produits Google pour la cryptographie et le protocole TLS (notamment Google Chrome), en conjonction avec le code Conscrypt (code Java et code natif). BoringSSL ne propose pas de versions officielles (tous les utilisateurs compilent à partir de la version de tête) et ne garantit aucune stabilité de l'API ni de l'ABI.

Modifications apportées à Android 15

Android 15 limite l'utilisation des versions 1.0 et 1.1 de TLS. Ces versions étaient auparavant obsolètes sur Android, mais elles ne sont désormais plus autorisées pour les applications ciblant Android 15.

Modifications apportées à Android 14

Android 14 introduit un magasin de confiance racine pouvant être mis à jour dans Conscrypt. Les certificats CA (ou certificats) constituent les racines de confiance des clés publiques utilisées dans Android et sur Internet en général. Ces certificats sont régulièrement vérifiés pour garantir une signature cryptographique appropriée. Ils doivent donc être fournis et stockés sur tous les appareils qui en dépendent.

Avant Mainline, Android stockait les certificats dans la partition système (dans system/ca-certificates) et les mettait à jour à chaque version d'Android. Avec Mainline, vous pouvez désormais mettre à jour les certificats plus fréquemment à l'aide des mises à jour de train Mainline. Cette nouvelle fonctionnalité devrait simplifier les processus de mise à jour, nous permettre de réduire les délais de résolution des problèmes et contribuer à prolonger la durée de vie des appareils.

À partir d'Android 14, les certificats de confiance racine sont stockés dans le module APEX Conscrypt et la partition système. Les applications peuvent toujours choisir leurs propres certificats et modifier leur comportement à l'aide de NetworkSecurityConfig.

Android 14 inclut d'autres modifications du module Conscrypt:

  • Ajout de l'implémentation de la fonction MAC AES-CMAC.
  • Abandon et suppression des implémentations MAC "PBEwithHmacSHA2-*".
  • Ajout d'une compatibilité limitée avec les clés X25519, les contrats de clé et les signatures.
  • Mise à jour de BoringSSL pour l'exactitude de X.509.
  • Abandon de la prise en charge des certificats signés MD5 dans les API CertPath publiques. Ces certificats n'ont pas été acceptés pour les connexions TLS depuis le niveau d'API 16.

Modifications apportées à Android 10

Android 9 n'inclut pas d'API publique spécifique à Android pour Conscrypt, mais utilise plutôt un fournisseur de sécurité qui implémente des classes standards pour Java Cryptography Architecture (JCA), y compris Cipher et MessageDigest, et Java Secure Socket Extension (JSSE), y compris SSLSocket et SSLEngine. Les utilisateurs interagissent avec ces classes, et certaines API Conscrypt non publiques sont utilisées par le code libcore ou des frameworks.

Android 10 ajoute un petit nombre de méthodes d'API publiques dans android.net.ssl pour accéder aux fonctionnalités Conscrypt qui ne sont pas exposées par les classes sous javax.net.ssl. Android 10 inclut également une copie allégée de Bouncy Castle pour fournir des outils cryptographiques moins populaires dans Android Runtime (non inclus dans le module Conscrypt).

Format et dépendances

Le module Conscrypt (com.android.conscrypt) est distribué sous la forme d'un fichier APEX qui inclut le code Java Conscrypt et une bibliothèque native Conscrypt qui se lie dynamiquement aux bibliothèques Android NDK (telles que liblog). La bibliothèque native inclut également une copie de BoringSSL qui a été validée (certificat 3753) via le programme de validation de module cryptographique (CMVP) du NIST.

Le module Conscrypt expose les API suivantes:

  • Les API publiques sont des extensions de classes et d'interfaces dans les packages sous java.* et javax.*, ainsi que des classes sous android.net.ssl.*. Le code d'application externe n'appelle pas directement Conscrypt. Les normes des API de plate-forme garantissent que ces API restent rétrocompatibles et évolutives.
  • Les API de plate-forme principales sont des API masquées utilisées par le framework pour accéder à des fonctionnalités non publiques. Ils sont relativement limités. Le plus grand utilisateur est NetworkSecurityConfig, qui étend le gestionnaire de confiance Conscrypt (le composant qui vérifie les certificats) pour implémenter la fonctionnalité de configuration de la sécurité réseau.
  • Les API intra-core sont limitées aux constructeurs sans argument appelés de manière réflective par la machinerie JCA et JSEE.