Как стать автором
Обновить

Комментарии 63

Непонятно, откуда возникает уникальность. Отрисовка же одного и того же изображения в одной версии браузера должна быть одинаковой.
Тоже заинтересовался этим вопросом. Нашел вот такой документ (FingerPrinting canvas in HTML5):

Если коротко, то:
The natural way for browsers to implement such feature is to draw on the host operating system and hardware. Using the GPU for 3D graphics (and even for 2D graphics compositing) provides substantial performance improvements, as well as battery savings on mobile devices. And using the operating system's font-rendering code for text means that browsers automatically display text in a way that is optimized for the display and consistent with the user's expectations.


cseweb.ucsd.edu/~hovav/dist/canvas.pdf
НЛО прилетело и опубликовало эту надпись здесь
«Поскольку любой ПК уникален (свой набор «железа», свойства аппаратного обеспечения, набор ПО и прочее), то и отрисованное изображение — уникально.» — большое желтое предложение, IMHO. Если сказано нарисовать точку в координатах 13,666 то она и должна там быть независимо от ПО и тем более железа.
Они рисуют не точку, а текст используя доступные системе шрифты и рендерер. Набор шрифтов и методы сглаживания немного отличается на разных машинах. Рендерер зависит от версии браузера, ОС и даже GPU. Это объясняет, кстати, почему
мобильные устройства мало совместимы с таким методом
— на 70 миллионах айфонов одинаковые шрифты, браузер и GPU.
Ключевое слово версия бразуера!
Сколько версий Mozilla или Chrome вы поставили за последний год?
А может с дуру еще накатывали апдейты на систему или меняли драйвера?
Главное чтобы у соседа была другая комбинация параметров, чтобы вас можно было отличить друг от друга
Надоела уже фраза про замену кук на что-то другое. Каким бы образом пользователь не идентифицировался — результат все равно пойдет либо в куки, либо в url. Но второй способ ужасен.
Вопрос даже не в токенах и куках. Пришел пользователь на сайт — мы попросили его картинку нарисовать. Получили картинку с хешем abc123. Пришел пользователь на другой сайт — мы опять его попросили картинку нарисовать. Хеш картинки получился такой же — abc123. Значит и пользователь — тот же.

Мне больше непонятно вот что. У меня MacBook Pro и у Васи MacBook Pro того же года выпуска, по идее у нас картинка в одном и том же браузере одним и тем же шрифтом одинаковая получится. Так что по ходу способ отрисовка и больше используется как дополнительный параметр при идентификации наряду с существующими (IP, юзерагент, разрешение экрана, установленные плагины, шрифты и т.д.).
Ну да, для одностраничных сайтов токены — действительно неплохая замена. Но как только у нас есть две разные страницы, так сразу же хочется перестать заниматься повторной идентификацией пользователя при каждом переходе по ссылке.
хм. у меня на сопровождении порядка 190 сайтов. И страниц там отнюдь не одна, а тысячи. И знаете в соседнем отделе такая же ситуация. И везде используют токены. Только у меня токен мелькает в урле только один раз. Потом пишется и в куки и локалсторедж и сессии и куда только можно. А у соседей в урле. Вот я порекомендовал руки им переломать. Потому как токены ихние в индекс поисковиков попали… А да и ещё у меня можно авторизоватся на одном сайте, а на остальных сайтах авторизация и так подтянется автоматом) Причём без токена в урле) И да сайты не поддомены одного домена) А и ещё токен для каждого сайта свой выдаётся) Вот вам пища для ума)
Потом пишется и в куки
Вот именно про это я и писал. Как ни крути, а в куки что-нибудь да запишешь.
Ну браузер не отдаёт содержимое локал сторейджа. Я б в куки не писал тогда. Интересно кому не понравился мой коммент)
www.browserleaks.com/canvas

This is a simple Proof-of-Concept that Browser Fingerprinting is possible without any of User-Agent identifiers.

The method is based on the fact that the same HTML5 Canvas element can produce exceptional pixels on a different web browsers, depending on the system on which it was executed.

This happens for several reasons: at the image format level — web browsers uses different image processing engines, export options, compression level, final images may got different hashes even if they are pixel-perfect; at the pixmap level — operating systems use different algorithms and settings for anti-aliasing and sub-pixel rendering. We don't know all the reasons, but we have already collected more than a thousand unique signatures.


Как я понял, речь идёт скорее об идентификации a-la user agent (версия бразуера + версия ОС), чем об идентификации непосредственно компьютера (или связки железо + бразуер + ОС).
Там, кстати, есть статистика, которая хорошо иллюстрирует уникальность этих меток:

