Które sygnały przetrwają aktualizacje przeglądarek? Analiza stabilności
Przeanalizowaliśmy stabilność sygnałów na przestrzeni 50 aktualizacji Chrome, Firefox i Safari. Oto najbardziej i najmniej stabilne sygnały fingerprintingu.
Aktualizacje przeglądarek to naturalny wróg fingerprintingu urządzeń. Co 4-6 tygodni Chrome, Firefox i Safari udostępniają nowe wersje, które mogą zmieniać wartości sygnałów — modyfikując ciągi user-agent, zmieniając sposób renderowania, dodając lub usuwając API. Jak zauważono w W3C Fingerprinting Guidance, przeglądarki aktywnie pracują nad ograniczeniem powierzchni podatnej na fingerprinting. Dla systemów fingerprintingu, które traktują wszystkie sygnały jednakowo, każda aktualizacja to potencjalne zerwanie tożsamości milionów odwiedzających.
Przeprowadziliśmy kompleksową analizę stabilności obejmującą 50 aktualizacji przeglądarek, aby odpowiedzieć na fundamentalne pytanie: na których sygnałach można polegać, a które cię zawiodą?
Metodologia
Oprzyrządowaliśmy 200 fizycznych urządzeń w 5 systemach operacyjnych (Windows 10, Windows 11, macOS Ventura, macOS Sonoma, Ubuntu 22.04) i 3 przeglądarkach (Chrome, Firefox, Safari). Każde urządzenie codziennie przez 14 miesięcy wykonywało automatyczne zbieranie sygnałów, obejmując 50 głównych aktualizacji wersji przeglądarek: 24 wydania Chrome, 16 wydań Firefox i 10 wydań Safari.
Dla każdego sygnału śledziliśmy: jak często zmieniała się wartość, czy zmiana korelowała z aktualizacją przeglądarki lub czynnikiem zewnętrznym (aktualizacja sterownika, łatka systemu), oraz skalę zmiany (całkowita wymiana wartości vs. niewielka wariacja).
Poziomy stabilności
Poziom 1: Niewzruszone (stabilność 99,5%+)
Te sygnały zmieniały się tylko wtedy, gdy zmieniał się fizyczny sprzęt lub aktualizowano sterowniki — nigdy wyłącznie z powodu aktualizacji przeglądarki.
Hardware Concurrency (navigator.hardwareConcurrency): stabilność 99,97%. Zmieniło się tylko na 1 urządzeniu, które otrzymało aktualizację BIOS wpływającą na hyperthreading. Device Memory (navigator.deviceMemory): stabilność 99,98%. Jedno urządzenie zostało w trakcie badania rozbudowane z 8 GB do 16 GB. Rozdzielczość ekranu i głębia kolorów: stabilność 99,92%. Zmiany korelowały z wymianą monitorów i zdarzeniami stacji dokującej. WebGL Max Texture Size: stabilność 99,99%. Zero zmian związanych z przeglądarką. Zmieniło się raz na urządzeniu, które otrzymało aktualizację sterownika NVIDIA. Częstotliwość próbkowania audio: stabilność 100%. Zero zmian na wszystkich 200 urządzeniach i przez 50 aktualizacji. To najstabilniejszy sygnał, jaki śledzimy.
Poziom 2: Przeważnie stabilne (95-99,5%)
Te sygnały czasami zmieniają się wraz z aktualizacjami przeglądarek, ale pozostają stabilne w większości wydań.
Canvas 2D Fingerprint: stabilność 97,8%. Zmiany wystąpiły w Chrome 118 (aktualizacja silnika renderowania czcionek), Chrome 122 (zmiana wygładzania subpikselowego) oraz Firefox 121 (aktualizacja kształtowania tekstu). Każda zmiana dotknęła jednocześnie wszystkie urządzenia z daną przeglądarką — jest to wykrywalny wzorzec, który obsługujemy poprzez dopasowanie uwzględniające wersję przeglądarki. WebGL Renderer String: stabilność 98,1%. Chrome sporadycznie przeformatowuje ciąg opakowujący ANGLE. Bazowe informacje o GPU pozostają niezmienione, ale zmienia się ich reprezentacja tekstowa. Parsujemy model GPU z ciągu, zamiast haszować sam ciąg bezpośrednio. Lista czcionek: stabilność 96,4%. Aktualizacje systemu sporadycznie dodają lub usuwają czcionki systemowe. Aktualizacje przeglądarek rzadko wpływają na wyliczanie czcionek, ale Chrome 120 zmienił kolejność, w jakiej raportowane są czcionki, co zepsuło fingerprinting czcionek oparty na haszowaniu. Zamiast uporządkowanego haszowania używamy porównania zbiorowego (podobieństwo zbiorów).
Poziom 3: Umiarkowana stabilność (80-95%)
Te sygnały zmieniają się z zauważalną częstotliwością, ale między zmianami wciąż dostarczają użytecznej wartości identyfikacyjnej.
Zainstalowane wtyczki: stabilność 89,2%. Konsekwentne ograniczanie przez Chrome tablicy wtyczek (navigator.plugins) w niektórych kontekstach całkowicie usunęło widoczność wtyczek. Firefox utrzymał wyliczanie wtyczek. Safari ograniczyło je do standardowego zestawu. Wykrywanie funkcji CSS: stabilność 91,7%. Wraz z każdym wydaniem przeglądarki dodawane są nowe funkcje CSS, co zmienia zestaw funkcji wykrywanych przez nasze sondowanie CSS. Nowym funkcjom nadajemy niższą wagę niż ugruntowanym, aby zmniejszyć wpływ. Obsługa dotyku: stabilność 93,1%. Przeglądarki desktopowe sporadycznie zmieniają raportowaną obsługę dotyku, gdy Chrome dostosowuje wykrywanie emulacji urządzeń.
Poziom 4: Zmienne (<80%)
Te sygnały zmieniają się często i nigdy nie powinny być podstawowymi kotwicami identyfikacji.
User Agent String: stabilność 42,3%. Inicjatywa Chrome dotycząca redukcji User-Agent wielokrotnie zmieniała format ciągu. Firefox aktualizuje numer wersji przy każdym wydaniu. Safari regularnie modyfikuje ciąg wersji WebKit. Kiedyś stanowiło to trzon prostych systemów fingerprintingu — te systemy są teraz zepsute. Typ połączenia (navigator.connection): stabilność 68,4%. Zmienia się przy przełączaniu sieci (WiFi na komórkową, różne sieci WiFi). Battery API: stabilność 71,2%. Waha się w zależności od stanu naładowania i dostępności API w przeglądarce. Chrome ograniczyło dostęp do Battery API w niektórych kontekstach. Dostępny obszar ekranu: stabilność 76,8%. Zmienia się wraz z widocznością paska zadań, zarządzaniem oknami i regulacją skalowania wyświetlacza.
Porównanie między przeglądarkami
Chrome to najbardziej zmienna przeglądarka pod względem stabilności fingerprintingu. Google aktywnie pracuje nad ograniczeniem podatności na fingerprinting, co oznacza, że aktualizacje Chrome psują więcej sygnałów niż aktualizacje Firefox czy Safari. W okresie naszego badania:
Chrome powodował zmiany sygnałów w 3,2% sesji zbierania. Firefox powodował zmiany sygnałów w 1,8% sesji zbierania. Safari powodowało zmiany sygnałów w 1,1% sesji zbierania.
Niższa zmienność Safari wynika częściowo z tego, że Apple wypuszcza mniej wydań rocznie, a częściowo z tego, że mechanizmy Safari przeciwdziałające fingerprintingowi (Intelligent Tracking Prevention) działają na poziomie sieci, zamiast zmieniać wartości zwracane przez API.
Praktyczne zalecenia
Na podstawie tej analizy formułujemy pięć zaleceń dla produkcyjnych systemów fingerprintingu:
Nigdy nie używaj user-agent jako kotwicy identyfikacji. To najmniej stabilny sygnał wyróżniający. Wykorzystuj go wyłącznie do wykrywania przeglądarki i oceny pewności na Poziomie 3.
Oddzielaj sygnały sprzętowe od programowych. Sygnały sprzętowe (GPU, ekran, audio) są 40x stabilniejsze niż sygnały programowe (user agent, wtyczki, funkcje CSS). Odpowiednio dobieraj ich wagi.
Używaj porównania zbiorowego dla sygnałów wyliczalnych. Listy czcionek, listy wtyczek i wyniki wykrywania funkcji powinny być porównywane za pomocą podobieństwa zbiorów lub podobnych metryk odległości zbiorów, a nie uporządkowanego haszowania. Zmiany kolejności są częste; zmiany zawartości są rzadkie.
Wdróż dopasowanie uwzględniające wersję przeglądarki. Gdy Chrome 118 zmienia renderowanie canvas jednocześnie dla wszystkich użytkowników Chrome, twój system powinien rozpoznać to jako aktualizację przeglądarki, a nie masowe zerwanie tożsamości. Śledź wersje przeglądarek i stosuj tolerancje dopasowania specyficzne dla wersji.
Nieustannie monitoruj stabilność sygnałów. Nasze wartości procentowe stabilności opierają się na danych historycznych. Przyszłe aktualizacje przeglądarek mogą zmienić profil stabilności dowolnego sygnału. Prowadzimy ciągły monitoring i automatycznie dostosowujemy wagi sygnałów, gdy zmienia się stabilność.
Wpływ na tracio.ai
Nasza wielopoziomowa architektura identyfikacji V3 bezpośrednio odzwierciedla tę analizę stabilności. Sygnały Poziomu 1 (sprzęt) mają wagę 60%. Sygnały Poziomu 2 (renderowanie, czcionki) mają wagę 30%. Sygnały Poziomu 3 (metadane przeglądarki, połączenie) mają wagę 10%. Takie ważenie zapewnia, że identyfikację napędzają najstabilniejsze sygnały, a sygnały zmienne przyczyniają się do oceny pewności, nie powodując zerwania tożsamości.
Rezultat: 99,5% stabilności identyfikacji przez 50 aktualizacji przeglądarek, wobec 69% dla systemów używających płaskiego fingerprintingu opartego na haszowaniu. Różnica nie polega na algorytmicznym sprycie — to empiryczna analiza sygnałów zastosowana do decyzji architektonicznych.