Под катом — расскажем, как работает приложение.
/ Flickr / Pete Sheffield / CC
Почему потребовалось приложение
В 2015 году компания SilverPush представила технологию ultrasonic cross-device tracking. Она позволяла рекламным щитам или баннерам в общественных местах (в торговых центрах, на стадионах и др.) издавать высокочастотные звуки, которые улавливались микрофонами мобильных устройств. Получая сигнал от маяка, смартфон показывал владельцу рекламу соседнего магазина или кинотеатра.
В свое время проблемами, связанными с новой технологий, обеспокоились даже в американском Центре демократии и технологий (CDT) и Федеральной торговой комиссию США (FTC). Суть заключается в том, что приложения могли расшифровать эти сигналы и определить, что в текущий момент видит пользователь и на какие сайты заходит. Ученые из Брауншвейгского технического университета обнаружили, что действия пользователей таким образом отслеживали порядка двухсот Android-приложений. В результате Google даже пришлось удалить часть из них из Play Store.
Группа исследователей из Университетского колледжа Лондона (UCL) и Калифорнийского университета в Санта-Барбаре (UCSB) также показала, что с помощью ультразвуковых маячков пользователей можно деанонимизировать.
Разработчики проекта SoniControl обеспокоились тем, что это ставит под угрозу конфиденциальность пользовательских данных. Поэтому и разработали свой ультразвуковой файрвол.
Как работает SoniControl
SoniControl реализован на C++ и Java. Во время работы приложение создает модель фонового ультразвукового шума, а затем отслеживает его изменения (то есть ищет посторонние сигналы). Для этого сигнал преобразуется из временного представления в частотное, что дает возможность оценить амплитуду сигнала для каждой частоты. Сама обработка включает в себя следующие этапы:
- Фильтруются слышимые частоты (для этого применяется фильтр верхних частот с пороговым значением 17 кГц);
- Нормализуется спектрограмма;
- Нормализованная спектрограмма добавляется в фоновый буфер, который приставляет собой список спектрограмм.
Как только фоновый буфер заполняется (на это уходит примерно 10 секунд), начинается анализ по следующему алгоритму:
- Вычисляется «текущая фоновая модель» — это значения амплитуды для каждой частоты;
- Построенная модель сравнивается с нормализованной спектрограммой (для этого используется расстояние Кульбака — Лейблера);
- Если вычисленное расстояние большое, то эта частота помещается в «медианный буфер»;
- При заполнении этого буфера, вычисляется его медиана. Если полученное значение равно 1, значит была зафиксирована ультразвуковая коммуникация. В этом случае приложение предложит пользователю заблокировать ультразвуковой сигнал;
- Если был обнаружен ультразвуковой сигнал, то фоновая модель «очищается» от последних записей, чтобы система не посчитала модифицированный сигнал нормой.
/ Flickr / U.S. Department of Agriculture / PD
Как еще можно защититься
Специалисты ИТ-индустрии считают, что для полноценной защиты от отслеживания устройств с помощью ультразвука, необходимо начать разрабатывать отраслевые стандарты. «Как только всё будет стандартизировано, разработчики ОС для мобильных устройств смогут реализовать API, которые запретят приложениям получать доступ к микрофону без необходимости», — отмечает Василиос Мавродис (Vasilios Mavroudis) из UCL.
Пока стандартов нет, можно воспользоваться другими способами защиты. Один из них — ограничить доступ к микрофону для приложений с помощью патча для Android. Он дает пользователям возможность блокировать работу отдельных приложений с ультразвуковым спектром. А для серфинга в интернете можно установить расширение для браузера Google Chrome, выполняющее похожие функции.
Также можно воспользоваться приложением похожим на SoniControl — UltraSound Detector, однако оно помогает просто обнаружить ультразвуковое вмешательство, а не блокирует его.
Дополнительное чтение в блоге на сайте VAS Experts:
- Firewall или DPI – инструменты защиты разного назначения
- Выстрел в ногу, или критические ошибки в строительстве сетей операторов связи
- Протокол IPv6 – от теории к практике
- Как раздавать бесплатный Wi-Fi согласно законодательству
Комментарии (56)
Goodkat
07.07.2018 18:01+1Как только всё будет стандартизировано, разработчики ОС для мобильных устройств смогут реализовать API, которые запретят приложениям получать доступ к микрофону без необходимости», — отмечает Василиос Мавродис (Vasilios Mavroudis) из UCL.
Давно же реализовано.
Vsevo10d
07.07.2018 19:16Особенно круто, что всякие уроды облучают людей на улице ультразвуком, достаточно мощным, чтобы на улице докричаться десяток метров до твоего смартфона. У нас ручным УЗ-гомогенизатором по технике безопасности нужно пользоваться в наушниках и не распахивая пасть — для зубной эмали тоже вредно. А тут установки явно помощнее. Животные, наверное, вообще в ужасе от такого.
tormozedison
07.07.2018 20:18Уверены, что мощнее? У гомогенизаторов мощность от 50 Вт до 16 кВт.
Vsevo10d
08.07.2018 00:02Ну я же про ручной лабораторный, который с дремель размером) 16 кВт — это я не знаю что за гомогенизатор такой. Промышленная шаровая мельница, что ли?
В любом случае это вредно.
aamonster
08.07.2018 00:00Шутите или просто знаний не хватает?
УЗ-гомогенизатор всяко серьёзней каких-то динамиков будет. Плюс мощность не забудьте поделить на квадрат расстояния.
В общем, опасности для здоровья не представляет, все вопросы именно по privacy.
QuakeMan
08.07.2018 01:25+1Вот тоже интересно — как эта технология уживется с летучими мышами например.
Странно вообще что защитники животных этой технологией не обеспокоились раньше защитников приватности.MTyrz
09.07.2018 00:30Летучие мыши возле торговых центров?
QuakeMan
09.07.2018 00:41Ну летучие мыши — практически городские животные. Не знаю как сейчас… давненько летними вечерами вверх не смотрю, но лет 25 назад, в детстве, помню что вечерами они все время воланчик от бадминтона атаковали.
Чердаки и насекомые… и то и другое в городах водится.
DASM
07.07.2018 19:39Ерунда какая-то. Может кто нибудь сквозную АЧХ тракта телефона дать?
tormozedison
07.07.2018 22:0620 кГц, думаю, легко.
DASM
08.07.2018 09:03а я думаю что нет. В телефонных сетях 3400 Гц достаточно. Хорошо, с целю записи просто разговоров и прочего могли оставить до 15 кГц. Зачем выше?
qw1
08.07.2018 12:49Зачем выше?
Маркетинг. Та же гонка, что за мегапикселями в камере. И ставят много микрофонов, чтобы писать видео с «hi-res» «3d» звуком. Кто-то ради маркетинга пытается писать больше каналов, чем стерео, с 4 микрофонов.
Сейчас это только флагманы, а через несколько лет будет стандартом, как стали им FullHD-экраны.
Vbeerby
08.07.2018 07:59Можно измерить в домашних условиях при помощи программы RightMark Audio Analyzer (RMAA), 2-х AUX кабелей и более-менее нормальной звуковой карты(Creative, Asus).
DASM
08.07.2018 08:03Не очень понимаю как именно. Для начала микрофоны в смартах выдают сразу цифру в PDM. Проще пойти прямым путем — может кто либо показать запись с микрофона андроида, где есть следы УЗ? Очевидно что запись должна быть хотя бы с 96 кГц Fds
Vbeerby
08.07.2018 08:18Все верно, дал маху, не выйдет. Понадобится еще пьезоизлучатель…
RMAA сама генерирует тестовый сигнал, а потом его анализирует на входе. И как раз на звуковушках чуть посерьезней верхний порог 96-192КГц.
Попробую на неделе поэкспериментировать с обычным генератором частот и пьезоизлучателем, если будет время.
Vbeerby
08.07.2018 08:32В качестве генератора можно использовать Ардуину, а маленький пьезоизлучатель есть в каждом 2-м компьютерном корпусе — «пищалка». Принцип можно погуглить — ультразвуковой отпугиватель комаров на ардуино.
aamonster
08.07.2018 00:05Хм. Не вижу сложностей в обходе такого файрвола. Вполне можно ставить метки в звуковом диапазоне — например, маскируясь под шумы, примешанные к музыке (алгоритмы, используемые для CDMA в помощь). Или просто воспроизводя определённую мелодию.
Т.е. единственный разумный вариант — давать permission на микрофон только доверенным приложениям и только на то время, на которое действительно нужно.
andrewdrone
08.07.2018 07:14+1Ну вообще-то сервисы гугла давно уже по умолчанию сканируют вайфай и блютуз в фоновом режиме даже если они выключены "в целях улучшения [таргетинга]". Причем при снятии, эта галочка сама снова поставится при включении доступа к геопозиции, уж очень хитро там запрос составлен.
DrZlodberg
08.07.2018 08:30Не знаю, как сейчас. У меня старый телефон (андроид 2..4) — там он просто не позволяет включить GPS (в системе) не позволив ей отправлять что-то по сети. При этом для его функционирования это не требуется (без неё прекрасно всё работает). Правда там везде логика странная. При включении авиа-режима вырубается и GPS, но хоть работает, если принудительно включить.
STingerOid
08.07.2018 10:11Я что-то не понял — в современных смартфонах микрофон всегда включен, и приложения, которым это разрешено, могут свободно сканировать «эфир»?
rPman
08.07.2018 11:08-1да
и так СО ВСЕМИ разрешениями!
например доступ к видеокамере (абсолютно незаметный), смс и телефонным звонкам (если будет платить автор приложения то вы даже и не узнаете про это, кроме как через детализацию звонков) и прочее.
концепция требует доработки но гуглу это не нужно :( ведь это надо на уровне api приложений улучшать
qw1
08.07.2018 12:39Подразумевается, что это для «ок, гугл» ))
kAIST
08.07.2018 13:27"ок Гугл" при заблокированном смартфоне работает только на девайсов со специальным аппаратным чипом, насколько я помню. Он заточен именно на распознавании одного паттерна.
qw1
08.07.2018 13:35Специальные чипы — это скорее про Apple.
А гугл-помощник накатывается на любой Android 5+
Контрольный вопрос: приведите пример такого чипа (производитель + артикул).qw1
08.07.2018 13:59Погуглил и обнаружил, что в некоторых android-устройствах есть такой чип (обычно упоминают Moto X), а в остальных устройствах всё на усмотрение производителя, но обычно микрофон не слушают при выключенном экране. А где-то есть своё решение, отвязанное от google — сервис Emy на Huawei, или Samsung voice.
Dioxin
09.07.2018 07:59Шел 2048 год.
Иван Петрович осознав степень тотальности контроля над его жизнью окончательно впал в уныние и решил это дело прекратить самым радикальным образом, наевшись снотворного.
Его ультрафон через нейроинтерфейс уловил подозрительные флюиды головного мозга своего хозяина и вызвал МЧС и на всякий случай команду мстителей.
Наш герой очнулся в белой, залитой белым светом комнате.
«Я в раю, пронеслась шальная мысль»
«Вы в операционной, сказал хирург. Вы больше не в состоянии заботиться о себе, поэтому мы вживим вам модуль безопасности, он будет следить за вашими действиями и контролировать их».
«Теперь я знаю как выглядит ад, подумал ГГ.»
Это была его последняя самостоятельная мысль.
zerg59
09.07.2018 08:40А ведь это всё (если пользователь явно не согласился со сбором инфы) подпадает под новое определение «приборы, системы, комплексы, устройства, специальный инструмент и программное обеспечение для электронных вычислительных машин и других электронных устройств, независимо от их внешнего вида, технических характеристик, а также принципов работы, которым намеренно приданы качества и свойства для обеспечения функции скрытного (тайного, неочевидного) получения информации либо доступа к ней (без ведома ее обладателя)»»
Barafu_Albino_Cheetah
А всего-то стоило добавить в Андроид нормальную систему управления доступом к ресурсам, в частности, к микрофону.
NewStahl
Но тогда ведь несанкционированный съём данных с пользователей усложнится встократ. Это огромные расходы для агрегаторов такой информации. Да и зачем? Что вообще холоп может скрывать от пана?
dartraiden
Любому приложению в Android давно можно запретить доступ к камере и микрофону без всяких сторонних патчей. Патч запрещает доступ конкретно к ультразвуковой части спектра.
А ходить постоянно с включённым «звуковым файерволлом» — прощай батарея, полагаю.
rPman
проблема в том что приложению может легально потребоваться разрешать доступ к микрофону, примерно 0.1% времени его использования, но все остальное время это приложение может собирать данные нелегально.
Отличный пример, после установки lineageos (то кажется фича самого android 7+) приложение стало запрашивать доступ к ресурсу в момент использования а не только во время установки и позволяет не сохранять выбор для будущих случаев (раньше это достигалось специальным приложением, требующим рут)
Так вот, стал замечать что сторонние приложения, какая-нибудь яндекс-карта или яндекс-такси, вываливает просьбу доступа к уточненным координатам устройства… во время входящего звонка. ну просто мегадушки, я бы это не заметил, если бы сразу разрешил доступ к GPS приложению карты, ведь это логично… но кто же знал что таким образом яндекс будет тырить информацию о моем местонахождении во время звонков.
На самом деле что бы вы не запретили, приложения могут общаться друг с другом и передавать данные, так достаточно одного приложения, имеющего доступ к критичному оборудованию, а остальные будут получать доступ через него (не удивлюсь если появятся фреймворк и плюшки для сторонних разработчиков).
KorDen32
Это фича LOS (PrivacyGuard или что-то такое), работающая параллельно со штатной андроидной системой прав.
qw1
В Android 6+ разрешения могут запрашиваться по мере необходимости, приложение должно быть собрано с поддержкой API 23 — developer.android.com/training/permissions/requesting
Другое дело, что приложение может отказаться выполнять какую-либо фунциюю, если не выдать разрешение. В этом смысле PrivacyGuard был лучше — тем, что приложение якобы получило доступ к контактам, а читает пустой список.
Видимо, google понял всю опасность перехода пользователей к PrivacyGuard и решил, что пусть лучше пользователь имеет иллюзию контроля, чем обманывает приложения (и google) более мощными средствами. Из-за введения нативного запроса прав по требованию, PrivacyGuard перестал развиваться.
andrewdrone
это было в Симпсонах, тьфу ты, в MiUI еще какой-то древней 4й версии, позже выпилили, иначе сертификацию Гугла бы не прошли.
tvr
MIUI 9, андроид 5. Варианты разрешений для приложений — разрешить/запретить/спрашивать.
qw1
rPman
яндекс такси, функция звонков нужна, к сожалению
картам я право не давал
полагаю через него яндекс карты и узнают о них, другого объяснения у меня нет
funca
яндекс когда-то писали, что для экономии ресурсов телефона их приложения запускают общий фоновый компонент, который занимается мониторингом активностей и сбором метрик. если это по-прежнему так, то нужное разрешение может быть получено через любое их приложение.
igor_suhorukov
Аппаратный фильтр ВЧ вряд ли истощит батарею.
qw1
Аппаратному фильтру легко найти противодействие. Например, перейдя с ультразвука на инфразвук, или на неслышимые пакеты по 10 мс на частоте 800 Hz. А исправить уже ничего нельзя.
Все эти фильтры — костыль, проблему нужно решать на другом уровне.
engine9
Если вообще её можно решить. Для большинства в этом нет никакой проблемы.
vmchaz
Приложения порой отказываются запускаться, не получив доступ к желаемому ресурсу.
Надо, чтобы кроме стандартного ресурса в системе можно было создать несколько эмуляторов (эмулятор микрофона, берущий данные из аудиофайла, эмулятор камеры — из видеопотока, эмулятор g-сенсора, эмулятор gps, и даже отдельное дерево файловой системы, неотличимое от настоящего).
Ну и возможность на лету переключить доступ с фейкового сенсора на настоящий.
Alex_Q
Был такой проект XPrivacy. Но сейчас заброшен, Android 7 и выше не поддерживается.
Vodochnik
xprivacylua же, от того же разработчика. Но размер пива вырос (про версия за 10 евро).
Lure_of_Chaos
*sigh* а потом приложения научатся детектить фальшивку и так же отказываться запускаться :(