Mozilla implementuje CRLite w celu sprawdzania problematycznych certyfikatów TLS

Firma Mozilla ogłosił o rozpoczęciu testów w nocnych kompilacjach Firefoksa nowego mechanizmu wykrywania unieważnionych certyfikatów - CRLite. CRLite umożliwia zorganizowanie skutecznego sprawdzania unieważnień certyfikatów w bazie danych hostowanej w systemie użytkownika. Implementacja CRLite Mozilli opublikowany na bezpłatnej licencji MPL 2.0. Wpisany jest kod generujący bazę danych i komponenty serwera Python i idź. Części klienta dodane do Firefoksa do odczytu danych z bazy danych przygotowany w języku Rusta.

Weryfikacja certyfikatu za pomocą usług zewnętrznych w oparciu o protokół, który jest nadal używany OCSP (Online Certyfikat Status Protocol) wymaga gwarantowanego dostępu do sieci, powoduje znaczne opóźnienia w przetwarzaniu żądań (średnio 350ms) i ma problemy z zapewnieniem poufności (serwery OCSP odpowiadające na żądania otrzymują informację o konkretnych certyfikatach, na podstawie której można ocenić, czy co strony otwierane przez użytkownika). Istnieje również możliwość lokalnego sprawdzenia z listami C.R.L. (Lista unieważnionych certyfikatów), jednak wadą tej metody jest bardzo duży rozmiar pobieranych danych - obecnie baza unieważnionych certyfikatów zajmuje około 300 MB i jej liczba stale rośnie.

Aby blokować certyfikaty, które zostały przejęte i unieważnione przez urzędy certyfikacji, od 2015 roku Firefox korzysta ze scentralizowanej czarnej listy Jedna lista CRL w połączeniu z wezwaniem serwisu Bezpieczne przeglądanie Google w celu zidentyfikowania możliwej złośliwej aktywności. OneCRL, jak Zestawy CRLS w przeglądarce Chrome pełni rolę łącza pośredniego, które agreguje listy CRL z urzędów certyfikacji i zapewnia jedną scentralizowaną usługę OCSP do sprawdzania unieważnionych certyfikatów, dzięki czemu można nie wysyłać żądań bezpośrednio do urzędów certyfikacji. Pomimo wielu prac nad poprawą niezawodności usługi weryfikacji certyfikatów online, dane telemetryczne pokazują, że ponad 7% żądań OCSP przekroczyło limit czasu (kilka lat temu odsetek ten wynosił 15%).

Domyślnie, jeśli nie ma możliwości weryfikacji poprzez OCSP, przeglądarka uznaje certyfikat za ważny. Usługa może być niedostępna z powodu problemów sieciowych i ograniczeń w sieciach wewnętrznych lub zablokowana przez atakujących - aby ominąć kontrolę OCSP podczas ataku MITM, po prostu zablokuj dostęp do usługi sprawdzania. Częściowo, aby zapobiec takim atakom, wdrożono technikę Niezbędne zszywanie, co pozwala potraktować błąd dostępu OCSP lub niedostępność OCSP jako problem z certyfikatem, jednak funkcja ta jest opcjonalna i wymaga specjalnej rejestracji certyfikatu.

CRLite pozwala na skonsolidowanie pełnych informacji o wszystkich unieważnionych certyfikatach w łatwo aktualizowaną strukturę o rozmiarze zaledwie 1 MB, co umożliwia przechowywanie pełnej bazy danych CRL po stronie klienta.
Przeglądarka będzie mogła codziennie synchronizować swoją kopię danych o unieważnionych certyfikatach, a baza ta będzie dostępna pod każdym warunkiem.

CRLite łączy informacje z Przejrzystość certyfikatu, publiczny dziennik wszystkich wydanych i unieważnionych certyfikatów oraz wyników skanowania certyfikatów w Internecie (gromadzone są różne listy CRL urzędów certyfikacji i agregowane są informacje o wszystkich znanych certyfikatach). Dane są pakowane przy użyciu kaskadowania filtry kwitnienia, struktura probabilistyczna, która pozwala na fałszywe wykrycie brakującego elementu, ale wyklucza pominięcie istniejącego elementu (tj. z pewnym prawdopodobieństwem możliwy jest fałszywie dodatni wynik dla prawidłowego certyfikatu, ale unieważnione certyfikaty są gwarantowane).

Aby wyeliminować fałszywe alarmy, CRLite wprowadził dodatkowe poziomy filtrów korekcyjnych. Po wygenerowaniu struktury przeszukiwane są wszystkie rekordy źródłowe i identyfikowane są fałszywe alarmy. Na podstawie wyników tej kontroli tworzona jest dodatkowa struktura, która jest kaskadowana na pierwszą i koryguje powstałe fałszywe alarmy. Operację powtarza się aż do całkowitego wyeliminowania wyników fałszywie dodatnich podczas kontroli kontrolnej. Zazwyczaj wystarczy utworzyć 7–10 warstw, aby całkowicie pokryć wszystkie dane. Ponieważ stan bazy danych na skutek okresowej synchronizacji odbiega nieco od aktualnego stanu listy CRL, sprawdzanie nowych certyfikatów wydanych po ostatniej aktualizacji bazy CRLite odbywa się z wykorzystaniem protokołu OCSP, w tym z wykorzystaniem protokołu OCSP Zszywanie OCSP (odpowiedź OCSP potwierdzona przez urząd certyfikacji jest przesyłana przez serwer obsługujący witrynę podczas negocjowania połączenia TLS).

Mozilla implementuje CRLite w celu sprawdzania problematycznych certyfikatów TLS

Dzięki filtrom Blooma grudniowy fragment informacji z WebPKI, obejmujący 100 milionów aktywnych certyfikatów i 750 tysięcy unieważnionych certyfikatów, udało się spakować w strukturę o rozmiarze 1.3 MB. Proces generowania struktury wymaga dużych zasobów, ale odbywa się na serwerze Mozilla, a użytkownik otrzymuje gotową aktualizację. Przykładowo w formie binarnej dane źródłowe wykorzystywane podczas generowania wymagają około 16 GB pamięci, gdy są przechowywane w systemie Redis DBMS, a w formie szesnastkowej zrzut wszystkich numerów seryjnych certyfikatów zajmuje około 6.7 GB. Proces agregacji wszystkich unieważnionych i aktywnych certyfikatów zajmuje około 40 minut, natomiast proces generowania spakowanej struktury w oparciu o filtr Blooma zajmuje kolejne 20 minut.

Mozilla obecnie zapewnia aktualizację bazy danych CRLite cztery razy dziennie (nie wszystkie aktualizacje są dostarczane klientom). Generowanie aktualizacji delta nie zostało jeszcze zaimplementowane - użycie bsdiff4, używanego do tworzenia aktualizacji delta dla wydań, nie zapewnia odpowiedniej wydajności dla CRLite, a aktualizacje są nieracjonalnie duże. Aby wyeliminować tę wadę, planuje się przerobić format struktury magazynu, aby wyeliminować niepotrzebne przebudowywanie i usuwanie warstw.

CRLite aktualnie działa w Firefoksie w trybie pasywnym i jest używany równolegle z OCSP do gromadzenia statystyk dotyczących poprawności działania. CRLite można przełączyć do głównego trybu skanowania, w tym celu należy ustawić parametr security.pki.crlite_mode = 2 w about:config.

Mozilla implementuje CRLite w celu sprawdzania problematycznych certyfikatów TLS

Źródło: opennet.ru

Dodaj komentarz