Назад к блогу
Исследования21 мин чтения

Карта энтропии: какие сигналы браузера выдают вас

W
WHOX Research
25 февраля 2026 г.
Карта энтропии: какие сигналы браузера выдают вас

Какие сигналы вашего браузера несут больше всего информации, какие исследования это доказали и почему 95% отпечатков уникальны


У каждого человека есть уникальные отпечатки пальцев. У каждого браузера тоже. Разница одна: браузер свои отпечатки раздаёт каждому встречному сайту, не задавая вопросов. Вы не протягиваете ладонь. Браузер делает это за вас, молча, при каждом HTTP-запросе.

Вопрос, на который пытается ответить индустрия фингерпринтинга: какие из сотен доступных сигналов реально работают? Какие несут уникальную информацию, а какие просто создают шум? Ответ потребовал всей доступной академической базы. От немецких лонгитюдных экспериментов до крупнейшего в истории исследования Google на десяти миллионах клиентов Chrome.

Эта статья, по сути, карта. Карта энтропии ваших сигналов. Она покажет, что именно выдаёт вас, почему это работает и какие скрытые сигналы не обсуждаются почти нигде. Если вы надеялись, что достаточно отключить куки, вам стоит сесть поудобнее.

Коротко: WebGL renderer несёт 6.8 бит энтропии. 13 атрибутов > 60% уникальных. 300+ сигналов > 95%. Ваш отпечаток уникален. Вы это не контролируете.


Анатомия отпечатка: метафора тела

Прежде чем лезть в цифры, давайте построим мысленную модель. Цифровой отпечаток браузера устроен как человеческое тело. Каждая группа сигналов играет роль отдельного биометрического параметра. И как любое тело, он выдаёт владельца не одной приметой, а совокупностью.

Canvas = лицо. Когда браузер рисует тестовую сцену на Canvas, результат зависит от GPU, драйверов, рендеринга шрифтов, сглаживания субпикселей. Как лицо: вроде бы у всех два глаза и нос, но комбинация деталей уникальна. Перцептуальный хеш Canvas захватывает визуальную структуру, а сравнение результатов из основного потока и Web Worker позволяет обнаружить подмену рендеринга на лету. Пластическую хирургию видно, если смотреть с двух ракурсов.

Audio = голос. OfflineAudioContext обрабатывает звуковой сигнал, и итоговый хеш зависит от аудиостека устройства. Разница между MacBook Air на Safari и тем же MacBook Air на Chrome составляет 0.0000023% в абсолютных числах. Человек не услышит. Алгоритм услышит мгновенно. Как голос: все говорят на одном языке, но тембр, обертоны и микропаузы отличаются. Вы можете менять слова, но не можете менять связки.

WebGL = руки. Vendor, renderer, набор расширений, результат рендеринга тестовой сцены. WebGL выдаёт аппаратную специфику так же чётко, как рисунок линий на ладонях. Хеш всей комбинации плюс детекция программных рендереров вроде SwiftShader и LLVMpipe выявляет виртуальные машины. Протез функционален, но рентген покажет металл.

Fonts = почерк. Набор установленных шрифтов уникален, как почерк. Windows-машина с дефолтной установкой имеет один набор. macOS с Adobe Creative Cloud, совсем другой. Linux с кастомными пакетами, третий. Больше 200 шрифтов при заявленной Windows это красный флаг. Это как подпись: можно сменить ручку, но наклон и нажим остаются.

Поведение = походка. Как вы двигаете мышь, как скроллите, как быстро кликаете. Это ваша цифровая походка. Её невозможно подделать, потому что она определяется нейромоторикой: непроизвольными мышечными микросокращениями. Попробуйте ходить «не как вы». Продержитесь минуту. Потом мышцы вернутся к привычному.

Окружение = ДНК. Часовой пояс, язык, разрешение экрана, количество логических ядер, объём памяти. Это не меняется от сессии к сессии. Как ДНК: базовый каркас, на котором строится всё остальное. Можно покрасить волосы, но хромосомы не перекрашиваются.


