Конфиденциальность
Что приложение Bloom отправляет в сеть и кому, что видит и хранит сервер Bloom и что хранит кабинет провайдера.
Текст описывает, как приложение и этот сайт работают сейчас, и составлен по их исходному коду. Его ещё не проверили владелец сервиса и юрист, и он не является договором или офертой. Места, которые заполнит владелец, отмечены так же, как этот блок; список — в конце страницы.
Коротко
- Bloom — приложение-клиент. Своих VPN-серверов у Bloom нет: ваш интернет-трафик идёт с устройства на серверы VPN-провайдера, чью подписку вы добавили. Через сервер Bloom он не проходит.
- В приложении нет аккаунтов, рекламы, аналитики и сторонних трекеров.
- Сервер Bloom (
web-bloom.app) получает от приложения только доменное имя из ссылки подписки — чтобы вернуть оформление провайдера — и раз в несколько часов запрос без каких-либо данных: есть ли новая сборка и объявления. В заголовкеUser-Agentприложение пишет просто «Bloom»: без версий приложения и iOS, без модели телефона и без его языка. - IP-адреса пользователей приложения сервер не записывает. По каждому домену подписки он хранит только итоги за день: сколько было запросов и примерно сколько устройств, — 90 дней.
Что приложение отправляет и кому
Вашему VPN-провайдеру: запрос подписки
Когда вы добавляете или обновляете подписку, приложение обращается по её ссылке — на сервер вашего провайдера. В этом запросе передаются:
- версия приложения — в заголовке
User-Agent(например,Bloom/1.0 (iOS; compatible; Happ)); - если включена настройка «Передавать ID устройства» (Настройки → Туннель; по умолчанию включена) — ещё версия iOS и модель устройства (в
User-Agent, напримерBloom/1.0 (iOS 26.0; iPhone17,1; compatible; Happ), и в заголовкахx-device-os,x-ver-os,x-device-model) и идентификатор устройства (x-hwid). По ним провайдеры считают лимит устройств; многие без них не выдают серверы. Если настройку выключить, эти сведения провайдеру не передаются.
Идентификатор устройства — код, который iOS выдаёт приложению (а если его нет — случайный код); Bloom запоминает его один раз в связке ключей этого iPhone. Это не серийный номер и не рекламный идентификатор; при переустановке приложения он не меняется, на другой телефон не переносится. Сервер Bloom его не получает.
Как провайдер хранит и использует эти сведения, определяют его собственные правила.
Серверу Bloom: оформление провайдера
Приложение спрашивает у web-bloom.app, настроил ли провайдер оформление (логотип, цвет, кнопки, объявление): когда вы добавляете подписку, при запуске приложения и возвращении в него, после подключения VPN и после обновления подписок — не чаще раза в 15 минут для каждой подписки, а когда вы обновляете подписку вручную — сразу.
- Передаётся доменное имя из ссылки подписки, например
sub.example-vpn.com, и заголовкиUser-Agent: BloomиAccept-Language: *(язык телефона не передаётся). Если оформление уже приходило, приложение добавляет его метку (If-None-Match) — она одинакова у всех, кто получил то же оформление. - Не передаются сама ссылка, ключи, список серверов, идентификатор устройства, модель телефона, версии iOS и Bloom.
- С этого же сервера приложение загружает логотип провайдера, если провайдер загрузил его в кабинет.
- Эти запросы можно выключить: Настройки → «О приложении» → «Оформление от провайдеров». Тогда приложение не сообщает серверу Bloom домены ваших подписок.
Серверу Bloom: новая сборка и объявления
При запуске и возвращении в приложение — не чаще раза в 6 часов (после неудачной попытки — раз в час) — приложение спрашивает web-bloom.app/v1/app: есть ли новая сборка Bloom, объявление для пользователей и ссылка на поддержку. В этом запросе нет ни параметров, ни данных о вас или подписках — только те же заголовки User-Agent: Bloom и Accept-Language: *. Выключатель «Оформление от провайдеров» этот запрос не отключает.
Как при любом обращении в интернет, сервер Bloom видит IP-адрес, с которого пришёл запрос (при включённом VPN это, как правило, адрес VPN-сервера). Что он с ним делает — в следующем разделе.
По адресам, которые указал провайдер
Провайдер может указать собственные адреса логотипа, профиля маршрутизации и файлов с гео-данными: приложение загружает их оттуда с тем же заголовком User-Agent: Bloom, без версии iOS, модели и идентификатора устройства, и только с публичных адресов (не из домашней или внутренней сети). Кнопки провайдера (бот, канал, поддержка, сайт) открывают его ссылки только по вашему нажатию.
Проверки связи
- Замер задержки обращается к серверам провайдера и через них — к публичному адресу проверки (по умолчанию
www.gstatic.com/generate_204; адрес можно сменить в настройках). - «Проверить соединение» запрашивает
cloudflare.com/cdn-cgi/trace, чтобы показать ваш внешний IP-адрес и страну. Результат виден только вам.
Что остаётся на устройстве
Ссылки подписок, серверы, настройки и журнал работы туннеля хранятся только на устройстве. Журнал можно скопировать вручную, чтобы показать поддержке; сам он никуда не отправляется.
Что сервер Bloom хранит о пользователях приложения
- Аккаунтов и идентификаторов нет. У запросов приложения нет ни входа, ни идентификатора пользователя или устройства.
- IP-адреса не записываются. Чтобы ограничить число запросов с одного адреса, сервер держит счётчики по IP-адресам (для IPv6 — по сети /64) в оперативной памяти несколько минут и на диск их не пишет.
- Статистика по доменам — только дневные итоги без адресов, подробно в разделе «Статистика».
- Журнал программы-сервера о запросах приложения, загрузке логотипов и странице «Открыть в Bloom» записывает время, путь без параметров и код ответа — без IP-адреса. Доменное имя из запроса попадает в журнал только при внутренней ошибке сервера, тоже без IP-адреса.
- Веб-сервер Caddy перед программой такие запросы в свой журнал доступа не пишет вовсе; в записях об ошибках у него нет ни адреса клиента, ни заголовков, ни параметров запроса.
- Журналы обоих ограничены размером (3 файла по 10 МБ на каждый): старые записи вытесняются новыми. Срока по времени нет — сколько дней помещается в журнал, зависит от числа запросов.
- Перед сервером может работать сеть доставки (сейчас домен обслуживается через Cloudflare). Она обрабатывает запрос целиком, включая IP-адрес и адрес страницы, по собственным правилам.
Статистика запросов
Провайдерам и команде Bloom важно знать, сколько людей видят оформление. Поэтому сервер считает ответы на запросы оформления — так, чтобы по сохранённому нельзя было узнать ни адрес, ни устройство:
- Для каждого домена подписки и каждых суток (по UTC) сохраняются три числа: сколько было запросов, примерно сколько устройств их сделали и отдавал ли сервер в тот день оформление из кабинета. Считаются и домены, для которых оформления в кабинете нет, — так команда Bloom видит, какими сервисами пользуются в приложении. Таких новых доменов за сутки учитывается не больше 2000, и не больше 10 с одного адреса.
- Чтобы оценить число устройств, сервер в оперативной памяти вычисляет из адреса сети (IPv4-адрес или сеть /64 для IPv6) и заголовка
User-Agentхеш со случайным ключом суток. Ключ создаётся при запуске сервера, меняется в полночь по UTC и нигде не записывается, поэтому хеши разных суток не связать между собой и не превратить обратно в адрес. На диск попадают только итоговые числа — раз в минуту; ни адреса, ни хеши не сохраняются. - Приложение присылает одинаковый
User-Agentу всех, поэтому все устройства за одним адресом (VPN-сервер, мобильный оператор, домашний роутер) считаются одним: это заниженная оценка. - Итоги хранятся 90 дней и удаляются автоматически. Провайдер видит их только по своим подтверждённым доменам и только начиная со дня подтверждения; администратор Bloom видит все.
- Запросы о новой сборке и объявлениях (
/v1/app) не считаются.
Если выключить «Оформление от провайдеров», приложение не спрашивает оформление и в статистику не попадает.
Страница «Открыть в Bloom»
Провайдер может прислать вам ссылку вида https://web-bloom.app/add#<ссылка подписки>. Часть адреса после знака # браузер не отправляет никуда: ссылку подписки читает сама страница у вас в браузере и передаёт её приложению Bloom. Страница не загружает ничего со сторонних сайтов и не ставит cookie.
Если ссылка пришла в виде …/add?url=<ссылка>, адрес страницы вместе со ссылкой подписки получает сервер (и сеть доставки, если она включена). Сервер Bloom такую ссылку не записывает: в журнал программы попадает только путь /add без параметров и без IP-адреса, Caddy эту страницу в журнал не пишет.
Кабинет провайдера
Этот раздел — для VPN-провайдеров, которые регистрируются на web-bloom.app.
Что хранится
- Email, название сервиса, пароль в виде необратимого хеша (bcrypt), дата регистрации.
- Статус аккаунта, дата «оплачено до» и заметки администратора.
- Домены подписки, код подтверждения и, если вы её указали, ссылка на подписку для проверки заголовка; время подтверждения, время последней повторной проверки и, если подтверждение пропало, дата отметки «подтверждение не найдено».
- Оформление: название, цвета, ссылки, тексты и файл логотипа. Логотип хранится в перекодированном виде, без метаданных исходного файла (например, EXIF).
- История оформления: последние 20 сохранённых версий целиком, с временем сохранения и email того, кто сохранил. Файл логотипа, на который ссылается версия в истории, хранится, пока эта версия в истории, и ещё 7 дней после того, как ни текущее оформление, ни история на него не ссылаются, — чтобы он не пропал у пользователей, пока приложение снова не спросит оформление.
- Вход с кодом (если вы его включили): секретный ключ для приложения кодов — в базе он хранится в открытом виде, как и остальные данные; номер последнего принятого кода; резервные коды — только в виде хешей SHA-256; дата включения.
- Статистика запросов по вашим подтверждённым доменам — см. «Статистика». Она хранится по доменам, а не по аккаунтам.
- Сессии входа: действуют 30 дней или до выхода и смены пароля.
- Журнал действий: регистрация, входы (с IP-адресом), неверные коды при входе (с IP-адресом), изменения оформления, доменов, статуса и оплаты, включение и выключение входа с кодом, выгрузки администратора. Записи хранятся 2 года.
- Журналы сервера о страницах кабинета: время, адрес страницы, код ответа и IP-адрес; у Caddy ещё и браузер. Ограничены размером, как описано выше.
- Резервные копии: каждую ночь вся база (всё перечисленное выше, включая ключи входа с кодом и статистику) и логотипы копируются в архив на сервере; архивы хранятся 14 дней. Перед обновлением структуры базы сервер сохраняет её копию рядом с ней; такие копии тоже удаляются через 14 дней.
Что видно другим
Оформление — название, логотип, цвета, ссылки и тексты — сервер отдаёт любому, кто запросит его по вашему подтверждённому домену: для этого кабинет и существует. Email, заметки, статус, срок оплаты, история и статистика не публикуются. Администратор Bloom может выгрузить список провайдеров и доменов (с email и статистикой) в файл CSV.
Cookie
Только необходимые для работы кабинета: сессия входа, защита форм, одноразовые уведомления и пятиминутная метка между паролем и кодом при входе с кодом. Читатели открытых страниц (эта страница, документация, лицензии, «Открыть в Bloom») cookie не получают. Рекламных и аналитических cookie нет; сторонние скрипты, шрифты и счётчики на сайте не используются.
Проверка домена
По кнопке «Проверить» и потом раз в сутки для подтверждённых доменов сервер запрашивает TXT-запись домена (через DNS-серверы 1.1.1.1 и 8.8.8.8, затем через системный DNS сервера) и делает HTTPS-запрос к домену или к указанной вами ссылке. Из ответа читаются только заголовки.
Оплата и письма
Кабинет не принимает платежи и не хранит платёжные данные: условия согласуются с командой Bloom отдельно. Писем сервис не отправляет, поэтому адрес при регистрации не подтверждается, а напоминания об оплате показываются только в самом кабинете.
Удаление аккаунта
Напишите нам — администратор удалит аккаунт вместе с доменами, оформлением, историей, логотипами, резервными кодами и сессиями. Дневная статистика по доменам не привязана к аккаунту и удаляется сама через 90 дней. В резервных копиях данные аккаунта остаются, пока не истечёт срок их хранения (на сервере — 14 дней). Записи журнала действий, сделанные раньше, остаются до истечения срока хранения журнала.
Кто отвечает за сервис
Контакт для обращений будет указан здесь.
Что осталось уточнить
- Кто отвечает за сервис (имя или организация) и официальный адрес для обращений.
- Где и как долго хранятся резервные копии вне сервера.
- Сеть доставки: пока домен работает через прокси Cloudflare, её журналы — по правилам Cloudflare; когда домен переведут в режим «DNS only», упоминание можно убрать.
- Какие DNS-серверы использует приложение при включённом VPN (зависит от настроек и провайдера).
- Проверка текста юристом.