O módulo Conscrypt acelera as melhorias de segurança e melhora a segurança do dispositivo sem depender de atualizações OTA. Ele usa código Java e uma biblioteca nativa para fornecer a implementação do Android TLS, bem como uma grande parte da funcionalidade criptográfica do Android, como geradores de chaves, cifras e resumos de mensagens. O Conscrypt está disponível como uma biblioteca de código aberto , embora tenha algumas especializações quando incluído na plataforma Android.
O módulo Conscrypt usa BoringSSL , uma biblioteca nativa que é uma bifurcação do OpenSSL do Google e que é usada em muitos produtos do Google para criptografia e TLS (principalmente Google Chrome), em conjunto com o código Conscrypt (Java e código nativo). O BoringSSL não possui lançamentos oficiais (todos os usuários constroem a partir do head) e não oferece garantias quanto à estabilidade da API ou ABI.
Mudanças no Android 10
O Android 9 não inclui uma API pública específica do Android para Conscrypt, mas usa um provedor de segurança que implementa classes padrão para Java Cryptography Architecture (JCA), incluindo Cipher e MessageDigest, e Java Secure Socket Extension (JSSE), incluindo SSLSocket e SSLEngine. Os usuários interagem com essas classes e algumas APIs Conscrypt não públicas são usadas pelo código libcore
ou frameworks.
O Android 10 adiciona um pequeno número de métodos de API públicos em android.net.ssl
para acessar a funcionalidade Conscrypt que não é exposta pelas classes em javax.net.ssl
. O Android 10 também inclui uma cópia reduzida do Bouncy Castle para fornecer ferramentas criptográficas de baixa popularidade como parte do Android Runtime (não incluído no módulo Conscrypt).
Formato e dependências
O módulo Conscrypt é distribuído como um arquivo APEX que inclui o código Java Conscrypt e uma biblioteca nativa Conscrypt que se vincula dinamicamente a bibliotecas NDK do Android (como liblog
). A biblioteca nativa também inclui uma cópia do BoringSSL que foi validada ( Certificado nº 3753 ) por meio do Programa de Validação de Módulo Criptográfico (CMVP) do NIST.
O módulo Conscrypt expõe as seguintes APIs:
- APIs públicas são extensões de classes e interfaces em pacotes em
java.*
ejavax.*
, além de classes emandroid.net.ssl.*
. O código de aplicativo externo não chama o Conscrypt diretamente. Os padrões da API da plataforma garantem que essas APIs permaneçam compatíveis com versões anteriores e posteriores. - As APIs da plataforma principal são APIs ocultas usadas pela estrutura para acessar funcionalidades não públicas. Estes são relativamente limitados; o maior usuário é
NetworkSecurityConfig
, que estende o gerenciador de confiança Conscrypt (o componente que verifica certificados) para implementar o recurso de configuração de segurança de rede . - As APIs intra-core são limitadas a construtores de argumento zero chamados reflexivamente pelas máquinas JCA e JSEE.