Три исследования, которые изменили понимание энтропии

Академическая наука обычно движется со скоростью ледника. Но когда дело доходит до того, как легко вас отследить в интернете, ледник набрал тревожное ускорение.

Эрланген: три года, 1304 пользователя, земля правды

Фридрих-Александр-Университет Эрлангена провёл первое в мире лонгитюдное исследование с настоящей привязкой к реальным людям. Не анонимные визиты на сайт, как в Panopticlick. Реальные участники с реальными аккаунтами. Наука, которая знает своих подопытных по имени.

Команда Гастона Пульезе набрала 1304 участника, которые регистрировались по email и каждую неделю получали персональные ссылки для замера отпечатка. Каждый мог использовать несколько браузеров и устройств. За три года, с 2016 по 2019, собрано 88 088 измерений по 305 признакам. Это не синтетический датасет с краулера. Это три года реальной жизни реальных людей, зафиксированные с немецкой педантичностью.

Главная методологическая находка: «стемминг признаков». Команда убирала мутирующие части сигналов. Номер версии из User Agent, например. Без стемминга отпечаток меняется за дни. Со стеммингом стабильность растёт на месяцы. Простая идея, но до них никто не делал этого систематически. Иногда лучшие инженерные решения очевидны в ретроспективе и невидимы в момент.

Три вывода, от которых неуютно. Первый: старшие пользователи легче отслеживаются, потому что их конфигурации меняются реже. Второй: большинство защитных мер, которые участники считали эффективными, не работали против фингерпринтинга. Третий: оптимизация набора признаков отдельно для мобильных и десктопных устройств через жадный последовательный поиск даёт значительно лучший результат, чем универсальный набор.

Практический вывод: мобильный отпечаток и десктопный требуют разных наборов проверок. Это разные планеты. Детектить их одним инструментом так же продуктивно, как чинить часы кувалдой.

Google WWW'24: десять миллионов клиентов и развенчание мифов

В марте 2024 года команда Google опубликовала крупнейшее исследование фингерпринтинга в истории. Десять миллионов Chrome-клиентов. Больше ста тысяч реальных сайтов. 5383 поверхности из 161 Web API. Данные с реального браузинга, не из лабораторных стендов.

И первое, что они показали: все предыдущие оценки энтропии были завышены. Академическое сообщество дружно переоценило угрозу. Утешительного в этом мало.

Причина элементарна. Предыдущие исследования складывали энтропию отдельных сигналов наивно, как если бы сигналы были статистически независимы. Но язык системы и раскладка клавиатуры коррелируют. Русская раскладка сильно намекает на русский язык интерфейса. Если складывать их энтропию, получается двойной учёт одной и той же информации. Суммировать рост и длину ног как два независимых параметра было бы методологической ошибкой. Предыдущие исследования именно это и делали.

Google использовал декомпозицию Чоу-Лю для оценки совместной энтропии с учётом корреляций между API. Результат: ни один клиент не отдавал больше 20 бит device-specific информации. Предыдущие оценки доходили до 33 бит. Разница в два раза.

Значит ли это, что фингерпринтинг не работает? Нет. 20 бит это больше миллиона комбинаций. При типичной аудитории сайта в десятки тысяч посетителей этого более чем достаточно для трекинга. Google просто сказал: мы завышали риск, но риск всё равно реален. Диагноз чуть менее страшный. Пациент всё ещё болен.

Для любой системы детекции выводы Google стали аргументом в пользу корреляционного подхода. Сотни сигналов это не сотни независимых бит. Это сеть взаимосвязей, где ценность одного сигнала зависит от остальных. Не просто хешировать всё подряд, а проверять, рассказывают ли сигналы одну и ту же историю. Допрос с пристрастием: допрашиваемый один, а истории должны совпадать.

Google и MIT PoPETs'25: демография решает

В октябре 2024 года Google Research вместе с MIT опубликовали исследование, которое впервые связало отпечатки браузеров с демографическими данными. 12 461 участник набран через платформу Prolific. 8400 из них поделились данными браузера вместе с информацией о возрасте, поле, доходе и расе.

