Простое правило: всё, что касается вашего Apple ID, остаётся только на вашем Mac. Наш сервер знает лишь случайный номер установки.
Что хранится только на Mac
| Что | Где лежит |
|---|---|
| Почта Apple ID | в базе приложения на вашем Mac |
| Пароль | Нигде. Он живёт в памяти, пока идёт вход, и тут же стирается. Встроенная программа получает его напрямую, на диск он не попадает |
| Вход в Apple (сессия) | в защищённой «Связке ключей» macOS, отдельная запись на каждый аккаунт. Доступна только на этом Mac |
| Код двухфакторной проверки | не сохраняется и повторно не запрашивается |
| Список покупок, названия, значки | в базе и кэше на Mac |
| Скачанные файлы | в вашей папке загрузок. На сервер не отправляются и там не хранятся |
Что получает наш сервер
- Случайные номера:
account_id(подписка) иdevice_id(устройство). С вашим Apple ID они не связаны. И открытый ключ устройства для подписи запросов. - Подписанные запросы: «есть ли у меня премиум», «скачивание началось / закончилось», промокод, оплата.
- Версию приложения.
- Название устройства в виде класса железа: например «MacBook Pro · M3 Pro» и модель «Mac15,6». Это нужно, чтобы в списке «Мои устройства» и в админке было видно, где работает подписка. Имя, которое вы дали компьютеру («Макбук Георга»), и имя пользователя никогда не отправляются. Это проверяет тест (
HardwareInfoTests). - Отпечаток вашего Mac. Это «каша» (HMAC-SHA256) от аппаратного номера компьютера, посчитанная приложением. Сам номер никуда не уходит, и из «каши» его не получить. Отпечаток нужен, чтобы бесплатный лимит нельзя было обнулить, поставив приложение заново или нажав «Продолжить бесплатно» (лимит общий для одного Mac). На сервере поверх него считается ещё одна «каша» с секретом сервера. Отпечаток не связан с Apple ID и не используется ни для чего другого. Платную подписку он не затрагивает. Мы ничего не подменяем и не прячем: читается настоящее значение. Если номер прочитать нельзя, лимит просто считается на подписку.
- Адрес в виде необратимой «каши» (хэша с солью), только чтобы не давать создавать сотни установок с одного адреса (по умолчанию 20 в сутки). Сам адрес не хранится.
Чего сервер не получает и не может получить
Ни почты Apple ID, ни пароля, ни кодов, ни токенов Apple, ни названий и номеров ваших приложений, ни списка покупок.
Это защищено в двух местах:
- Запросы строгие. Любое лишнее поле — ошибка 400. А программа в самом приложении, которая общается с сервером, вообще не умеет принимать данные Apple.
- Автоматический тест
PrivacyTests. Он проходит весь путь «вход → история → скачивание → установка» с подставными данными-«канарейками» (почта, пароль, код, токен, название) и перехватывает весь исходящий трафик. Если хоть одна канарейка найдена в запросе к нам (в любом виде: открытым текстом, в base64, в хэше) — тест падает. Он запускается при каждой проверке.
Скачивание самого приложения и обновления
- Обновления приложение берёт только с нашего сервера. Каждое проверяется подписью, и подделка не откроется.
- Сведения о вашем компьютере для обновлений не отправляются.
Честно о рисках
- Работа с магазином Apple неофициальная. Аккаунт могут ограничить. Мы снижаем риск (запросы по одному, с паузами, лимиты частоты, паузы после ошибок входа), но «нулевой риск» обещать не можем.
- Приложение ничего не покупает и не «берёт» новых лицензий. Только возвращает то, на что у аккаунта уже есть лицензия. Функция получения лицензии выключена, в интерфейсе её нет.
- Идентификатор устройства для магазина встроенная программа строит из железа вашего Mac. Мы его не подменяем и не прячем. Отпечаток для нашего лимита (см. выше) устроен отдельно и с идентификатором магазина не связан.
- Приложение, поставленное на iPhone из файла, может попросить войти в App Store тем же Apple ID. Так решила Apple.
Данные с iPhone (фото, файлы, музыка, журналы)
Всё, что приложение читает с телефона по кабелю, остаётся на этом Mac. На наш сервер не уходит ничего: ни снимки, ни названия файлов и альбомов, ни список приложений, ни журналы. Единственное исключение — анонимная статистика (см. ниже): только суммы вроде «сохранено фото: 120», и её можно выключить.
- Для показа «Фото» копия базы медиатеки телефона на миг кладётся во временную папку и удаляется сразу после чтения.
- Миниатюры фото хранятся на Mac в папке кэша (
~/Library/Caches/iBConnection/thumbs), копии для просмотра — до следующего запуска. Очистить: «Настройки → Загрузки → Миниатюры с iPhone». - Медиатеку телефона (фото, музыку, книги) приложение напрямую не меняет: это сломало бы её на iPhone. Менять можно только документы приложений. Удаление фото идёт через системный канал macOS, тот же, что у «Захвата изображений».
PrivacyTestsпроверяет и это: файл и альбом с «канареечными» названиями читаются, копируются на Mac, консоль идёт — и ни одно название не попадает в запросы к серверу.
Резервные копии
Копии iPhone, их расшифрованное содержимое и пароль копии остаются на этом Mac. На наш сервер не уходит ничего из содержимого. В анонимной статистике (если она не выключена) есть только сумма «сделано копий», «восстановлений», «переносов на новый iPhone» — без имени телефона, дат и размеров.
- Копии лежат в папке, которую выбрали вы (по умолчанию внутри папки приложения). Копии Finder только читаются.
- Пароль копии не хранится нигде, кроме «Связки ключей» и только если вы включили «Запомнить»: в той же единственной записи, что и остальные секреты (новых запросов пароля нет). В настройках и базе приложения лежит лишь список номеров устройств, для которых пароль запомнен. В командной строке сайдкара пароля нет (он передаётся через стандартный ввод), поэтому
psего не покажет. - Ключи расшифровки живут только в памяти, пока копия открыта. Расшифрованное (список файлов копии, просматриваемые базы, превью) лежит во временной папке с доступом только для вас и стирается при «Закрыть копию», при выходе и при следующем запуске. Миниатюры зашифрованных копий в кэш на диск не пишутся.
- AirDrop: выбранное расшифровывается во временную папку, передаётся системному окну AirDrop и стирается после отправки.
PrivacyTestsпроверяет это канарейками: текст сообщения, имя контакта, название заметки, пароль копии (и новый пароль) не попадают ни в запросы к серверу (в открытом виде, в base64, в хэше), ни в базу и файлы приложения, ни в аргументы процессов.
Лимиты без подписки
Без подписки за одно действие сохраняется ограниченное число элементов раздела (например, 50 фото); смотреть можно всё. Числа приложение берёт из подписанного токена прав, а не из открытого конфига: правка файлов на Mac их не поднимает. Счётчика сохранённого нет ни на Mac, ни на сервере — ограничен только размер одного действия, поэтому про сохранения сервер ничего не узнаёт (кроме анонимной статистики ниже).
Анонимная статистика
Чтобы понимать, какими функциями пользуются, приложение раз в сутки отправляет только суммы по разделам с прошлой отправки: сколько сохранено фото, файлов, сообщений, контактов и т. п., сколько сделано копий, восстановлений и переносов, сколько PDF переписки, сколько раз упёрлись в лимит и нажали «Открыть премиум».
- Не отправляются: названия, имена, текст, содержимое, имена файлов и альбомов, время каждого действия, сведения о телефоне. Запрос строгий: сервер принимает только известные разделы и только целые числа (лишнее поле — ошибка 400).
- Суммы привязаны к анонимному номеру подписки (как и счётчик скачиваний) и хранятся по дням. В админке видны общие суммы и суммы по номеру подписки.
- Выключается в «Настройки → О программе → Отправлять анонимную статистику». При выключении накопленное на Mac стирается и больше не копится.
PrivacyTestsпроверяет, что в отчёте только известные разделы и только числа, а канарейки (текст сообщения, имя контакта, название заметки, пароль копии) туда не попадают.
Журналы
В журналах сервера нет почт и названий приложений: их там не бывает. В тексте «Скопировать для поддержки» почта, длинные номера и токены скрыты.