Conscrypt modülü, güvenlik iyileştirmelerini hızlandırır ve OTA güncellemelerine bağlı kalmadan cihaz güvenliğini artırır. Android TLS uygulamasının yanı sıra anahtar oluşturucular, şifreler ve mesaj özetleri gibi Android şifreleme işlevlerinin büyük bir bölümünü sağlamak için Java kodunu ve yerel bir kitaplığı kullanır. Concrypt açık kaynak kodlu bir kütüphane olarak mevcut olsa da Android platformuna dahil edildiğinde bazı uzmanlıklara sahiptir.
Concrypt modülü, OpenSSL'nin bir Google çatalı olan ve Conscrypt koduyla (hem Java hem de yerel kod) birlikte kriptografi ve TLS (en önemlisi Google Chrome) için birçok Google ürününde kullanılan yerel bir kitaplık olan BoringSSL'yi kullanır. BoringSSL'in resmi sürümleri yoktur (tüm kullanıcılar baştan oluşturur) ve API veya ABI stabilitesi konusunda hiçbir garanti vermez.
Android 14'teki değişiklikler
Android 14, Conscrypt'te güncellenebilir bir kök güven deposunu kullanıma sunuyor. CA sertifikaları (veya sertifikaları), Android'de ve genel olarak internette kullanılan genel anahtarlar için güvenin köklerini sağlar. Bu sertifikalar, uygun kriptografik imzalamanın sağlandığından emin olmak için düzenli olarak kontrol edilir; bu nedenle, bunları kullanan tüm cihazlarda sağlanmalı ve saklanmalıdır.
Mainline'dan önce Android, sertifikaları sistem bölümünde ( system/ca-certificates
içinde) saklıyordu ve bunları her Android sürümünde güncelliyordu. Artık Mainline ile, Mainline tren güncellemelerini kullanarak sertifikaları daha sık güncellemek mümkün. Bu yeni özellik, güncelleme süreçlerini kolaylaştırmalı, sorunlar için daha hızlı geri dönüş süreleri elde etmemize olanak sağlamalı ve cihazın ömrünü uzatmaya yardımcı olmalıdır.
Android 14'ten başlayarak, kök güven sertifikaları Conscrypt modülü APEX'te ve sistem bölümünde depolanır. Uygulamalar yine de NetworkSecurityConfig
kullanarak kendi sertifikalarını seçebilir ve sertifika davranışını değiştirebilir.
Android 14 şu diğer Conscrypt modülü değişikliklerini içerir:
- AES-CMAC MAC uygulaması eklendi.
- Kullanımdan kaldırıldı ve "PBEwithHmacSHA2-*" MAC uygulamaları kaldırıldı.
- X25519 anahtarları, anahtar anlaşmaları ve imzalar için sınırlı destek eklendi.
- X.509 doğruluğu için BoringSSL güncellendi.
- Genel CertPath API'lerinde MD5 imzalı sertifikalara yönelik destek kaldırıldı. Bu tür sertifikalar, API seviye 16'dan beri TLS bağlantıları için kabul edilmemektedir.
Android 10'daki değişiklikler
Android 9, Conscrypt için Android'e özel bir genel API içermez; bunun yerine, Cipher ve messageDigest dahil olmak üzere Java Şifreleme Mimarisi (JCA) ve SSLSocket ve SSLEngine dahil olmak üzere Java Secure Socket Extension (JSSE) için standart sınıfları uygulayan bir güvenlik sağlayıcısı kullanır. Kullanıcılar bu sınıflarla etkileşime girer ve bazı halka açık olmayan Conscrypt API'leri, libcore
veya frameworks kodu tarafından kullanılır.
Android 10, javax.net.ssl
altındaki sınıflar tarafından gösterilmeyen Conscrypt işlevselliğine erişmek için android.net.ssl
dosyasına az sayıda genel API yöntemi ekler. Android 10 ayrıca Android Runtime'ın bir parçası olarak daha az popüler olan şifreleme araçları sağlamak için Bouncy Castle'ın inceltilmiş bir kopyasını içerir (Concrypt 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 ayrıca NIST'in Şifreleme Modülü Doğrulama Programı (CMVP) aracılığıyla doğrulanmış BoringSSL'nin bir kopyasını da içerir ( Sertifika #3753 ).
Conscrypt modülü aşağıdaki API'leri kullanıma sunar:
- Genel API'ler,
java.*
vejavax.*
altındaki paketlerdeki sınıfların ve arayüzlerin ve ayrıcaandroid.net.ssl.*
altındaki sınıfların uzantılarıdır. Harici uygulama kodu doğrudan Conscrypt'i çağırmaz. Platform API standartları, bu API'lerin geriye ve ileriye dönük uyumlu kalmasını sağlar. - Çekirdek platform API'leri, çerçeve tarafından halka açık olmayan işlevselliğe erişmek için kullanılan gizli API'lerdir. Bunlar nispeten sınırlıdır; en büyük kullanıcı, ağ güvenliği yapılandırma özelliğini uygulamak için Conscrypt güven yöneticisini (sertifikaları doğrulayan bileşen) genişleten
NetworkSecurityConfig
. - Çekirdek içi API'ler, JCA ve JSEE makineleri tarafından yansıtıcı olarak çağrılan sıfır bağımsız değişken kurucularıyla sınırlıdır.