Перейти к основному содержимому
Reincubate

Technology, security analysis

Staying alive: фоновое отслеживание и приложение NHS COVID-19

Aidan FitzpatrickОпубликовано 6 мая 2020 г.Обновлено 31 июля 2024 г.
На этой странице
Cover image for: Staying alive: фоновое отслеживание и приложение NHS COVID-19
  • Приложение NHS COVID-19, судя по всему, корректно работает в фоне на устройствах iOS, в отличие от австралийского приложения COVIDSafe
  • Приложение предотвращает ложные сообщения, выдавая пользователям с симптомами контрольный код: этот код затем сопоставляется с официальными результатами анализов, прежде чем предпринимаются какие-либо действия
  • NHS COVID-19 предлагает медработникам отключать Bluetooth на своём устройстве, пока на них надето СИЗ, поясняя: «your interactions at work should not be captured when you are wearing PPE»
  • Обновление, 09:25 BST, 7 мая: ниже мы добавили раздел «Как приложению удаётся оставаться эффективным в фоне?», где объясняем, как приложение остаётся активным при обмене данными с устройствами Android, и рассказываем о некоторых сложностях и приёмах обмена данными между устройствами iOS
  • Обновление, 11:45 BST, 7 мая: ниже мы добавили раздел «Собирает ли приложение персональные данные и раскрывает ли мою личность?».

Сложности отслеживания контактов, когда приложение не отображается на экране

У разработчиков приложений мало способов поддерживать приложения «живыми», когда они не находятся на переднем плане устройства пользователя. Apple тщательно управляет этими возможностями, чтобы приложения не вторгались в частную жизнь пользователей и не разряжали без нужды их аккумуляторы. В частности, она различает, находится ли приложение в фокусе, то есть показано на экране, или работает в фоне. Недавние обновления iOS ограничили возможности разработчиков получать данные в фоновом режиме: например, пока фоновый сбор данных не удавалось ограничивать так эффективно, Uber мог отслеживать перемещения пользователя, даже когда тот не находился в такси.

Чтобы приложение могло по-настоящему работать в фоне, его издателю нужно получить разрешение Apple при отправке в App Store, отметив приложение набором «Background Modes». Эти фоновые режимы разрешены только для передачи видео с одного устройства на другое, получения обновлений местоположения, работы в роли телефона или использования Bluetooth. Именно эти режимы позволяют телефону воспроизводить AirPlay в фоне, играть музыку без постоянно открытого Spotify, звонить кому-то через WhatsApp и сворачивать приложение или отслеживать вашу пробежку в Strava.

Приложение NHS COVID-19

Приложение NHS COVID-19

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

Приложения для отслеживания контактов построены на Bluetooth low-energy (BLE), который, проще говоря, позволяет устройствам распознавать друг друга. Теоретически режимы Apple «Uses Bluetooth LE accessories» и «Acts as a Bluetooth LE accessory» идеально для этого подходят и позволяют использовать BLE в фоне. Однако приложение в фоне, использующее эти режимы, сможет продолжать обмен данными с любыми BLE-устройствами, с которыми уже общается (например, с умным замком Bluetooth), но не сможет управлять частотой широковещательных сигналов, чтобы опрашивать устройства, которых раньше не видело. В фоне из-за этого сложнее искать признаки новых устройств, осмысленно взаимодействовать с ними и, в частности, определять устройства не от Apple. Это серьёзно мешает приложениям для отслеживания контактов, которым нужно работать в фоне непрерывно.

Процитируем документацию Apple об этой службе:

All service UUIDs ... can be discovered only by an iOS device that is explicitly scanning for them. ...and for apps that are advertising are in the background, the frequency at which your peripheral device sends advertising packets may decrease

Обходные пути и альтернативные подходы к отслеживанию

Конечно, для разработчиков это не новая задача: они давно ищут способы оставлять приложения в фоне и преодолевать ограничения, собирая данные отслеживания. Для этого появились такие фреймворки, как проект с открытым исходным кодом AltBeacons, но они не подходят для отслеживания контактов, где устройство должно непрерывно искать новые устройства. Как выяснила ABC в Австралии, изучая национальное приложение COVIDSafe, практического решения этой проблемы нет. Существует несколько уязвимостей, которые могут временно пригодиться, например регистрация приложения как аудиоплеера и воспроизведение им музыки, но Apple не одобряет подобные приёмы, они создают пользователям неудобства и редко проходят проверку для App Store.

