Безопасность и архитектура

Как на самом деле устроено обещание приватности.

Pulse утверждает, что ваши «сырые» данные о здоровье никогда не покидают телефон. Это сильное утверждение, поэтому здесь сказано, что именно оно значит, какие ключи где лежат, что хранят наши серверы, что мы всё же видим и как проверить любое из этого самому.

Последняя сверка с кодом: 29 августа 2026 Объём: приложение для iOS и watchOS и сервер за ним. Написано по коду обоих, а не по планам.

Утверждение, сформулированное точно

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

Это более узкое обещание, чем «мы приватны», и именно его стоит проверять. Остальная часть страницы и есть проверка.

Четыре следствия из этого

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

Путь, который проходит день

Четыре шага, и только четвёртый покидает устройство.

Пунктирная граница — это ваше устройство. Ничего внутри неё никуда не передаётся. ВАШ IPHONE security.flow.node_1 security.flow.node_2 security.flow.node_3 никогда не передаётся Пульс · ВСР · Сон · Движение · Цикл одна фраза Ваш iCloud Ваш партнёр Наш сервер пуш без содержания
Пунктирная граница — это ваше устройство. Ничего внутри неё никуда не передаётся.
  1. 01

    Измерено

    Ваши Apple Watch или подключённый браслет WHOOP пишут измерения в Apple Health на вашем iPhone. Apple Health — это база данных на вашем телефоне, а не наш сервис.

  2. 02

    Прочитано, с разрешения

    Pulse читает те типы, которые вы разрешили на экране доступа к Health в iOS, и только их. Отзовите один — приложение продолжит работать с тем, что осталось.

  3. 03

    Интерпретировано на устройстве

    Сегодняшний день сравнивается с вашими же последними неделями кодом, который выполняется на вашем iPhone. На этом шаге нет сервера и нигде нет модели.

  4. 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 по большей части и не приходится.

  1. 01

    Включите отчёт о конфиденциальности приложений

    В настройках iOS, в разделе «Конфиденциальность и безопасность», отчёт о конфиденциальности приложений фиксирует, к каким доменам обращается каждое приложение и каких датчиков касается. Попользуйтесь Pulse неделю и прочитайте, что там записано. Вы ищете отсутствие аналитических и рекламных доменов.

  2. 02

    Прочитайте экран разрешений Health

    Настройки, затем Health, затем «Доступ к данным и устройства», затем Pulse. Там перечислен каждый тип, который приложение может читать и записывать. Отзовите любой и посмотрите, как приложение продолжит работать с меньшим.

  3. 03

    Посмотрите ярлык конфиденциальности в App Store

    Apple требует, чтобы ярлык соответствовал коду, и наш заявляет имя, псевдонимный идентификатор пользователя и токен устройства — всё помечено как функциональность приложения и ничто не помечено как отслеживание.

  4. 04

    Посмотрите трафик сами

    Если вы из тех, у кого есть прокси, направьте его на приложение. Вы увидите iCloud, нашу точку уведомлений и, если подключали браслет, WHOOP. Чего вы не увидите — это измерения.

  5. 05

    Спросите нас о конкретном

    Расплывчатые вопросы о приватности везде получают расплывчатые ответы. Конкретный вопрос о конкретном потоке получает от нас конкретный ответ, и если ответ неудобный, он всё равно будет дан.

Когда это проверяли в последний раз

Каждая запись — сверка выпущенного кода с тем, что утверждают сайт и политика, вместе с тем, что нашли и исправили.

  1. 2 июля 2026

    Полная проверка обоих репозиториев. Найдено и исправлено: неполный список получателей, утверждение «мы ничего не храним», неверное в отношении записи для уведомлений, и удаление аккаунта, которое эту запись не убирало. Тогда же исправлен ярлык конфиденциальности в App Store.

  2. 24 июля 2026

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

  3. 29 августа 2026

    Проверка общего списка просмотра и импорта из WHOOP. WHOOP добавлен как поимённо названный получатель для тех, кто подключает браслет, и задокументировано, что превью ссылок и обложки запрашивает только устройство отправителя.

Нашли что-то?

Ответственное раскрытие приветствуется, и мы указываем автора. Напишите на [email protected] с деталями, достаточными для воспроизведения, и дайте нам разумное время до публикации. Платной программы вознаграждений у нас нет: мы слишком малы, чтобы обещать это честно, но и юриста к вам не отправим.

Контакт по безопасности [email protected] Машиночитаемо по адресу /.well-known/security.txt

Прочитайте остальное.

Политика конфиденциальности несёт юридическую версию всего, что выше, включая ваши права и порядок их реализации.