Conscrypter

Le module Conscrypt accélère les améliorations de la sécurité et améliore la sécurité des appareils sans compter sur les 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 ait 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 head) et ne fait aucune garantie concernant la stabilité de l'API ou de l'ABI.

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 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 frameworks.

Android 10 ajoute un petit nombre de méthodes d'API publiques dans android.net.ssl ​​pour accéder à la fonctionnalité Conscrypt qui n'est pas exposée 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 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 comprend également une copie de BoringSSL qui a été validée ( certificat #3753 ) par 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 d'application externe n'appelle pas Conscrypt directement. Les normes d'API de plate-forme garantissent que ces API restent compatibles en amont et en aval.
  • Les API de la plate-forme principale sont des API cachées utilisées par le framework pour accéder à des fonctionnalités non publiques. Celles-ci sont relativement limitées ; 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 à des constructeurs sans argument appelés de manière réflexive par les machines JCA et JSEE.