Почему теперь почти невозможно имитировать другое устройство

Если вы смотрели фильм Тарантино «Бесславные ублюдки», вы, вероятнее всего, помните сцену из бара. В этой сцене британский шпион под прикрытием из-за невольного жеста не смог сохранить свою маскировку.

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

Большая опасность маленьких деталей

Мы ведём к тому, что сюжет этой сцены можно отнести ко всем нам, кто работает в интернете. Утратить защиту и раскрыть свою реальную личность довольно легко, если не обращать внимания на небольшие, но очень значимые детали.

В этой статье мы тщательно рассмотрим принципы обнаружения различных устройств, а также объясним, почему теперь почти невозможно имитировать другое устройство.

Перед тем как мы начнем, давайте определим, почему же различные системы пытаются обнаружить наши устройства. Это также поможет ответить нам на вопрос, зачем пользователи, в свою очередь, пытаются эти устройства имитировать.

Для чего различным системам информация о наших устройствах?

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

Утратить защиту и раскрыть свою реальную личность довольно легко, если не обращать внимания на небольшие, но очень значимые детали.

Уже известный нам User-Agent — это пережиток как раз тех времен. Но сейчас техники обнаружения и защиты информации на более высоком уровне.

Конечно, в большинстве случаев сайты используют методы обнаружения систем, чтобы предоставлять более качественный контент. Так, например, Netflix поддерживает огромное количество форматов видео и самих устройств: от мобильных до Smart TV. Под каждое устройство сервис может подобрать подходящие настройки и разрешение экрана. Если бы таких технологий не существовало, нам было бы совсем неудобно пользоваться подобными сервисами.

Эти же цели преследуют и другие компании. Например, у таких компаний может быть полный доступ для пользователей компьютеров и ноутбуков, а для мобильных устройств только сжатая версия сервиса.

Но тогда зачем пользователи и боты пытаются имитировать другие устройства?

В этой статье мы успели поставить уже несколько вопросов, но на самом деле — в этих вопросах уже и заложены ответы.

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

Но не стоит забывать и о злоумышленниках — они также могут попытаться имитировать определенные устройства, если защитные меры сервиса для них не такие строгие.

Разве можно запретить пользователям имитировать другое устройство, если сами сайты иногда не могут показать капчу при превышении количества запросов или когда компании предлагают скидки только для пользователей определенных устройств?

Гонка вооружений: техники обнаружения и защиты информации

Теперь давайте взглянем на сегодняшнюю ситуацию: символичная «гонка вооружений» — с одной стороны те, кто пытается обнаружить наши устройства, с другой — кто пытается не допустить этого обнаружения.

Эта гонка привела к огромному вложению сил и средств в развитие машинного обучения и искусственного интеллекта. Но есть и другие техники, которые не получили такого большого внимания — проект под названием Picasso от Google. Он служит в качестве технологии классифицирования устройств. Мы вскоре взглянем на эту разработку более детально, но сейчас давайте поговорим о том, что же может «выдать» вас за считанные секунды.

Почему имитирование устройства не всегда работает

Имитирование устройства возможно при помощи самых различных способов: от изменения вашего User-Agent до применения более усовершенствованных техник. Но это означает, что есть и множество способов эту маскировку обнаружить.

Вы точно используете телефон?

Многие считают, что для имитации устройства достаточно только изменить User-Agent. Но сказать можно что угодно, а нам нужны доказательства.

Так, например, попытка имитировать мобильное устройство сразу может вас «выдать». При такой имитации многие не учитывают функции, присущие только этому типу устройств. В настройках они передают информацию сервису о том, что их устройство не поддерживает тачскрин, хотя они пытаются имитировать мобильный телефон.

Можно ли представить смартфон, у которого нет тачскрина?

Попробуйте найти свое решение.

var touch_capable = ( 'ontouchstart' in window ) || 
           ( navigator.maxTouchPoints > 0 ) || 
           ( navigator.msMaxTouchPoints > 0 );

if(touch_capable) {
  alert("Supported");
} else {
	alert("Not Supported");
}

Основной принцип при имитировании устройства — это сохранение функций и характеристик, которые присущи только этому устройству.
Если вы передаете сервису информацию о том, что у вас iPhone 6, вам нужно знать детали, которые относятся к этой модели телефона, хотя бы его разрешение экрана.

Вы когда-нибудь видели iPhone 6 с разрешением 1920×1080? Мы тоже такой не видели, а тем более о таком не знают и системы обнаружения устройств.

Вот еще пример: никто не усомнится, что вы используете MacBook, если ваше устройство успешно пройдет тест navigator.platform:

Однако вы не можете передавать сервису информацию о том, что вы одновременно используете Mac OS X и Windows!

Конечно, есть огромное количество маленьких деталей, которые относятся только к определенным устройствам. Пользователи часто про них забывают, когда пытаются их имитировать.

Если вы пользовались мобильным браузером (мы в этом не сомневаемся), вы знаете, что изменить размер окна браузера нельзя. Сам браузер всегда открыт на весь экран. Для систем обнаружения это означает, что значения X и Y всегда должны равняться 0, а вот если они 0 не равняются…

Примеры таких деталей можно продолжать до бесконечности, но теперь пришло время взглянуть на это с улыбкой.

Эмодзи: могут ли чувства нас предать?

А вы знали, что внешний вид эмодзи отличается на разных устройствах?

Например, вот эмодзи с улыбкой — символы : и ) А ваша система превращает его в красивое изображение 🙂

Давайте посмотрим, как эмодзи улыбки различается в системах и устройствах:

Источник: Emoji Unicode Tables

