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) хранилищем, которая снижает эффективность отслеживания через 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-фингерпринтинг. Наша стратегия — непрерывно адаптироваться, находя новые зависящие от оборудования сигналы по мере ограничения старых и сохраняя при этом точность и стабильность, на которые полагаются наши клиенты.