Conscrypt modülü, OTA güncellemelerine ihtiyaç duymadan güvenlik iyileştirmelerini hızlandırır ve cihaz güvenliğini artırır. Android TLS uygulamasını ve Android kriptografi işlevlerinin büyük bir kısmını (ör. anahtar oluşturucular, şifreler ve ileti özetleri) sağlamak için Java kodu ve yerel bir kitaplık kullanır. Conscrypt, açık kaynak bir kitaplık olarak kullanılabilir ancak Android platformuna dahil edildiğinde bazı uzmanlıklara sahiptir.
Conscrypt modülü, OpenSSL'in Google çatalı olan ve şifreleme ile TLS için birçok Google ürününde (en önemlisi Google Chrome) kullanılan yerel bir kitaplık olan BoringSSL'yi, Conscrypt koduyla (hem Java hem de yerel kod) birlikte kullanır. BoringSSL'in resmi sürümleri yoktur (tüm kullanıcılar baştan derleme yapar) ve API veya ABI kararlılığıyla ilgili herhangi bir garanti verilmez.
Android 15'teki değişiklikler
Android 15, TLS 1.0 ve 1.1 sürümlerinin kullanımını kısıtlar. Bu sürümlerin desteği Android'de daha önce sonlandırılmıştı ancak artık Android 15'i hedefleyen uygulamalarda kullanılmasına izin verilmiyor.
Android 14'teki değişiklikler
Android 14, Conscrypt'te güncellenebilir bir kök güven mağazası sunar. CA sertifikaları (veya sertifikaları), Android'de ve genel olarak internette kullanılan ortak anahtarlar için güven kökleri sağlar. Bu sertifikalar, uygun kriptografik imzalama işleminin yapılması için düzenli olarak kontrol edilir. Bu nedenle, bu sertifikalar, bu sertifikaları kullanan tüm cihazlarda sağlanmalı ve saklanmalıdır.
Mainline'den önce Android, sertifikaları sistem bölümünde (system/ca-certificates
içinde) depolar ve her Android sürümüyle güncellerdi. Artık Mainline ile, Mainline tren güncellemelerini kullanarak sertifikaları daha sık güncellemek mümkündür. Bu yeni özellik güncelleme süreçlerini kolaylaştıracak, sorunlarda daha hızlı geri dönüş süreleri elde etmemize ve cihaz kullanım ömrünü uzatmaya yardımcı olacak.
Android 14'ten itibaren kök güven sertifikaları, Conscrypt modülü APEX ve sistem bölümünde depolanır. Uygulamalar, kendi sertifikalarını seçmeye ve NetworkSecurityConfig
kullanarak sertifika davranışını değiştirmeye devam edebilir.
Android 14'te Conscrypt modülünde yapılan diğer değişiklikler şunlardır:
- AES-CMAC MAC uygulaması eklendi.
- "PBEwithHmacSHA2-*" MAC uygulamaları kullanımdan kaldırıldı.
- X25519 anahtarları, anahtar anlaşmaları ve imzalar için sınırlı destek eklendi.
- BoringSSL, X.509 doğruluğu için güncellendi.
- Herkese açık CertPath API'lerinde MD5 ile imzalanan sertifikalar için destek sonlandırıldı. Bu tür sertifikalar, API düzeyi 16'dan beri TLS bağlantıları için kabul edilmemektedir.
Android 10'daki değişiklikler
Android 9, Conscrypt için Android'e özgü herkese açık bir API içermez. Bunun yerine, Cipher ve MessageDigest dahil olmak üzere Java Kriptografi Mimarisi (JCA) ve SSLSocket ile SSLEngine dahil olmak üzere Java Secure Socket Extension (JSSE) için standart sınıflar uygulayan bir güvenlik sağlayıcı kullanır.
Kullanıcılar bu sınıflarla etkileşimde bulunur ve herkese açık olmayan bazı Conscrypt API'leri libcore
veya çerçeve kodu tarafından kullanılır.
Android 10, javax.net.ssl
altındaki sınıflar tarafından kullanıma sunulmayan Conscrypt işlevlerine erişmek için android.net.ssl
içine az sayıda herkese açık API yöntemi ekler. Android 10, Android Runtime'ın bir parçası olarak daha az popüler kriptografik araçlar sağlamak için Bouncy Castle'ın da basitleştirilmiş bir kopyasını içerir (Conscrypt modülüne dahil değildir).
Biçim ve bağımlılıklar
Conscrypt modülü (com.android.conscrypt
), Conscrypt Java kodunu ve Android NDK kitaplıklarına (liblog
gibi) dinamik olarak bağlanan bir Conscrypt yerel kitaplığını içeren bir APEX dosyası olarak dağıtılır. Yerel kitaplık, NIST'nin Kriptografik Modülü Doğrulama Programı aracılığıyla doğrulanan BoringSSL'nin bir kopyasını da (Sertifika No: 3753) içerir. CM
Conscrypt modülü aşağıdaki API'leri gösterir:
- Herkese açık API'ler,
java.*
vejavax.*
altındaki paketlerdeki sınıfların ve arayüzlerin yanı sıraandroid.net.ssl.*
altındaki sınıfların uzantılarıdır. Kuruluş dışı uygulama kodu, Conscrypt'i doğrudan çağırmaz. Platform API standartları, bu API'lerin geriye ve ileriye dönük uyumluluğunu sağlar. - Temel platform API'leri, çerçeve tarafından herkese açık olmayan işlevlere erişmek için kullanılan gizli API'lerdir. Bunlar nispeten sınırlıdır. En büyük kullanıcı
NetworkSecurityConfig
. Bu kullanıcı, ağ güvenliği yapılandırma özelliğini uygulamak için Conscrypt güven yöneticisinin (sertifikaları doğrulayan bileşen) kapsamını genişletir. - Çekirdek içi API'ler, JCA ve JSEE mekanizması tarafından yansıtmalı olarak çağrılan sıfır bağımsız değişkenli kurucularla sınırlıdır.