Результат с 13 атрибутами: 60.2% пользователей уникальны. Совокупная энтропия: 12.1 бит. Это совпадает с показателями open-source версии FingerprintJS, которая рекламирует примерно 60% точности.

Но самый неприятный вывод был не про уникальность. Он был про справедливость. Точнее, про её полное отсутствие.

Люди с низким доходом оказались более уязвимы для фингерпринтинга. Причина прозаична: старое и дешёвое железо менее распространено, а значит более уникально. У всех MacBook Pro M3 одинаковый WebGL renderer. А у ноутбука Acer 2018 года на бюджетном Intel GPU свой, особенный отпечаток. Бедность буквально делает вас заметнее в цифровом пространстве. Цифровое неравенство, оказывается, работает и в эту сторону.

Старшие участники одновременно больше беспокоились о приватности и были при этом более уязвимы. То же самое показало эрлангенское исследование тремя годами ранее. Жестокая ирония, подтверждённая двумя независимыми командами на двух континентах.

И ещё одна находка, от которой хочется закрыть ноутбук: из отпечатка браузера можно вывести пол, возраст, уровень дохода и расу пользователя. Фингерпринтинг, оказывается, это не просто трекинг. Это профайлинг. Ваш браузер рассказывает о вас больше, чем вы рассказали бы незнакомцу.

Топ сигналов по энтропии из этого исследования:

Сигнал Энтропия % уникальных
WebGL Unmasked Renderer 6.833 бит 3.2%
Screen Resolution 5.51 бит 4.5%
User Agent 4.613 бит 2.8%
WebGL Unmasked Vendor 3.313 бит 0.1%
Hardware Concurrency 2.34 бит 0.1%
Platform 2.114 бит 0%
Timezone 2.064 бит 0.2%
Languages 1.73 бит 2.4%
Device Memory 1.611 бит 0%
Touch Points 1.463 бит 0%
WebGL Renderer 0.782 бит 0.1%
Color Depth 0.616 бит 0%
WebGL Vendor 0.465 бит 0%
Всего, 13 атрибутов 12.101 бит 60.2%

Один WebGL Unmasked Renderer несёт почти 7 бит. Это 1 из 114 различимых вариантов. Добавьте разрешение экрана, и вы уже различаете одного из нескольких тысяч. Добавьте ещё несколько сотен сигналов, и математика становится безжалостной. У математики нет сочувствия.

За пределами краулера: невидимая половина

Все перечисленные исследования работают с данными, собранными краулерами или добровольными участниками. В апреле 2025 года команда из UCL, UC Riverside и Google Zurich представила на ACM Web Conference работу «Beyond the Crawl», которая поставила под вопрос саму методологию измерения распространённости фингерпринтинга.

Исследователи сравнили результаты автоматических краулеров с реальными браузерными сессиями 30 пользователей на 3 000 сайтах. Вывод: краулеры пропускают почти половину сайтов, использующих фингерпринтинг. Три причины. Страницы за авторизацией, невидимые для ботов: вы логинитесь на маркетплейс, а за логином вас ждут скрипты фингерпринтинга, которые краулер никогда не увидит. Скрипты, запускаемые только после взаимодействия с интерфейсом: клик, скролл, ввод текста активируют код, который бот не триггерит. Системы обнаружения ботов, которые просто не отдают фингерпринтинг-код автоматическим визитёрам, потому что зачем фингерпринтить бота.

Каждое число о распространённости фингерпринтинга в академической литературе занижено примерно вдвое. Когда исследования сообщают, что треть крупнейших сайтов использует фингерпринтинг, реальная цифра ближе к двум третям. Индустрия прячет инструменты от тех, кто их считает. От обычных пользователей она ничего не прячет. Наблюдатель меняет результат эксперимента. Квантовая механика веб-трекинга.


Скрытые сигналы: то, о чём не пишут в популярных блогах

