Цифровой отпечаток устройства
Цифровой отпечаток устройства (также машинный отпечаток) — это информация, собираемая о программном и аппаратном обеспечении удалённого вычислительного устройства с целью его идентификации. Обычно эта информация агрегируется в краткий идентификатор с помощью алгоритма снятия отпечатков. Одним из наиболее распространённых видов цифровых отпечатков устройств является отпечаток браузера, который строится на данных, собираемых при взаимодействии с веб-браузером устройства[1].
Цифровые отпечатки устройств могут использоваться для полной или частичной идентификации отдельных устройств даже в случаях, когда постоянные куки (а также зомби-куки) недоступны для чтения или записи в браузере, клиентский IP-адрес скрыт или пользователь переключается на другой браузер на том же устройстве[2]. Это позволяет, с одной стороны, выявлять и предотвращать кражу идентичности и мошенничество с банковскими картами[3][4][5][6], но, с другой стороны, — формировать долгосрочные базы истории посещений пользователей (а также использовать таргетированную рекламу[7][8] или целевые атаки посредством эксплуатации уязвимостей[9]), даже если пользователь предпринимает попытки уклониться от слежки. Это вызывает значительные опасения у сторонников конфиденциальности в интернете[10].
История
Базовая информация о конфигурации веб-браузеров давно собирается сервисами веб-аналитики для оценки реального человеческого веб-трафика и фильтрации различных видов кликфрода. С конца 1990-х годов появление клиентского сценарного языка позволило собирать всё больше разнообразной информации, и уже в начале 2000-х эксперты по компьютерной безопасности стали выражать обеспокоенность возможностями массового извлечения параметров браузера[11].
В 2005 году исследователи из Калифорнийского университета в Сан-Диего показали, как с помощью отметок времени TCP можно оценить дрейф часов устройства, а значит и получить удалённый аппаратный отпечаток[12].
В 2010 году организация Electronic Frontier Foundation, EFF запустила веб-сайт для тестирования уникальности отпечатка браузера пользователя[13]. После сбора 470 161 отпечатка было измерено, что отпечатки браузеров могут содержать не менее 18,1 бит энтропии[14], что было до появления технологий, таких как цифровой отпечаток с использованием canvas (добавляющих ещё 5,7 бита). Panopticlick показал, что 83,6 % отпечатков уникальны, а при наличии Flash или Java — 94,2 %.
В 2012 году Кейтон Моури и Ховав Шахам, исследователи из Калифорнийского университета в Сан-Диего, показали, как элемент HTML5 canvas может использоваться для создания цифровых отпечатков браузеров[15].
В 2013 году не менее 0,4 % топ-10 000 сайтов по версии Alexa были обнаружены использующими скрипты для снятия отпечатков, предоставляемые сторонними сервисами[9].
В 2014 году 5,5 % топ-10 000 сайтов по Alexa применяли скрипты для снятия отпечатков Canvas, размещённые на 20 доменах. Подавляющее большинство (95 %) подобных скриптов размещались на платформе AddThis, начавшей использовать такую технологию без ведома своих клиентов.[4][15][16][17][18]
В 2015 году в Firefox версии 41 появилась экспериментальная функция против снятия отпечатков браузера[19], однако она до сих пор не включена по умолчанию[20]. В той же версии 42 появилась функция Enhanced Tracking Protection для борьбы с отслеживанием в приватном режиме просмотра, блокируя скрипты сторонних доменов с чёрных списков Disconnect Mobile[21].
В 2016 году исследование AmIUnique показало, что 89,4 % отпечатков уникальны, и набор определяющих признаков со временем меняется.
В WWDC 2018 компания Apple объявила о том, что Safari в macOS Mojave «выдаёт упрощённую системную информацию при просмотре сайтов, не позволяя идентифицировать пользователя по конфигурации системы»[22]. Исследование Hiding in the Crowd (2018) показало, что только 33,6 % десктопных отпечатков уникальны; для мобильных устройств — 18,5 % против 81 % в прежних данных. Для ПК уникальность чаще достигается за счёт комбинации признаков; для мобильных устройств — благодаря уникальным значениям отдельных атрибутов.
В 2019 году начиная с Firefox 69 Enhanced Tracking Protection включается по умолчанию для всех пользователей, не только в приватном режиме[23].
Разнообразие и стабильность
Концепция цифрового отпечатка устройства во многом вдохновлена судебно-медицинской ценностью отпечатков пальцев.
Для того чтобы отпечатки позволяли уникально отличать устройства в долгосрочной перспективе, они должны быть одновременно достаточно разнообразными и стабильными. На практике достижение обеих свойств одновременно невозможно: повышение разнообразия обычно снижает стабильность — например, если добавить в отпечаток ещё одну настройку браузера, индивидуальность возрастёт, но при изменении этой настройки отпечаток изменится[1]. Тем не менее, если пользователь не противодействует идентификации, отпечатки несложно выделять, учитывая большое разнообразие собираемых данных. Согласно исследованиям, 56,86 % пользователей имеют уникальные расширения, а по 43 символам используемых шрифтов идентифицируется 34 % выборки[24].
Частичная нестабильность отпечатков может компенсироваться алгоритмами сопоставления, связывающими частично совпадающие отпечатки (например, различающиеся только версией браузера, которая изменяется последовательно). Для этого применяются как простые алгоритмы на правилах, так и системы машинного обучения[25].
Энтропия — один из способов измерения разнообразия отпечатков.
Источники идентифицирующей информации
Локально установленные приложения могут собирать большой объём данных о программном и аппаратном обеспечении, включая уникальные идентификаторы — например, MAC-адрес и серийный номер. Многие программы, использующие DRM, специально применяют эту информацию для идентификации устройства.
Даже если приложение не предназначено для сбора идентификаторов, оно может непреднамеренно раскрывать их через взаимодействие с удалённой стороной, наиболее очевидный пример — веб-браузеры, которые предоставляют столько разнообразной и стабильной информации, что позволяют идентифицировать устройство удалённо.
На уровне ниже приложений идентификационные данные можно получить с помощью сетевых протоколов. По уровням модели OSI примеры протоколов для снятия цифрового отпечатка:
- Уровень 7: SMB, FTP, HTTP, Telnet, TLS/SSL, DHCP[26]
- Уровень 5: SNMP, NetBIOS
- Уровень 4: TCP
- Уровень 3: IPv4, IPv6, ICMP
- Уровень 2: IEEE 802.11[27], CDP[28]
Пассивные методы требуют лишь наблюдения за трафиком от целевого устройства; активные — инициирования соединения с этим устройством; полуактивные — взаимодействия по соединению, инициированному устройством[12].
Отпечаток браузера
Сбор большого объёма разнообразной и стабильной информации браузерами стал возможен благодаря появлению языков клиентского сценарного программирования в конце 1990-х годов. Существуют открытые библиотеки для снятия отпечатков браузеров, такие как FingerprintJS, ImprintJS, ClientJS; FingerprintJS наиболее активно развивается и в значительной степени заменяет остальные[29].
User-Agent браузера содержит сведения о названии и версии программы и другую информацию о совместимости[30][31]. Однако поскольку эти сведения предоставляет сам клиент, им не стоит доверять при идентификации. Вместо этого тип и версию браузера можно определять по характерным различиям в поведении (например, порядок и число полей в HTTP-заголовке уникальны для каждого семейства браузеров)[32], реализации HTML5[32], CSS[32][33] и JavaScript[9][34]. Такие различия можно проверять с помощью JavaScript. Сравнение с помощью расстояния Хэмминга отличий в действиях парсера помогает эффективно различать большинство версий браузеров.
Комбинация установленных расширений или плагинов может уникально идентифицировать браузер.[9] Некоторые расширения также влияют на поведение других характеристик браузера, увеличивая сложность отпечатка.[8][35][36][37] Плагины Adobe Flash и Java ранее широко использовались для доступа к информации пользователя до их устаревания[9][34][38].
User-Agent может содержать информацию о модели устройства[37][39], а также операционной системе, разрешении и ориентации экрана, соотношении сторон дисплея, что может быть получено с помощью JavaScript через медиа-запросы CSS[33].
С помощью JavaScript и CSS-селектора: visited злоумышленник мог определить, какие сайты пользователь уже посещал[40]. Обычно для уникального профиля хватало списка из 50 популярных сайтов. Однако современные браузеры устранили этот риск[41].
Ограничивающие прямоугольники букв отличаются между браузерами в зависимости от настроек сглаживания и хинтинга и могут быть определены с помощью JavaScript[42].
Отпечатки Canvas используют элемент HTML5 canvas[43], обрабатывающий 2D/3D-графику браузера через WebGL, чтобы получить сведения о установленном графическом драйвере, видеокарте или GPU. Техники отпечатков Canvas также могут выявлять установленные компьютерные шрифты[39]. Если GPU отсутствует, отпечаток может содержать информацию о CPU.
Скрипт сначала рисует текст определённого шрифта, размера и цвета, затем получает его изображение с помощью метода ToDataURL Canvas API и хеширует полученные данные для отпечатка[16]. Такие методы дают до 5,7 бита энтропии и позволяют собирать информацию, ортогональную по энтропии предыдущим признакам (разрешение экрана, возможности JavaScript и др.).
Бенчмарки позволяют по времени выполнения определить использование процессором инструкций AES-NI или Intel Turbo Boost[44].
Возможно использование специализированных API, например Battery API для кратковременного отпечатка по текущему состоянию батареи[45], или OscillatorNode для вывода волны на основании пользовательской энтропии[46].
Аппаратный идентификатор устройства (криптографический хеш, задаваемый производителем) также может использоваться для построения отпечатка[39].
Методы противодействия снятию отпечатка браузера
Существует несколько подходов к противодействию снятию отпечатков браузера и повышению конфиденциальности пользователя, однако полного решения без существенной потери функциональности современных браузеров нет.
Пользователи могут снизить отпечаткоёмкость устройства, выбрав браузер, минимизирующий выдачу идентифицирующих данных — шрифтов, идентификатора устройства, отрисовки Canvas, информации WebGL и локального IP-адреса[39].
По состоянию на 2017 год Microsoft Edge считался наиболее легко идентифицируемым браузером, за ним следовали Firefox, Google Chrome, Internet Explorer и Safari.[39] Среди мобильных браузеров наиболее уязвимы Google Chrome и Opera Mini, затем идут мобильные версии Firefox, Edge и Safari.[39]
Tor Browser отключает такие функции, как Canvas и WebGL API, и сообщает пользователю о попытках получения отпечатка.[16].
С целью снижения разнообразия Tor Browser ограничивает допустимые значения ширины и высоты окна страницы — используются только определённые размеры, в результате чего страница размещается в области немного меньше окна[47].
Подмена частей информации (например, user agent) может снизить разнообразие[48], но эффект может оказаться обратным, если подделанные данные выделяют пользователя сильнее, чем реальные[9].
Если же подменять информацию при каждом визите (например, добавляя случайный шум в звук или отрисовку Canvas), снижается стабильность отпечатка.[7] Такую технологию реализовал браузер Brave в 2020 году[49].
Полная блокировка клиентских скриптов с третьих и/или основных доменов (например, отключение JavaScript или использование NoScript) может привести к неработоспособности сайтов. Предпочтительный вариант — блокировка только третьих доменов, замеченных в отслеживании (на основе чёрных списков, как в блокировщиках рекламы, или по анализу поведения, как в Privacy Badger)[17][50][51][52].
Разные браузеры на одном устройстве обычно дают разные отпечатки, но если отпечатки не защищены, их можно идентифицировать как принадлежащие одному устройству[53].
Примечания
Литература
- Fietkau, Julian The Elephant In The Background: Empowering Users Against Browser Fingerprinting. Chaos Communication Congress 2020 (28 декабря 2020).
- Race Is On to 'Fingerprint' Phones, PCs (англ.), Wall Street Journal (30 ноября 2010). Дата обращения: 10 июля 2018.
- Segal, Ory; Fridman, Aharon; Shuster, Elad Passive Fingerprinting of HTTP/2 Clients. BlackHat (5 июня 2017). Дата обращения: 9 февраля 2022.
Ссылки
- Panopticlick — сервис Electronic Frontier Foundation, позволяющий оценить уникальность браузерного отпечатка пользователя


