Modul Conscrypt mempercepat peningkatan keamanan dan meningkatkan keamanan perangkat tanpa mengandalkan update OTA. Library ini menggunakan kode Java dan library native untuk menyediakan implementasi TLS Android serta sebagian besar fungsi kriptografi Android seperti generator kunci, cipher, dan ringkasan pesan. Conscrypt tersedia sebagai library open source, meskipun memiliki beberapa spesialisasi saat disertakan dalam platform Android.
Modul Conscrypt menggunakan BoringSSL, library native yang merupakan fork OpenSSL Google dan digunakan di banyak produk Google untuk kriptografi dan TLS (terutama Google Chrome), bersama dengan kode Conscrypt (kode Java dan native). BoringSSL tidak memiliki rilis resmi (semua pengguna mem-build dari head) dan tidak memberikan jaminan terkait stabilitas API atau ABI.
Perubahan di Android 15
Android 15 membatasi penggunaan TLS versi 1.0 dan 1.1. Versi ini sebelumnya tidak digunakan lagi di Android, tetapi sekarang tidak diizinkan untuk aplikasi yang menargetkan Android 15.
Perubahan di Android 14
Android 14 memperkenalkan penyimpanan kepercayaan root yang dapat diupdate dalam Conscrypt. Sertifikat CA (atau sertifikat) memberikan root of trust untuk kunci publik yang digunakan dalam Android dan internet secara umum. Sertifikat ini diperiksa secara rutin untuk memastikan penandatanganan kriptografis yang tepat, sehingga harus disediakan dan disimpan di semua perangkat yang mengandalkannya.
Sebelum Mainline, Android menyimpan sertifikat di partisi sistem (di
system/ca-certificates
) dan mengupdatenya dengan setiap rilis Android. Kini dengan Mainline,
sertifikat dapat diperbarui lebih sering menggunakan update kereta Mainline. Kemampuan
baru ini akan menyederhanakan proses update, memungkinkan kami memiliki waktu penyelesaian masalah
yang lebih cepat, dan membantu memperpanjang masa pakai perangkat.
Mulai Android 14, sertifikat kepercayaan root disimpan di APEX modul
Conscrypt dan partisi sistem. Aplikasi masih dapat memilih sertifikatnya sendiri dan mengubah
perilaku sertifikat menggunakan NetworkSecurityConfig
.
Android 14 menyertakan perubahan modul Conscrypt lainnya berikut:
- Menambahkan implementasi MAC AES-CMAC.
- Menghentikan penggunaan dan menghapus penerapan MAC `PBEwithHmacSHA2-*`.
- Menambahkan dukungan terbatas untuk kunci, perjanjian kunci, dan tanda tangan X25519.
- Memperbarui BoringSSL untuk ketepatan X.509.
- Menghentikan dukungan untuk sertifikat yang ditandatangani MD5 di CertPath API publik. Sertifikat tersebut belum diterima untuk koneksi TLS sejak API level 16.
Perubahan di Android 10
Android 9 tidak menyertakan API publik khusus Android untuk Conscrypt, tetapi
menggunakan penyedia keamanan yang mengimplementasikan class standar untuk Java
Cryptography Architecture (JCA) termasuk Cipher dan MessageDigest, dan
Java Secure Socket Extension (JSSE), termasuk SSLSocket dan SSLEngine.
Pengguna berinteraksi dengan class tersebut dan beberapa Conscrypt API non-publik digunakan
oleh kode libcore
atau framework.
Android 10 menambahkan sejumlah kecil metode API publik
di android.net.ssl
untuk mengakses fungsi Conscrypt yang tidak
diekspos oleh class di javax.net.ssl
. Android
10 juga menyertakan salinan
Bouncy Castle yang dirampingkan untuk menyediakan alat
kriptografis dengan popularitas lebih rendah sebagai bagian dari Android Runtime (tidak disertakan dalam modul Conscrypt).
Format dan dependensi
Modul Conscrypt (com.android.conscrypt
) didistribusikan sebagai file APEX yang
menyertakan kode Java Conscrypt dan library native Conscrypt yang secara dinamis
tertaut ke library Android NDK (seperti liblog
). Library native
juga menyertakan salinan BoringSSL yang telah divalidasi (Sertifikat #3753) melalui Program Validasi Modul Kriptografis (CMVP) NIST.
Modul Conscrypt mengekspos API berikut:
- API Publik adalah ekstensi class dan antarmuka dalam
paket di bagian
java.*
danjavax.*
, serta class di bagianandroid.net.ssl.*
. Kode aplikasi eksternal tidak memanggil Conscrypt secara langsung. Standar API platform memastikan bahwa API ini tetap kompatibel dengan versi lama dan baru. - API platform inti adalah API tersembunyi yang digunakan oleh framework
untuk mengakses fungsi nonpublik. Hal ini relatif terbatas; pengguna terbesar
adalah
NetworkSecurityConfig
, yang memperluas pengelola kepercayaan Conscrypt (komponen yang memverifikasi sertifikat) untuk menerapkan fitur konfigurasi keamanan jaringan. - Intra-core API dibatasi untuk konstruktor argumen nol yang dipanggil secara reflektif oleh mesin JCA dan JSEE.