Снятие отпечатков WebGPU: следующее поколение отслеживания GPU
Как WebGPU API раскрывает детали адаптера GPU для снятия отпечатков и как контролировать сигналы идентичности GPU на уровне движка браузера.
Нужна поддерживаемая продуктовая документация?
У этой статьи есть соответствующая страница в центре документации. Используйте docs для каноничного сценария настройки, актуальных флагов и долгосрочной справки.
Введение
WebGPU является преемником WebGL, обеспечивая современный, низкоуровневый доступ к оборудованию GPU для задач рендеринга и вычислений. По мере принятия WebGPU браузерами он вводит новую поверхность снятия отпечатков, о которой нужно знать пользователям, заботящимся о конфиденциальности. API раскрывает информацию об адаптере GPU, включая вендора, архитектуру, описание устройства, набор функций и детальные лимиты возможностей. Эта информация богаче и более структурирована, чем то, что предоставляет WebGL, что делает её растущей проблемой для всех, кто ценит свою конфиденциальность в сети.
Для исследователей конфиденциальности, инженеров автоматизации и всех, кого беспокоит снятие отпечатков браузера, WebGPU представляет значительный новый источник утечки идентичности устройства. В этой статье объясняется, почему WebGPU важен для вашей конфиденциальности и как BotBrowser контролирует сигналы идентичности WebGPU через свою систему профилей и флаг --bot-config-webgpu.
Влияние на конфиденциальность
WebGPU является относительно новым API (доступен в Chrome с версии 113), но его последствия для снятия отпечатков уже значительны. Хотя спецификация WebGPU была разработана с некоторыми соображениями конфиденциальности, включая информацию об адаптере с уменьшенным разрешением по умолчанию, комбинация доступных сигналов все еще обеспечивает значимую энтропию, которая может использоваться для отслеживания.
Информация о GPU, раскрываемая через WebGPU, включает поля вендора, архитектуры и устройства. Хотя они намеренно менее детальны, чем необработанные строки рендерера WebGL, они все же различают семейства GPU. Разные вендоры GPU, встроенные и дискретные GPU и разные архитектуры создают различные значения, сужающие конфигурацию вашего устройства.
Помимо базовой информации об адаптере, WebGPU раскрывает детальный набор лимитов возможностей: максимальные размеры текстур, максимальные размеры буферов, максимальные размеры вычислительных рабочих групп и десятки других. Эти лимиты варьируются между вендорами, архитектурами и версиями драйверов GPU. Комбинация этих значений лимитов создает отпечаток возможностей GPU, который часто более гранулярен, чем сама информация об адаптере.
Ранние исследования команд конфиденциальности браузеров отметили, что значения лимитов WebGPU могут различать конкретные поколения GPU в рамках одного семейства вендора. Два GPU от одного производителя, но разных продуктовых линеек сообщают разные лимиты, хотя и разделяют один идентификатор вендора. Этот уровень гранулярности вызывает беспокойство для конфиденциальности, потому что он сужает идентификацию до конкретных моделей оборудования.
Растущая важность
По мере роста принятия WebGPU, особенно для инференса AI, продвинутой визуализации, игр и креативных приложений, API станет стандартным для современных браузеров. Это означает, что снятие отпечатков через WebGPU станет более распространенным, а отсутствие WebGPU само по себе может стать отличающим сигналом. Проактивная защита необходима.
Почему это важно для вашей конфиденциальности
Раскрытие идентичности GPU
Ваш GPU - одна из наиболее отличительных частей оборудования в вашем компьютере. Комбинация вендора, архитектуры и лимитов возможностей создает аппаратный отпечаток, который трудно изменить и который сохраняется между сессиями просмотра. WebGPU делает эту информацию напрямую запрашиваемой любым веб-сайтом без какого-либо запроса разрешений или уведомления пользователя.
Межпротокольная корреляция
Критическая проблема конфиденциальности - корреляция между WebGPU и WebGL. Оба API обращаются к одному GPU. Если идентичность GPU, сообщаемая одним API, не соответствует другому, или если профили возможностей несогласованы между двумя API, само несоответствие становится сильным сигналом отслеживания. Веб-сайты, запрашивающие оба API, могут обнаружить несоответствия, поэтому любой подход к защите должен решать оба API одновременно.
Набор функций как отпечаток
Набор функций GPU, доступных через WebGPU (таких как форматы сжатия текстур, ограничение глубины, запросы временных меток и возможности шейдеров), варьируется между моделями GPU и версиями драйверов. Конкретная комбинация поддерживаемых функций действует как дополнительное измерение снятия отпечатков, дополняющее информацию об адаптере и лимиты возможностей.
Вариации вывода рендеринга
Как и WebGL, рендеринг WebGPU создает GPU-специфичный вывод. Вычислительные шейдеры, конвейеры рендеринга и операции с текстурами создают результаты, которые варьируются на числовом уровне между архитектурами GPU. Хотя спецификация WebGPU строже относительно точности, чем WebGL, различия в реализации все еще существуют и могут использоваться для снятия отпечатков.
Распространенные подходы к защите и их ограничения
Отключение WebGPU в настоящее время является простейшей защитой. Поскольку WebGPU относительно нов, большая часть веб-контента его не требует. Однако по мере роста принятия его отключение станет все более непрактичным. Отсутствие WebGPU также станет отличающим сигналом по мере стандартизации API, потенциально делая ваш браузер более идентифицируемым, а не менее.
Блокировка отдельных методов API решает только часть отпечатка. Набор функций и лимиты возможностей остаются доступными и обеспечивают значительную энтропию сами по себе. Частичная защита часто хуже, чем отсутствие защиты, потому что создает несоответствия.
Модификация на уровне JavaScript информации об адаптере изменяет сообщаемого вендора и архитектуру, но не меняет реальные лимиты возможностей или поведение рендеринга. Веб-сайт, проверяющий и информацию об адаптере, и лимиты, может сразу обнаружить несоответствие. Поверхностные подходы создают новые сигналы обнаружения вместо устранения существующих.
Стандартизация лимитов (сообщение минимальных требуемых значений для всех лимитов) уменьшила бы поверхность отпечатка, но может нарушить работу WebGPU-приложений, зависящих от более высоких возможностей, ухудшая пользовательский опыт.
Эффективный подход требует контроля информации об адаптере, функций, лимитов и поведения рендеринга из единого когерентного источника. Именно это обеспечивает BotBrowser.
Подход BotBrowser на уровне движка
BotBrowser контролирует идентичность WebGPU на уровне движка Chromium через свою систему профилей, обеспечивая согласованность и аутентичность всех сигналов WebGPU. Это не JavaScript-переопределение. BotBrowser модифицирует внутренние механизмы отчетности GPU браузера, чтобы нативные API сами возвращали согласованные с профилем результаты.
Полный контроль информации об адаптере
При загрузке профиля информация об адаптере соответствует профилированному GPU по всем полям: вендор, архитектура, идентификатор устройства и описание. Эти значения соответствуют реальной конфигурации GPU, захваченной с реального устройства. Нет синтетических или универсальных значений, которые могли бы указать на модификацию идентичности.
Контроль набора функций
Набор функций, сообщаемый адаптером WebGPU, точно соответствует профилированному GPU. Перечислены только функции, поддерживаемые профилированным GPU, и все функции, которые поддерживает профилированный GPU, присутствуют. Это обеспечивает согласованность набора функций с информацией об адаптере, лимитами возможностей и поведением рендеринга.
Контроль лимитов возможностей
Все значения лимитов возможностей выводятся из профиля. Максимальные размеры текстур, размеры буферов, размеры вычислительных рабочих групп и все остальные лимиты соответствуют реальным возможностям профилированного GPU. Это не минимальные значения по умолчанию. Они соответствуют конкретной модели GPU в профиле, отражая реальные характеристики оборудования.
Согласованность WebGL-WebGPU
BotBrowser обеспечивает согласованность идентичности GPU, сообщаемой WebGPU, с тем, что сообщает WebGL. Оба API указывают на одного вендора GPU, и профили возможностей совместимы. Эта межпротокольная согласованность устраняет основной вектор обнаружения, влияющий на другие подходы к защите.
Контроль вывода рендеринга
В сочетании с --bot-noise-seed вывод рендеринга WebGPU становится детерминированным и согласованным с профилированным устройством. Результаты вычислительных шейдеров и вывод конвейера рендеринга отражают числовое поведение профилированного GPU, обеспечивая защиту от снятия отпечатков на основе рендеринга.
Настройка и использование
Базовая защита WebGPU
Защита WebGPU автоматическая при загрузке профиля:
chrome --bot-profile="/path/to/profile.enc" \
--user-data-dir="$(mktemp -d)"
Параметры конфигурации WebGPU
BotBrowser дает явный контроль над поведением WebGPU через флаг --bot-config-webgpu:
# Использовать настройки WebGPU из профиля (по умолчанию, рекомендуется)
chrome --bot-profile="/path/to/profile.enc" \
--bot-config-webgpu=profile
# Использовать реальный системный GPU для WebGPU (когда нужна реальная производительность)
chrome --bot-profile="/path/to/profile.enc" \
--bot-config-webgpu=real
# Полностью отключить WebGPU (удаляет поверхность снятия отпечатков)
chrome --bot-profile="/path/to/profile.enc" \
--bot-config-webgpu=disabled
Совместная настройка WebGL и WebGPU
Для наиболее сильной защиты отпечатков настраивайте оба GPU API вместе:
# Оба API используют данные профиля (рекомендуется для согласованности)
chrome --bot-profile="/path/to/profile.enc" \
--bot-config-webgl=profile \
--bot-config-webgpu=profile \
--bot-noise-seed=42
Это обеспечивает полную согласованность идентичности GPU между обоими API с детерминированным выводом рендеринга через шумовое зерно.
Интеграция с Playwright
const { chromium } = require('playwright');
const browser = await chromium.launch({
executablePath: '/path/to/botbrowser/chrome',
args: [
'--bot-profile=/path/to/profile.enc',
'--bot-config-webgpu=profile',
'--bot-noise-seed=42'
]
});
const page = await browser.newPage();
await page.goto('https://example.com');
// Проверка соответствия идентичности WebGPU профилю
const gpuInfo = await page.evaluate(async () => {
if (!navigator.gpu) return 'WebGPU not available';
const adapter = await navigator.gpu.requestAdapter();
if (!adapter) return 'No adapter';
const info = await adapter.requestAdapterInfo();
return {
vendor: info.vendor,
architecture: info.architecture,
device: info.device,
features: [...adapter.features],
maxTexture2D: adapter.limits.maxTextureDimension2D
};
});
console.log('WebGPU identity:', gpuInfo);
Интеграция с Puppeteer
const puppeteer = require('puppeteer');
const browser = await puppeteer.launch({
executablePath: '/path/to/botbrowser/chrome',
defaultViewport: null,
args: [
'--bot-profile=/path/to/profile.enc',
'--bot-config-webgpu=profile'
]
});
const page = await browser.newPage();
await page.goto('https://example.com');
// Ваша идентичность WebGPU теперь защищена профилем
Проверка
После запуска BotBrowser с профилем проверьте защиту WebGPU:
Проверка информации об адаптере. Убедитесь, что вендор, архитектура и устройство соответствуют целевому GPU профиля. Они должны отражать профилированное устройство, а не ваше реальное оборудование.
Проверка набора функций. Подтвердите, что перечисленные функции соответствуют ожидаемым для профилированного GPU. Набор должен быть полным и точным.
Проверка лимитов. Проверьте несколько значений лимитов и убедитесь, что они соответствуют возможностям профилированного GPU. Значения должны быть специфичны для модели GPU в профиле, а не универсальными минимумами.
Согласованность WebGL-WebGPU. Сравните вендора GPU, сообщаемого WebGL, с вендором, сообщаемым WebGPU. Они должны указывать на одно семейство GPU, обеспечивая межпротокольную когерентность.
Стабильность между сессиями. Запустите те же запросы WebGPU в нескольких сессиях с одним профилем. Все значения должны быть идентичны каждый раз, демонстрируя стабильность и воспроизводимость вашего отпечатка GPU.
Лучшие практики
-
Согласовывайте настройки WebGL и WebGPU. Оба API раскрывают идентичность GPU. Используйте
--bot-config-webgl=profileи--bot-config-webgpu=profileвместе для обеспечения межпротокольной согласованности. Несовпадающие идентичности GPU между двумя API являются сильным сигналом отслеживания. -
Используйте профили с данными WebGPU. Не все профили включают информацию WebGPU (старые профили могут предшествовать WebGPU). Используйте актуальные профили, содержащие данные адаптера WebGPU, для обеспечения полной защиты.
-
Рассмотрите отключение WebGPU, если не нужен. Если ваш сценарий использования не требует WebGPU,
--bot-config-webgpu=disabledполностью удаляет поверхность снятия отпечатков. Это допустимый выбор пока принятие WebGPU растет, хотя он может стать менее жизнеспособным по мере стандартизации API. -
Сочетайте с
--bot-noise-seedдля вывода рендеринга. Информация об адаптере и лимиты детерминированы из профиля. Вывод рендеринга также требует шумовое зерно для детерминизма. Использование обоих вместе обеспечивает наиболее комплексную защиту отпечатка GPU. -
Тестируйте доступность WebGPU. Некоторые профили могут не поддерживать WebGPU (соответствуя устройствам без WebGPU). Убедитесь, что ваш профиль включает данные WebGPU, если вашему приложению нужен доступ к WebGPU.
Часто задаваемые вопросы
В: Доступен ли WebGPU во всех браузерах? О: На начало 2026 года WebGPU доступен в Chrome/Edge (с версии 113), Firefox (за флагом в некоторых версиях) и Safari (частичная поддержка). Доступность варьируется по платформам. Профили BotBrowser указывают, должен ли WebGPU быть доступен на основе профилированного устройства, обеспечивая точное представление реальных конфигураций браузера.
В: Как снятие отпечатков WebGPU сравнивается со снятием отпечатков WebGL? О: WebGPU предоставляет более структурированную информацию об адаптере и более детальные лимиты возможностей, в то время как WebGL предоставляет необработанные строки рендерера и отпечатки на основе рендеринга. Оба API важны для комплексной защиты отпечатка GPU. BotBrowser защищает оба через свою систему профилей.
В: Могу ли я использовать WebGPU для вычислительных нагрузок с BotBrowser? О: Да. Контроль WebGPU BotBrowser работает на уровне отчетности идентичности и возможностей. Реальное выполнение вычислений использует ваше настоящее оборудование GPU для производительности. Вы получаете полную производительность GPU для ваших нагрузок, сохраняя защищенную идентичность отпечатка.
В: Что если мой профиль не содержит данных WebGPU?
О: Если профиль не содержит данных WebGPU и установлен --bot-config-webgpu=profile, WebGPU может быть недоступен (соответствуя устройству без поддержки WebGPU). Используйте более новый профиль с данными WebGPU, если вам нужен доступ к WebGPU.
В: Влияет ли отключение WebGPU на WebGL?
О: Нет. WebGL и WebGPU - независимые API. Отключение WebGPU не влияет на функциональность WebGL. Каждый контролируется своим флагом --bot-config-*, что дает вам гранулярный контроль над отпечатком GPU.
В: Влияет ли шумовое зерно на результаты вычислительных шейдеров WebGPU?
О: При установке --bot-noise-seed вывод рендеринга и вычислений, который может использоваться для снятия отпечатков, включает детерминированную вариацию. Обычные вычислительные нагрузки, не затрагивающие чувствительные к отпечаткам поверхности, не затрагиваются. Ваши научные или AI-вычислительные нагрузки остаются точными, а ваш отпечаток защищен.
Итоги
WebGPU вводит новую и детальную поверхность снятия отпечатков GPU через информацию об адаптере, наборы функций, лимиты возможностей и вывод рендеринга. По мере стандартизации API контроль этих сигналов становится необходимым для комплексной защиты отпечатков. BotBrowser контролирует все сигналы идентичности WebGPU на уровне движка Chromium через свою систему профилей, обеспечивая согласованность с идентичностью WebGL и с общим профилем устройства. Флаг --bot-config-webgpu предоставляет явный контроль над поведением WebGPU, от полной защиты на основе профиля до полного отключения. С BotBrowser ваша идентичность GPU аутентична, согласована между API и полностью выровнена с вашим общим отпечатком браузера.
По связанным темам см. Что такое снятие отпечатков браузера, Защита отпечатка WebGL, Снятие отпечатков Canvas и Детерминированное поведение браузера.
Похожие статьи
Переведите BotBrowser из исследований в продакшн
Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.