Привет, друзья!

Меня зовут Сергей Лурье, и это мой первый пост на Хабре, в котором я хотел бы рассказать о результатах эксперимента по детектированию активности пользователя с помощью умной розетки Sber SBDV-00123W

Для начала немного предыстории. Идея измерять энергопотребление ИТ-системы, подключив датчик тока в разрыв цепи питания переменного напряжения номиналом 230В, каковое используется в нашей стране, возникла примерно восемь лет назад, когда мы с коллегами в бизнес-инкубаторе «Лаборатории Касперского» тестировали спрос на решения по защите USB-портов мобильных устройств.

Вот это я слева на скриншоте промо-ролика устройства Pure.Charger на KickStarter с Женей Черешневым (справа)
Вот это я слева на скриншоте промо-ролика устройства Pure.Charger на KickStarter с Женей Черешневым (справа)

Мы обнаружили ряд публикаций, в которых рассказывались страшные истории о том, как злоумышленники могут получить несанкционированный доступ к вашему мобильному устройству при его подключении к USB-порту компьютера, даже если у вас не включен режим разработки мобильных приложений. Надо сказать, для некоторых моделей мобильных телефонов нам даже удалось некоторые страшные истории воспроизвести. А в качестве универсальной защиты мы придумали устройство под названием Pure.Charger, которое позволяло бы блокировать (или разрешать) соединение по шине данных USB-порта в зависимости от «репутации» конкретного USB-порта, например, в каком-либо общественном месте. Устройство оказалось дороговатым, а уникальное торговое предложение — сложноватым даже для той узкой аудитории параноиков, в которых мы целились. 

Ну и ладно, подумали мы, зато у нас возник вопрос:

А можно ли измерить флуктуации тока потребления при USB-подключении?

Как оказалось — очень даже можно. Можно даже посчитать, сколько энергии тратится на отправку одного бита данных по USB-шине и сравнить с пределом Ландауэра.

График изменения тока (в миллиамперах) при подключении мобильного телефона Google Nexus 5X к шине USB
График изменения тока (в миллиамперах) при подключении мобильного телефона Google Nexus 5X к шине USB

Как оказалось, на тот момент никто особенно и не интересовался вопросом энергопотребления при передаче данных по шине USB, и мы даже отправили полученные результаты (3,1х10-8..1,4х10-7 Дж/бит) в виде научной статьи в журнал IEEE Transactions on Mobile Computing (которая, правда, не вышла — рецензенты отклонили наш препринт с резолюцией «Сплошная эмпирика, не хватает математической модели», с чем нельзя было не согласиться). Но главный результат мы для себя получили — можно измерять энергопотребление, подключаясь в разрыв соединения адаптера питания устройства с сетью 230 Вольт. Разумеется, исключив токи зарядки.

Спустя два года мы воспроизвели этот эксперимент, заинтересовавшись вопросом:

А можно ли оценить изменение энергопотребления при заражении компьютера, например, криптомайнерами?

Криптомайнеры в качестве объекта исследования были выбраны неслучайно — именно в 2018 году наблюдался всплеск стоимости биткойна, который тогда еще можно было майнить на обычных, не специализированных устройствах. И злоумышленники начали заражать устройства ничего не подозревающих пользователей специальным видом зловредного ПО, которое начинало майнить криптовалюты (чаще всего Monero и им подобные, но их курс был привязан к биткойну).

Нехитрая схема экспериментального стенда для измерения энергопотребления зараженной системы, в которой использовался мультиметр (если быть точным, то два: один для измерения тока, второй — для измерения напряжения)
Нехитрая схема экспериментального стенда для измерения энергопотребления зараженной системы, в которой использовался мультиметр (если быть точным, то два: один для измерения тока, второй — для измерения напряжения)
Типичная картина загрузки процессора системы в момент майнинга
Типичная картина загрузки процессора системы в момент майнинга

Сопоставив данные по срабатываниям антивируса Касперского, классифицировавших зловред как криптомайнеры и данные по распределению TDP (Thermal Design Power – номинальное значение энергопотребления при 100% нагрузке, которые нужно было скрейпить отдельно, но об этом, может быть, как-нибудь в другой раз), нам удалось посчитать, какую мощность майнинга мы предотвратили (порядка 19 Гигаватт) и прикинуть, сколько электроэнергии нам удалось сэкономить для нашей планеты. Спойлер: не так много, как потратили все биткойн-майнеры в тот же год, но все же ощутимо: порядка 1000 МВт-часов, на которые в ценах того же года пришлось бы потратить около 3 миллионов рублей.