Тем временем Apple готовит к выпуску iOS 13.5, которая сейчас доступна в бета-версии. Apple может вносить в собственную систему изменения, полезные для такого отслеживания. В 13.5 появится ряд более заметных функций, например поддержка Face ID для пользователей в масках или, по крайней мере, более быстрый путь к вводу код-пароля, и менее заметных, например фреймворк ExposureNotification, который обеспечивает именно то, что нужно приложениям для отслеживания контактов. Идеальной системы из этого, конечно, не получится: воспользоваться этим смогут не все, ведь устройства вроде iPhone 6 (2015) не могут работать на iOS 13. Хотя система Apple использует глобальный стандартный идентификатор, каждая страна, внедряющая её, использует отдельную национальную базу данных. Поэтому, если заразившийся европеец из одной страны контактировал с жителем другой европейской страны, при отслеживании контактов об этом не станет известно.

ExposureNotification Apple для COVID-19 решает то, что здесь нужно, но с оговорками. Самое существенное: Apple дала понять, что воспользоваться им сможет только её собственное приложение, чтобы другие не злоупотребляли этой технологией.

Так как же NHS справляется с этим в своём приложении COVID-19?

Как же британскому приложению NHS COVID-19 удаётся эффективно отслеживать новые устройства в фоне, не «засыпая» (технически — не «приостанавливаясь») и не теряя при этом эффективности? По результатам нашего тестирования версии 1.0.1b341 приложения «NHS COVID-19» видно, что оно действительно эффективно обменивается данными в фоне. Судя по всему, это достигается с помощью ряда хитрых обходных приёмов с использованием keepalive-сигналов и уведомлений. Принудительное закрытие приложения остановит фоновое отслеживание, однако если телефон выключить и снова включить, оно продолжит корректно обмениваться данными в фоне. Этот обходной путь может вступить, а может и не вступить в противоречие с правилами Apple, но пока он не раскрыт, а Apple одобрила все сборки приложения, которые видела до сих пор.

Мы продолжаем изучать этот вопрос и опубликуем подробности по мере развития событий.

Хранит ли приложение NHS COVID-19 конфиденциальные данные?

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

Просматривая данные приложения с помощью iPhone Backup Extractor по пути uk.nhs.nhsx.sonar, мы видим ряд файлов, связанных с Google Firebase, и набор небольших файлов Plist (файлов конфигурации) для остальных данных приложения.

Файлы приложения NHS COVID-19 в резервной копии

Файлы приложения NHS COVID-19 в резервной копии

Могут ли пользователи ложно сообщить о том, что у них COVID-19?

Если пользователь сообщает о симптомах, приложение показывает номер телефона для записи на анализ и контрольный код. Идея в том, что результат анализа затем связывается с контрольным кодом пользователя. Если пользователь ложно сообщит о симптомах, подтверждения не будет, пока NHS не обновит результат анализа в соответствии с кодом пользователя.

Запрашивает ли приложение разрешения на доступ к местоположению?

Нет, не запрашивает.

Ввела ли NHS общественность в заблуждение относительно использования API Google?

Нет. Приложение NHS COVID-19 тесно интегрировано с отраслевым стандартом Google для хранения данных и управления ими — API Firebase. (NHS не использует фреймворк Google или Apple для отслеживания контактов; помимо прочего, он не будет доступен до выхода iOS 13.5.)

С какими службами взаимодействует приложение?

Как и в приложении для Android, весь существенный обмен данными идёт через API COVID19 NHS, размещённый по адресу *.covid19.nhs.uk. Приложение выполняет и несколько других запросов, поскольку использует службу AppCenter от Microsoft, но ни один из них не является существенным или конфиденциальным.

Не приведёт ли использование приложения сотрудниками NHS к ложным срабатываниям?

Приложение предлагает медработникам отключать Bluetooth на устройствах, пока на них надето СИЗ, указывая: «your interactions at work should not be captured when you are wearing personal protective equipment».

Подсказка о СИЗ и Bluetooth в приложении NHS COVID-19

Подсказка о СИЗ и Bluetooth в приложении NHS COVID-19


Мы с удовольствием более подробно изучили приложение NHS COVID-19. Хотя вокруг его функциональности было много догадок, мы увидели хорошо сделанное и безопасное приложение. Фоновое отслеживание, судя по всему, работает, хотя продолжит ли оно быть эффективным, по-прежнему во многом зависит от Apple. Как следствие, эффективность британского ответа на COVID-19 теперь тоже находится в руках Apple.

Выбор между собственным путём и использованием фреймворка Apple, вероятно, был непростым. Следовать за Apple, скорее всего, было бы менее спорным решением. Однако iOS 13.5 ещё не вышла, тогда как британское приложение выходит в бета-версии завтра, и ничто не мешает Великобритании перейти на решение Apple в последующих обновлениях. С этой точки зрения: почему бы сначала не запустить испытание на острове Уайт?


Как приложению удаётся оставаться эффективным в фоне?

Мы добавили этот ответ в 09:25 BST 7 мая, чтобы ответить на вопросы, которые получили о том, как именно приложение остаётся активным. NHSX применила несколько умных приёмов для улучшения результатов.