Total Visitors Processed 338737
Total Sets (User-Agents) 22136
Total Groups (Signatures) 1847


Пришлось лезть в оригинал, чтобы понять, почему изображение уникально.The authors found that by using the Canvas API of modern browsers, one can exploit the subtle differences in the rendering of the same text to extract a consistent fingerprint that can easily be obtained in a fraction of a second without user's awareness.
То есть используются «локальные погрешности рисования».
Сглаживание шрифтов? В Win7 этот процесс выдает 2*6*3*6 = 216 вариантов настроек. Уникальность повышает, но на глобальноуникальный идентификатор не тянет. К тому же, многие оставляют эти настройки по умолчанию.
Пусть попробуют таким способом различить между собой, например, пользователей маков )
Валентин Васильев, мой коллега, не имеет аккаунта с правами на комментарии, но хотел бы пояснить:
Статья неточно переведена, я не использовал сторонние наработки (ссылка ведет на мой же проект).
Что касается почему разные отпечатки получаются, рисование специального изображения это только первая часть. Главное — это перевод PNG в бинарную форму, а затем в base64. За это в современных браузерах почти всегда отвечает GPU. Вот разница в графических процессорах и реализации PNG декодирования и выдает разные base64 строки на выходе.
Canvas fingerprinting только один из множества источников, который добавляет несколько байт к энтропии. Основная часть это плагины и возможности браузера. Совокупный отпечаток строится, используя все возможности.
Дополнено, спасибо!
Что то не понял, png — сжатие без потерь, base64 перекодировка без потерь. За счет чего уникальность?
Ну тут все просто — шрифты уже давно, со времен GDI+ рисует видеоадаптер. А вот Cairo это не особо то и умеет. В общем все изгаляются сильно по разному.
И да — антиалиасинг может немного различаться в итоге.
С остальным облом — перевод в png это всегда CPU, а не GPU задача. Но да — хоть результат «в виде картинки» одинаков — файл можно собрать по разному. Иначе pngcrush не было бы.
Ну а base64 — всегда одинаков.
НЛО прилетело и опубликовало эту надпись здесь
Можно вопрос:
а если я взял и поменял что-то? шрифт, браузер и т.д.?
Получается в системе я буду уже новым пользователем?
Как и раньше: очистил куки — новый пользователь.
Только вот «случайно очистить» в таком случае проще выходит.
Так куки никто не отменяет. Эти извраты для любителей чистить куки.
Насколько я понимаю, речь идёт о замерах скорости отрисовки (память, процессор) и замерах визуализации эффектов (блюр, сглаживание, прозрачность) — а они как раз зависят от видеокарты, разрешения, версии кодеков, в общем — достаточно много параметров набрать можно. Если изображение отрисовывается на всю область экрана, то в неё попадает таскбар и даже — обои на рабочем столе.

Так что отпечаток можно получить действительно достаточно точный. о чём и речь.
Этот способ (получивший название «canvas fingerprint») весьма сложно, если вообще возможно, заблокировать стандартными методами, типа блокированием куков либо установкой AddBlock или сходных плагинов.

Использование NoScript решает проблему. Ну, а в данном конкретном случае вообще достаточно добавить addthis.com в правила адблока.
НЛО прилетело и опубликовало эту надпись здесь
В июне разработчики Tor Project даже добавили в свой браузер функцию уведомления пользователя о том, что какой-либо сайт пытается использовать описанный метод идентификации.
Функция блокировки получения яваскриптом содержимого canvas была предложена ещё в ноябре 2012 года. За июнь 2014 года никаких упоминаний о canvas в блоге Tor Project не нашел.