После всех этих экспериментов мы с коллегами в «Лаборатории Касперского», конечно же, не могли не заинтересоваться тем, как поведут себя ИТ-системы в разных сценариях нагрузки и, в том числе, при заражении разными видами зловредного ПО. Например, шифровальщиками, которые, если дать им волю, непременно превратят содержимое вашего жесткого диска в нечитаемые последовательности нулей и единиц. Причем без гарантии, что если вы заплатите вымогателям требуемые ими деньги (чаще всего — в биткойнах), вы сможете получить свои данные обратно. Была проведена серьезная работа в партнерстве с университетами Манчестера и Нотингема, в том числе, разработана математическая модель ИТ-систем под определенным видом нагрузки — мы учли замечания рецензентов из EEE Transactions on Mobile Computing. Но, увы, начался 2022 год и иностранные академические институты начали резко отказываться от совместных публикаций. Поэтому в 2023 году я задался уже другим вопросом:

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

Поскольку я уже год как работал в Сбере, я обратился к коллегам в SberDevices, от которых  узнал, что в умных розетках Sber SBDV-00123W применяются встроенные измерители напряжения и тока, к которым присоединены 24-разрядные АЦП (аналогово-цифровые преобразователи). Что, вообще говоря, сопоставимо с чувствительностью АЦП в мультиметрах, которые использовались в предыдущих экспериментах. Данные измерений передаются розеткой по Wi-Fi в облако Умного Дома, откуда их можно увидеть в соответствующем приложении. Розетка измеряет напряжение в сети чтобы в случае повышенного напряжения отключить технику и спасти ее от повреждения. В приложении Салют можно настраивать порог отключения, по умолчанию стоит 253В в соответствии с ГОСТ. Аналогично с током - можно настроить порог от 0,1 до 16 А и розетка отключит нагрузку при превышении порога. Такой настраиваемый автоматический выключатель получается.

Фрагмент экрана приложения «Салют!» с подключенной умной розеткой, показывающей уровень напряжения и силы тока
Фрагмент экрана приложения «Салют!» с подключенной умной розеткой, показывающей уровень напряжения и силы тока

По ходу эксперимента возникла одна проблема – алгоритм передачи показаний от розетки на сервер работал таким образом, чтобы минимизировать трафик и небольшие колебания тока не передавались. А нам нужно было передавать результаты измерений максимально часто. Коллеги (особенно хотел бы выразить благодарность Дмитрию Маняхину - @ditivi и Алексею Цветкову - @Tsvetik) помогли сделать модифицированную прошивку для розетки, которая отдает данные об энергопотреблении по Bluetooth LE (BLE), и мы поставили следующий эксперимент, схема которого была аналогична предыдущим, только вместо мультиметра  использовалась умная розетка, транслировавшая на компьютер через BLE данные измерения тока, напряжения, и мощности.

Для сбора информации о паттернах энергопотребления было принято решение записать серии показаний, получаемых от умной розетки с темпом 2 Гц (то есть, мы пишем среднеквадратичные значения переменного тока, усредняя значения каждые 25 периодов). Можно, конечно, было бы и чаще, но в предыдущих экспериментах использовались мультиметры, выдавшие RMS-величины (RMS - Root Mean Square, среднеквадратичное значение) также раз в 0,5 с, поэтому, для сопоставления с ранее полученными результатами, мы с коллегами остановились именно на этом темпе опроса датчика.

Схема эксперимента и скриншот IDE, в котором запущен соответствующий скрипт.
Схема эксперимента и скриншот IDE, в котором запущен соответствующий скрипт.

Профили активности, которые были выбраны для эксперимента, включали в себя: работу в офисном пакете (LibreOffice) — этот сценарий эмулировал полезную (насколько этот термин применим в данном контексте) работу офисного планктона; выгрузку файлов в облако — этот сценарий эмулировал этап эксфильтрации данных в какой-либо сложной (или не очень) кибератаке, когда злоумышленник, проникший в сеть компании, начинает активно куда-то сливать информацию; просмотр видео в YouTube и, конечно же, сценарий «ничегонеделания» (мой самый любимый, контрольная группы). Изначально я даже предпринял попытку отделить сценарий просмотра видео в YouTube от YouTube трансляции (но впоследствии убедился, что с точки зрения паттернов энергопотребления они друг от друга неотделимы).

Вот примерно так выглядят временные ряды (паттерны) энергопотребления для разных сценариев нагрузки. Красный цвет соответствует «ничегонеделанию», сиреневый — работе в LibreOffice, синий — загрузке файлов, и между ними желтый и зеленый — две вариации просмотра видео в YouTube.
Вот примерно так выглядят временные ряды (паттерны) энергопотребления для разных сценариев нагрузки. Красный цвет соответствует «ничегонеделанию», сиреневый — работе в LibreOffice, синий — загрузке файлов, и между ними желтый и зеленый — две вариации просмотра видео в YouTube.

