Бум носимых устройств, разнообразных датчиков, браслетов, часов и трекеров продолжается более пяти лет. Индустрия предлагает широкое разнообразие устройств, которые могут собирать информацию о состоянии твоего организма. Комбинация данных с такого устройства и информации о твоем местоположении позволяет восстановить полную картину твоей деятельности буквально по минутам. Такая информация не должна попасть в руки злоумышленников или нечистоплотных рекламодателей; эта же информация бесценна для расследования преступлений, поскольку позволяет восстановить картину происшествия с точной привязкой ко времени. Сегодня мы подробно рассмотрим, какие данные о тебе собирают стандартные приложения Apple Health (iOS) и Google Fit (Android), как и где эти данные сохраняются, куда синхронизируются, как защищены и как их можно извлечь.
 

Apple Health: приложение «все в одном»

Приложение Apple Health появилось в сентябре 2014 года одновременно с выходом iOS 8 и с тех пор присутствует на всех устройствах iPhone.

Apple Health работает в фоновом режиме независимо от того, желаешь ты воспользоваться его возможностями или нет. Приложение использует данные от встроенных в iPhone датчиков для составления информации об активности пользователя.

В экосистеме Apple есть и устройство-компаньон для сбора дополнительных данных, которые не может предоставить iPhone. Это Apple Watch, которые в разных модификациях позволяют измерять пульс, определять степень активности пользователя, детектировать падения и снимать электрокардиограмму.


Пользователям, запустившим приложение Apple Health, доступны четыре основные категории данных:

  • Activity, в которой можно увидеть активность пользователя;
  • Nutrition, где показывается, что и в каких количествах пользователь ест. Регистрируется, если пользователь ведет дневник питания в одном из сторонних приложений;
  • Sleep с анализом данных о сне пользователя;
  • Mindfulness (осознанность или релаксация), загадочная категория, истинный смысл которой доступен достигшим просветления адептам определенных практик. С технической точки зрения смысловой нагрузки не несет, по крайней мере в iOS 11 и 12. Записывается при запуске приложения Breathe на Apple Watch или при работе одного из сторонних приложений.

Откуда поступают данные, на основе которых приложение отображает всю эту информацию? Все данные собираются от устройств и приложений, работающих по протоколу HealthKit. Сюда входит как сам iPhone, так и часы Apple Watch, а также различные сторонние устройства и приложения — браслеты, часы, трекеры, разнообразные спортивные и медицинские датчики и приборы. Для работы сторонних приложений необходимо предоставить им доступ к информации Apple Health, что само по себе несет определенные риски.


При этом в самом приложении Apple Health для каждой категории данных официально рекомендуется не одно, а сразу несколько приложений — начиная с печально известного Strava.


Кроме того, доступны следующие расширенные категории данных:

  • Body Measurements — рост и вес пользователя;
  • Health Records — больничные карты и документы в формате СDA;
  • Heart — кровяное давление и пульс;
  • Reproductive Health — менструальные циклы и данные о работе репродуктивной системы;
  • Results — результаты лабораторных анализов (например, уровень сахара в крови);
  • Vitals — жизненные параметры организма (давление, температура, пульс, дыхание…);
  • Medical ID — медицинские параметры организма (например, группа крови).

Очевидно, что далеко не все данные (и даже не значительная их часть) могут быть определены с помощью бытовых устройств, даже если речь идет о последнем поколении Apple Watch. Откуда же берутся все эти данные? Здесь нужно вспомнить о том, что в марте 2018 года Apple сумела договориться с рядом сетевых клиник в США, Великобритании и Австралии о стандартизации электронного формата медицинской информации и о передаче этих данных. Речь идет об архитектуре CDA — Clinical Document Architecture, которая стала стандартом де-факто для обмена медицинскими данными.

Стандарт CDA основан на XML, а документы в этом формате могут быть импортированы и обработаны в приложении Apple Health (категория Health Records). Актуальность CDA для России в настоящее время невысока: получить соответствующий файл можно только из одного из поддерживающих архитектуру CDA медицинских учреждений. Для импорта данных в Apple Health его достаточно открыть в приложении, после чего информация будет занесена в базу данных. Данные автоматически синхронизируются с другими устройствами Apple через облако iCloud.


Медицинские карты, результаты лабораторных анализов, данные наблюдений, рецепты, прививки, аллергические реакции и другие виды информации, входящие в Health Records, составляют медицинскую тайну, которая в большинстве стран защищается законодательно. Тем удивительнее стал подход к защите этих данных, который выбрала Apple в iOS 11. В этой версии операционной системы данные Health Records могли состоять только из документов CDA; эти данные синхронизировались с iCloud точно так же, как синхронизируются фотографии или заметки. Иными словами, никакой дополнительной защиты предусмотрено не было, и данные Health Records можно было извлечь при помощи Apple ID и пароля, получить по запросу у Apple или посредством GDPR, наконец — украсть из облака.

