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 Android TLS nonché gran parte delle funzionalità crittografiche Android come generatori di chiavi, crittografie e digest di messaggi. Conscrypt è disponibile come libreria open source , sebbene abbia alcune specializzazioni se inclusa nella piattaforma Android.
Il modulo Conscrypt utilizza BoringSSL , una libreria nativa che è un fork di Google di OpenSSL e che viene utilizzata in molti prodotti Google per la crittografia e TLS (in particolare Google Chrome), insieme al codice Conscrypt (sia Java che codice nativo). BoringSSL non ha versioni ufficiali (tutti gli utenti compilano da head) e non fornisce garanzie sulla stabilità dell'API o dell'ABI.
Cambiamenti in Android 14
Android 14 introduce un root trust store aggiornabile all'interno di Conscrypt. I certificati CA (o certificati) forniscono le radici della fiducia per le chiavi pubbliche utilizzate in Android e in Internet in generale. Questi certificati vengono regolarmente controllati per garantire la corretta firma crittografica, quindi devono essere forniti e archiviati su tutti i dispositivi che si basano su di essi.
Prima di Mainline, Android archiviava i certificati nella partizione di sistema (in system/ca-certificates
) e li aggiornava con ogni versione di Android. Ora con Mainline è possibile aggiornare i certificati più frequentemente utilizzando gli aggiornamenti dei treni Mainline. Questa nuova funzionalità dovrebbe semplificare i processi di aggiornamento, consentirci tempi di risposta più rapidi per i problemi e contribuire a prolungare la durata dei dispositivi.
A partire da Android 14, i certificati di attendibilità root vengono archiviati nel modulo Conscrypt APEX e nella partizione di sistema. Le app possono comunque scegliere i propri certificati e modificare il comportamento dei certificati utilizzando NetworkSecurityConfig
.
Android 14 include queste altre modifiche al modulo Conscrypt:
- Aggiunta l'implementazione MAC AES-CMAC.
- Implementazioni MAC `PBEwithHmacSHA2-*` deprecate e rimosse.
- Aggiunto supporto limitato per chiavi X25519, accordi chiave e firme.
- BoringSSL aggiornato per la correttezza X.509.
- Eliminato il supporto per i certificati firmati MD5 nelle API pubbliche CertPath. Tali certificati non sono stati accettati per le connessioni TLS dal livello API 16.
Cambiamenti in Android 10
Android 9 non include un'API pubblica specifica di Android per Conscrypt ma utilizza 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 tali classi e alcune API Conscrypt non pubbliche vengono utilizzate dal codice libcore
o framework.
Android 10 aggiunge un numero limitato di metodi API pubblici in android.net.ssl
per accedere alla funzionalità Conscrypt che non è esposta dalle classi in javax.net.ssl
. Android 10 include anche una copia ridotta di Bouncy Castle per fornire strumenti crittografici di minore popolarità come parte di Android Runtime (non incluso nel modulo Conscrypt).
Formato e dipendenze
Il modulo Conscrypt ( com.android.conscrypt
) è distribuito come file APEX che include il codice Java Conscrypt e una libreria nativa Conscrypt che si collega dinamicamente alle librerie NDK Android (come liblog
). La libreria nativa include anche una copia di BoringSSL che è stata convalidata ( Certificato n. 3753 ) tramite il Cryptographic Module Validation Program (CMVP) del NIST.
Il modulo Conscrypt espone le seguenti API:
- Le API pubbliche sono estensioni di classi e interfacce nei pacchetti in
java.*
ejavax.*
, oltre alle classi inandroid.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. - Le API della piattaforma principale sono API nascoste utilizzate dal framework per accedere a funzionalità non pubbliche. Questi sono relativamente limitati; l'utente più grande è
NetworkSecurityConfig
, che estende il gestore della fiducia Conscrypt (il componente che verifica i certificati) per implementare la funzionalità di configurazione della sicurezza di rete . - Le API intra-core sono limitate a costruttori con zero argomenti chiamati in modo riflessivo dai macchinari JCA e JSEE.