С точки зрения машинного обучения, это, с одной стороны, тривиальная задача классификации, но, с другой стороны, это задача классификации временных рядов, для которой нейросетевые методы не так сильно развиты, как, например, для задач NLP, коими я занимаюсь в основное рабочее время. На выручку пришел фреймворк LightAutoML (LAMA), развиваемый коллегами в Сбере. Осталось только решить задачу оптимизации размера временного ряда, то есть, найти такое значение количества отсчетов, при котором функция потерь минимальна (а интересующая нас функция качества — в данном случае, макроусредненная F-мера, наоборот, максимальна).

График зависимости функции потерь (красным), точности (синим), полноты (зеленым) и F-меры (черным) в зависимости от времени (по оси абсцисс)
График зависимости функции потерь (красным), точности (синим), полноты (зеленым) и F-меры (черным) в зависимости от времени (по оси абсцисс)

Первый подход к снаряду оказался не очень впечатляющим: LAMA в качестве оптимальной модели выдает комбинацию из LightGBM и CatBoost, при этом достаточно много ложноположительных срабатываний, особенно из-за смешения двух близких классов YouTube. Поэтому первое очевидное решение: объединить датасеты для двух близких классов в один.

FFT-спектр паттернов энергопотребления для разных сценариев нагрузки (нулевая гармоника, соответствующая среднему значению, отфильтрована для лучше наглядности)
FFT-спектр паттернов энергопотребления для разных сценариев нагрузки (нулевая гармоника, соответствующая среднему значению, отфильтрована для лучше наглядности)

Второе решение не так очевидно, и оно проистекает из нашего знания о природе изучаемых сигналов — в частности того, что они являются квазипериодическими. А значит, их можно преобразовать в дискретный Фурье-спектр, используя FFT-преобразование (FFT – Fast Fourier Transform). В статье, которая, к сожалению, не вышла в 2022 году, коллеги из Нотингема и Манчестера разработали математическую модель ИТ-системы и даже показали хорошее совпадение между предсказанными FFT-спектрами и теми, что наблюдались экспериментально.

График зависимости функции потерь (красным), точности (синим), полноты (зеленым) и F-меры (черным) для FFT-представления паттернов энергопотребления
График зависимости функции потерь (красным), точности (синим), полноты (зеленым) и F-меры (черным) для FFT-представления паттернов энергопотребления

Объединив два подхода в один, получились куда более внятные результаты: макроусредненная F-мера классификации пользователя по паттернам энергопотребления достигла 83%, при этом точность определения, например, сценария выгрузки файлов, превысила 90%.

Выводы

Поскольку меня интересовал вопрос качества данных, которые мы можем снимать с встроенных в умную розетку датчиков, я не стал глубоко копать алгоритмы обработки данных и разрабатывать сложные нейросетевые модели, заточенные на классификацию FFT-спектров, а остановился на тех быстрых результатах, которые выдавал LAMA. И они меня воодушевили: оказывается, даже с помощью сравнительно простых ML-алгоритмов, каковыми являются GBM/CatBoost, можно определять, чем загружен компьютер пользователя, каждые 60-100 секунд, с вполне себе интересной точностью. Какое тут может быть практическое применение, сказать пока трудно: это может быть и непрерывная аутентификация, и определение профиля пользователя или выявление аномалий в его поведении, что может быть востребовано специалистами по кибербезопасности и/или HR. Но одно можно сказать точно: умная розетка Sber  — это не только возможность её включения и выключения через приложение, а еще и довольно точный измерительный прибор, который можно применять для пусть и любительской, но вполне себе науки.

Отдельно стоит еще раз отметить, что для эксперимента мы использовали модифицированную прошивку для умной розетки Sber, чтобы забирать с нее данные измерений локально, а не в облако. Алгоритм сбора данных также был модифицирован чтобы получать сырые данные максимально быстро и с максимальной точностью. Для бытовых нужд такой функционал не нужен, поэтому в стандартных прошивках он отсутствует. Штатные функций защиты от повышенного напряжения и тока реализованы прямо в прошивке розетки и работают локально на ней, поэтому и передавать данные на сервер часто не требуется. Ну и связи с облаком может вообще не быть, а защитные функции должны работать, поэтому такие вещи всегда обязаны работать локально. Благодаря этому розетка надежно спасает электроприборы от повышенного тока и напряжения, даже если она не подключена к сети передачи данных.

