Modul Conscrypt mempercepat peningkatan keamanan dan meningkatkan keamanan perangkat tanpa bergantung pada pembaruan OTA. Ini menggunakan kode Java dan pustaka asli untuk menyediakan implementasi Android TLS serta sebagian besar fungsi kriptografi Android seperti generator kunci, sandi, dan intisari pesan. Conscrypt tersedia sebagai perpustakaan sumber terbuka , meskipun memiliki beberapa spesialisasi ketika disertakan dalam platform Android.
Modul Conscrypt menggunakan BoringSSL , perpustakaan asli yang merupakan garpu Google dari OpenSSL dan yang digunakan di banyak produk Google untuk kriptografi dan TLS (terutama Google Chrome), bersama dengan kode Conscrypt (baik Java dan kode asli). BoringSSL tidak memiliki rilis resmi (semua pengguna membangun dari kepala) dan tidak menjamin stabilitas API atau ABI.
Perubahan di Android 10
Android 9 tidak menyertakan API publik khusus Android untuk Conscrypt tetapi menggunakan penyedia keamanan yang mengimplementasikan kelas standar untuk Java Cryptography Architecture (JCA) termasuk Cipher dan MessageDigest, dan Java Secure Socket Extension (JSSE), termasuk SSLSocket dan SSLEngine. Pengguna berinteraksi dengan kelas tersebut dan beberapa API Conscrypt nonpublik digunakan oleh libcore
atau kode kerangka kerja.
Android 10 menambahkan sejumlah kecil metode API publik di android.net.ssl
untuk mengakses fungsionalitas Conscrypt yang tidak diekspos oleh kelas di bawah javax.net.ssl
. Android 10 juga menyertakan salinan Bouncy Castle yang ramping untuk menyediakan alat kriptografi dengan popularitas lebih rendah sebagai bagian dari Android Runtime (tidak disertakan dalam modul Conscrypt).
Format dan dependensi
Modul Conscrypt didistribusikan sebagai file APEX yang menyertakan kode Java Conscrypt dan library native Conscrypt yang tertaut secara dinamis ke library Android NDK (seperti liblog
). Pustaka asli juga menyertakan salinan BoringSSL yang telah divalidasi ( Sertifikat #3753 ) melalui Program Validasi Modul Kriptografis NIST (CMVP) .
Modul Conscrypt mengekspos API berikut:
- API publik adalah ekstensi kelas dan antarmuka dalam paket di bawah
java.*
danjavax.*
, ditambah kelas di bawahandroid.net.ssl.*
. Kode aplikasi eksternal tidak memanggil Conscrypt secara langsung. Standar Platform API memastikan bahwa API ini tetap kompatibel ke belakang dan ke depan. - API platform inti adalah API tersembunyi yang digunakan oleh kerangka kerja untuk mengakses fungsionalitas nonpublik. Ini relatif terbatas; pengguna terbesar adalah
NetworkSecurityConfig
, yang memperluas pengelola kepercayaan Conscrypt (komponen yang memverifikasi sertifikat) untuk mengimplementasikan fitur konfigurasi keamanan jaringan . - API intra-core terbatas pada konstruktor nol-argumen yang dipanggil secara reflektif oleh mesin JCA dan JSEE.