В настоящее время ведется много шума по поводу дополнительного метода снятия отпечатков пальцев с браузеров, чтобы отслеживать пользователей, когда они переходят с одного веб-сайта на другой. Технология очень проста, но реальный вопрос заключается в том, как она может работать достаточно хорошо, чтобы быть полезной?
Отслеживание пользователей — это то, что маркетинговый интернет должен делать, чтобы рекламодатели остались довольны. Он отвечает за рекламу, которая следит за вами. Вы просматриваете товар x на одном веб-сайте и получаете множество объявлений, предлагающих продать вам товары других марок на других веб-сайтах, которые вы посещаете. Это функция, которая раньше реализовывалась с использованием файлов cookie, но по многим причинам пользователям не нравятся файлы cookie, поэтому нам пришлось изобрести другие методы отслеживания пользователей.
Самый известный из них — это браузеры со снятием отпечатков пальцев. По сути, вы собираете все данные, которые браузер предлагает серверу, и используете их как хэш для отслеживания пользователя. Чем больше данных, уникальных для браузера конкретного пользователя, вы сможете собрать, тем более точным будет отслеживание.
Текущая суета заключается в том, что было обнаружено, что многие сайты используют отпечатки пальцев Canvas для расширения всех других источников данных отпечатков пальцев. Идея состоит в том, что программа на JavaScript рисует что-то на элементе Canvas и считывает битовый шаблон, который получается как отпечаток пальца.
Хорошо, достаточно просто для реализации, но вы должны задать вопрос: «Почему битовая комбинация настолько различается, чтобы ее можно было использовать?»
Когда я использую команду рисования, которая переключает конкретный пиксель на заданную настройку RGB, тогда, если нет аппаратной ошибки, этот пиксель будет иметь это значение RGB, и нет изменений в битовой структуре между браузерами. Однако, если вы используете графический процессор и команду рендеринга, которая в более общем плане указывает то, что вы хотите, а не точные значения пикселей, тогда есть возможности для вариаций. Например, если вы просите провести линию между двумя точками с использованием алгоритма сглаживания, то именно то, что установлено для каждого пикселя, зависит от точного рисования линии и используемого алгоритма сглаживания. В этом случае битовый шаблон может различаться в зависимости от браузера.
Идея использования рисования на холсте через WebGL для идентификации браузеров была изобретена еще в 2012 году в статье Китона Мауэри и Ховава Шахама: «Pixel Perfect: Fingerprinting Canvas в HTML5». Цитировать:
«… использование кода рендеринга шрифтов операционной системы для текста означает, что браузеры автоматически отображают текст таким образом, который оптимизирован для отображения и соответствует ожиданиям пользователя».
То, как этот текст, скажем, отображается на холсте, зависит от дисплея, графического оборудования и ОС — но действительно ли это обеспечивает вариативность, необходимую для отпечатка пальца?
В документе говорится:
«В 294 экспериментах на Amazon Mechanical Turk мы наблюдали 116 уникальных значений отпечатка пальца при выборочной энтропии 5,73 бита. Это так, даже несмотря на то, что количество пользователей в наших экспериментах мало различается в браузере и ОС».
Этого недостаточно для уникальной идентификации, но если вы добавите его вместе с другими данными отпечатков пальцев, это поможет.
Что удивительно, так это то, что примерно для 300 пользователей с аналогичными системами вариации производят около 100 отпечатков пальцев — это более чем разумно для любого алгоритма рендеринга.
Неужели существует так много вариантов рендеринга шрифтов и 3D-графики? Кажется, да. Например, взгляните на изображения разницы, взятые из оригинальной статьи, для одной строки текста, отображаемой с помощью text_arial:
И такие же вариации можно увидеть в трехмерном изображении из систем, сгруппированных по аппаратному обеспечению графического процессора:
В рендере задействовано 200 полигонов и наложенная текстура.
В целом различий больше, чем можно было бы ожидать при наивном рассмотрении аппаратного обеспечения и алгоритмов рендеринга.
Это настолько эффективный метод снятия отпечатков пальцев, что недавно было обнаружено, что многие ведущие веб-сайты используют его — в основном через виджет AddThis. Особенно неприятно присутствие отпечатков пальцев Canvas на веб-сайте Белого дома, что противоречит его политике конфиденциальности.