Konskrypcja

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Moduł Conscrypt przyspiesza ulepszenia zabezpieczeń i poprawia bezpieczeństwo urządzeń 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ępna jako biblioteka typu open source , chociaż ma pewne specjalizacje, gdy jest zawarta na platformie Android.

Moduł Conscrypt używa BoringSSL , natywnej biblioteki, która jest rozwidleniem Google dla OpenSSL i która jest używana w wielu produktach Google do kryptografii i TLS (przede wszystkim Google Chrome), w połączeniu z kodem Conscrypt (zarówno Java, jak i kod natywny). BoringSSL nie ma oficjalnych wydań (wszyscy użytkownicy budują z głowy) i nie daje żadnych gwarancji dotyczących stabilności API lub ABI.

Zmiany w Androidzie 10

Android 9 nie zawiera publicznego interfejsu API specyficznego dla systemu Android dla Conscrypt, ale zamiast tego używa 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.

Android 10 dodaje niewielką liczbę publicznych metod interfejsu API w android.net.ssl , aby uzyskać dostęp do funkcji Conscrypt, która nie jest ujawniana przez klasy w ramach javax.net.ssl ​​. Android 10 zawiera również odchudzoną kopię Bouncy Castle , aby zapewnić mniej popularne narzędzia kryptograficzne w ramach Android Runtime (nie wchodzi w skład modułu Conscrypt).

Format i zależności

Moduł Conscrypt (`com.android.conscrypt`) jest dystrybuowany jako plik APEX , który zawiera kod Conscrypt Java i natywną bibliotekę Conscrypt, która dynamicznie łączy się z bibliotekami Android NDK (takimi jak liblog ). Natywna biblioteka zawiera również kopię BoringSSL, która została zweryfikowana ( Certyfikat #3753 ) przez program walidacji modułów kryptograficznych (CMVP) NIST.

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

  • Publiczne API to rozszerzenia klas i interfejsów w pakietach pod java.* i javax.* , plus klasy pod android.net.ssl.* . Kod aplikacji zewnętrznej nie wywołuje bezpośrednio Conscrypt. Standardy Platform API zapewniają, że te interfejsy API pozostają zgodne wstecz i do przodu.
  • Podstawowe interfejsy API platformy 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 (składnik weryfikujący certyfikaty) o zaimplementowanie funkcji konfiguracji zabezpieczeń sieci .
  • Wewnątrzrdzeniowe interfejsy API są ograniczone do konstruktorów z zerowymi argumentami, nazywanych refleksyjnie przez maszynerię JCA i JSEE.