Американские исследователи опубликовали в журнале Science статью, в которой описан нетривиальный метод подглядывания за пользователем с помощью встроенного датчика освещенности. Такое устройство установлено абсолютно во всех смартфонах и планшетах, многих ноутбуках и телевизорах. Его основная задача — реагировать на изменение освещенности и соответственно изменять яркость дисплея.
Но для начала необходимо пояснить, зачем использовать плохо подходящий для записи изображения инструмент, когда в любом смартфоне можно воспользоваться обычной камерой? Дело в том, что такие «плохо подходящие» датчики обычно никак не защищены. Представим себе, что атакующий уговорил пользователя установить на смартфон вредоносную программу. Получить доступ к очевидно небезопасным системам, таким как микрофон или фотокамера, ей будет достаточно непросто, а вот к датчику освещенности — пожалуйста, сколько угодно.
Так вот, исследователи доказали, что такой датчик можно использовать в качестве замены фотокамеры. Например — получить снимок руки пользователя, который набирает пин-код на виртуальной клавиатуре. В теории после анализа таких данных можно реконструировать и сам пароль. Это крайне интересная научная работа, хотя и (спойлер!) совершенно непрактичная. В этой статье мы попробуем пересказать ее простыми словами.
Датчик освещенности — штука довольно примитивная. Это светочувствительный фотоэлемент, с помощью которого несколько раз в секунду измеряется яркость освещения. В цифровой фотокамере используются очень похожие (возможно, более миниатюрные) светочувствительные датчики, но там их много миллионов. Объектив проецирует на такую матрицу изображение, яркость каждого элемента измеряется, в результате получается цифровая фотография. По аналогии, датчик освещенности можно назвать самой примитивной цифровой фотокамерой в мире: ее разрешение составляет ровно один пиксель. Как вообще такая штука может фиксировать происходящее вокруг устройства?
Исследователи задействовали «Принцип взаимности Гельмгольца», сформулированный еще в середине девятнадцатого века. Помимо прочего, этот принцип широко применяется в компьютерной графике, значительно упрощая вычисления. В 2005 году на основе этого принципа был предложен метод так называемой двойной фотографии. Его проще объяснить на примере иллюстрации из этой работы:
Представьте, что вы фотографируете предметы, стоящие на столе. На предметы светит лампа, отраженный свет попадает в объектив фотоаппарата, получается фотография. Ничего необычного. На иллюстрации выше картинка слева — именно такой банальный фотоснимок. Но дальше исследователи начали, если предельно упростить, менять яркость лампы и фиксировать изменения освещенности. В результате было собрано достаточно информации, чтобы реконструировать снимок справа. Он снят как бы с точки зрения лампы. Фотоаппарата в этом месте нет и никогда не было, но на основе измерений такая сцена была успешно реконструирована.
Самое интересное, что для такого трюка фотоаппарат даже не нужен. Можно использовать простой фоторезистор… Такой же, как применяемый в датчике освещенности. Фоторезистор, «однопиксельный фотоаппарат», измеряет, как меняется отраженный от предметов свет. На основе этих данных создается фотография предметов. Качество такого изображения будет невысокое, и измерений надо провести много — сотни или тысячи.
Вернемся к свежему исследованию и датчику освещенности. Авторы работы использовали довольно крупный планшет Samsung Galaxy View c 17-дюймовым дисплеем. На экран планшета выводились различные паттерны из черных и белых прямоугольников. Перед экраном был установлен манекен, который выполнял роль пользователя, набирающего что-то на экранной клавиатуре. Датчик освещенности фиксировал изменения яркости. Несколько сотен таких измерений позволили получить изображение руки манекена. То есть авторы задействовали принцип взаимности Гельмгольца и получилась фотография руки, снятая как бы с точки зрения экрана. Исследователи превратили дисплей планшета в довольно крупную и крайне низкокачественную фотокамеру.
Видно и правда плохо. На иллюстрации выше слева показано то, что надо было зафиксировать. В одном случае это раскрытая ладонь манекена. В другом — как «пользователь» как бы нажимает что-то на дисплее. Изображения в центре — реконструированная «фотография» с разрешением 32х32 пикселя, в которой практически ничего не видно, слишком много шума в данных. Но алгоритмы машинного обучения помогли избавиться от шума так, чтобы получить изображения справа: там все-таки можно отличить одно положение руки от другой. Авторы работы приводят и другие примеры характерных жестов при работе с сенсорным экраном планшета. Точнее, то, как их удалось «сфотографировать»:
То есть что же получается, если применить этот метод на практике, можно следить, как пользователь управляет сенсорным дисплеем планшета или смартфона? Как он вводит текст на экранной клавиатуре? Как он вводит данные своей кредитной карты? Как открывает приложения? К счастью, не все так просто. Обратите внимание на подписи над «фотоснимками» на иллюстрации выше. Они показывают, насколько медленно работает этот метод. В самом лучшем случае исследователям удалось реконструировать «фото» руки за 3 с лишним минуты. На предыдущей иллюстрации изображение было получено и вовсе за 17 минут. Ни о какой реальной слежке с такими скоростями говорить не приходится. И теперь понятно, почему в большинстве экспериментов была использована рука манекена. Человек просто не сможет держать руку неподвижно так долго.
Что, впрочем, не исключает возможности как-то этот метод улучшить. Давайте подумаем над наиболее опасным сценарием. Если каждое изображение руки можно будет получать не за три минуты, а хотя бы за полсекунды. Если на экран при этом надо будет выводить не странные черно-белые фигуры, а какое-нибудь интересное пользователю видео или набор картинок, анимацию. И если при этом пользователь делает что-то, за чем имеет смысл следить, то тогда атака обретет смысл. Но его все равно будет довольно мало. Все усилия исследователей разбиваются о тот факт, что если уж нам удалось установить вредоносную программу на планшет или телефон, то имеется множество более легких способов обмануть жертву, заставить ввести пароль или номер кредитки. Пожалуй, впервые при описании таких исследовательских работ (вот примеры: раз, два, три, четыре) мы даже толком не можем пофантазировать о реальном применении такой атаки.
Остается только восхититься красотой предложенного метода. Эта работа еще раз напоминает нам, что, казалось бы, у привычных, давно используемых, незаметных устройств, которыми мы окружены, могут быть необычные свойства. Если все же рассматривать это потенциальное нарушение нашей приватности всерьез, то у него есть простое решение. Столь низкое качество получаемых изображений обусловлено тем, что датчик освещенности делает измерения достаточно редко — 10–20 раз в секунду. А данные на выходе имеют недостаточную точность. Но это если мы хотим превращать датчик в фотокамеру. Для основной задачи — измерения освещенности — это даже слишком много. Можно еще больше «огрубить» передаваемые данные, передавать их, например, пять раз в секунду вместо двадцати. Для изменения яркости экрана под влиянием внешних условий этого более чем достаточно. Но эксплуатация датчика для подглядывания, и так маловероятная, станет и вовсе невозможной. И, пожалуй, к лучшему.