Сводка. Точная идентификация устройств IoT — сложная задача. Мы проходим через некоторые из успехов и неудач.

(Часть 1 этой серии вы можете найти по этой ссылке.)

Проблема 2: Как идентифицировать устройства IoT?

Основная проблема. Предположим, вы впервые используете IoT Inspector. У вас есть десятки умных устройств. Вы сканируете свою домашнюю сеть с помощью IoT Inspector. Вы видите список IP-адресов и MAC-адресов.

Вы не знаете, какой IP/MAC-адрес представляет интерес для вашего устройства. IP/MAC-адреса не читаются вами. Откуда вы знаете, какое устройство нужно проверить, если вы не знаете, что это такое?

Способ 1: Спросите других людей (например, краудсорсинг)

В настоящее время IoT Inspector дает каждому пользователю возможность маркировать свои устройства. Ниже приведен снимок экрана, на котором я запускаю IoT Inspector, где меня просят дополнительно ввести имя и производителя этого устройства.

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

Не совсем. Есть несколько проблем.

Проблема 1. Не все маркируют свои устройства. Как мы обнаружили в нашей статье 2020 года, менее 25% отслеживаемых устройств были помечены пользователями, и менее 50% пользователей пометили хотя бы одно из своих устройств.

Проблема 2. Некоторые ярлыки несовместимы. Во-первых, пользователь мог неправильно написать определенные слова в метках; в нашем наборе данных (по состоянию на середину 2022 г.), например, 292 устройства помечены названием производителя «philips» (написание правильное), но 85 устройств помечены как «philips» и 7 устройств как «philip’s».

Другой источник несоответствий возникает из-за нескольких способов именования устройств одного и того же типа. Например, у Google Home есть несколько моделей, таких как Google Home и Google Home Mini, которые пользователи могут рассматривать как умный динамик или голосовой помощник. Кроме того, Amazon Echo может быть помечен как «Amazon Echo» или «Amazon Alex».

Точно так же поставщик может быть помечен по-разному. Например, компания Ring, поставщик камер наблюдения, была приобретена Amazon, поэтому устройства Ring на самом деле являются устройствами Amazon. Кроме того, мы видели экземпляры пультов дистанционного управления Logitech Harmony, помеченных как «logitech», так и «logitech Harmony» в качестве поставщика, хотя на самом деле поставщиком должен быть только «logitech».

Текущее исправление: Рукописные правила. Я не буду утомлять вас подробностями здесь. Подробнее вы можете узнать в разделе 5.1 нашей статьи. Это не лучшее решение, и мы изучаем автоматизированные методы, чтобы уменьшить количество написанных от руки правил.

Способ 2: Спросите само устройство

В некоторых случаях вы можете спросить устройство, кто это. Многие устройства используют такие протоколы, как mDNS и UPnP, для объявления своих идентификаторов. Во многих случаях, поскольку это самообъявления, они очень точны — за исключением того, что не многие устройства поддерживают такие протоколы.

В старой версии нашей статьи мы обнаруживаем, что объявления mDNS и UPnP очень точно определяют устройства.

Настройка эксперимента. Для иллюстрации мы получаем следующую информацию от каждого устройства:

  • FingerBank, проприетарный API, который принимает OUI устройства, строку пользовательского агента (если есть) и пять доменов, с которыми связывается устройство; он возвращает вероятное имя устройства (например, «Google Home» или «Generic IoT»).
  • Netdisco, библиотека с открытым исходным кодом, которая сканирует устройства умного дома в локальной сети с помощью SSDP, mDNS и UPnP. Библиотека анализирует любые последующие ответы в строки JSON. Эти строки могут включать саморекламируемое имя устройства (например, «google_home»).
  • Имя хоста из пакетов запроса DHCP. Устройство, отслеживаемое IoT Inspector, может периодически продлевать аренду DHCP; пакет запроса DHCP, если он перехвачен IoT Inspector, может содержать имя хоста устройства (например, «chromecast»).
  • Строка Агент пользователя HTTP (UA). IoT Inspector пытается извлечь UA из каждого незашифрованного HTTP-соединения. Если, например, UA содержит строку «tizen», скорее всего, это устройство Samsung Smart TV.
  • OUI, извлеченный из первых трех октетов MAC-адреса устройства. Мы переводим OUI в названия производителей на основе базы данных IEEE OUI. Мы используем OUI только для проверки меток поставщиков устройств, а не меток категорий устройств.
  • Домены: случайная выборка из пяти зарегистрированных доменов, к которым когда-либо подключалось устройство, на основе трафика, собранного IoT Inspector. Если выясняется, что один из доменов управляется поставщиком устройства (например, при проверке веб-сайтов, связанных с доменами), мы считаем, что устройство проверено.