Все знают про Canvas и WebGL. Все слышали про шрифты и User Agent. Но у тела есть и менее очевидные биометрические маркеры: родинки в скрытых местах, микрофлора кишечника, рисунок сосудов на сетчатке. В мире браузеров тоже есть сигналы, которые работают тихо, о которых почти никто не говорит, и которые при этом несут серьёзную энтропию.

Error Stack Signature: движок не скроешь

Когда JavaScript выбрасывает ошибку, формат стектрейса зависит от движка. V8 в Chrome предоставляет Error.captureStackTrace() и записывает .stack через getter-setter пару. SpiderMonkey в Firefox хранит .stack как data property с другим форматом. JavaScriptCore в Safari выдаёт третий формат.

Это не баг. Это особенность реализации, и она не меняется в инкогнито, не зависит от настроек приватности и не маскируется большинством антидетект-браузеров. Если антидетект заявляет User Agent от Firefox, но стектрейс форматирован по правилам V8, несоответствие ловится мгновенно. Как если бы человек утверждал, что он немец, но чихал по-японски.

CreepJS использует этот сигнал для верификации. Порядок обхода свойств объектов тоже различается между движками. Маленькая деталь. Но именно на таких деталях ломаются подделки. Документ идеальный, а скрепка не того года выпуска.

Speech Voices Hash: ваш компьютер умеет говорить, и это проблема

speechSynthesis.getVoices() возвращает список установленных голосов синтеза речи. macOS может вернуть 55+ голосов. Windows выдаст другой набор, зависящий от установленных языковых пакетов. Linux, третий, зависящий от пакетов синтеза.

Комбинация имён голосов, языков и флагов localService создаёт отпечаток, который вы никогда не думали скрывать. Потому что кто вообще задумывается о синтезе речи как о векторе утечки? Brave пытается бороться: в стандартном режиме добавляет фальшивый голос в список, в агрессивном возвращает пустой. Firefox при включённом privacy.resistFingerprinting тоже возвращает пустоту. Safari не делает ничего.

Вот что интересно: пустой список голосов сам по себе тоже сигнал. Он говорит о включённой защите, что сужает множество кандидатов. Прятаться тоже значит выделяться. Человек в маске в комнате, где все без масок, анонимен ровно до того момента, как кто-то спросит: «А почему вы в маске?»

Math Fingerprint: арифметика с пристрастием

Math.atan2(-0.49999999999999994, 0.8660254037844387) возвращает разные последние цифры в Safari и Firefox. Причина: браузеры используют разные математические библиотеки. Firefox начиная с версии 118 (сентябрь 2023) перешёл на fdlibm для тригонометрических функций, чтобы закрыть эту утечку. Chrome и Safari до сих пор используют платформенные библиотеки libm, и результат зависит от ОС и архитектуры процессора.

Разница в 15-м знаке после запятой. Человек не заметит никогда. Алгоритм заметит мгновенно. Хеш результатов набора математических операций работает как сигнал идентификации движка. Если заявленный браузер Firefox, а математика отдаёт результаты платформенного libm, картина не складывается. Пятнадцатый знак после запятой. Такова цена правды: она прячется там, где никто не ожидает.

Storage Quota: размер диска как отпечаток

navigator.storage.estimate() возвращает доступную квоту хранения. Формула Chrome: usage и min(10 GiB, ceil(disk_space)), округлённая до 1 ГБ. Звучит обобщённо. На практике это означает, что человек с SSD на 256 ГБ и человек с SSD на 2 ТБ получают разные значения. Ваш жёсткий диск разговаривает за вашей спиной.

В режиме инкогнито квота Chrome урезается до примерно 5% дискового пространства, против 60% в обычном режиме. Это не только сигнал о размере диска, но и детектор приватного режима. Когда-то, в Chrome 74-84, режим инкогнито жёстко ограничивал квоту до 120 МБ. Это был тривиальный детектор: если квота ≤120 МБ, пользователь в инкогнито. Google залатал дыру, но разница всё ещё существует. Просто стала тоньше. Как заплатка на джинсах: дырки нет, но видно, что была.