Для iOS 11 верны следующие утверждения:

  1. Для доступа к данным Health достаточно Apple ID, пароля и одноразового кода двухфакторной аутентификации.
  2. Данные доступны компании Apple.
  3. Данные выдаются правоохранительным органам по запросу.
  4. Данные выдаются через запрос GDPR.
  5. Могут быть извлечены сторонними приложениями.

В iOS 12 эту проблему исправили. В новой версии ОС данные Apple Health в целом и Health Records в частности перенесли в отдельный контейнер, который получил дополнительный уровень защиты. Данные в новом контейнере шифруются ключом из связки ключей (Keychain), который, в свою очередь, зашифрован ключом шифрования связки ключей. Ключ шифрования связки ключей перешифрован ключом, который вычисляется на основе пасскода (iOS) или системного пароля (macOS) пользователя. Такой механизм защиты достаточно сложен и безопасен, а для того, чтобы извлечь данные «Здоровья» из облака iCloud, потребуются абсолютно все данные из следующего списка:

  1. Apple ID и пароль пользователя.
  2. Одноразовый код двухфакторной аутентификации (на учетных записях без 2FA синхронизация просто не включится).
  3. Код блокировки или системный пароль одного из устройств пользователя, которые уже участвуют в синхронизации.

Прямые следствия такого способа защиты данных:

  1. У обычного пользователя не возникает особых проблем с синхронизацией данных: достаточно настроить новое устройство и ввести код блокировки экрана от предыдущего iPhone или iPad.
  2. Компания Apple не имеет доступа к данным «Здоровья» пользователя, синхронизированным с устройств под управлением iOS 12.
  3. Данные не выдаются правоохранительным органам и по запросам GDPR (не могут быть расшифрованы).
  4. Доступ сторонних приложений ограничен (но возможен, см. Elcomsoft Phone Breaker).
 

Где хранятся данные Apple Health

На самом iPhone данные хранятся в каталоге /private/var/mobile/Library/Health/.


В ней находятся две связанные базы данных в формате SQLite: healthdb.sqlite и healthdb_secure.sqlite. В этих базах данных содержится вся информация, за исключением точных координат тренировок пользователя (тех самых координат, которые часы Apple Watch начинают собирать сплошным потоком с периодичностью в одну секунду, если определяют момент начала тренировки). Данные о местоположении сохраняются в зашифрованную базу данных healthdb_secure.hfd.


В базе данных healthdb.sqlite содержится информация об источниках данных. В базе healthdb_secure.sqlite хранится основная информация с частыми отсылками к первой базе.


Начиная с iOS 11 Apple Health использует синхронизацию в облако iCloud. Синхронизируются данные, собранные приложением Apple Health; записи CDA, насколько нам известно, в облако не поступают. Не синхронизируется и уникальный для каждого устройства идентификатор Medical ID. Многие сторонние приложения (Strava, Endomondo и другие) синхронизируют данные в собственные облачные сервисы.

В iOS 11 данные «Здоровья» синхронизируются так же, как и остальные виды синхронизированных данных: они поступают в отдельный контейнер в iCloud, откуда их можно извлечь в виде отдельных фрагментов и расшифровать каждый фрагмент при помощи ключей, которые также извлекаются из iCloud. Физическая безопасность данных обеспечивается исключительно тем, что сами данные хранятся на одних серверах (которые, кстати, принадлежат Microsoft, Google, AT&T или китайской государственной компании, если речь идет о китайских пользователях) в зашифрованном виде, а ключи расшифровки физически хранятся только на серверах самой компании Apple в Купертино. Таким образом, ни Microsoft, ни Google, ни китайское правительство прямого доступа к данным не имеет (они зашифрованы), но если известны логин и пароль пользователя — расшифровать их вполне можно. Такая информация выдается правоохранительным органам и по запросу GDPR.

Гораздо интереснее дела обстоят в iOS 12. В новой версии системы предусмотрена дополнительная защита данных «Здоровья». Для обеспечения обратной совместимости с устройствами с iOS 11 данные, собранные iOS 12, попадают в отдельный контейнер (при этом старый, незащищенный контейнер сохраняется, и данные из него будут прочитаны устройствами с iOS 12). Насколько нам известно, незащищенный контейнер сохраняется в облаке до тех пор, пока есть хотя бы одно устройство с iOS 11, которое участвует в облачной синхронизации «Здоровья». Как только все устройства обновляются до iOS 12, незащищенный контейнер должен пропасть из облака (фактически это может происходить после длительной, иногда — очень длительной задержки).

Данные в новом, защищенном контейнере будут дополнительно зашифрованы при помощи ключа, который хранится в облачной связке ключей (iCloud Keychain). Извлечь этот ключ можно лишь после извлечения и расшифровки самого iCloud Keychain, зашифрованного, в свою очередь, ключом, который вычисляется на основе кода блокировки (или системного пароля) пользователя. Таким образом, данные из нового контейнера невозможно расшифровать без кода блокировки от iPhone или пароля от компьютера Mac.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    1 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии