Безопасность и архитектура
Как на самом деле устроено обещание приватности.
Pulse утверждает, что ваши «сырые» данные о здоровье никогда не покидают телефон. Это сильное утверждение, поэтому здесь сказано, что именно оно значит, какие ключи где лежат, что хранят наши серверы, что мы всё же видим и как проверить любое из этого самому.
Утверждение, сформулированное точно
Ваш пульс, вариабельность ритма, сон и движение читаются из Apple Health на вашем iPhone, интерпретируются на этом же iPhone относительно вашей собственной скользящей нормы и превращаются в одну фразу. Уезжает только фраза. Ни одно измерение, ни один балл, ни один график и ни одна история не доходят до наших серверов, потому что в коде нет пути, который бы их отправил.
Это более узкое обещание, чем «мы приватны», и именно его стоит проверять. Остальная часть страницы и есть проверка.
Четыре следствия из этого
- Мы не можем показать вам вашу историю здоровья в веб-панели, потому что её у нас нет.
- Мы не можем восстановить вашу переписку, если вы потеряли ключ и все устройства, потому что ключ никогда не был нашим.
- Мы не можем строить облачные функции поверх вашего содержимого, потому что наши серверы его не читают.
- Судебный запрос к нам даёт псевдонимный идентификатор и токен уведомлений. Больше передавать нечего.
Путь, который проходит день
Четыре шага, и только четвёртый покидает устройство.
-
01
Измерено
Ваши Apple Watch или подключённый браслет WHOOP пишут измерения в Apple Health на вашем iPhone. Apple Health — это база данных на вашем телефоне, а не наш сервис.
-
02
Прочитано, с разрешения
Pulse читает те типы, которые вы разрешили на экране доступа к Health в iOS, и только их. Отзовите один — приложение продолжит работать с тем, что осталось.
-
03
Интерпретировано на устройстве
Сегодняшний день сравнивается с вашими же последними неделями кодом, который выполняется на вашем iPhone. На этом шаге нет сервера и нигде нет модели.
-
04
Переходит одна фраза
Полученная фраза, грубая пометка настроения и выбранное вами отображаемое имя попадают к партнёру через ваш собственный iCloud, в пространство, открытое ровно одному человеку.
Каждый фрагмент данных и его место
Три списка, потому что мест ровно три: ваше устройство, пространство, которое вы делите с партнёром, и наш сервер. Четвёртого нет.
На вашем устройстве, и больше нигде
В связке ключей iOS, читается только после того, как телефон был разблокирован хотя бы раз с момента включения, и сознательно не попадает в вашу резервную копию iCloud.
-
Пульс, пульс покоя, ВСР, сон, шаги, минуты тренировки и стояния, частота дыхания, кислород в крови, сеансы осознанности
Читается из Apple Health. Скользящая история за 90 дней остаётся на телефоне, чтобы вкладка динамики могла построить кривую.
-
Данные менструального цикла
Только если включить «чувство ритма», по умолчанию выключенное. Зеркалирование в iCloud для них отключено в коде, поэтому они никогда не синхронизируются, а название фазы не покидает устройство.
-
Отрезки необычных сердечных сигналов
Замечаются на устройстве. Ничего не уходит, пока вы не одобрите конкретный момент, а фильтр убирает из формулировки числа и лексику цикла ещё до того, как что-либо может уйти.
-
Ваш приватный ключ переписки
Создаётся на вашем устройстве, хранится в вашей связке ключей iCloud, чтобы им могли пользоваться ваши же другие устройства. К нам не загружается никогда.
-
Токены доступа и обновления WHOOP
Только если вы подключили браслет. Лежат в связке ключей приложения с пометкой «только это устройство», поэтому не синхронизируются, и отзываются на стороне WHOOP при отключении.
-
Запись о вашем согласии и собственный список уведомлений приложения
Версионированная запись с отметкой времени о том, на что вы согласились; отозвать можно в любой момент. Отзыв немедленно останавливает всю обработку данных о здоровье.
Что переходит к партнёру
Через ваш собственный iCloud, в приватном пространстве, открытом одному поимённо названному участнику. Пространство не публично: ссылка на него бесполезна тому, чьей учётной записи iCloud нет в списке участников.
| Что | Защита |
|---|---|
| Фраза дня, предлагаемые действия, грубая пометка настроения, ваше имя и фото | Общее пространство, только чтение. Имя и фото зашифрованы сквозным шифрованием. Фразы исчезают в конце дня. |
| Сообщения, фото, GIF, жесты, просьбы, записи «Нашей истории», события календаря | Шифруются на вашем устройстве сквозным шифрованием. Ни мы, ни Apple их не читаем. |
| Записи списков просмотра и желаний: название, тип, ссылка, обложка, статус | Открытым текстом внутри вашего общего пространства, никогда не данные о здоровье. Комментарии, реакции и тихая оценка каждого зашифрованы сквозным шифрованием. |
| Вопрос дня и оба ответа | Только общее пространство. Дополнительного сквозного шифрования, как у переписки, нет. См. раздел о пределах ниже. |
| Индикатор набора, отметки о прочтении и сигнал «держим вместе» | Передаются вживую, пока открыт чат, и нигде не хранятся. Сигнал удержания — это «да» или «нет» вообще без содержания. |
Всё, что хранит наш сервер
Это полный список, а не его краткое изложение. В приложении нет системы аккаунтов, поэтому на нашей стороне нет ни профиля, ни архива сообщений, ни медицинской карты, которые можно было бы перечислить.
| Запись | Зачем она | Хранится до |
|---|---|---|
| Псевдонимный идентификатор iCloud, токен уведомлений, платформа и три переключателя уведомлений | Чтобы уведомление дошло до нужного телефона. | Вы удалите аккаунт в приложении или Apple сообщит, что токен мёртв. |
| Сообщение из формы связи: имя, почта, страна по желанию и то, что вы написали | Чтобы вам ответил человек. | Разговор закончится. Оно уходит письмом в наш ящик; в лог попадает только тема. |
| Сессионная кука сайта и CSRF-токен | Чтобы сайт работал. Строго необходимые; аналитических и рекламных кук не существует. | Завершится сессия браузера. |
| Административные аккаунты этого сайта | Чтобы мы могли публиковать эти страницы. К приложению отношения не имеют: в нём нет входа. | Аккаунт будет удалён. |
Чего здесь сознательно нет: ни одного значения здоровья, ни одного текста сообщения, ни одного имени из приложения, ни геолокации, ни рекламного идентификатора.
Модель шифрования
Названа, а не намёком, чтобы с ней можно было спорить.
- Согласование ключей
- Curve25519 через Apple CryptoKit. Каждый партнёр создаёт пару ключей на своём устройстве, и обе стороны напрямую договариваются об общем секрете. Ключевой материал ни в какой момент не проходит через наши серверы.
- Шифрование сообщений
- AES-GCM через CryptoKit, который не только шифрует, но и аутентифицирует: изменённый шифротекст не открывается вовсе, вместо того чтобы расшифроваться во что-то другое.
- Где живут ключи
- Ваш приватный ключ лежит в вашей связке ключей iCloud, привязан к вашему Apple ID и доступен вашим же устройствам. У нас нет копии и нет способа её запросить. Локально закэшированные показатели здоровья лежат в связке ключей устройства в классе «только это устройство», что держит их вне вашей резервной копии iCloud.
- Передача
- Зашифрованные пакеты идут через Apple CloudKit. Пока вы оба держите чат открытым, те же уже зашифрованные байты могут пойти быстрым путём через наш собственный ретранслятор реального времени. Он подписывает и передаёт и не хранит ничего.
- Уведомления
- Пуш-уведомления намеренно без содержания: фиксированные заголовок и текст плюс строка типа, но никогда не само сообщение. Просьба о чём-то личном никогда не написана на экране блокировки, где её прочтёт стоящий рядом.
- Вход в WHOOP
- Ваш телефон общается с WHOOP напрямую. Наш сервер выполняет только обмен токена, потому что WHOOP требует клиентский секрет, а секрет, вшитый в приложение для iOS, читается любым, кто его скачал. Из этого обмена не сохраняется ничего: ни токена, ни идентификатора пользователя WHOOP, ни строки в таблице. Перенаправление приходит на домен, заявленный этим приложением через Associated Domains, поэтому код авторизации не может перехватить другое приложение на устройстве.
Кто ещё что-либо получает
Полный список и то, что каждый действительно получает. Некоторые из них существуют только для тех, кто пользуется конкретной функцией.
| Получатель | Что получает | Когда |
|---|---|---|
| Apple | Зашифрованные пакеты и фразы внутри вашего же iCloud и доставку уведомлений. | Всегда. Там и живёт ваше общее пространство. |
| Google (Firebase Cloud Messaging) | Токен уведомлений и лишённые содержания заголовок, текст и тип. Аналитика и реклама Firebase отключены в сборке; подключены только ядро и модуль сообщений. | Когда вам отправляют уведомление. |
| GIPHY | Ваши поисковые запросы по GIF. Сама отправленная гифка идёт со сквозным шифрованием, как любое сообщение. | Только пока открыт поиск GIF. Не откроете — ничего не уйдёт. |
| WHOOP | Ваш собственный вход и ваши собственные измерения, которые телефон читает напрямую у WHOOP. | Только если вы подключили браслет. |
| Fastmail | Письмо, которое вы нам написали. | Только если вы нам напишете. |
Проверено: в обеих кодовых базах отсутствует
- Ни одного аналитического SDK любого рода
- Ни одного рекламного SDK или SDK атрибуции
- Ни рекламного идентификатора, ни запроса на отслеживание, потому что отслеживать нечего
- Ни одного стороннего сборщика крашей; диагностика только через фреймворк Apple на устройстве
- Ни платёжного, ни подписочного процессора
- Ни одной языковой модели — ни в приложении, ни на сервере
- Никакого межприложенческого отслеживания и никаких трекинговых доменов в манифесте приватности
От чего это вас не защищает
Часть, которую большинство страниц опускает. Ничего из перечисленного не является отчётом об ошибке: это либо осознанный размен, либо известный предел, о котором вы лучше услышите от нас.
-
Мы видим метаданные, и шифрование их не убирает
Мы видим, что аккаунт существует, что два аккаунта связаны, что сообщение определённого размера прошло между ними в определённое время, и токен, нужный Apple для доставки. Мы храним минимум и ничего из этого не продаём, но «мы не можем прочитать вашу переписку» и «мы ничего о вас не знаем» — разные утверждения, и верно у кого угодно только первое.
-
Вопрос дня не имеет сквозного шифрования
Ваш ответ и ответ партнёра едут внутри вашего общего пространства iCloud как фраза дня, а не шифруются отдельно, как переписка. Из общего пространства они исчезают за 48 часов и хранятся не дольше семи дней на каждом устройстве. Мы говорим это прямо, потому что это единственное свойство, обратное которому читатель обоснованно предположил бы сам.
-
Некоторые общие записи намеренно открыты
Записи списков просмотра и желаний — название, тип, ссылка, статус — синхронизируются как обычные записи внутри вашего общего пространства, потому что они идут раньше обмена ключами, который защищает переписку. Данных о здоровье в них не бывает. Комментарии и реакции к ним зашифрованы.
-
Связывание оставляет короткий публичный след
Пока приглашение открыто, запись с псевдонимным идентификатором iCloud, выбранным вами отображаемым именем и коротким кодом доступна другим вошедшим пользователям контейнера iCloud приложения. Коды истекают через 48 часов, а записи вычищаются при принятии, при разрыве связи и при удалении аккаунта. Само общее пространство так не открыто: оно ограничено учётной записью партнёра в iCloud, поэтому подобранная ссылка ничего не откроет.
-
Точку уведомлений защищает ключ, который едет внутри приложения
То есть настоящим секретом он не является. Худший случай: кто-то сможет вызвать появление уведомления без содержания на телефоне, псевдонимный идентификатор которого он и так знает; точка возвращает счётчик доставок и не раскрывает о человеке ничего. Она ограничена по частоте, а её усиление проверкой каждого устройства стоит в списке, но не сделано.
-
Ваши собственные устройства и люди рядом с ними
Кто может разблокировать ваш телефон, тот может прочитать вашу переписку, и это верно для любого мессенджера. Включите блокировку Face ID внутри приложения, если для вас это важно. И точно так же сквозное шифрование защищает канал, а не человека, которому вы сами решили что-то отправить.
-
Независимого аудита пока не было
Проверку, из которой собрана эта страница, мы провели сами, по собственному коду, в перечисленные ниже даты. Это больше, чем намерение, и меньше, чем внешний аудит, и назвать это иначе было бы первой нечестной фразой на странице. Независимую проверку мы намерены заказать и поставим здесь её дату, когда это произойдёт.
Как проверить это самому
Вам не обязательно верить нам на слово, и на iOS по большей части и не приходится.
-
01
Включите отчёт о конфиденциальности приложений
В настройках iOS, в разделе «Конфиденциальность и безопасность», отчёт о конфиденциальности приложений фиксирует, к каким доменам обращается каждое приложение и каких датчиков касается. Попользуйтесь Pulse неделю и прочитайте, что там записано. Вы ищете отсутствие аналитических и рекламных доменов.
-
02
Прочитайте экран разрешений Health
Настройки, затем Health, затем «Доступ к данным и устройства», затем Pulse. Там перечислен каждый тип, который приложение может читать и записывать. Отзовите любой и посмотрите, как приложение продолжит работать с меньшим.
-
03
Посмотрите ярлык конфиденциальности в App Store
Apple требует, чтобы ярлык соответствовал коду, и наш заявляет имя, псевдонимный идентификатор пользователя и токен устройства — всё помечено как функциональность приложения и ничто не помечено как отслеживание.
-
04
Посмотрите трафик сами
Если вы из тех, у кого есть прокси, направьте его на приложение. Вы увидите iCloud, нашу точку уведомлений и, если подключали браслет, WHOOP. Чего вы не увидите — это измерения.
-
05
Спросите нас о конкретном
Расплывчатые вопросы о приватности везде получают расплывчатые ответы. Конкретный вопрос о конкретном потоке получает от нас конкретный ответ, и если ответ неудобный, он всё равно будет дан.
Когда это проверяли в последний раз
Каждая запись — сверка выпущенного кода с тем, что утверждают сайт и политика, вместе с тем, что нашли и исправили.
-
2 июля 2026
Полная проверка обоих репозиториев. Найдено и исправлено: неполный список получателей, утверждение «мы ничего не храним», неверное в отношении записи для уведомлений, и удаление аккаунта, которое эту запись не убирало. Тогда же исправлен ярлык конфиденциальности в App Store.
-
24 июля 2026
Проверка ретранслятора реального времени и двух новых функций. Ретранслятор раскрыт как дополнительный путь передачи, и прямо сказано, что вопрос дня не шифруется сквозным шифрованием, как переписка.
-
29 августа 2026
Проверка общего списка просмотра и импорта из WHOOP. WHOOP добавлен как поимённо названный получатель для тех, кто подключает браслет, и задокументировано, что превью ссылок и обложки запрашивает только устройство отправителя.
Нашли что-то?
Ответственное раскрытие приветствуется, и мы указываем автора. Напишите на [email protected] с деталями, достаточными для воспроизведения, и дайте нам разумное время до публикации. Платной программы вознаграждений у нас нет: мы слишком малы, чтобы обещать это честно, но и юриста к вам не отправим.
Прочитайте остальное.
Политика конфиденциальности несёт юридическую версию всего, что выше, включая ваши права и порядок их реализации.