Если есть идеи по тому, что ещё можно было бы поисследовать вместе с коллегами из SberDevices, или же просто пообщаться на тему DIY-электроники и IoT – вступайте в наше сообщество DIY-энтузиастов!

Комментарии (10)


  1. spc
    21.05.2024 11:04
    +2

    можно определять, чем загружен компьютер пользователя

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

    Под руками древний лаптоп с Windows 7. С недавних пор у него после старта начал выходить на взлет кулер. Думал, что где-то подобрал майнера. Но для начала открыл Монитор ресурсов и увидел, что процессор перманентно на 25% грузит процесс обновления ОС (который, вероятно, где-то заклинило). После снятия задачи - тишина и покой.

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

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


    1. Archelephant Автор
      21.05.2024 11:04

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


  1. ponikrf
    21.05.2024 11:04

    Прочитал - но честно не понял о чем конкретно статья.

    О том что существуют умные розетки сбера? Зашел на их сайт - чуть глаза не лопнули, спасибо - не надо.

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

    О том что купив розетку умную от сбера можно узнать по потреблению что завелся майнер? Тоже очень сомнительно.

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

    БУууу у вас могут собирать данные о пользовании девайса по току

    Потом тут же

    Отдавайте свои данные в сбер! Смотрите, как можно натравить ИИ что бы определять что вы делаете

    ОК.

    Теперь по поводу умных розеток и тп.

    Я в целом не против умных розеток и тп. Но как вы сами в статье написали, что под ваши задачи их пришлось перепрошивать. И это проблема современных вендоров подобного шлака. Если прошивка закрытая и ее нельзя модицировать - это ОЧЕНЬ сильно сужает возможности использования. А облака Only решения, это значит что в любой момент ваше решение перестанет работать.

    Наученые горьким опытом могу сказать вот что - по началу кажется что подобные решения это круто, но спустя 2-3 года, когда они перестают работать, так уже не кажется. И теперь мы стараемся загадывать железные решения в домашней автоматике МИНИМУМ на 7-10 лет вперед.

    Расскажу вот такую интересную историю - Ходим мы в МСК на какой то выставке. И там ребята показывают красивые управляемые патч панели, которые могут подсвечивать порты и тп, вобщем можно "световое шоу" на них устраивать.

    Ну мы подходим, спрашиваем

    - а софт для управления какой?

    - Windows only вот смотрите, тут клик, там клик, красота какая получается

    - А можно как то самим всем этим управлять, ну без вот этого вот говна?

    - Не, только так

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


    1. Archelephant Автор
      21.05.2024 11:04
      +1

      Во-первых, данные в Сбер в этом эксперименте не отдаются. Там есть ссылочка на репку в гитхабе - все собирается и обрабатывается локально.

      Во-вторых, данные можно брать не только с розетки Сбера. Лично меня поразило то, что если еще лет пять назад для такого эксперимента нужен был мультиметр, способный писать логи (стоил около 100 баксов), то сегодня эти данные можно брать с розетки стоимостью до 20 баксов.

      Есть умельцы, которые подключают любые розетки (в том числе и Яндекса, и Сбера) к Home Assistant - или тот же эксперимент можно собрать вообще на Arduino (https://lourie.info/?p=536). Но мне было интересно посмотреть, хватит ли точности встроенного в розетку АЦП, чтобы на нем какую-то поведенческую статистику собирать. Собственно, пост про это. Наверное, можно было бы сделать короче и четче - тут критика принимается.


      1. Jury_78
        21.05.2024 11:04
        +1

        мне было интересно посмотреть, хватит ли точности встроенного в розетку АЦП

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


        1. Archelephant Автор
          21.05.2024 11:04

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

          Хотя, казалось бы, можно было просто посмотреть в справочнике, да...

          Ах да, забыл упомянуть: в открытом доступе ТТХ встроенных в умную розетка Сбера АЦП не найти. Так что способ не подходит, сорри. Ну и, опять же, свет клином на Сбере не сошелся - как уже было сказано выше, можно для своих экспериментов взять любую другую розетку.


          1. Jury_78
            21.05.2024 11:04

            в открытом доступе ТТХ встроенных в умную розетка Сбера АЦП не найти

            Ну если там затерто до дыр, то да...


  1. NinaNina89
    21.05.2024 11:04
    +1

    Даже розетки с каждым годом все умнее и умнее. А вот люди...


  1. sekuzmin
    21.05.2024 11:04
    +1

    График изменения тока в темной теме выглядит готичненько


    1. Archelephant Автор
      21.05.2024 11:04

      Хах, прошу прощения, сделал прозрачным фон...