CreepJS, счётчики энтропии и оценки анонимности вендоров могут по-разному охарактеризовать один и тот же браузер — потому что измеряют разные величины.
Прогоните свой браузер через два теста отпечатка подряд — и получите два ответа, которые выглядят прямо противоречащими друг другу. Один инструмент скажет, что ваш отпечаток «1 из 400 000» — формулировка звучит успокаивающе, но на деле означает, что в выборке этого инструмента больше ни у кого нет такого же отпечатка. Другой выдаст балл доверия 62% с пометкой о несоответствиях. Третий назовёт вас «крайне уникальным» и на этом остановится, без объяснений. Ни один из них не ошибается. Они просто измеряют не одно и то же, а слово «оценка» изо всех сил это скрывает.
Ключевые выводы
- Тесты отпечатка выдают под одним словом «оценка» три по-настоящему разные величины: уникальность (насколько редка ваша комбинация), согласованность (не противоречат ли сигналы друг другу) и композитные оценки анонимности вендоров (взвешенная смесь, которую каждый вендор определяет по-своему и не раскрывает).
- Уникальность — это измерение из теории информации, а не вердикт: высокое значение означает, что вас можно опознать, а не то, что с вашим браузером что-то не так или что-то подделано.
- Согласованность ближе к детектору лжи: идеально согласованный браузер всё равно может быть крайне уникальным, а браузер, выглядящий очень анонимным, вполне может провалить проверки согласованности.
- Усиление защиты браузера способно одновременно толкнуть эти два числа в противоположные стороны — это самый неочевидный факт, который стоит знать, читая отчёт об отпечатке.
- Даже два теста уникальности расходятся между собой, потому что каждый считает редкость по своей собственной, самоотобранной аудитории: цифра редкости означает «редко среди посетителей этого инструмента», а не «редко в интернете».
- Тест, который читает только браузерные API, не способен сверить ваш часовой пояс с тем, куда на самом деле разрешается ваш IP: для такого сравнения нужен сервер, увидевший ваше соединение, — а значит, оно принципиально лежит за пределами любой оценки, снятой только внутри браузера.
Три разных вопроса под одним словом
«Оценка» подразумевает единую линейку измерения. На практике же любой тест отпечатка, который вам встретится, отвечает на один из трёх отдельных вопросов, и путаница между ними — причина, по которой две открытые вкладки с разными тестами могут звучать так, будто речь идёт о двух разных браузерах.
Уникальность отвечает на вопрос: сколько людей из всех когда-либо измеренных разделяют именно вашу комбинацию сигналов? Это вопрос статистики по популяции, на который отвечает теория информации — подробный разбор того, как отдельные «биты» сигналов складываются в одну цифру, читайте в статье «Энтропия отпечатка браузера и множество анонимности». Собственный короткий разбор EFF по лежащей в основе математике — хорошее чтение, если нужна теория без привязки к браузерам: A Primer on Information Theory and Privacy.
Согласованность задаёт совершенно другой вопрос: правдоподобно ли, что все сигналы, которые раскрывает браузер, исходят от одного реального устройства, или что-то выглядит подлатанным? Модель обнаружения лжи CreepJS — самый наглядный публичный пример: ей всё равно, насколько редок ваш отпечаток, важно лишь, согласуются ли свойства браузера друг с другом при проверке по нескольким независимым путям кода. Статья «Согласованность отпечатка: несовпадения сигналов вас выдают» раскрывает ту же идею с точки зрения системы детекции: user-agent, заявляющий Safari, рядом со строкой GPU-рендерера, которая физически может принадлежать только Windows-машине, — это провал согласованности независимо от того, насколько распространено или редко каждое значение само по себе.
Композитные оценки анонимности вендоров — третья и самая непрозрачная категория. Коммерческие продукты фингерпринтинга часто публикуют единый процент или буквенную оценку, призванную обобщить «насколько заслуживает доверия этот посетитель», смешивая в неизвестной пропорции уникальность, сигналы согласованности и проприетарную эвристику, которую вендор не раскрывает. Общего стандарта того, как взвешивается эта смесь, не существует — 80% одного вендора и 80% другого не измеряют один и тот же рецепт, потому что каждый волен определять его сам. Относитесь к любому единичному числу от вендора как к его частному мнению, а не как к измерению в том смысле, в каком им являются первые два показателя.
Что каждая оценка может сказать, а что нет
Уникальность говорит, насколько легко вас найти при повторных визитах на сайты, которые вас фингерпринтят, — и ничего не говорит о том, выглядит ли ваш браузер подделанным. Совершенно стоковый, немодифицированный браузер с необычной, но подлинной комбинацией железа и шрифтов может получить высокую уникальность, оставаясь при этом полностью согласованным. Высокая уникальность — это проблема приватности (вас можно отследить), а не тревожный сигнал для антифрод-систем.
Одна оговорка объясняет изрядную долю расхождений между двумя проверками уникальности: знаменатель — это та аудитория, которую измерил конкретный инструмент, а такая аудитория самоотобрана. Люди, которые целенаправленно идут на тест отпечатка, куда более озабочены приватностью, чем интернет в среднем. Поэтому цифра редкости на самом деле означает «редко среди посетителей этого инструмента», а не «редко в интернете» — и два счётчика энтропии могут выдать вам два разных числа для одного и того же, ничем не изменившегося браузера, честно отчитавшись каждый по своей выборке.
Согласованность говорит, держатся ли ваши сигналы вместе, и ничего не говорит о том, насколько редка сама комбинация. privacy.resistFingerprinting в Firefox — всегда включённый в Tor Browser — заставляет каждого пользователя сообщать один и тот же стандартизированный набор значений, и это как раз снижает уникальность: большая однородная толпа и есть вся цель такой защиты. Но эти значения подставлены, а не сняты с реального устройства, и детектор лжи, дотягивающийся до одного и того же свойства по нескольким независимым путям кода, часто это замечает. Отсюда и картина: браузер, выглядящий почти анонимным по тесту уникальности, вполне может зажечь красным отчёт о согласованности. Для боевых антифрод- и антибот-систем провалы согласованности весят больше всего, потому что неизменённое устройство редко противоречит себе именно таким образом. «Редко» — честное слово: функции приватности, корпоративные управляемые конфигурации, а также редкие и старые устройства тоже дают настоящие жалобы на согласованность, поэтому такую пометку стоит воспринимать как повод разобраться, а не как вердикт.
Композитные оценки вендоров показывают, как модель одной конкретной компании в данный момент взвешивает те входные данные, которые использует, — и это может измениться между версиями продукта незаметно для вас. Они полезны как грубая прикидка с точки зрения именно этого вендора, но не как переносимое число, которое можно сравнивать с результатом другого инструмента или объяснять кому-то, не уточняя, какой именно вендор его выдал.
Неочевидный момент: усиление защиты может развести оценки в разные стороны
Именно эта деталь делает отчёты об отпечатке по-настоящему запутанными, а не просто многословными: одно и то же изменение в браузере способно поднять одно число и одновременно опустить другое.
Установка расширения, которое подделывает или рандомизирует горстку сигналов — фальшивый хеш Canvas, зашумлённый параметр WebGL, — может снизить измеренную уникальность при конкретном визите, потому что значение, которое браузер сообщит в этот день, может оказаться более распространённым. Но сама рандомизация — это паттерн, который умеет ловить проверка согласованности: статья «Canvas-шум против хеша: почему рандомизация даёт осечку» объясняет, почему сам факт «это значение Canvas меняется при каждой перезагрузке» — самостоятельная улика, отличная от стабильного уникального значения и порой более выдающая, чем оно. Один и тот же браузер становится более подозрительным для проверки согласованности ровно в тот момент, когда становится «более распространённым» для проверки уникальности.
Бывает и наоборот. Полностью стоковый браузер — без расширений, с настройками по умолчанию, с теми шрифтами, что поставляются с операционной системой, — как правило, отлично проходит проверку согласованности, потому что в нём ничто не выглядит подлатанным. Но «полностью стоковый» по модели GPU, списку установленных шрифтов и геометрии экрана нередко сам по себе оказывается заметной комбинацией, что толкает уникальность вверх, а не вниз. Не существует шага, который надёжно улучшает оба числа сразу; любую меру защиты нужно оценивать по каждому измерению отдельно, потому что тестовая сессия, показывающая только одно из двух чисел, демонстрирует лишь половину картины.
Слепая зона, общая для всех тестов внутри браузера
Все инструменты, о которых шла речь, — проверки уникальности, CreepJS, композитные оценки вендоров — оценивают вас изнутри браузера, опираясь на то, что JavaScript может прочитать из его собственных API. Из-за этого у всех у них одна и та же структурная слепая зона: ни один элемент этой поверхности API не сообщает скрипту, где именно вышло его соединение. Intl.DateTimeFormat().resolvedOptions().timeZone возвращает то, что браузеру велено сообщать; он ничего не говорит ни о маршруте запроса, ни о том, какой IP увидел сервер на другом конце.
Именно это сравнение — часового пояса и языка с геолокацией IP — один из самых дешёвых и широко используемых сигналов, которые применяет боевая система детекции, именно потому, что оно целиком лежит за пределами слоя браузерных атрибутов. Браузер может сообщать идеально согласованную, идеально правдоподобную пару часового пояса и языка, при этом сидя за выходным узлом VPN в совершенно другой стране, — и сколько ни наращивай зондирование внутри этого браузера, несоответствие не всплывёт. Чтобы закрыть пробел, нужно второе наблюдение, со стороны сервера: узнать IP, с которого соединение реально пришло, и сверить его с тем, что заявил браузер. Проверка VPN/прокси от BrowserInsight построена именно вокруг этой сетевой половины, а проверка отпечатка вплетает тот же серверный запрос местоположения в свои выводы о согласованности — и это ровно тот ингредиент, который страница, оценивающая вас исключительно по браузерным атрибутам, не в состоянии добавить сама.
Как читать набор результатов, не гоняясь за одной цифрой
Всё вышесказанное — не руководство по тому, как поднять любую из этих оценок: три числа существуют потому, что отвечают на разные вопросы об угрозах, а не потому, что одно из них «настоящее», а остальные — лишь его приближения. На какое обращать внимание, зависит от того, что вас реально беспокоит:
- Беспокоитесь, что вас отслеживают и профилируют на разных сайтах? Значение имеет уникальность — статья «Энтропия отпечатка браузера и множество анонимности» объясняет, как читать своё множество анонимности.
- Беспокоитесь, что можете выглядеть автоматизированным или подделанным для сайта, с которым взаимодействуете? Важна согласованность — именно её призваны выявлять такие инструменты, как CreepJS, и публичные тесты «прошёл/не прошёл» вроде Sannysoft и публичных страниц CreepJS.
- Оцениваете продукт конкретного вендора, потому что его использует сайт, которым вы управляете? Их композитная оценка имеет смысл только в контексте документации самого вендора — того, что именно эта оценка взвешивает, — относитесь к ней как к их мнению, а не как к универсальному измерению.
Одно число от одного инструмента изначально не могло ответить на все три вопроса сразу. Запустите проверку отпечатка BrowserInsight, чтобы увидеть исходные сигналы разложенными по отдельности — canvas, WebGL, шрифты, TLS, свойства navigator — рядом с выводами о согласованности, которые из них складываются, а не свёрнутыми в одну цифру, и дополните её проверкой VPN/прокси — для сетевого сравнения, которое тест внутри браузера сделать не в состоянии.
Часто задаваемые вопросы
Какой тест отпечатка даёт «правильную» оценку?
Ни один, потому что они не соревнуются за ответ на один и тот же вопрос. Проверка уникальности, проверка согласованности вроде CreepJS и проприетарная композитная оценка вендора измеряют разные вещи; спрашивать, какая из них правильная, — всё равно что спрашивать, термометр или барометр дают «правильные» показания погоды.
Если у меня высокая оценка уникальности, значит ли это, что я выгляжу подозрительно?
Нет. Высокая уникальность означает, что вас можно опознать при повторных визитах, — это вопрос приватности, а не признак того, что что-то выглядит поддельным или подлатанным. Стоковый, немодифицированный браузер с необычной, но полностью подлинной комбинацией железа может одновременно быть и крайне уникальным, и совершенно согласованным.
Можно ли одним изменением улучшить сразу и уникальность, и согласованность?
Надёжного способа нет. Эти два показателя измеряют разные вещи, и изменение, помогающее одному, — например, рандомизация сигнала для снижения кажущейся редкости, — может одновременно выглядеть как провал согласованности для другого, потому что сама рандомизация становится обнаружимым паттерном. Любое изменение стоит оценивать по обоим измерениям отдельно.
Почему ни один тест отпечатка не ловит VPN с несовпадающим часовым поясом?
Потому что такая проверка требует сравнить часовой пояс, который сообщает браузер, с IP, с которого сервер реально увидел ваше соединение, — а ни один браузерный API не отдаёт это собственному JavaScript страницы. Нужно наблюдение со стороны сервера, поэтому такую проверку выполняют сетевые инструменты вроде проверки VPN/прокси, а не тест, оценивающий вас исключительно по браузерным атрибутам.