Разбивка энтропии: какие сигналы весят больше всего

Не все 300+ сигналов одинаково полезны. У тела есть органы жизненно важные, а есть аппендикс. В мире отпечатков та же иерархия. Есть тяжеловесы, которые несут несколько бит каждый, и есть лёгкие сигналы, которые в одиночку бесполезны, но в комбинации добавляют тот самый решающий бит.

Категория 1: тяжёлая артиллерия, 5+ бит

WebGL Unmasked Renderer: 6.833 бит. Абсолютный чемпион по энтропии среди отдельных сигналов по данным PoPETs'25. Указывает на конкретную модель GPU с точностью до ревизии. «Angle, Nvidia GeForce RTX 4090, OpenGL 4.5» и «Angle, Intel UHD Graphics 630, OpenGL 4.5», это два разных человека с вероятностью выше 99%. Ваша видеокарта это ваше лицо. И она не носит масок.

Screen Resolution: 5.51 бит. 572 уникальных значения в выборке Google+MIT. Казалось бы, все сидят на 1920×1080. Но DPR, available height, нестандартные мониторы создают длинный хвост из редких комбинаций. Ваш ультраширокий монитор на 3440×1440 с DPR 1.25 выдаёт вас с головой. Роскошь имеет свою цену, и не только финансовую.

Canvas Hash. Точных данных по битам нет в публичных исследованиях для этого сигнала изолированно, но FingerprintJS и AmIUnique считают его одним из самых информативных. Зависит от GPU, драйверов, рендеринга подпикселей, сглаживания, порядка растеризации. Два человека с одинаковым железом, но разными версиями драйверов могут давать разные хеши. Лицо, которое меняется при каждом обновлении драйверов. Но не настолько, чтобы стать неузнаваемым.

Категория 2: средний калибр, 2-5 бит

User Agent: 4.613 бит после UA reduction. Раньше нёс до 10 бит по данным Eckersley 2010. Google замораживает User Agent через Client Hints, но полностью убить информацию не получается. Как ни обрезай паспорт, номер всё равно виден.

WebGL Unmasked Vendor: 3.313 бит. Apple, Nvidia, AMD, Intel, Qualcomm, основные варианты. Но с учётом маскировки через Angle и различных версий, вариантов набирается 36.

Hardware Concurrency: 2.34 бит. Количество логических ядер процессора. 4, 8, 12, 16, 24, 32 и экзотика вроде 6 и 10.

Platform: 2.114 бит. Win32, MacIntel, Linux x86_64, Linux armv7l и мобильные варианты.

Timezone: 2.064 бит. 49 уникальных значений в американской выборке PoPETs'25. В глобальной выборке будет значительно больше.

Категория 3: лёгкая пехота, менее 2 бит

Languages: 1.73 бит. Device Memory: 1.611 бит. Touch Points: 1.463 бит. Color Depth: 0.616 бит. WebGL Vendor: 0.465 бит.

Каждый из них в одиночку почти бесполезен. Color Depth различает ровно три варианта: 24, 30 и 32 бита. Но когда вы складываете 50 таких сигналов, каждый по полбита, получаете ещё 25 бит. А 25 бит это 33 миллиона комбинаций. Лёгкая пехота выигрывает числом. Спросите Наполеона.

Категория 4: скрытые тяжеловесы

Fonts Hash. Старые исследования Eckersley давали 13.9 бит в 2010 году. С тех пор браузеры ограничили доступ к спискам шрифтов, но CSS-based детекция через метрики текста всё ещё работает. Почерк изменился, но графолог не сдаётся.

Audio Fingerprint. Стабильный, не зависит от куки и инкогнито. FingerprintJS показала, что даже шумоподавление Safari 17 обходится за 7.5 мс путём усреднения 262 144 зашумлённых копий. Тривиальная вычислительная стоимость на M1 MacBook. Голос можно зашумить, но 262 144 записей достаточно, чтобы убрать шум.

