Konskrypcja

Moduł Conscrypt przyspiesza poprawę bezpieczeństwa i poprawia bezpieczeństwo urządzenia bez polegania na aktualizacjach OTA. Wykorzystuje kod Java i natywną bibliotekę, aby zapewnić implementację Android TLS, a także dużą część funkcji kryptograficznych Androida, takich jak generatory kluczy, szyfry i skróty wiadomości. Conscrypt jest dostępny jako biblioteka typu open source , chociaż ma pewne specjalizacje, jeśli jest dołączony do platformy Android.

Moduł Conscrypt wykorzystuje BoringSSL , natywną bibliotekę będącą rozwidleniem OpenSSL Google i która jest używana w wielu produktach Google do kryptografii i TLS (w szczególności w Google Chrome) w połączeniu z kodem Conscrypt (zarówno Java, jak i kod natywny). BoringSSL nie ma oficjalnych wersji (wszyscy użytkownicy budują od głowy) i nie gwarantuje stabilności API ani ABI.

Zmiany w Androidzie 14

W systemie Android 14 wprowadzono aktualizowalny główny magazyn zaufania w Conscrypt. Certyfikaty CA (lub certyfikaty) stanowią podstawę zaufania dla kluczy publicznych używanych w systemie Android i ogólnie w Internecie. Certyfikaty te są rutynowo sprawdzane w celu zapewnienia prawidłowego podpisywania kryptograficznego, dlatego należy je udostępniać i przechowywać na wszystkich urządzeniach, które się na nich opierają.

Przed wersją Mainline system Android przechowywał certyfikaty na partycji systemowej (w system/ca-certificates ) i aktualizował je przy każdej wersji Androida. Teraz dzięki Mainline możliwe jest częstsze aktualizowanie certyfikatów za pomocą aktualizacji pociągów Mainline. Ta nowa funkcja powinna usprawnić procesy aktualizacji, umożliwić nam szybsze rozwiązywanie problemów i pomóc wydłużyć żywotność urządzeń.

Począwszy od Androida 14, certyfikaty zaufania głównego są przechowywane w module Conscrypt APEX i na partycji systemowej. Aplikacje nadal mogą wybierać własne certyfikaty i modyfikować zachowanie certyfikatów za pomocą NetworkSecurityConfig .

Android 14 zawiera inne zmiany w module Conscrypt:

  • Dodano implementację MAC AES-CMAC.
  • Przestarzałe i usunięte implementacje MAC `PBEwithHmacSHA2-*`.
  • Dodano ograniczoną obsługę kluczy X25519, kluczowych umów i podpisów.
  • Zaktualizowano BoringSSL pod kątem poprawności X.509.
  • Usunięto obsługę certyfikatów podpisanych za pomocą MD5 w publicznych interfejsach API CertPath. Takie certyfikaty nie są akceptowane dla połączeń TLS od poziomu API 16.

Zmiany w Androidzie 10

Android 9 nie zawiera publicznego interfejsu API Conscrypt specyficznego dla Androida, ale zamiast tego korzysta z dostawcy zabezpieczeń, który implementuje standardowe klasy dla architektury Java Cryptography Architecture (JCA), w tym Cipher i MessageDigest, oraz Java Secure Socket Extension (JSSE), w tym SSLSocket i SSLEngine. Użytkownicy wchodzą w interakcję z tymi klasami, a niektóre niepubliczne interfejsy API Conscrypt są używane przez kod libcore lub frameworków.

Android 10 dodaje niewielką liczbę publicznych metod API w android.net.ssl , aby uzyskać dostęp do funkcjonalności Conscrypt, która nie jest udostępniana przez klasy w javax.net.ssl . Android 10 zawiera również odchudzoną kopię Bouncy Castle , która zapewnia mniej popularne narzędzia kryptograficzne w ramach Android Runtime (nie zawarte w module Conscrypt).

Format i zależności

Moduł Conscrypt ( com.android.conscrypt ) jest dystrybuowany jako plik APEX zawierający kod Java Conscrypt i natywną bibliotekę Conscrypt, która dynamicznie łączy się z bibliotekami NDK systemu Android (takimi jak liblog ). Biblioteka natywna zawiera również kopię BoringSSL, która została sprawdzona ( certyfikat nr 3753 ) w ramach programu sprawdzania poprawności modułu kryptograficznego (CMVP) firmy NIST.

Moduł Conscrypt udostępnia następujące interfejsy API:

  • Publiczne interfejsy API to rozszerzenia klas i interfejsów w pakietach java.* i javax.* oraz klasy w android.net.ssl.* . Kod aplikacji zewnętrznej nie wywołuje bezpośrednio Conscrypt. Standardy API platformy zapewniają, że te interfejsy API pozostają kompatybilne wstecz i do przodu.
  • Interfejsy API platformy podstawowej to ukryte interfejsy API używane przez platformę w celu uzyskania dostępu do niepublicznych funkcji. Są one stosunkowo ograniczone; największym użytkownikiem jest NetworkSecurityConfig , który rozszerza menedżera zaufania Conscrypt (komponent weryfikujący certyfikaty) o implementację funkcji konfiguracji zabezpieczeń sieci .
  • Wewnątrzrdzeniowe interfejsy API są ograniczone do konstruktorów bezargumentowych wywoływanych refleksyjnie przez maszyny JCA i JSEE.