Узнайте, как энтропия измеряет уникальность отпечатка, как биты складываются между сигналами и что на самом деле означает ваше множество анонимности.
Ключевые выводы
- Энтропия измеряет неожиданность. Сигнал полезен для отслеживания, только если его значение редкое — распространённые значения почти не добавляют идентифицирующей силы.
- Энтропия складывается. Приблизительно независимые сигналы объединяются путём сложения их битов, поэтому даже несколько на первый взгляд обычных атрибутов вместе способны сделать вас уникальным.
- ~33 бита ≈ уникальность на Земле, потому что 2^33 близко к населению планеты — этот порог является приближением, связанным с размером популяции, а не жёстким законом.
- Ваше множество анонимности — это толпа «1 из X», у которой прямо сейчас точно такой же отпечаток, как у вас: чем оно больше, тем безопаснее, и оно сжимается каждый раз, когда скрипт считывает ещё один редкий атрибут.
- Мобильные устройства не безопаснее автоматически. Массовые телефоны сглаживают энтропию canvas и WebGL, но добавляют сигналы касаний и датчиков, которых нет у десктопов, — меняется состав сигналов, а не столько их сумма.
Что на самом деле измеряет энтропия
«Энтропия» звучит абстрактно, но идея, стоящая за ней, проста: сигнал информативен, только если он неожиданный. Если все посетители сайта используют одинаковое разрешение экрана, это разрешение не сообщает трекеру ничего о том, кто вы. Если же почти ни у кого нет такой же комбинации установленных шрифтов, как у вас, тот же самый атрибут сужает толпу почти до одного человека.
Формально, неожиданность (surprisal) наблюдаемого значения равна -log2(p) бит, где p — вероятность появления этого значения. Значение, которое встречается у половины всех браузеров, несёт 1 бит неожиданности (-log2(0.5) = 1). Значение, которое встречается лишь у 1 браузера из 1024, несёт 10 бит (-log2(1/1024) = 10). Чем реже значение, тем больше битов оно вносит — а именно биты трекер и собирает, атрибут за атрибутом.
Именно поэтому простое количество атрибутов — неправильный способ оценивать риск отпечатка. Десять распространённых атрибутов в сумме могут дать меньше идентифицирующей силы, чем один редкий. Важно не количество значений, а то, насколько каждое из них неожиданно.
Как энтропия складывается между сигналами
Отдельные сигналы редко определяют личность сами по себе — см. полный список сигналов, которые может считать скрипт для снятия отпечатка, от user-agent и часового пояса до вывода canvas и WebGL. Их сила — в комбинации. Поскольку вероятности приблизительно независимых событий перемножаются, а log2 превращает умножение в сложение, энтропия от отдельных сигналов просто складывается: суммарные биты ≈ сумма битов каждого сигнала.
Это свойство аддитивности — весь механизм, лежащий в основе фингерпринтинга. Хеш canvas или строка рендерера WebGL сами по себе могут дать двузначное число бит, потому что они одновременно кодируют модель GPU, версию драйвера и особенности рендеринга ОС. Но и скучные на вид атрибуты тоже несут биты, а скрипт считывает их все за один проход. Ни один из этих сигналов не примечателен по отдельности — опасность чисто арифметическая.
Изначальное исследование Panopticlick от EFF измерило это напрямую: среди примерно полумиллиона браузеров собранное распределение отпечатков несло около 18,1 бита энтропии, а это означает, что такой же отпечаток, как у случайно взятого браузера, в этой выборке был лишь примерно у 1 из 286 777 остальных. В этом наборе данных 83,6% браузеров имели мгновенно уникальный отпечаток, а среди посетителей с включённым Flash или Java — 94,2%. Разбивка по атрибутам показала, откуда взялись эти биты: одна только строка user-agent несла около 10 бит, список системных шрифтов — около 13,9, список плагинов браузера — около 15,4, тогда как настолько грубый сигнал, как включены ли cookie, давал всего 0,35. Оригинальные цифры — в резюме результатов Panopticlick от EFF.
С 2010 года изменились две вещи, и они тянут в разные стороны. Самый богатый сигнал того набора данных — перечисление плагинов — фактически исчез вместе с плагинами NPAPI, а строку user-agent намеренно заморозили и урезали (см. сокращение User-Agent). Но браузеры обзавелись и поверхностями, которых Panopticlick никогда не тестировал, — аудио, медиаустройства, WebGL, canvas и другими, — так что скрипт, комбинирующий сегодняшний полный набор атрибутов, по-прежнему выходит на тот же порядок энтропии или выше.
Одна оговорка важнее любой отдельной цифры: биты складываются честно только тогда, когда сигналы действительно независимы, а реальные сигналы независимыми не бывают. Android-овский user-agent уже предсказывает бо́льшую часть списка шрифтов, геометрию экрана и строку GPU: узнав одно, вы узнаёте многое из остального. Именно поэтому энтропии отдельных атрибутов в Panopticlick в сумме дают больше 50 бит, тогда как измеренная совместная энтропия всего отпечатка составила 18,1 бита. Складывая биты всех сигналов, вы получаете верхнюю границу, а не оценку: реальное значение всегда ниже — и это стоит помнить, глядя на любую итоговую цифру, которую показывает тот или иной инструмент.
Множество анонимности: мышление в формате «1 из X»
Энтропия — полезное число для исследователей, но более интуитивная формулировка — это множество анонимности: группа людей, которые прямо сейчас выглядят для трекера идентично вам. Если энтропия вашего отпечатка составляет b бит, ваше множество анонимности примерно равно «1 из 2^b» — при 10 битах ваша точная комбинация встречается примерно у 1 человека из 1024; при 20 битах — примерно у 1 из миллиона; при 30 битах — примерно у 1 из миллиарда.
Именно поэтому ~33 бита — это неформальный порог «уникальности на Земле». При населении планеты около 8 миллиардов и 2^33 ≈ 8,6 миллиарда, отпечаток с энтропией в 33 бита имеет множество анонимности размером примерно один — вы, и практически никто больше, даже не учитывая, сколько из этих 8 миллиардов вообще пользуются интернетом. Стоит уточнить, что представляет собой этот порог: это приближение, привязанное к сегодняшнему населению планеты, а не фиксированная константа. По мере роста населения число битов, необходимое для достижения «уникальности на Земле», постепенно растёт; это движущаяся цель, просто движется она очень медленно.
Обычная комбинация — стандартный user-agent, распространённый размер экрана, шрифты по умолчанию, стандартный часовой пояс — может поместить вас в множество анонимности из тысяч или миллионов человек, что вполне комфортно. Добавьте редкий шрифт, необычную строку рендерера WebGL и характерный аудиостек — и это множество может схлопнуться почти до одного человека всего за несколько дополнительных сигналов, потому что, опять же, биты просто складываются.
Почему редкая конфигурация вредит вам
Практический вывод контринтуитивен для многих: проблема в том, что вы выделяетесь, а не в том, что вас отслеживает какой-то один атрибут. Ни характерная топовая видеокарта в игровом ноутбуке, ни редкая региональная раскладка клавиатуры, ни нишевое расширение браузера не обязаны оставаться секретом по отдельности — множество анонимности сжимает именно комбинация. Именно поэтому инструменты приватности, построенные на рандомизации, несут в себе тонкий риск: если сам факт рандомизации детектируем, то «у этого браузера явно поддельное значение canvas» может само стать редким, идентифицирующим атрибутом — см. Шум canvas против настоящего хеша: почему рандомизация может обернуться против вас о том, как этот компромисс проявляется на практике. Инструменты, построенные на единообразии — стандартизации значений сразу для всех пользователей, как это делают Tor Browser и resistFingerprinting в Firefox, — напрямую воздействуют на множество анонимности, сохраняя одинаковые биты у всех, вместо попытки скрыть какой-то один из них.
Мобильные устройства против десктопов: та же математика, разные числа
Модель энтропии универсальна, но получаемые с её помощью числа сильно различаются в зависимости от платформы. Настольные ПК встречаются в огромном разнообразии сочетаний GPU, драйверов, мониторов и шрифтов, поэтому сигналы canvas и WebGL там, как правило, несут высокую энтропию. Массовое производство телефонов сглаживает именно эти сигналы — миллионы идентичных устройств рендерят вывод canvas и WebGL одинаково, снижая их вклад в общее количество битов. Но мобильные устройства добавляют сигналы, которых у десктопов в основном нет — особенности геометрии экрана, количество точек касания и датчики движения, — что частично компенсирует сглаживание. Итоговый эффект: множество анонимности телефона не обязательно больше, чем у десктопа — оно просто построено из другого сочетания высоко- и низкоэнтропийных сигналов. См. Фингерпринтинг мобильного браузера о том, как именно отслеживают устройства Android и iOS.
Как проверить своё множество анонимности
Числа энтропии трудно осмыслить абстрактно — быстрее всего понять свой показатель, измерив его. Проверка отпечатка от BrowserInsight полностью выполняется на стороне клиента и оценивает уникальность вашей текущей конфигурации, показывая, какие сигналы вносят больше всего битов. Инструмент EFF Cover Your Tracks (преемник Panopticlick) сообщает похожую цифру «1 из X» относительно собственного агрегированного набора данных. Запустив оба инструмента, а затем сравнив результаты до и после включения приватного браузера или расширения, вы получите самый ясный способ понять, действительно ли конкретная защита увеличивает ваше множество анонимности — потому что, как показано выше, ответ полностью зависит от того, какие сигналы она меняет и насколько.
Часто задаваемые вопросы
Более высокая энтропия — это всегда хуже?
Для вашей приватности — да: больше битов означает меньшее множество анонимности и более узнаваемый браузер. Энтропия — свойство именно вашей конкретной комбинации значений, а не фиксированный балл; она меняется, если вы переключаете браузер, обновляете шрифты или включаете защиту.
Уменьшает ли удаление cookie энтропию моего отпечатка?
Нет. Энтропия берётся из характеристик устройства и браузера — GPU, шрифтов, особенностей рендеринга, — и ни одна из них не хранится в виде cookie. Очистка cookie никак не влияет на биты, которые может считать скрипт снятия отпечатков; см. полный гайд по фингерпринтингу о том, почему отпечатки переживают очистку данных, а cookie — нет.
Могу ли я иметь нулевую энтропию — полностью анонимный отпечаток?
В открытом вебе — нет, но можно подойти очень близко. Инструменты, приводящие ваши значения к значениям большой группы пользователей (Tor Browser, resistFingerprinting в Firefox), не прячут сигналы — они заставляют всех сообщать одно и то же, так что вклад этих атрибутов падает почти до нуля бит. Оставшаяся энтропия берётся из того, что стандартизировать не удаётся: например, из сетевых характеристик и особенностей тайминга. Этот общий базовый уровень и есть практический предел размера множества анонимности при обычном сёрфинге.
Почему разные источники приводят разные значения энтропии для «одного и того же» отпечатка?
Энтропия измеряется относительно конкретного набора данных. Исследование Panopticlick от EFF измеряло энтропию среди браузеров, посетивших его собственный сайт в 2010 году; скрипт, работающий сегодня на другом сайте, с другой аудиторией посетителей и другим списком атрибутов, вычислит другое число для того же самого физического устройства. Биты всегда привязаны к конкретному набору данных, а не абсолютны.
Рекомендуем почитать
- Фингерпринтинг браузера объяснён: как защитить вашу приватность
- Canvas-фингерпринтинг: как сайты узнают ваше устройство
- Глубокое погружение в WebGL-фингерпринтинг: что раскрывает ваш GPU
- Шум canvas против настоящего хеша: почему рандомизация может обернуться против вас
- Фингерпринтинг мобильного браузера: как отслеживают Android и iOS
- Согласованность отпечатка: почему несовпадающие сигналы вас выдают


