Мы продолжаем изучать, как IoT влияет на повседневную жизнь пользователей и их информационную безопасность. В предыдущем исследовании мы затронули вопрос возможности перехвата аутентификационных данных с помощью одноплатных микрокомпьютеров. В этот раз мы решили обратить внимание на носимые устройства — умные часы и фитнес-трекеры. Точнее, на встроенные в них акселерометры и гироскопы.
Репринт оригинальной публикации Securelist от 29 мая 2018.
После шумихи вокруг Strava мы знаем, что даже обезличенные данные о физической активности множества пользователей способны сделать публичной совсем непубличную информацию. Но в случае конкретного человека все может оказаться куда хуже: опасность возникает каждый раз, когда пользователь вводит в банкомате ПИН-код, авторизуется на каком-либо сервисе или разблокирует смартфон.
В ходе исследования мы выяснили, какие возможности открывает анализ сигнала носимых устройств для потенциальных злоумышленников, и пришли к неутешительным выводам: несмотря на то, что встроенные в изученные гаджеты датчики не могут (пока) составить альтернативу “традиционным” кейлоггерам, они позволяют сформировать поведенческий профиль пользователя и зафиксировать моменты ввода критически важных данных. Такое профилирование может происходить незаметно, с помощью легитимных приложений, исполняемых непосредственно на самом устройстве. Оно дает “умельцам” дополнительные возможности по проникновению в частную жизнь жертвы и облегчает доступ к корпоративной сети компании, в которой она работает.
Итак, обо всем по порядку.
Поведенческое профилирование пользователей
Когда мы читаем описание носимых устройств, то прежде всего видим, что это “миниатюрные цифровые гаджеты”. Однако важно понимать, что большинство умных часов является киберфизическими системами, поскольку оснащены датчиками ускорения (акселерометрами) и вращения (гироскопами). Нередко в них встроены еще и датчики магнитного поля (магнитометры). Что можно узнать о пользователе, если непрерывно записывать сигналы с этих сенсоров? Больше, чем хотелось бы владельцу гаджета.
Для нашего исследования мы написали довольно простое приложение на основе референсного кода Google и провели несколько занятных экспериментов cо смарт-часами Huawei Watch (первое поколение), Kingwear KW88 и PYiALCYX200, работающими на базе операционных систем Android Wear 2.5 и Android 5.1 for Smartwatch. Выбор был продиктован доступностью устройств и, конечно, простотой написания приложений для них (полагаем, что алгоритмы работы со встроенными гироскопом и акселерометром в iOS могут быть аналогичны тому, что мы опишем ниже).
Чтобы определить оптимальную частоту опроса сенсоров, мы провели серию испытаний с разными устройствами, начав с таких маломощных (с процессорной точки зрения) образцов, как Arduino 101 и Xiaomi Mi Band 2. Однако скорость опроса датчиков и отправки данных оказалась неудовлетворительной — для получения более-менее внятных значений взаимной корреляции нужно было обеспечить частоту опроса сенсоров не менее 50 Гц. От скорости опроса более 100 Гц мы тоже отказались: 8 Кбайт данных в секунду может быть не так и много, но не для многочасовых “логов”. В итоге наше приложение опрашивало встроенные датчики с частотой 100 Гц и записывало данные о мгновенных значениях показаний акселерометра и гироскопа по трем осям (x, y, z) в память телефона.
Сразу скажем, что получить “цифровой слепок” за весь день на практике не так-то просто, поскольку заряда аккумулятора устройства Huawei хватает не более чем на шесть часов автономной работы в таком режиме.
Но давайте посмотрим на показания акселерометра в течение этого времени. По вертикали приведены величины ускорения в м/с2, по горизонтали — номера отсчетов (в среднем каждый соответствует 10 миллисекундам). Для полноты картины ниже представлены графики показаний акселерометра и гироскопа.
На графиках можно увидеть пять областей, в которых четко видны разные паттерны. А если вы помните кинематику, то они расскажут вам очень многое о пользователе.
Самый очевидный паттерн движения — это ходьба. С него мы и начнем.
Рука с умными часами во время ходьбы колеблется по аналогии с маятником. Колебание маятника — это периодический процесс. Поэтому если на графике присутствуют области, где ускорение или показатели ориентации датчика движения меняются по периодическому закону, можно предположить, что в этот момент пользователь куда-то шел. Стоит отметить, что при анализе данных показания обоих сенсоров — как акселерометра, так и гироскопа — имеет смысл изучать в комплексе.
Взглянем подробнее на области, где наблюдаются наибольшие колебания за короткие промежутки времени (это фиолетовые зоны Pattern 1, Pattern 3, Pattern 5).
В нашем случае отрезок времени, в течение которого наблюдались периодические колебания руки, составил 12 минут (Pattern 1, рисунок выше). Не запрашивая геоинформацию, трудно сказать, куда точно шел пользователь, хотя если дважды численно проинтегрировать данные ускорения, видно, что с точностью до констант интегрирования, каковыми являются начальная скорость и координаты, человек явно куда-то перемещался, причем в разных характерных направлениях и с разной характерной скоростью.
Примечательно, что если отложить перемещение по оси Y в зависимости от перемещения по оси X, получается примерный путь человека. Скорее всего, дистанции тут определены неточно, но порядок верный — тысячи метров, и это на самом деле впечатляет, поскольку способ очень примитивный. Для уточнения пройденной дистанции можно воспользоваться антропометрическими данными и примерно оценить длину каждого шага (что, в общем-то, и делают фитнес-трекеры), но мы оставим это за пределами нашего исследования.
Более спокойные участки анализировать сложнее. Понятно, что в это время человек не совершает активных движений. Ориентация часов не меняется, а ускорение присутствует, что подсказывает, что человек перемещается в пространстве на автомобиле (или лифте).
Ниже показан еще один отрезок длительностью 22 минуты. Это явно не ходьба — периодичных колебаний сигнала не наблюдается. Однако мы видим периодическое изменение огибающей сигнала ускорения по одной оси. Это может быть общественный транспорт, который движется прямолинейно, но с остановками. Что же это? Маршрутное такси?
А вот еще один отрезок.
Предположительно это смесь коротких участков ходьбы (по несколько секунд), пауз, резких взмахов рукой. Можно предположить, что человек находится в закрытом помещении.
Ниже мы расшифровали все области на графике.
Это три промежутка ходьбы по 12, 3 и 5 минут, между которыми испытуемый ехал на метро (20 и 24 минуты). Короткий пеший отрезок имеет определенные особенности, поскольку это была пересадка с одной станции метро на другую. Они хорошо видны, но нас интересовал вопрос определения их с помощью алгоритмов, доступных для исполнения на самих носимых устройствах. Поэтому вместо нейронных сетей, которые, как мы уже знаем, очень неплохо справляются с такого рода задачами, мы использовали простейший подсчет взаимной корреляции.
Взяв два паттерна ходьбы (обозначим их как Walking 1 и Walking 2), мы рассчитали их взаимную корреляцию и взаимную корреляцию с шумовыми данными, использовав массивы сигнальных данных длительностью по 10 секунд.
Function Experiment |
max (cor) Ax | max (cor) Ay | max (cor) Az | max (cor) Wx | max (cor) Wy | max (cor) Wz |
Walking 1 and Walking 2 | 0,73 | 0,70 | 0,64 | 0,62 | 0,41 | 0,83 |
Walking 1 and Noise | 0,33 | 0,30 | 0,32 | 0,30 | 0,33 | 0,33 |
Максимумы функций взаимной корреляции паттернов ходьбы друг с другом и ходьбы с произвольным шумовым паттерном
Из таблицы видно, что даже такой элементарный подход, как подсчет функции взаимной корреляции, позволяет идентифицировать паттерны движения пользователя в его “цифровом слепке” с точностью (если очень грубо интерпретировать корреляцию) до 83%. Этот показатель может выглядеть не таким уж высоким, но подчеркнем — мы не оптимизировали размер выборки и не использовали сложные алгоритмы, например метод главных компонент.
Что это дает потенциальному злоумышленнику? Идентифицировав моменты перемещения в метро и зная характерные направления, можно определить, по какой ветке пользователь ездит. Конечно, с данными об ориентации осей X и Y в пространстве, информация о которых получается с помощью магнитометра, было бы намного проще. Но, к сожалению, сильные электромагнитные наводки от электродвигателей, невысокая точность определения направления на север и сравнительно низкая распространенность магнитометров в умных часах заставили нас отказаться от этой идеи.
Без данных об ориентации осей X и Y в пространстве (скорее всего, разных на отдельных отрезках) вопрос расшифровки траектории движения усложняется, сводясь к геометрической задаче наложения отрезков известной длины на карту местности. Опять же, если попробовать поставить себя на место злоумышленника, можно предположить, что всплески магнитного поля будут “выдавать” моменты разгона и торможения электропоезда (а также трамвая и троллейбуса), что даст дополнительную информацию, позволяющую уточнить количество промежуточных точек на интересующих его отрезках. Но это мы тоже пока оставим за рамками нашего исследования.
Киберфизический перехват критически важных данных
Но что может дать знание о поведении пользователя? На самом деле не так уж и мало. Можно определить, когда он приходит на работу, вводит пароль доступа от корпоративного компьютера, разблокирует телефон. Сопоставив данные о перемещении человека с координатами, можно определить моменты посещения банка и ввода ПИН-кода на клавиатуре банкомата.
ПИН-код банковской карты
Насколько легко перехватить ПИН-код по сигналам акселерометра и гироскопа с надетых на руку умных часов? Мы попросили четырех добровольцев ввести свой ПИН-код на реальном банкомате.
Забегая немного вперед, скажем: элементарными методами из показаний датчиков получить ПИН-код банковской карты в открытом виде не так-то просто. Однако этот кусок “акселерометрического лога” демонстрирует определенные особенности — так, в первой половине графика видно горизонтальное положение руки, а во второй половине заметны колебания значений при нажатии на клавиши банкомата. Особенности сигналов по трем осям акселерометра и гироскопа с применением нейронных сетей, если верить коллегам из “Стивенсовского технологического института“, позволяют расшифровать ПИН-код произвольного человека с точностью не менее 80%. Слабым местом такой атаки является то, что нейронную сеть пока что затруднительно реализовать на вычислительных мощностях умных часов, однако выявить данный паттерн с помощью простейшего подсчета взаимной корреляции, чтобы впоследствии “слить” его для расшифровки на более мощной ЭВМ, — вполне реально. Что мы, собственно, и сделали.
Function Experiment |
max (cor) Ax | max (cor) Ay | max (cor) Az | max (cor) Wx | max (cor) Wy | max (cor) Wz |
One person and different tries | 0,79 | 0,87 | 0,73 | 0,82 | 0,51 | 0,81 |
Максимумы функций взаимной корреляции данных ввода ПИН-кода на банкомате
Опять же, если достаточно грубо интерпретировать полученные результаты, можно утверждать, что точность идентификации паттерна ввода ПИН-кода в общем потоке сигнальной информации составляет порядка 87%. Не так уж и мало.
Парольная фраза от компьютера и код разблокировки телефона
Помимо визитов к банкомату, нас интересовало еще два сценария, в которых умные часы могут увеличить уязвимость пользователя: ввод пароля и разблокировка смартфона. Мы, конечно, уже знали ответ (для компьютера и для телефона), полученный с помощью нейронной сети,но все же нам было интересно проверить на собственной шкуре, насколько опасно ношение умных часов.
Конечно, для перехвата пароля от компьютера нужно каким-то образом заставить человека носить умные часы на обеих руках, что не выглядит как вероятный сценарий. И хотя теоретически можно восстановить семантически осмысленный текст по сигналам с одной руки, применяя словари, это не поможет, если пароль достаточно сильный. Но, опять-таки, основная опасность тут не столько в восстановлении парольной фразы только по сигналам датчиков, сколько в простоте выделения моментов ввода. Рассмотрим эти сценарии детально.
Мы попросили четырех человек ввести в компьютер одну и ту же фразу из 13 символов 20 раз. Двое из них также четырежды (каждый) разблокировали смартфон LG Nexus 5X, используя 4-значный ключ. Дополнительно мы записали движения каждого из участников, когда они эмулировали “обычное” поведение — в частности, общаясь в чате. По окончании эксперимента мы синхронизировали время показаний, отрезав лишние сигналы.
Всего было получено 480 дискретных функций для всех осей сенсора. Каждая из них содержит 250-350 отсчетов, точное количество зависит от времени набора парольной фразы или произвольных данных (порядка трех секунд).
При визуальном сравнении полученные графики почти идентичны, экстремумы совпадают, что отчасти обусловлено одинаковым характером ввода пароля во всех попытках. Это значит, что несколько цифровых отпечатков одного и того же человека очень похожи друг на друга.
При наложении сигналов, полученных от разных людей, видно, что хотя вводят они одну и ту же фразу, делают это по-разному, и даже визуально экстремумы не совпадают!
С мобильным телефоном ситуация похожая. Кроме того, акселерометр фиксирует моменты нажатия на экран большим пальцем, по которым легко определить длину ключа.
Но, как говорится, глаз можно и обмануть. А вот статистику обмануть значительно труднее. Мы начали с самого простого и очевидного — посчитали функции взаимной корреляции между попытками ввода парольной фразы одного и того же человека и между попытками ввода пароля разных людей.
В таблице указаны максимумы функций взаимной корреляции данных соответствующих осей акселерометра и гироскопа.
Function Experiment |
max (cor) Ax | max (cor) Ay | max (cor) Az | max (cor) Wx | max (cor) Wy | max (cor) Wz |
One person | 0,92 | 0,63 | 0,71 | 0,55 | 0,76 | 0,96 |
Different persons | 0,65 | 0,35 | 0,31 | 0,23 | 0,37 | 0,76 |
Максимумы функций взаимной корреляции данных ввода пароля разными людьми для настольного компьютера
Отсюда видно, что даже такой простой и прямолинейный подход, как подсчет корреляций, может обеспечить, грубо говоря, точность идентификации человека до 96%! Если же сравнить максимумы функции взаимной корреляции для сигналов разных людей в режиме ввода произвольного текста, то максимум корреляции не превышает 44%.
Function Experiment |
max (cor) Ax | max (cor) Ay | max (cor) Az | max (cor) Wx | max (cor) Wy | max (cor) Wz |
One person and different activity | 0,32 | 0,27 | 0,39 | 0,26 | 0,30 | 0,44 |
Максимумы функций взаимной корреляции данных соответствующих, различной деятельности (ввод пароля vs. обычный серфинг)
Function Experiment |
max (cor) Ax | max (cor) Ay | max (cor) Az | max (cor) Wx | max (cor) Wy | max (cor) Wz |
Oneperson | 0,64 | 0,47 | 0,56 | 0,41 | 0,30 | 0,58 |
Different persons | 0,33 | 0,40 | 0,40 | 0,32 | 0,38 | 0,34 |
Максимумы функций взаимной корреляции данных ввода кода разблокировки одним и тем же человеком и разными людьми
Обратите внимание, что самые маленькие значения функции взаимной корреляции мы получили для ввода кода разблокировки смартфона (до 64%), а самые большие (до 96%) — при вводе пароля от компьютера. Это вполне объяснимо, ведь перемещение руки и соответствующие ускорения — линейные и угловые — в момент разблокировки минимальны.
Однако еще раз отметим, что для подсчета функции корреляции вполне достаточно даже тех вычислительных мощностей, что есть в распоряжении смарт-часов, а значит, эту задачу “умный” носимый гаджет может решать самостоятельно!
Выводы
Выражаясь языком информационной безопасности, носимые киберфизические системы однозначно расширяют поверхность атаки для потенциальных злоумышленников. Причем основная опасность лежит не в области прямого перехвата вводимых данных — это достаточно сложно (наиболее успешные результаты достигаются с применением нейронных сетей), и точность пока оставляет желать лучшего. Опасность скрывается в возможностях профилирования физического поведения пользователей по сигналам встроенных датчиков. Будучи “умными”, устройства способны начинать и останавливать запись информации с датчиков не только по командам извне, но и по наступлению определенных событий или выполнению определенных условий.
Записанный сигнал может быть передан телефоном на сервер злоумышленника, как только появится доступ к Интернету. Так ничем не примечательное фитнес-приложение или новый циферблат часов из магазина Google Play вполне может использоваться против вас, причем уже сейчас. Усугубляется ситуация тем, что достаточно один раз отослать вашу геометку и запросить разрешение на получение адреса электронной почты, на которую зарегистрирован аккаунт Google Play, и по вашим движениям можно будет узнать, кто вы, куда ходили, как часто пользовались смартфоном и когда вводили ПИН-код в банкомат.
Мы обнаружили, что извлечь из потока данные, которые, вероятно, будут соответствовать паролю или другой чувствительной информации — имени, фамилии, адресу электронной почты — довольно просто. Впоследствии, применив к ним всю мощь алгоритмов распознавания на ПК или в облачных сервисах, злоумышленники, как уже было показано ранее, могут восстановить чувствительную информацию по записям сигналов акселерометра и гироскопа. Кроме того, накопление этих сигналов в течение длительного времени позволяет, по сути, отслеживать перемещения пользователя — причем без использования геоинформационных сервисов (таких как GPS, GLONASS или сигналов вышек базовой связи).
Мы установили, что применение доступных даже для вычислительных мощностей самого носимого устройства методов анализа сигналов с таких встроенных датчиков, как акселерометры и гироскопы, , позволяет установить моменты ввода одного и того же текста (например, данных аутентификации) с точностью до 96% в случае с настольными компьютерами и с точностью до 64% — с мобильными гаджетами. Для последних этот показатель можно было бы повысить путем написания более сложных алгоритмов обработки полученных сигналов, но мы умышленно стремились использовать самый простой математический аппарат. Учитывая, что мы смотрели на данный эксперимент через призму его опасности для корпоративных пользователей, результат, полученный нами для настольного компьютера, вызывает серьезную тревогу.
Вероятный сценарий применения носимых устройств злоумышленниками связан с загрузкой на смарт-часы легитимного приложения — например, фитнес-трекера, который периодически будет отправлять на сервер пакеты данных размером в несколько десятков килобайт (в частности, для 13-символьной парольной фразы размер несжатой “сигнальной сигнатуры” составил порядка 48 килобайт).
Поскольку сами по себе программы не являются вредоносными, мы предполагаем, что, помимо экспериментально проверенных нами устройств на Android Wear/Android for Smartwatch, такой сценарий может быть применим и для смарт-часов продукции Apple.
Рекомендации
В то же время есть несколько признаков, по которым можно определить, что загруженное на смарт-часы приложение, скорее всего, небезопасно.
- Так, если приложение отправляет запрос на получение данных об аккаунте пользователя (разрешение GET_ACCOUNTS в Android), это повод для беспокойства — ведь злоумышленникам надо сопоставить “цифровой отпечаток” с его владельцем. Впрочем, в программе также может быть предусмотрена регистрация с вводом адреса электронной почты — но в этом случае вы хотя бы вольны ввести адрес, отличный от адреса учетной записи Google Play, к которому привязана банковская карта.
- Если же приложение дополнительно запрашивает разрешение на отправку геолокационных данных, то ваше беспокойство должно возрасти еще больше. Очевидная рекомендация в этой ситуации: не стоит выдавать фитнес-трекерам, которые вы загружаете на свои умные часы, лишних разрешений и указывать при регистрации корпоративные электронные адреса.
- Быстрый расход заряда батареи устройства также может быть серьезным поводом для беспокойства. Если ваш гаджет держит заряд вместо суток всего несколько часов, не исключено, что это сигнал о том, что за вами установлена слежка. Теоретически часы могут хранить до 57 часов записей вашей активности и сливать эти данные в сеть.
В целом мы рекомендуем настоятельно присмотреться к смарт-часам, которыми щеголяют сотрудники вашей компании, и, возможно, регламентировать их использование в политиках безопасности. Мы планируем продолжать наши исследования таких киберфизических систем, как носимые умные гаджеты, и дополнительных рисков, возникающих в результате их использования.