Conscrypt

Il modulo Conscrypt accelera i miglioramenti della sicurezza e migliora la sicurezza del dispositivo senza fare affidamento sugli aggiornamenti OTA. Utilizza il codice Java e una libreria nativa per fornire l'implementazione di Android TLS, nonché gran parte delle funzionalità crittografiche Android come generatori di chiavi, cifrari e digest di messaggi. Conscrypt è disponibile come libreria open source , anche se ha alcune specializzazioni, se inclusi nella piattaforma Android.

Il modulo Conscrypt utilizza BoringSSL , una libreria nativa che è un fork di Google di OpenSSL e che viene utilizzato in molti prodotti Google per la crittografia e TLS (in particolare Google Chrome). BoringSSL non ha versioni ufficiali (tutti gli utenti costruiscono da head) e non fornisce alcuna garanzia sulla stabilità dell'API o dell'ABI.

Modifiche in Android 10

Android 9 non include un'API pubblica specifica per Android per Conscrypt, ma usa invece un provider di sicurezza che implementa classi standard per Java Cryptography Architecture (JCA), inclusi Cipher e MessageDigest e Java Secure Socket Extension (JSSE), inclusi SSLSocket e SSLEngine. Gli utenti interagiscono con le classi e alcune API non pubbliche Conscrypt sono utilizzati da libcore o quadri di codice.

Android 10 aggiunge un piccolo numero di metodi API pubbliche in android.net.ssl per accedere alle funzionalità Conscrypt che non è esposta dalle classi sotto javax.net.ssl . Android 10 include anche una copia snellita di Castello gonfiabile per fornire a basso popolarità strumenti crittografici come parte di Android Runtime (non incluso nel modulo Conscrypt).

Formato e dipendenze

Il modulo Conscrypt viene distribuito come APEX file che include il codice Conscrypt Java e una libreria nativa Conscrypt che i collegamenti dinamicamente alle librerie NDK Android (come liblog ). La libreria nativa comprende anche una copia di BoringSSL che è è stato convalidato ( certificato # 3753 ) attraverso il NIST Cryptographic Module Validation Program (CMVP) .

Il modulo Conscrypt espone le seguenti API:

  • API pubbliche sono estensioni di classi e interfacce in imballaggi che sono in java.* E javax.* , Oltre a lezioni di sotto android.net.ssl.* . Il codice dell'app esterna non chiama direttamente Conscrypt. Gli standard API della piattaforma garantiscono che queste API rimangano compatibili con le versioni precedenti e successive.
  • API piattaforma di base sono nascosti API utilizzate dal framework per accedere alle funzionalità non pubbliche. Questi sono relativamente limitati; il più grande utente è NetworkSecurityConfig , che si estende il manager fiducia Conscrypt (il componente che verifica i certificati) per attuare il funzionalità di configurazione di sicurezza della rete .
  • API intra-core sono limitati ai costruttori zero argomento denominato riflessivo dalla macchina JCA e JSEE.