şifrele

Conscrypt modülü, güvenlik iyileştirmelerini hızlandırır ve OTA güncellemelerine güvenmeden cihaz güvenliğini iyileştirir. Android TLS uygulamasının yanı sıra anahtar oluşturucular, şifreler ve mesaj özetleri gibi Android şifreleme işlevselliğinin büyük bir bölümünü sağlamak için Java kodunu ve yerel bir kitaplığı kullanır. Conscrypt, açık kaynaklı bir kitaplık olarak mevcuttur, ancak Android platformuna dahil edildiğinde bazı uzmanlıkları vardır.

Conscrypt modülü, OpenSSL'nin bir Google çatalı olan ve birçok Google ürününde kriptografi ve TLS (özellikle Google Chrome) için kullanılan yerel bir kitaplık olan BoringSSL'yi kullanır. BoringSSL'nin resmi sürümleri yoktur (tüm kullanıcılar baştan oluşturur) ve API veya ABI kararlılığı konusunda hiçbir garanti vermez.

Android 10'daki değişiklikler

Android 9, Conscrypt için Android'e özgü bir genel API içermez, bunun yerine Cipher ve MessageDigest dahil Java Cryptography Architecture (JCA) ve SSLSocket ve SSLEngine dahil 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ı genel olmayan 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 gösterilmeyen Conscrypt işlevine erişmek için android.net.ssl az sayıda genel API yöntemi ekler. Android 10 ayrıca, Android Runtime'ın bir parçası olarak (Concrypt modülüne dahil değildir) daha düşük popülerliğe sahip şifreleme araçları sağlamak için Bouncy Castle'ın inceltilmiş bir kopyasını içerir.

Biçim ve bağımlılıklar

Conscrypt modülü, 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ış ( Sertifika #3753 ) BoringSSL'nin bir kopyasını içerir.

Conscrypt modülü aşağıdaki API'leri sunar:

  • Genel API'ler , java.* ve javax.* altındaki paketlerdeki sınıfların ve arayüzlerin yanı sıra android.net.ssl.* altındaki sınıfların uzantılarıdır. Harici uygulama kodu, Conscrypt'i doğrudan çağırmaz. Platform API standartları, bu API'lerin geriye ve ileriye uyumlu kalmasını sağlar.
  • Çekirdek platform API'leri , çerçeve tarafından halka 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ı, 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 adlandırılan sıfır bağımsız değişken oluşturucularla sınırlıdır.