Canvas- і WebGL-фінгерпринтинг у 2026 році
Стан GPU-фінгерпринтингу: що змінилося з Privacy Sandbox у Chrome, як ми адаптувалися і чому апаратні сигнали залишаються найстабільнішими ідентифікаторами.
Canvas
і
WebGL
фінгерпринтинг є наріжними каменями ідентифікації пристроїв ще з початку 2010-х. Але ландшафт суттєво змінився через ініціативи Chrome
Privacy Sandbox
, Enhanced Tracking Protection у Firefox та Intelligent Tracking Prevention у Safari. Ось стан GPU-фінгерпринтингу у 2026 році — що змінилося, як ми адаптувалися і чому ці сигнали залишаються незамінними.
Що змінилося з Privacy Sandbox у Chrome
Privacy Sandbox від Chrome, що поетапно розгортається з 2024 року, приніс кілька змін, які впливають на фінгерпринтинг. Найзначніша — ініціатива секціонованого сховища (partitioned storage), яка знижує ефективність відстеження на основі cookie, але напряму не впливає на canvas- чи WebGL-фінгерпринтинг.
Проте Chrome почав експериментувати з ін'єкцією шуму в canvas — додаванням невеликих випадкових спотворень до піксельних даних canvas, щоб завадити точному фінгерпринтингу. Коли це увімкнено, ті самі інструкції малювання дають дещо різний піксельний вихід за кожного виконання. Це ламає наївний canvas-фінгерпринтинг на основі хешів, який розраховує на точну відтворюваність.
Адаптація до шуму в canvas
Нашою відповіддю на ін'єкцію шуму в canvas стало переключення з точного співставлення на співставлення за подібністю для canvas-сигналів. Замість обчислення єдиного хешу всіх піксельних даних canvas ми тепер видобуваємо кілька векторів ознак з різних регіонів та операцій малювання.
Ін'єкція шуму зазвичай невелика — кілька змінених пікселів на кадр. Видобуваючи ознаки на грубішій деталізації (розбиваючи canvas на регіони та обчислюючи агреговану статистику), ми можемо ідентифікувати базовий апаратний підпис попри шум. Наш алгоритм міжсесійного співставлення порівнює ці вектори ознак за косинусною подібністю з порогом, налаштованим так, щоб приймати апаратно-узгоджені варіації, відхиляючи при цьому різні пристрої.
WebGL: досі золота жила
Хоча canvas-фінгерпринтинг стикається з новими викликами, WebGL-фінгерпринтинг залишається майже не зачепленим ініціативами приватності. WebGL API розкриває апаратні параметри — максимальні розміри текстур, формати точності шейдерів, підтримувані розширення — які притаманні GPU і які неможливо легко спотворити, не зламавши функціональність WebGL.
Chrome обговорював обмеження доступу до рядків renderer і vendor у WebGL (заміну конкретних назв GPU на узагальнені мітки на кшталт «GPU»), але ця зміна не була широко розгорнута. Навіть якби і була, десятки інших параметрів WebGL, які ми запитуємо, все одно давали б надзвичайно характерні сигнали ідентифікації.
GPU як апаратний якір
Фундаментальна причина, чому GPU-фінгерпринтинг залишається потужним, полягає в тому, що він зчитує апаратні характеристики, фізично визначені чипом GPU, драйвером і конвеєром рендерингу. Ці характеристики не є програмними виборами, які легко змінити — вони є наслідком того, як кремній був спроєктований і виготовлений.
Пристрій з NVIDIA RTX 4070 завжди повідомлятиме конкретні максимальні розміри текстур, конкретну точність шейдерів і конкретну підтримку розширень, бо ці значення визначені архітектурою GPU. Єдиний спосіб змінити ці значення — використати інший GPU чи інший драйвер, а зміни драйверів для більшості користувачів відносно нечасті.
Рендеринг canvas: не лише хешування пікселів
Сучасний canvas-фінгерпринтинг виходить за межі простого хешування пікселів. Ми використовуємо операції малювання, спеціально спроєктовані так, щоб підсилити апаратно-залежні відмінності рендерингу. Рендеринг тексту конкретними шрифтами навантажує растеризатор шрифтів. Криві Безьє з конкретними контрольними точками навантажують тесселяцію кривих у GPU. Градієнти з конкретними точками кольору навантажують конвеєр змішування кольорів.
Обираючи операції малювання, які максимізують дисперсію між моделями GPU, водночас мінімізуючи дисперсію між повторними запусками на тому самому GPU, ми створюємо canvas-тести, які одночасно характерніші й надійніші за простий підхід «текст-і-фігури», який використовували ранні бібліотеки фінгерпринтингу.
Фінгерпринтинг шейдерів WebGL
Новіша техніка, яку ми застосовуємо, — це фінгерпринтинг шейдерів WebGL. Компілюючи конкретні шейдерні програми і запитуючи їхні скомпільовані властивості (точність, рівень оптимізації, кількість інструкцій), ми можемо видобути інформацію про компілятор шейдерів GPU — ще одну апаратно-залежну характеристику, яка варіюється між родинами GPU.
Ця техніка особливо цінна для розрізнення пристроїв, що мають схожі базові параметри WebGL. Дві різні моделі GPU можуть підтримувати той самий максимальний розмір текстури, але їхні компілятори шейдерів дадуть різний скомпільований вихід для того самого вихідного коду шейдера.
Міркування щодо приватності
GPU-фінгерпринтинг, як і будь-який фінгерпринтинг, слід використовувати відповідально. Ми застосовуємо ці сигнали для легітимних цілей — запобігання шахрайству, детекції ботів та безпеки облікових записів — а не для міжсайтового відстеження чи реклами. Наше розгортання в хмарі гарантує, що дані фінгерпринтів залишаються на інфраструктурі наших клієнтів, усуваючи передачу даних третім сторонам.
Ландшафт приватності й надалі еволюціонуватиме. Браузери можуть впроваджувати додаткові захисти, які впливатимуть на GPU-фінгерпринтинг. Наша стратегія — безперервно адаптуватися, знаходячи нові апаратно-залежні сигнали в міру обмеження старих, зберігаючи при цьому точність і стабільність, на які покладаються наші клієнти.