conscripta

El módulo Conscrypt acelera las mejoras de seguridad y mejora la seguridad del dispositivo sin depender de las actualizaciones OTA. Utiliza código Java y una biblioteca nativa para proporcionar la implementación de TLS de Android, así como una gran parte de la funcionalidad criptográfica de Android, como generadores de claves, cifrados y resúmenes de mensajes. Conscrypt está disponible como una biblioteca de código abierto , aunque tiene algunas especializaciones cuando se incluye en la plataforma Android.

El módulo Conscrypt usa BoringSSL , una biblioteca nativa que es una bifurcación de Google de OpenSSL y que se usa en muchos productos de Google para criptografía y TLS (sobre todo Google Chrome), junto con el código Conscrypt (tanto Java como código nativo). BoringSSL no tiene versiones oficiales (todos los usuarios construyen desde la cabeza) y no garantiza la estabilidad de API o ABI.

Cambios en Android 10

Android 9 no incluye una API pública específica de Android para Conscrypt, sino que utiliza un proveedor de seguridad que implementa clases estándar para Java Cryptography Architecture (JCA), incluidos Cipher y MessageDigest, y Java Secure Socket Extension (JSSE), incluidos SSLSocket y SSLEngine. Los usuarios interactúan con esas clases y algunas API de Conscrypt no públicas son utilizadas por libcore o código de marcos.

Android 10 agrega una pequeña cantidad de métodos de API públicos en android.net.ssl ​​para acceder a la funcionalidad de Conscrypt que no están expuestas por las clases en javax.net.ssl ​​. Android 10 también incluye una copia reducida de Bouncy Castle para proporcionar herramientas criptográficas de menor popularidad como parte de Android Runtime (no incluido en el módulo Conscrypt).

Formato y dependencias

El módulo Conscrypt se distribuye como un archivo APEX que incluye el código Java de Conscrypt y una biblioteca nativa de Conscrypt que se vincula dinámicamente a las bibliotecas NDK de Android (como liblog ). La biblioteca nativa también incluye una copia de BoringSSL que ha sido validada ( Certificado #3753 ) a través del Programa de validación del módulo criptográfico (CMVP) del NIST.

El módulo Conscrypt expone las siguientes API:

  • Las API públicas son extensiones de clases e interfaces en paquetes bajo java.* y javax.* , además de clases bajo android.net.ssl.* . El código de la aplicación externa no llama a Conscrypt directamente. Los estándares API de la plataforma garantizan que estas API sigan siendo compatibles con versiones anteriores y posteriores.
  • Las API de la plataforma central son API ocultas que utiliza el marco para acceder a la funcionalidad no pública. Estos son relativamente limitados; el usuario más grande es NetworkSecurityConfig , que amplía el administrador de confianza de Conscrypt (el componente que verifica los certificados) para implementar la función de configuración de seguridad de la red .
  • Las API intra-core están limitadas a constructores de cero argumentos llamados reflexivamente por la maquinaria JCA y JSEE.