GPU Timing и WASM Timing. Время выполнения GPU-операций и WebAssembly-вычислений создаёт глубокие аппаратные сигналы, зависящие от конкретной модели процессора и GPU. Подделать их означает эмулировать точные тайминги чужого железа. На практике невозможно. Это как подделать пульс: можно нарисовать кардиограмму, но живое сердце бьётся иначе.


Три оси доверия: как устроена многомерная верификация

Современные антифрод-системы, включая WHOX, организуют проверки по трём осям, каждая из которых отвечает на свой вопрос. Три врача, три специальности, один пациент.

Уникальность: насколько отпечаток отличается от остальных?

Сюда входят все «тяжеловесы». Canvas, WebGL, WebGPU, аудио, шрифты, параметры экрана. Отдельно стоят timing-сигналы: время выполнения GPU-операций, WebAssembly-вычислений, паттерны garbage collection, энтропия paint timing. Эти сигналы глубоко аппаратные. Они не подменяются через JavaScript injection и не маскируются антидетект-расширениями. Чтобы подделать garbage collection timing, нужно подделать саму физику работы процессора. Удачи.

Согласованность: рассказывают ли сигналы одну историю?

Именно здесь ловятся антидетект-браузеры. Можно подменить User Agent на Safari. Но если WebGL renderer возвращает Angle с DirectX11, если стектрейс ошибок форматирован по правилам V8, если CSS-свойства начинаются с webkit- вместо Safari-нативных, несоответствие будет поймано.

Проверки согласованности сверяют User Agent с Client Hints, часовой пояс с геолокацией IP, платформу с GPU. Отдельная категория: «невозможные комбинации». Android UA с Apple GPU? Windows с Metal рендерером? 64-битная ОС с navigator.platform Win32? Такие комбинации не существуют в природе. Их создают только инструменты с выпадающими меню, где пользователь собирает профиль Франкенштейна из несовместимых частей. Тело, сшитое из чужих органов, не обманет хирурга.

Поведенческий анализ тоже относится сюда. Линейность движений мыши, отсутствие микро-дрожания, роботизированная равномерность кликов: всё это флаги автоматизации. Целостность prototype chain, Proxy-трапы, загрязнение глобального объекта window посторонними свойствами завершают картину.

Маскировка: пытается ли визитор скрыть свою природу?

Tor exit nodes, VPN-туннели, дата-центровые IP, открытые прокси-порты. TLS-отпечаток Client Hello сверяется с заявленным браузером: если TLS fingerprint говорит «Chrome», а User Agent говорит «Firefox», кто-то врёт. Утечки WebRTC, IPv6, QUIC, DoH, mDNS device name leak. Проверки headless-режима и маркеров автоматизации. Каждая мелочь суммируется в общую картину. Организм, пытающийся скрыть болезнь, выдаёт себя именно попытками скрыть.


Почему 95% отпечатков уникальны

Вернёмся к цифрам и их генеалогии. Спойлер: генеалогия безрадостная.

Питер Экерсли из EFF заложил фундамент в 2010 году. Проект Panopticlick собрал отпечатки 470 161 браузера и установил базовую линию, от которой отталкиваются все последующие работы: 18.1 бит энтропии на среднее устройство. Один из 286 777 вариантов. На сайте с аудиторией в сто тысяч посетителей 18.1 бит достаточно для уникальной идентификации почти каждого. Из всех собранных отпечатков 83.6% были уникальны. Среди браузеров с Flash или Java > 94.2%. Экерсли первым формализовал принцип, который с тех пор только подтверждается: каждый дополнительный бит удваивает различающую способность отпечатка. Это не теоретическое допущение. Это математика информационной энтропии, проверенная на полумиллионной выборке.

Шесть лет спустя Пьер Лаперди и команда из Inria запустили проект AmIUnique и проанализировали 118 934 отпечатка. Масштаб сопоставимый с Panopticlick, но методология тоньше. Результат: 89.4% десктопных и 81% мобильных браузеров уникальны. Мобильные устройства менее разнообразны по железу: производители Android используют ограниченный набор процессоров и GPU. Но разрыв сокращается по мере фрагментации экосистемы. Лаперди также подтвердил то, что подозревал Экерсли: аппаратные сигналы переживают очистку куки, смену IP и обновление браузера. Отпечаток стабильнее любого идентификатора, который пользователь может удалить. Вы можете сбросить пароль. Вы не можете сбросить видеокарту.