Представим, что вы передаете сервису информацию о том, что у вас ОС Android. Система обнаружения на этом сервисе может получить хеш-значение эмодзи вашего устройства и сравнить его с эмодзи на реальном Android устройстве. Если результаты проверки не совпадут, система поймет, что вы имитируете другое устройство. Звучит как настоящая магия! Нужно просто взять юникод U+1F600 (для эмодзи) и пока идет прорисовка изображения, сравнить его со значением, которое определяет вас среди остальных пользователей.

Вот хеш версия эмодзи улыбки (U+1F600) на разных устройствах:

А вот хеш-алгоритм sha256 этого же эмодзи с разных версий Google Chrome на Windows 10:

Совпадают ли ваши шрифты?

В каждой системе есть предустановленные шрифты, некоторые из них система использует по умолчанию. Например, в iOS 13 есть шрифт Engraved LET Plain:1.0, но в этой системе нет шрифта Al Bayan Bold. А вот в macOS Catalina такой шрифт есть!

А теперь о Windows: шрифт Tahoma был установлен по умолчанию в Windows XP, но начиная с Vista — стандартным шрифтом стал Segoe UI.

Список шрифтов Microsoft для Windows 10 указан со следующей пометкой: «Не все шрифты из десктопной версии Windows 10 будут доступны на Xbox, HoloLens, SurfaceHub и других системах».

Поэтому системы обнаружения могут с легкостью определить, что вы не используете Windows 10, когда они проверят, что шрифта вашей системы нет на странице сайта Microsoft.

Физически неклонируемые функции (PUF, Psychically Unclonable Functions)

До этой темы мы рассмотрели проблемы, которые могут «выдать» имитацию устройства, но к ним всё же можно найти решение. Нужно правильно настроить браузер, настроить необходимые шрифты, эмодзи и бинарные атрибуты — всего этого можно добиться. Но это займет немало усилий и финансовых затрат.

Проект Google Picasso классифицирует браузеры с помощью операций отрисовки. Эти операции сильно зависят от типа ОС и графического оборудования устройства.

Но есть и обратная сторона медали.

Сотрудник Google Эли Бурштейн, возглавляющий команду по борьбе с противоправной деятельностью в этой компании, в 2006 году рассказал о своем проекте под названием Picasso. Эли объяснил, как именно Google борется с попытками имитации устройства в сервисе Google Play.

Проект Google Picasso классифицирует браузеры с помощью операций отрисовки. Эти операции сильно зависят от типа ОС и графического оборудования устройства. Используя начальное значение, Picasso создает геометрические символы на «холсте» (Canvas) в случайном порядке при каждом цикле. Такие понятия как начальное значение, цикл, ширина и высота — это основные элементы того, как Picasso выполняет свои операции. В результате Picasso получает графическую информацию, которую «отдал» пользователь со своими физически неклонируемыми функциями, такими как операционная система и аппаратная составляющая. Пользователь, который имитирует другое устройство, не сможет обойти эту проверку, если у него нет такой же системы.

Pseudo code of Picasso, from the paper of Elie Bursztein
Псевдокод Picasso из работы Эли Бурштейна

Но нужно отметить, что без определенной базы данных вся эта система не имеет смысла. В базе данных хранятся уже вычисленные значения, которые были получены от реальных устройств. Эта база данных является подлинным источником в процессе сравнения устройств.

Помимо этого, нужно также отметить важные аспекты работы Picasso. Эта система создает графический объект при помощи HTML Canvas (англ. canvas — «холст»). Многие полагают, что Canvas используется для того, чтобы улучшить «беспорядочность» браузерного отпечатка, тем самым обеспечив его уникальность.

Несколько лет назад инженеры из нашей компании Multilogin доказали, что хеш Canvas будет не уникальным, а, наоборот, идентичным в устройствах с одинаковой аппаратной частью. А сотрудники Google в 2006 году начали использовать эту особенность Canvas, чтобы классифицировать устройства и видеть, когда их пытаются подделать или имитировать.

Rendering differences between Safari on real iPhone vs emulator.
Разница в рендеринге браузера Safari на реальном iPhone и на имитированном устройстве

Несмотря на то, что это далеко не новая работа (2006 год), компания Cloudflare также внедрила эту технологию и у себя. Это очень крупная компания, поэтому такая технология как Picasso обеспечит должную работу механизма по обнаружению имитирования устройств.

Система Picasso проводит проверку на предмет имитирования операционной системы и самого типа устройства. У этих компаний (Google и Cloudflare) существуют базы данных, где находятся уже вычисленные хеши реальных устройств. Поэтому может показаться, что избежать проверки от Picasso будет довольно непросто. Ведь наверняка у Google и Cloudflare должно быть много записей в этой базе данных, чтобы проверить подлинность устройства.

Вывод: «Будь тем, кем ты кажешься, или кажись тем, кем ты являешься»

Будто бы специально для нашей статьи поэт Руми сказал эти слова.

На протяжении уже довольно длительного времени мы советуем всем пользователям Multilogin выбирать в программе подходящую операционную систему, на которой будет работать браузерный профиль.

Несомненно, мы в Multilogin предпринимаем определенные решения, чтобы обойти системы обнаружения. Наше приложение подбирает нужные шрифты, предоставляет достоверные canvas-данные, но, несмотря на это, пользователям нужно думать о том, чтобы оставаться настолько «правдоподобными», насколько это возможно.

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

Основное правило — это смешаться с толпой и не стать тем, на кого все покажут пальцем. Если вы хотите качественно скрывать свое реальное устройство, воспользуйтесь советом Руми: «Будь тем, кем ты кажешься, или кажись тем, кем ты являешься».