Conscrypter

Le module Conscrypt accélère les améliorations de sécurité et améliore la sécurité des appareils sans dépendre des mises à jour OTA. Il utilise du code Java et une bibliothèque native pour fournir l'implémentation Android TLS ainsi qu'une grande partie des fonctionnalités cryptographiques Android telles que les générateurs de clés, les chiffrements et les résumés de messages. Conscrypt est disponible en tant que bibliothèque open source , bien qu'elle présente certaines spécialisations lorsqu'elle est incluse dans la plate-forme Android.

Le module Conscrypt utilise BoringSSL , une bibliothèque native qui est un fork Google d'OpenSSL et qui est utilisée dans de nombreux produits Google pour la cryptographie et TLS (notamment Google Chrome), en conjonction avec le code Conscrypt (à la fois Java et code natif). BoringSSL n'a pas de versions officielles (tous les utilisateurs construisent à partir de la tête) et ne donne aucune garantie quant à la stabilité de l'API ou de l'ABI.

Changements dans Android 14

Android 14 introduit un magasin de confiance racine pouvant être mis à jour dans Conscrypt. Les certificats (ou certificats) CA fournissent les racines de confiance pour les 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 avec chaque version d'Android. Désormais, avec Mainline, il est possible de mettre à jour les certificats plus fréquemment à l'aide des mises à jour des trains Mainline. Cette nouvelle fonctionnalité devrait rationaliser les processus de mise à jour, nous permettre d’avoir des délais de traitement plus rapides en cas de 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 Conscrypt APEX et la partition système. Les applications peuvent toujours choisir leurs propres certificats et modifier le comportement des certificats à l'aide de NetworkSecurityConfig .

Android 14 inclut ces autres modifications du module Conscrypt :

  • Ajout de l'implémentation MAC AES-CMAC.
  • Implémentations MAC `PBEwithHmacSHA2-*` obsolètes et supprimées.
  • Ajout d'une prise en charge limitée des clés X25519, des accords de clé et des signatures.
  • BoringSSL mis à jour pour l'exactitude de X.509.
  • Suppression de la prise en charge des certificats signés MD5 dans les API publiques CertPath. De tels certificats ne sont plus acceptés pour les connexions TLS depuis le niveau API 16.

Changements dans Android 10

Android 9 n'inclut pas d'API publique spécifique à Android pour Conscrypt, mais utilise à la place un fournisseur de sécurité qui implémente des classes standard pour l'architecture de cryptographie Java (JCA), notamment Cipher et MessageDigest, et Java Secure Socket Extension (JSSE), notamment SSLSocket et SSLEngine. Les utilisateurs interagissent avec ces classes et certaines API Conscrypt non publiques sont utilisées par le code libcore ou frameworks.

Android 10 ajoute un petit nombre de méthodes 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 le cadre d'Android Runtime (non inclus dans le module Conscrypt).

Format et dépendances

Le module Conscrypt ( com.android.conscrypt ) est distribué sous forme de fichier APEX qui inclut le code Java Conscrypt et une bibliothèque native Conscrypt qui est liée dynamiquement aux bibliothèques Android NDK (telles que liblog ). La bibliothèque native comprend également une copie de BoringSSL qui a été validée ( certificat n° 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 des packages sous java.* et javax.* , ainsi que des classes sous android.net.ssl.* . Le code de l'application externe n'appelle pas directement Conscrypt. Les normes des API de plate-forme garantissent que ces API restent compatibles en amont et en aval.
  • Les API de la plateforme principale sont des API cachées utilisées par le framework pour accéder aux fonctionnalités non publiques. Ceux-ci 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éfléchie par les machines JCA et JSEE.