Konskripsi

Modul Conscrypt mempercepat peningkatan keamanan dan meningkatkan keamanan perangkat tanpa bergantung pada pembaruan OTA. Ia menggunakan kode Java dan pustaka asli untuk menyediakan implementasi TLS Android 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 fork Google dari OpenSSL dan digunakan di banyak produk Google untuk kriptografi dan TLS (terutama Google Chrome), bersama dengan kode Conscrypt (baik Java maupun kode asli). BoringSSL tidak memiliki rilis resmi (semua pengguna membangun dari head) dan tidak memberikan jaminan seputar stabilitas API atau ABI.

Perubahan di Android 14

Android 14 memperkenalkan root trust store yang dapat diperbarui dalam Conscrypt. Sertifikat CA (atau sertifikat) memberikan dasar kepercayaan untuk kunci publik yang digunakan dalam Android dan internet secara luas. Sertifikat ini diperiksa secara rutin untuk memastikan penandatanganan kriptografi yang benar, sehingga sertifikat tersebut harus disediakan dan disimpan di semua perangkat yang mengandalkannya.

Sebelum Mainline, Android menyimpan sertifikat di partisi sistem (di system/ca-certificates ) dan memperbaruinya pada setiap rilis Android. Kini dengan Mainline, sertifikat dapat lebih sering diperbarui menggunakan pembaruan kereta Mainline. Kemampuan baru ini akan menyederhanakan proses pembaruan, memungkinkan kami memiliki waktu penyelesaian masalah yang lebih cepat, dan membantu memperpanjang masa pakai perangkat.

Mulai Android 14, sertifikat kepercayaan root disimpan di modul Conscrypt APEX 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.
  • Implementasi MAC `PBEwithHmacSHA2-*` tidak digunakan lagi dan dihapus.
  • Menambahkan dukungan terbatas untuk kunci X25519, perjanjian kunci, dan tanda tangan.
  • Memperbarui BoringSSL untuk kebenaran X.509.
  • Menghapus dukungan untuk sertifikat bertanda tangan MD5 di API CertPath 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, melainkan 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 kode libcore atau kerangka kerja.

Android 10 menambahkan sejumlah kecil metode API publik di android.net.ssl ​​untuk mengakses fungsionalitas Conscrypt yang tidak diekspos oleh class di bawah javax.net.ssl ​​. Android 10 juga menyertakan salinan Bouncy Castle yang lebih ramping untuk menyediakan alat kriptografi dengan popularitas lebih rendah sebagai bagian dari Android Runtime (tidak disertakan dalam modul Conscrypt).

Format dan ketergantungan

Modul Conscrypt ( com.android.conscrypt ) didistribusikan sebagai file APEX yang menyertakan kode Conscrypt Java dan pustaka asli Conscrypt yang secara dinamis tertaut ke pustaka Android NDK (seperti liblog ). Perpustakaan asli juga menyertakan salinan BoringSSL yang telah divalidasi ( Sertifikat #3753 ) melalui Program Validasi Modul Kriptografi (CMVP) NIST.

Modul Conscrypt memperlihatkan API berikut:

  • API Publik adalah ekstensi kelas dan antarmuka dalam paket di bawah java.* dan javax.* , ditambah kelas di bawah android.net.ssl.* . Kode aplikasi eksternal tidak memanggil Conscrypt secara langsung. Standar API platform 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 non-publik. Jumlahnya relatif terbatas; pengguna terbesar adalah NetworkSecurityConfig , yang memperluas manajer kepercayaan Conscrypt (komponen yang memverifikasi sertifikat) untuk mengimplementasikan fitur konfigurasi keamanan jaringan .
  • API intra-inti terbatas pada konstruktor tanpa argumen yang dipanggil secara reflektif oleh mesin JCA dan JSEE.