Fingerprinting Canvas i WebGL w 2026 roku
Stan fingerprintingu opartego na GPU: co zmienił Privacy Sandbox w Chrome, jak się dostosowaliśmy i dlaczego sygnały sprzętowe pozostają najstabilniejszymi identyfikatorami.
Canvas
i
WebGL
fingerprinting to fundamenty identyfikacji urządzeń od początku lat 2010. Krajobraz zmienił się jednak znacząco za sprawą inicjatyw
Privacy Sandbox
w Chrome, Enhanced Tracking Protection w Firefoksie oraz Intelligent Tracking Prevention w Safari. Oto stan fingerprintingu opartego na GPU w 2026 roku — co się zmieniło, jak się dostosowaliśmy i dlaczego te sygnały pozostają niezastąpione.
Co zmienił Privacy Sandbox w Chrome
Privacy Sandbox w Chrome, wdrażany stopniowo od 2024 roku, wprowadził kilka zmian, które wpływają na fingerprinting. Najistotniejsza z nich to inicjatywa partycjonowanego magazynu (partitioned storage), która ogranicza skuteczność śledzenia opartego na cookies, ale nie wpływa bezpośrednio na fingerprinting canvas ani WebGL.
Chrome zaczął jednak eksperymentować z wstrzykiwaniem szumu do canvas — dodawaniem drobnych, losowych zaburzeń do danych pikselowych canvas, aby uniemożliwić dokładny fingerprinting. Gdy funkcja jest włączona, te same instrukcje rysowania dają nieco inne wyniki pikselowe przy każdym wykonaniu. To psuje naiwny fingerprinting canvas oparty na haśle, który zakłada dokładną powtarzalność.
Dostosowanie do szumu w canvas
Naszą odpowiedzią na wstrzykiwanie szumu do canvas było przejście z dokładnego dopasowania na dopasowanie oparte na podobieństwie w przypadku sygnałów canvas. Zamiast obliczać pojedyncze hasło całości danych pikselowych canvas, wyodrębniamy teraz wiele wektorów cech z różnych regionów i operacji rysowania.
Wstrzykiwany szum jest zwykle niewielki — kilka pikseli zmienionych na klatkę. Wyodrębniając cechy o grubszej ziarnistości (dzieląc canvas na regiony i obliczając zagregowane statystyki), potrafimy zidentyfikować leżącą u podstaw sygnaturę sprzętu pomimo szumu. Nasz algorytm dopasowania międzysesyjnego porównuje te wektory cech za pomocą podobieństwa kosinusowego, z progiem dostrojonym tak, by akceptować wariacje spójne ze sprzętem, a odrzucać różne urządzenia.
WebGL: wciąż żyła złota
Podczas gdy fingerprinting canvas napotyka nowe wyzwania, fingerprinting WebGL pozostaje w dużej mierze nietknięty przez inicjatywy dotyczące prywatności. API WebGL udostępnia parametry sprzętowe — maksymalne rozmiary tekstur, formaty precyzji shaderów, obsługiwane rozszerzenia — które są nieodłączne dla GPU i nie da się ich łatwo zaburzyć bez zepsucia funkcjonalności WebGL.
Chrome omawiał ograniczenie dostępu do stringów renderera i producenta WebGL (zastąpienie konkretnych nazw GPU ogólnymi etykietami w rodzaju „GPU”), ale ta zmiana nie została szeroko wdrożona. A nawet gdyby została, dziesiątki innych parametrów WebGL, które odpytujemy, wciąż dostarczałyby wysoce charakterystycznych sygnałów identyfikacyjnych.
GPU jako kotwica sprzętowa
Podstawowy powód, dla którego fingerprinting oparty na GPU pozostaje potężny, jest taki, że odczytuje on cechy sprzętowe fizycznie zdeterminowane przez układ GPU, sterownik i potok renderowania. Cechy te nie są wyborami programowymi, które da się łatwo zmienić — są konsekwencją tego, jak krzem został zaprojektowany i wyprodukowany.
Urządzenie z kartą NVIDIA RTX 4070 zawsze zgłosi określone maksymalne rozmiary tekstur, określoną precyzję shaderów i określoną obsługę rozszerzeń, ponieważ te wartości są zdeterminowane przez architekturę GPU. Jedynym sposobem na zmianę tych wartości jest użycie innego GPU lub innego sterownika — a zmiany sterowników są u większości użytkowników stosunkowo rzadkie.
Renderowanie canvas: poza hashowaniem pikseli
Nowoczesny fingerprinting canvas wykracza poza proste hashowanie pikseli. Używamy operacji rysowania zaprojektowanych specjalnie tak, by wzmacniać zależne od sprzętu różnice w renderowaniu. Renderowanie tekstu z konkretnymi fontami obciąża rasteryzator fontów. Krzywe Béziera o określonych punktach kontrolnych obciążają teselację krzywych w GPU. Gradienty o określonych punktach koloru obciążają potok mieszania barw.
Dobierając operacje rysowania, które maksymalizują wariancję między modelami GPU, a jednocześnie minimalizują wariancję między powtórzonymi uruchomieniami na tym samym GPU, tworzymy testy canvas, które są zarazem bardziej charakterystyczne i bardziej odporne niż proste podejście „tekst i kształty” stosowane przez wczesne biblioteki fingerprintingowe.
Fingerprinting shaderów WebGL
Nowszą techniką, którą wdrażamy, jest fingerprinting shaderów WebGL. Kompilując określone programy shaderów i odpytując ich skompilowane właściwości (precyzję, poziom optymalizacji, liczbę instrukcji), potrafimy wyodrębnić informacje o kompilatorze shaderów danego GPU — kolejnej zależnej od sprzętu cesze, która różni się między rodzinami GPU.
Technika ta jest szczególnie cenna przy rozróżnianiu urządzeń o zbliżonych podstawowych parametrach WebGL. Dwa różne modele GPU mogą obsługiwać ten sam maksymalny rozmiar tekstury, ale ich kompilatory shaderów wytworzą różny skompilowany kod dla tego samego kodu źródłowego shadera.
Kwestie prywatności
Fingerprinting oparty na GPU, jak każdy fingerprinting, musi być stosowany odpowiedzialnie. Używamy tych sygnałów do uzasadnionych celów — zapobiegania oszustwom, detekcji botów i bezpieczeństwa kont — a nie do śledzenia międzywitrynowego czy reklamy. Nasze wdrożenie w chmurze zapewnia, że dane fingerprintów pozostają na infrastrukturze naszych klientów, eliminując udostępnianie danych podmiotom trzecim.
Krajobraz prywatności będzie dalej ewoluował. Przeglądarki mogą wprowadzać dodatkowe zabezpieczenia wpływające na fingerprinting GPU. Naszą strategią jest ciągłe dostosowywanie się — znajdowanie nowych, zależnych od sprzętu sygnałów w miarę ograniczania starych, przy zachowaniu dokładności i stabilności, na których polegają nasi klienci.