Эрлангенская команда Пульезе добавила третье измерение: верификацию во времени. 1304 реальных участника, 305 признаков, три года наблюдений. С оптимизированными наборами признаков и стеммингом более 95% устройств оставались различимыми спустя месяцы. Не потому что каждый признак уникален, а потому что комбинация из 305 признаков создаёт пространство, в котором совпадения статистически невозможны.

Google+MIT в 2025 году получили 60.2% уникальных при всего 13 атрибутах и 12.1 бит.

Ключевое слово: «при всего 13 атрибутах». Современные системы собирают сотни. Каждый дополнительный бит энтропии удваивает различающую способность. Если 13 атрибутов дают 12 бит и 60% уникальных, то 300 атрибутов, даже при скромных 0.1 бита на каждый дополнительный сигнал, выводят за пределы 30 бит. Это больше миллиарда комбинаций.

На практике корреляции между сигналами «съедают» часть энтропии. Именно это показало исследование Google WWW'24. Но даже с коррекцией через декомпозицию Чоу-Лю, при 300+ сигналах совокупная энтропия остаётся достаточной для идентификации практически любого пользователя в практически любой аудитории.

Исследование Vastel и коллег 2018 года показало, что 50% отпечатков меняются за 5 дней, а 80% за 10. Кажется, это должно мешать. Но алгоритм FP-Stalker умеет отслеживать пользователей через эти изменения, связывая старые и новые отпечатки через стабильное ядро. Andriamilanto с коллегами на выборке из 4 миллионов отпечатков (около 2 миллионов уникальных посетителей) подтвердил: более 90% атрибутов не меняются за 6 месяцев. Ядро отпечатка переживает большинство куки.

Стабильность ядра, те самые аппаратные сигналы вроде GPU timing и WASM timing, позволяет отслеживать месяцами. Двухстадийный вероятностный матчинг связывает сессии через стабильное ядро, где сетевой слой и глубокие аппаратные сигналы несут основной вес.

При достаточном количестве сигналов уникальность приближается к 95%. Не потому, что каждый сигнал уникален. А потому, что комбинация из 300 сигналов, каждый из которых различает группы людей, сужает множество до одного.

Это как описание человека. «Мужчина» не уникально. «Мужчина ростом 182 см» тоже нет. «Мужчина ростом 182 см, с карими глазами, шрамом на левой руке, хромающий на правую ногу, с часами Casio и рюкзаком North Face» вот это уже очень, очень конкретно. Тело снова выдаёт владельца. Полный круг.


Инкогнито тут не поможет

Всё описанное выше работает одинаково в обычном режиме и в инкогнито. Фингерпринтинг stateless. Он не записывает ничего на устройство. Все сигналы: Canvas, WebGL, Audio, шрифты, тайминги, математика, голоса остаются идентичными.

Инкогнито защищает от куки и истории. Это полезно, если вы не хотите, чтобы домашние увидели ваши поисковые запросы. Но против фингерпринтинга это как надеть солнечные очки и думать, что вас не узнают по походке, голосу, росту и привычке дёргать правое ухо. Всё тело на виду, но вы спрятали глаза. Браво.

Собственные сотрудники Google называли инкогнито «фактически ложью» и «проблемой профессиональной этики», как выяснилось из материалов судебного дела Brown v. Google LLC. Урегулирование в 2024 году стоило Google обязательства удалить «миллиарды» записей 136+ миллионов пользователей. А ещё изменить формулировку с «browse privately» на «browse more privately». Одно слово. Иск на пять миллиардов долларов закончился немонетарным соглашением: Google заявил, что истцы получили «ноль». Самое дорогое наречие в истории юриспруденции > и при этом бесплатное для ответчика.

