Fingerprinting Canvas wykorzystuje różnice w renderowaniu tych samych poleceń rysowania na różnych konfiguracjach sprzętowych i programowych jako identyfikator i rzadko działa samodzielnie. Rozsądna ochrona nie polega na ciągłej zmianie wartości, lecz na utrzymaniu wzajemnej spójności cech środowiska.
Zasada działania fingerprintingu Canvas nie jest skomplikowana, ale wiele popularnych sposobów obrony działa dokładnie odwrotnie, niż powinno.
Te same polecenia, różne maszyny, różne wyniki
Canvas to komponent rysunkowy HTML5, na którym strona internetowa może za pomocą skryptów rysować kształty i tekst. Te same instrukcje rysowania mogą być renderowane nieco inaczej na różnych urządzeniach z powodu różnic w systemie operacyjnym, wersji przeglądarki, bibliotece czcionek i sterowniku grafiki. Gołym okiem zwykle tego nie widać, ale po wyeksportowaniu zawartości płótna jako danych różnice stają się wartościami możliwymi do porównania.
Proces wygląda mniej więcej tak: strona najpierw rysuje grafikę i tekst, a następnie używa toDataURL(), aby wyeksportować wynik jako ciąg Base64. Taki ciąg może służyć jako identyfikator. Różne urządzenia tworzą różne wyniki eksportu, więc w wielu przypadkach wartość jest unikalna. Usunięcie plików cookie nie ma na nią wpływu, podobnie jak wyczyszczenie pamięci podręcznej.
Rzadko jest używany samodzielnie
Pojedyncza wartość Canvas ma ograniczoną użyteczność i może się zmieniać po aktualizacji przeglądarki lub sterownika. W praktyce Canvas zwykle łączy się z grupą innych cech i sprawdza ich zgodność:
- Dane graficzne, takie jak WebGL, lista czcionek i model karty graficznej
- Dane środowiskowe, takie jak UA, strefa czasowa, język i rozdzielczość ekranu
- Dane sesji, takie jak pliki cookie, pamięć lokalna i wyjście sieciowe
Powodem łączenia sygnałów jest kontrola spójności. Każda cecha osobno może mieścić się w normalnym zakresie, ale sprzeczności stają się widoczne po zestawieniu: strefa czasowa wskazuje Stany Zjednoczone, lista języków zawiera wyłącznie chiński, a wartość Canvas pasuje do zintegrowanej grafiki, podczas gdy UA deklaruje nowe urządzenie z najwyższej półki. Platforma nie musi udowadniać, kim jesteś. Wystarczy, że rozpozna zestaw cech, który nie wygląda jak prawdziwa maszyna.
Wyłączenie Canvas wyróżnia środowisko
Pierwszym odruchem wielu osób jest wyłączenie Canvas, ale może to dać dokładnie odwrotny efekt.
Prawie wszystkie przeglądarki zwykłych użytkowników obsługują Canvas. Środowisko, które wyraźnie go nie obsługuje, jest statystycznie rzadkie i w praktyce ujawnia, że zastosowano specjalne modyfikacje. Jest też bardziej praktyczny problem: wiele stron korzysta z Canvas do przycinania obrazów, wykresów i renderowania CAPTCHA. Po jego wyłączeniu funkcje strony mogą przestać działać, co dodaje kolejną anomalię.
Inna metoda polega na używaniu nowych losowych wartości przy każdej wizycie. Ma ona podobną wadę: fingerprint prawdziwego urządzenia jest stabilny. Środowisko, które zmienia się za każdym razem, zachowuje się inaczej niż zwykłe urządzenie i może być łatwiejsze do wyodrębnienia oraz oznaczenia. Sama losowość może być rozpoznawalnym sygnałem.
Rozsądny kierunek to spójność wewnętrzna
Bardziej realistycznym celem jest wzajemna zgodność cech w obrębie środowiska i brak ogólnych anomalii niż ciągłe zmienianie wszystkiego przy każdej wizycie.
W praktyce cechy powinny się wzajemnie potwierdzać: strefa czasowa, język i geograficzna lokalizacja wychodzącego adresu IP powinny do siebie pasować. Urządzenie deklarowane przez UA oraz możliwości graficzne widoczne w Canvas i WebGL powinny należeć do podobnej klasy. Środowisko tego samego konta powinno pozostawać stabilne w czasie i nie wykazywać wyraźnych zmian przy kolejnych wizytach. Nie warto polegać na wtyczkach, które po prostu wyłączają jedną funkcję, ponieważ często tworzą jeszcze bardziej charakterystyczne cechy. Tam, gdzie to możliwe, ograniczenie skryptów firm trzecich zmniejsza powierzchnię zbierania danych.
Jeśli kilka środowisk musi się od siebie różnić, jest to zadanie dla izolacji środowisk. Narzędzia takie jak PurpleMark przy izolowaniu wielu kont zazwyczaj przypisują każdemu kontu stałe środowisko, zamiast losowo zmieniać parametry, ponieważ dla platform najważniejsze jest to, czy cały zestaw cech pozostaje stabilny i logicznie spójny.
Podsumowanie
Canvas umożliwia śledzenie, ponieważ zamienia drobne różnice sprzętowe i programowe w stabilny, porównywalny ciąg danych. Skuteczna ochrona nie polega na wyłączeniu Canvas ani na chaotycznych zmianach, lecz na tym, by Canvas był zgodny z pozostałymi cechami tego samego środowiska. Wyglądanie zwyczajnie jest bezpieczniejsze niż wyglądanie nietypowo.


