Содержание статьи
- Apple Health: приложение «все в одном»
- Где хранятся данные Apple Health
- Как извлечь данные Apple Health
- Как это работает?
- Google Fit: аналог Apple Health для Android
- Количество и разнообразие собираемой и отображаемой информации
- Google Fit и интеграция со сторонними приложениями
- Сравнение с Apple Health
- Синхронизация и защита данных
- Сухой остаток
Apple Health: приложение «все в одном»
Приложение Apple Health появилось в сентябре 2014 года одновременно с выходом iOS 8 и с тех пор присутствует на всех устройствах iPhone.
Apple Health работает в фоновом режиме независимо от того, желаешь ты воспользоваться его возможностями или нет. Приложение использует данные от встроенных в iPhone датчиков для составления информации об активности пользователя.
В экосистеме Apple есть и устройство-компаньон для сбора дополнительных данных, которые не может предоставить iPhone. Это Apple Watch, которые в разных модификациях позволяют измерять пульс, определять степень активности пользователя, детектировать падения и снимать электрокардиограмму.
![](https://xakep.ru/wp-content/uploads/2019/01/203441/apple-health.jpg)
Пользователям, запустившим приложение Apple Health, доступны четыре основные категории данных:
- Activity, в которой можно увидеть активность пользователя;
- Nutrition, где показывается, что и в каких количествах пользователь ест. Регистрируется, если пользователь ведет дневник питания в одном из сторонних приложений;
- Sleep с анализом данных о сне пользователя;
- Mindfulness (осознанность или релаксация), загадочная категория, истинный смысл которой доступен достигшим просветления адептам определенных практик. С технической точки зрения смысловой нагрузки не несет, по крайней мере в iOS 11 и 12. Записывается при запуске приложения Breathe на Apple Watch или при работе одного из сторонних приложений.
Откуда поступают данные, на основе которых приложение отображает всю эту информацию? Все данные собираются от устройств и приложений, работающих по протоколу HealthKit. Сюда входит как сам iPhone, так и часы Apple Watch, а также различные сторонние устройства и приложения — браслеты, часы, трекеры, разнообразные спортивные и медицинские датчики и приборы. Для работы сторонних приложений необходимо предоставить им доступ к информации Apple Health, что само по себе несет определенные риски.
![](https://xakep.ru/wp-content/uploads/2019/01/203441/privacy-health.png)
При этом в самом приложении Apple Health для каждой категории данных официально рекомендуется не одно, а сразу несколько приложений — начиная с печально известного Strava.
![](https://xakep.ru/wp-content/uploads/2019/01/203441/permissions-strava.png)
Кроме того, доступны следующие расширенные категории данных:
- 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.
![](https://xakep.ru/wp-content/uploads/2019/01/203441/cda.jpg)
Медицинские карты, результаты лабораторных анализов, данные наблюдений, рецепты, прививки, аллергические реакции и другие виды информации, входящие в Health Records, составляют медицинскую тайну, которая в большинстве стран защищается законодательно. Тем удивительнее стал подход к защите этих данных, который выбрала Apple в iOS 11. В этой версии операционной системы данные Health Records могли состоять только из документов CDA; эти данные синхронизировались с iCloud точно так же, как синхронизируются фотографии или заметки. Иными словами, никакой дополнительной защиты предусмотрено не было, и данные Health Records можно было извлечь при помощи Apple ID и пароля, получить по запросу у Apple или посредством GDPR, наконец — украсть из облака.
Для iOS 11 верны следующие утверждения:
- Для доступа к данным Health достаточно Apple ID, пароля и одноразового кода двухфакторной аутентификации.
- Данные доступны компании Apple.
- Данные выдаются правоохранительным органам по запросу.
- Данные выдаются через запрос GDPR.
- Могут быть извлечены сторонними приложениями.
В iOS 12 эту проблему исправили. В новой версии ОС данные Apple Health в целом и Health Records в частности перенесли в отдельный контейнер, который получил дополнительный уровень защиты. Данные в новом контейнере шифруются ключом из связки ключей (Keychain), который, в свою очередь, зашифрован ключом шифрования связки ключей. Ключ шифрования связки ключей перешифрован ключом, который вычисляется на основе пасскода (iOS) или системного пароля (macOS) пользователя. Такой механизм защиты достаточно сложен и безопасен, а для того, чтобы извлечь данные «Здоровья» из облака iCloud, потребуются абсолютно все данные из следующего списка:
- Apple ID и пароль пользователя.
- Одноразовый код двухфакторной аутентификации (на учетных записях без 2FA синхронизация просто не включится).
- Код блокировки или системный пароль одного из устройств пользователя, которые уже участвуют в синхронизации.
Прямые следствия такого способа защиты данных:
- У обычного пользователя не возникает особых проблем с синхронизацией данных: достаточно настроить новое устройство и ввести код блокировки экрана от предыдущего iPhone или iPad.
- Компания Apple не имеет доступа к данным «Здоровья» пользователя, синхронизированным с устройств под управлением iOS 12.
- Данные не выдаются правоохранительным органам и по запросам GDPR (не могут быть расшифрованы).
- Доступ сторонних приложений ограничен (но возможен, см. Elcomsoft Phone Breaker).
Где хранятся данные Apple Health
На самом iPhone данные хранятся в каталоге /private/var/mobile/Library/Health/
.
![](https://xakep.ru/wp-content/uploads/2019/01/203441/healthdb1.png)
В ней находятся две связанные базы данных в формате SQLite: healthdb.sqlite
и healthdb_secure.sqlite
. В этих базах данных содержится вся информация, за исключением точных координат тренировок пользователя (тех самых координат, которые часы Apple Watch начинают собирать сплошным потоком с периодичностью в одну секунду, если определяют момент начала тренировки). Данные о местоположении сохраняются в зашифрованную базу данных healthdb_secure.hfd
.
![](https://xakep.ru/wp-content/uploads/2019/01/203441/healthdbrelations.png)
В базе данных healthdb.sqlite
содержится информация об источниках данных. В базе healthdb_secure.sqlite
хранится основная информация с частыми отсылками к первой базе.
![](https://xakep.ru/wp-content/uploads/2019/01/203441/healthsecuredb.png)
Начиная с 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»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»