Coscrypt

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.* e javax.* , oltre alle classi in 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.
  • 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.