Safari с версии 17 внедрил Advanced Fingerprinting Protection: шум в Canvas, WebGL и Audio. С iOS 26 защита включена для всего браузинга по умолчанию. Это лучшая массовая защита на рынке. Но FingerprintJS обходит аудио-шум за 7.5 мс, а Canvas-шум детектируется статистически. Сама защита становится сигналом: «этот пользователь на Safari 17+ с включённой защитой». Множество кандидатов сужается. Парадокс: чем сильнее вы защищаетесь, тем заметнее вы в толпе. Организм в скафандре защищён от инфекций. Но его видно из космоса.


FAQ

Что такое энтропия в контексте fingerprinting? Энтропия > мера информации, которую несёт сигнал, измеряемая в битах. Один бит различает 2 варианта, 10 бит > 1024, 20 бит > более миллиона. WebGL Unmasked Renderer несёт 6.833 бит (1 из 114 вариантов). Совокупная энтропия 13 атрибутов > 12.1 бит по данным Google+MIT PoPETs'25. Каждый дополнительный бит удваивает различающую способность. При 300+ сигналах уникальность приближается к 95%.

Какой сигнал несёт больше всего энтропии? WebGL Unmasked Renderer > абсолютный чемпион: 6.833 бит по данным PoPETs'25. Указывает на конкретную модель GPU с точностью до ревизии. Далее: Screen Resolution (5.51 бит, 572 уникальных значения), User Agent (4.613 бит), WebGL Unmasked Vendor (3.313 бит). Скрытые тяжеловесы: GPU Timing и WASM Timing > аппаратные сигналы, не подменяемые через JavaScript.

Сколько сигналов нужно для уникальной идентификации? Google+MIT показал: 13 атрибутов дают 12.1 бит и 60.2% уникальных. Эрлангенское исследование: 305 признаков > 95%+ устройств различимы месяцами. Google WWW'24 на 10 миллионах клиентов: не более 20 бит device-specific информации при учёте корреляций (Чоу-Лю). Но 20 бит = миллион комбинаций, достаточно для любого сайта. Практический ответ: 50-100 сигналов хватает для идентификации большинства пользователей.

Можно ли определить пол, возраст и доход по отпечатку браузера? Да. Исследование Google+MIT PoPETs'25 (12 461 участник) впервые связало fingerprints с демографией. Из отпечатка выводятся пол, возраст, уровень дохода и раса. Люди с низким доходом более уязвимы: старое железо уникальнее. Старшие пользователи больше беспокоятся о приватности, но при этом более уязвимы. Fingerprinting > это не только трекинг, но и профайлинг.

Чем отличается мобильный отпечаток от десктопного? Мобильные устройства менее разнообразны по железу: ограниченный набор процессоров и GPU. AmIUnique: 89.4% десктопных и 81% мобильных браузеров уникальны. Эрлангенское исследование показало: оптимизация набора признаков отдельно для мобильных и десктопных устройств даёт значительно лучший результат. Мобильный отпечаток определяется в основном моделью устройства (GPU, экран), а десктопный > конфигурацией ПО и периферии.


Читайте также


WHOX - Отличаем настоящие сигналы от сфабрикованных. Проверьте свой отпечаток на whox.com и узнайте какие сигналы утекают из вашего браузера и насколько вы уникальны.

Что из этого следует

Сотни сигналов. Не маркетинговая цифра, а результат анализа академических исследований: от 305 признаков Эрлангена до 5383 поверхностей Google, от 13 атрибутов PoPETs'25 до десятков скрытых сигналов вроде error stack signature и speech voices hash.

Каждый сигнал по отдельности, может, и не скажет, кто вы. Вместе они создают карту, на которой ваша точка светится ярче, чем вам хотелось бы. WHOX делает эту карту видимой.

Ваш отпечаток уникален. Был уникален вчера. Будет уникален завтра. Тело не лжёт. Вопрос только в том, кто именно на него смотрит.

entropyfingerprintingsignals

Похожие статьи