Criptografar

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.* e javax.* , além de classes em android.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.