{i>Conscrypt

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, yakni library native yang merupakan fork Google OpenSSL dan digunakan di banyak produk Google untuk kriptografi dan TLS (terutama Google Chrome), bersama dengan kode Conscrypt (kode native dan Java). 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 tetap 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.
  • Penghentian 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 nonpublik digunakan oleh libcore atau kode framework.

Android 10 menambahkan sejumlah kecil metode API publik di android.net.ssl untuk mengakses fungsi Conscrypt yang tidak diekspos oleh class di bagian javax.net.ssl. Android 10 juga menyertakan salinan Bouncy Castle yang ringkas untuk menyediakan alat kriptografi dengan popularitas yang 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.* dan javax.*, ditambah class di bagian android.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.