О других способах фингерпринтинга, от которых защищает Tor Browser, можно прочитать здесь.
Разные браузеры на одном и том же компьютере дают разные отпечатки?
Зависит от методов фингерпринтинга, в большинстве случае таже персона легко отслеживается простыми методами.
Да, разные. Обновление браузера тоже меняет отпечаток (версия браузера — часть отпечатка)
Если брать в расчет лишь описанный метод идентификации, то только если новая версия имеет отличия в отрисовке PNG в сравнении с предыдущей. Изменения в алгоритме сглаживания, например. Не думаю, что в этой области изменения появляются каждую версию.
Дык я на практике проверил библиотеку, о которой речь идёт. пруф.
Онлайн свой уникальный fingerprint можете просмотреть здесь: valve.github.io/fingerprintjs/
Почитал, спасибо. Там действительно используется куда больше параметров, чем можно было предположить только на основе поста. Выходит, сменить отпечаток можно множеством способов.
Если под виртуалкой серфить, что смогут отследить таким образом?
Настройки этой самой виртуалки. Плюс, возможно, видеокарту.
Значит нужно создать 1 образ виртуалки ( удобный для браузинга ) и растиражировать его на всех желающих. И опппа — у нас один пользователь =)
Ну и, самое главное, в этот образ встроить бекдор.
Куда уж без теории заговора.
Только по-хорошему, нужно допиливать браузеры, чтоб в режиме инкогнито все настройки отдавались одинаково — «user-agent=mozilla», и все. Установленные шрифты, флэш, java, ОС, размер экрана — не отдавать, либо отдать какую-нибудь стандартную конфигурацию.
Ага, а как быть с поддержкой технологий?
Поддержка LocalStorage, других фич. Ворох поддерживаемых HTML5 возможностей тоже помогает идентифицировать браузер.
Разрешение экрана — либо одинаковое у всех и кто-то возится с малюсеньким браузером, либо никак.
А связка IP (Необязательно, но можно) + Браузер + Разрешение экрана может использоваться для идентификации, и используется в некоторых счётчиках.
Я думаю, технологий 5-летней давности вполне достаточно для безопасного просмотра сайтов. Если какой-нибудь сайт строит дизайн на «moz-border-radius», ничего страшного, если дизайн окажется чуть искажённым. Раз в 5 лет обновлять сигнатуры у всех инкогнито-браузеров до актуального состояния технологий — хороший выход, я считаю.
Ничего метод не отслеживает, насколько я понял из поста. Грубо говоря, на основе используемого программного и аппаратного обеспечения формируется неуникальный идентификатор.

Это просто замена Cookie. Только их «очищать» сложнее. Представьте себе всякую рекламу, например. Если вы искали пылесос, то сайты на основе Cookie помечают вас как человека, искавшего пылесос, и могут начать везде предлагать пылесосы. В данном случае, пока вы не очистите куки, это браузер говорит сайтам: «Смотрите, по ту сторону монитора сидит человек, который искал пылесос!».

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

На основе полученного ключа сервер может понять лишь следующее: «По ту сторону сидит человек, который искал пылесос. Или человек с очень похожей конфигурацией компьютера».

То есть, по сути, залог анонимности при таком раскладе — одинаковое железо и одинаковый софт у большого числа людей. Я ничего не буду говорить про Apple в этом посте.
Воу-воу, вы так говорите, словно я эксперт какой.

Такое применялось, как минимум, в mail.ru несколько месяцев назад. Этим способом действительно можно построить уникальный отпечаток пользователя, но только в связке с другими способами. Из известных мне браузеров, которые блокируют возможность получения скриншота с canvas, только Tor browser, который упомянут в статье. Причем перевод сообщения на русский язык уморительный:
canvas.siteprompt=Этот веб-сайт (% S) пытался получить доступ к данным изображения на холсте. Поскольку данные холсте изображение может быть использовано для получения информации о вашем компьютере, пустые данные изображения были возвращены на этот раз.
НЛО прилетело и опубликовало эту надпись здесь
Не выключайте куки и вас надёжно идентифицируют.
Тогда надо сразу показывать сомнительные баннеры тем, кто сидит с выключенными куками, безо всякой идентификации. Способ, описанный в статье, опять слишком сложный и лишний…
Да, но сначала выключается реклама, а потом куки (адблок популярнее, чем плагины приватности). Поэтому сомнительные банеры некому будет смотреть.
Способ, описанный в статье, стал еще более лишним…
Напомню ссылку на тест «How unique is your browser» от EFF, где видно остальные методы сбора идентифицирующей информации браузера.

Две моих системы оказались абсолютно уникальными, и это даже при том, что в системе нет флеша.
Ох, вот что меня с потрохами выдало — это список установленных шрифтов. Фансабберы часто включают шрифты в свои релизы, часто весьма экзотические, предназначенные только для определённого сериала.
Самое большое палево — список плагинов. Остальные параметры ничем не примечательны.
Точность метода должна быть не высока при большом количестве пользователей
Ты не представляешь на сколько точна для обычных ПК.

Если хочешь быть параноиком, iPad тебе в руки. Эти устройства имеют идентичные отпечатки на один модельный ряд.
С Android устройствами не все так гладко.
Стоит уточнить — нужно тестировать в Safari. Google Chrome гораздо легче идентифицируемый.
Набор шрифтов и методы сглаживания немного отличается на разных машинах


Всё ясно, отдыхайте, пинкертоны! При тех многомиллионных инсталляциях идентичных машин, этот метод просто смехотворен. (спросите любого сисадмина, как закупается и сетапится техника в компании)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации