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

Умные розетки Сбера как домашняя лаборатория

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров3.5K

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

Меня зовут Сергей Лурье, и это мой первый пост на Хабре, в котором я хотел бы рассказать о результатах эксперимента по детектированию активности пользователя с помощью умной розетки 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-энтузиастов!

Теги:
Хабы:
+13
Комментарии10

Публикации

Истории

Работа

Data Scientist
81 вакансия

Ближайшие события

Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область