Вчера вечером The Sun сообщила, что приложение использует закрытые API Bluetooth, но мы не нашли тому никаких признаков, а издание впоследствии изменило свой материал и отказалось от этого утверждения. Приложение NHS COVID-19 использует открытые API Bluetooth в iOS и, судя по всему, не пользуется никакими особыми привилегиями. Вместо этого используются изобретательные приёмы.

Первый приём связан с поведением Bluetooth в iOS для приостановленных приложений. Мы отметили, что Apple меняет то, как приложение может искать новые устройства в приостановленном состоянии. Приостановленные приложения не могут правильно распознавать устройства, которых раньше не видели. Как мы писали выше, «сложнее искать признаки новых устройств, осмысленно взаимодействовать с ними и, в частности, определять устройства не от Apple».

NHSX подошла к задаче с устройствами не от Apple с другой стороны: поняв, что повлиять на поведение iOS в этом отношении нельзя, она встроила в своё приложение для Android хитрые механизмы распознавания ограниченных сообщений, специфичных для Apple, которые отправляет приложение в фоне на устройстве iOS. Это даёт устройству Android достаточно информации, чтобы связаться с устройством iOS и вернуть его в состояние, в котором можно обмениваться данными.

Без Android ситуация немного иная: существует порог, после которого приложение NHS COVID-19 может замолчать, если оставить его в фоне на какое-то время, и журналы устройства содержат примеры такого поведения. В этом случае приложение переведено в фон, но сможет продолжать сканирование (технически — «широковещание») более полутора часов. Другие события на телефоне, в том числе работа других приложений с Bluetooth, могут это время продлить.

Session uk.nhs.nhsx.sonar-peripheral-11919-319 can advertise in background for 6240 seconds

Поэтому нельзя сказать, что «приложение перестанет эффективно обмениваться данными между устройствами iOS через X времени»: у приложения есть щедрое переменное окно, в течение которого оно остаётся активным, и ряд разумных факторов, способных его продлить, включая другое использование Bluetooth, наличие устройств Android и эффективность уведомлений.

Бывают менее распространённые ситуации, когда iOS может попытаться полностью приостановить фоновое приложение, например когда системе не хватает памяти. В таких случаях надёжность службы снижается. Приложение пытается решить это, отправляя push-уведомление с просьбой снова открыть приложение, но это срабатывает не всегда и зависит от состояния устройства. В наших тестах устройства iOS, на которых мы запускали приложение, продолжали поддерживать фоновую службу в течение всей ночи.


Собирает ли приложение персональные данные и раскрывает ли мою личность?

Мы добавили этот ответ в 11:45 BST 7 мая, чтобы ответить на вопросы, которые получили о сборе и передаче данных приложением

Приложение для iOS собирает действительно очень мало данных: всё сводится к их linkingId. Его можно связать с конкретным человеком, только если тот сообщил о симптомах и записался на анализ в NHS, указав этот идентификатор.

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

Таким образом, вопрос не в том, что хранит приложение, а в том, какую информацию NHS запрашивает при записи на анализ и как эта информация хранится.

Если пользователь сообщит о симптомах, но не запишется на анализ (или запишется, не указав свой идентификатор), связать эти два вида информации будет абсолютно невозможно. Конечно, в таком крайнем сценарии приложение также не сможет оповестить, если у пользователя действительно COVID-19.

Мы продолжаем изучать этот вопрос и опубликуем подробности по мере развития событий.


Об авторе

Aidan Fitzpatrick

Основатель, генеральный директор

Aidan основал Reincubate в 2008 году, создав первый в мире инструмент восстановления данных для iOS. С тех пор он превратил компанию в одного из ведущих в мире независимых поставщиков программного обеспечения (ISV), сотрудничая с такими компаниями, как AMD, Qualcomm и HP, чтобы создавать значимые функции машинного обучения для видеопрограмм, главным примером которых служит экосистема приложений Camo. Под руководством Aidan Reincubate четыре раза получала высшую бизнес-награду Великобритании, вошла в список The Sunday Times 100 Tech и была отмечена номинациями на Apple Design Award и в App Store. Его работы и методы нередко цитируются в научных статьях по мобильной криминалистике, а его приглашают выступать на мероприятиях таких компаний, как Google, Microsoft и Snap.


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

richard atterbury 9 мая 2020 г.

I am on IOW. The app does require Location Services. Very surprised as every description, including yours, says that it does not

Ответ службы поддержки Reincubate 9 мая 2020 г.

Hi Richard, thanks for your comment! The way the app gets access to Bluetooth on Android is confusing; its request for access makes it appear it's also requesting location access. We detail what's going on with that here — in short, it's a limitation of Android that appears misleading.


Похожие материалы


Популярные статьи

Помощь