Метод. Наша цель – проверить стандартную категорию устройства и ярлыки поставщиков, используя каждый из шести описанных выше методов. Однако этот процесс сложно полностью автоматизировать. В частности, выходные данные FingerBank и Netdisco, а также имена хостов DHCP и строки UA имеют большое количество вариаций; было бы серьезной инженерной задачей разработать регулярные выражения для распознавания этих данных и проверки их соответствия нашим меткам. Кроме того, процесс валидации часто требует экспертных знаний. Например, если устройство обменивается данными с xbcs.net, мы можем проверить этикетку поставщика устройства «Belkin» на основе нашего опыта работы с продуктами Belkin в нашей лаборатории. Однако сделать такой вывод вручную для каждого поставщика в масштабе было бы сложно. Учитывая эти проблемы, мы случайным образом выбираем не более 50 устройств из каждой категории (кроме «компьютеров» и «других»). Для каждого устройства мы вручную проверяем метки категории и поставщика, используя каждый из шести методов (за исключением OUI и доменов, которые мы используем только для проверки меток поставщика). Этот выборочный аудит приближает точность стандартизированных этикеток, не требуя ручной проверки всех 8 131 помеченных устройств.

Для каждого метода проверки мы записываем результат для каждого устройства следующим образом:

  • Нет данных. Источник данных для определенного метода проверки отсутствует. Например, некоторые устройства не реагируют на SSDP, mDNS или UPnP, поэтому Netdisco неприменима. В другом примере пользователь может запускать IoT Inspector недостаточно долго для захвата пакетов запросов DHCP, поэтому использование имен узлов DHCP неприменимо.
  • Проверено. Мы успешно проверили метки категорий и поставщиков одним из шести методов, кроме OUI и доменов, которые мы используем только для проверки меток поставщиков.
  • Не проверено. Метки категорий и/или поставщиков не соответствуют информации проверки, поскольку, например, пользователь мог допустить ошибку при вводе данных, и/или информация из методов проверки неверна. К сожалению, у нас нет способа различить эти две причины, особенно когда отсутствует идентификация наземного устройства. Таким образом, «Не проверено» не обязательно означает, что метки пользователя неверны.

Результаты проверки. Всего мы вручную выбрали 522 устройства из нашего набора данных: 22 устройства в категории "автомобиль" (потому что в категории "автомобиль" всего 22 устройства) и по 50 устройств в каждой. из оставшихся 10 категорий. На приведенной ниже диаграмме показан процент устройств, категории или ярлыки поставщиков которых мы проверили вручную, используя каждый из шести методов проверки.

Компромисс между точностью и доступностью. Как видите, существует компромисс между доступностью метода проверки и его эффективностью. Например, метод Netdisco доступен на меньшем количестве устройств, чем метод домена, но Netdisco может проверить больше устройств. Мы можем проверить 72,2% выбранных устройств с использованием доменов, но только 45,0% выбранных устройств с использованием Netdisco.

Одна из причин этой разницы заключается в том, что только 4,2% выбранных устройств не имеют доступных данных домена, в то время как 54,4% выбранных устройств не ответили на наши запросы Netdisco и, следовательно, не имеют данных Netdisco. Если мы игнорируем устройства, которые не имеют ни домена, ни данных Netdisco, 75,4% оставшихся устройств могут быть проверены с помощью доменов, а 98,7% могут быть проверены с помощью Netdisco.

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

А как насчет доменов? Несмотря на их доступность сейчас, образцы доменов могут не стать наиболее распространенным источником данных для проверки подлинности устройств в ближайшем будущем, поскольку доменные имена, скорее всего, будут зашифрованы:

  • DNS через HTTPS или через TLS набирает популярность, что затрудняет для наблюдателя на пути запись доменов, с которыми связывается устройство.
  • Кроме того, поле SNI, которое включает имя домена, в сообщениях TLS Client Hello может быть зашифровано в будущем.

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