Правовая информация
Политика конфиденциальности
Что приложение MiExpenses и этот сайт делают с данными. Написано по самому приложению и серверу, а не по шаблону, поэтому здесь названо и то, что шаблон бы опустил.
Обновлено:
1Кто отвечает
MiExpenses делает и поддерживает один человек, Alexander Volkov. Компании за этим нет. Он же — оператор персональных данных по всему, что здесь описано, и вопросы, запросы копии данных и запросы на удаление идут на один и тот же адрес: contacts@mve.suxlv2.space.
2Что охватывает этот документ
Он охватывает Android-приложение MiExpenses и этот сайт. Сайт — это статические страницы: он не выполняет скриптов, не подгружает шрифты, картинки или файлы с чужих хостов и не обращается ни к кому, кроме сервера, который отдаёт вам страницу. Чтение сайта не ставит cookie и никому не сообщает, что вы здесь были. Всё, что ниже, — про приложение.
3Что вы даёте нам
Приложению нужна учётная запись, поэтому первое, что оно спрашивает, — адрес электронной почты и пароль или вход через Google. Вход через Google даёт нам то же самое одно поле: приложение читает из учётных данных Google только адрес электронной почты, а сам токен Google остаётся на телефоне. Остальное — то, что вы выбираете при первоначальной настройке.
Хранится в учётной записи:
- Ваш адрес электронной почты. Это имя учётной записи и ключ, под которым хранится всё остальное.
- Ваша страна. Выбирается при первоначальной настройке или заполняется определением, описанным ниже.
- Ваша валюта. Суммы, введённые в других валютах, пересчитываются в неё для итогов.
- Ваша мера расстояния: километры или мили.
- Ваша мера объёма: литры, английские галлоны или американские галлоны.
- Действует ли на аккаунте MiExpenses Premium.
4Что вы записываете в приложении
Всё, что вы вводите о транспорте и его расходах, хранится на нашем сервере, а не только на телефоне. В том числе поля, про которые часто думают, что они остаются на устройстве.
- Транспорт: название, тип, марка, модель, год выпуска, объём двигателя, объёмы баков и типы топлива, показание одометра и, если вы их заполните, номерной знак и VIN.
- Расход: дата, категория и подкатегория, одометр, сумма и валюта, свободный комментарий.
- Заправка: сверх того цена за единицу, объём, тип топлива и отметки «Полный бак» и «Исключить из статистики».
- Напоминания, созданные вами подкатегории расходов и записи о совместном доступе.
- Отзыв, отправленный из приложения: оценка звёздами, ваш текст и ваш идентификатор пользователя.
- С месячными лимитами и шаблонами расходов иначе. Они доходят до сервера только пока на аккаунте действует MiExpenses Premium; без него они остаются на телефоне, поэтому на втором телефоне их и не видно.
5Что приложение собирает само
Три вещи происходят без вашей просьбы, и две из них нельзя выключить внутри приложения.
- Push-токен. Firebase Cloud Messaging выдаёт токен для вашей установки, и приложение отправляет его на наш сервер вместе с вашим адресом электронной почты — это ключ, под которым он хранится. Он отправляется после входа, при смене токена и после перезагрузки, независимо от того, разрешили вы уведомления или нет.
- Определение страны по IP-адресу. При первоначальной настройке и при каждом запуске главного экрана с рабочим соединением приложение спрашивает у стороннего сервиса геолокации, какой стране принадлежит ваш IP-адрес. Таких сервисов три, и приложение обращается к ним по очереди, пока один не ответит; ни один из них не наш, и каждый из них видит ваш IP-адрес. Поимённо этот документ их не называет: какой именно ответит — деталь реализации, а с телефона в любом случае уходит одно и то же. Согласия у вас никто не спрашивает, выключить это в настройках нельзя, а ответ записывается в ваш профиль только тогда, когда страна ещё не задана.
- Реклама. Google Mobile Ads SDK запускается при каждом открытии главного экрана, в том числе в сессиях, где реклама так и не запрашивается. Место показа в приложении ровно одно: полноэкранное видео с вознаграждением перед открытием списка глобальной статистики, для учётных записей без отметки об оплате. Запрос собирается с настройками по умолчанию, поэтому он не помечен как неперсонализированный, и форма согласия не показывается. То, что собирает этот SDK, уходит в Google, а не к нам, и на это распространяются собственные условия Google.
6Аналитика и отчёты о сбоях
Firebase Analytics SDK входит в сборку, но флаг в манифесте приложения выключает сбор данных. Своих аналитических событий приложение тоже не отправляет: в его исходном коде нет ни одного вызова события или свойства пользователя.
Отчётов о сбоях и мониторинга производительности нет вовсе: ни Crashlytics, ни стороннего аналога, ни самодельного обработчика сбоев. Если приложение упадёт на вашем телефоне, к нам не придёт никакой стек вызовов, и мы об этом не узнаем. Единственный способ, которым мы услышим о проблеме, — если вы нам напишете.
7Глобальная статистика
В приложении есть экран, который ставит транспорт рядом с той же маркой и моделью у других людей. Он работает потому, что наш сервер держит строку по каждому транспорту, который проходит отбор, и показывает этот список другим людям, пользующимся приложением.
Транспорт попадает в список только после как минимум десяти записей, тридцати дней истории, активности за последние шестьдесят дней и как минимум тысячи единиц расстояния. Его марка и модель должны быть ещё и в справочнике сервера, а на учётной записи с нашей стороны должна стоять отметка об оплате. Строки не усредняются между собой: каждая строка — это один транспорт.
Что строка хранит, а что нет:
- Числовой идентификатор владельца, страна, марка, модель и год выпуска.
- Итоги по этому транспорту: расстояние, объём топлива и стоимость.
- Она не хранит ни номерного знака, ни VIN, ни вашего адреса электронной почты, ни отдельных расходов.
- В приложении нет переключателя, который держал бы ваш транспорт вне этого списка.
8Покупка Premium
Если вы покупаете MiExpenses Premium, сам платёж ведёт Google Play: мы не видим ни вашей карты, ни платёжных данных, и деньги через нас не проходят. Две вещи всё же касаются нас. Google Play получает номер, под которым хранится ваш аккаунт, чтобы сообщить нашему серверу, какому аккаунту принадлежит покупка; а приложение отправляет на наш сервер токен покупки, выданный Google Play, — сервер проверяет его у Google и после этого отмечает аккаунт как оплаченный. Эта отметка хранится в вашем аккаунте, и именно она открывает платные функции на каждом устройстве, где вы войдёте.
9Куда уходят данные
Всё, что приложение хранит, уходит на собственные серверы разработчика по HTTPS. Точек входа две; приложение выбирает между ними само, а вы можете закрепить одну из них в настройках. Стороннего облачного хранилища в цепочке нет: ни Google Drive, ни Dropbox, ни какого бы то ни было файлового сервиса. Этот документ не называет ни адресов этих серверов, ни страны хранения: адреса — это инфраструктура, которая может смениться, ничего для вас не изменив, а страну мы не можем подкрепить ничем, что вы могли бы проверить.
Данные уходят с телефона:
- На наш собственный сервер, по HTTPS. Там живут ваша учётная запись, транспорт, расходы, напоминания, категории и записи о совместном доступе.
- В Firebase Authentication — для входа по почте и входа через Google.
- В Firebase Cloud Messaging — для push-токена и для будящих сообщений, которые сами по себе не несут персональных данных.
- В Google AdMob — для единственного видео с вознаграждением, описанного выше.
- На один из трёх сторонних сервисов геолокации — для определения страны по IP-адресу.
- В Google Play — для покупки MiExpenses Premium и для проверки, что она в силе.
10Как это защищено
Трафик между приложением и сервером идёт по HTTPS, а выпущенная сборка отказывается работать по обычному HTTP. Пароли обрабатывает Firebase Authentication, и до нашего сервера они не доходят: у него нет ни поля для пароля, ни колонки под него; для входа по почте Firebase к тому же требует подтверждённого адреса. На телефоне кэшированная копия данных вашей учётной записи в файле настроек зашифрована по AES/GCM ключом, который создан и хранится в Android Keystore, поэтому прочитать её из скопированного файла настроек нельзя.
Это весь список, и стоит быть точным в том, чем он не является. Это не сквозное шифрование и не zero knowledge: данные на сервере читаемы, и разработчик может их прочитать. База расходов на вашем телефоне — обычная незашифрованная база, защищённая песочницей приложений Android и шифрованием самого устройства. Закрепление сертификатов не используется. Если какая-то деталь настолько чувствительна, что всё это имеет значение, безопасный ответ — не вводить её.
11Совместный доступ к транспорту
Вы можете дать другому зарегистрированному человеку доступ к одному из своих транспортных средств на одном из трёх уровней: «Просмотр», «Добавление расходов» или «Сменить владельца». Совместный доступ работает на весь транспорт целиком. Отдельные записи из него не исключить.
- Приглашение создаётся по адресу электронной почты, который вы вводите, и этот адрес хранится на нашем сервере как часть записи о совместном доступе.
- Ещё не принятое приглашение уже перемещает данные. С момента, когда приглашение существует, сервер считает, что у той учётной записи есть доступ, поэтому её телефон при следующей синхронизации скачивает и хранит транспорт и его записи. Приложение прячет от них транспорт, пока они не примут приглашение, но данные к этому моменту уже на их устройстве.
- После принятия они видят карточку транспорта, все привязанные к нему расходы и напоминания, включая записи, сделанные другими участниками, и ваши категории расходов.
- Запись с отметкой «Исключить из статистики» — не приватная запись. Она хранится и синхронизируется как любая другая, видна всем, с кем открыт совместный доступ к транспорту, и попадает в выгрузку CSV.
- Отзыв доступа немедленно убирает транспорт из приложения другого человека и не даёт ему менять что-либо дальше. До того, что его телефон уже скачал, это не дотягивается, а сама запись о совместном доступе остаётся на нашем сервере с пометкой об удалении.
- Смена владельца необратима, и отменить её нельзя. PIN-код, который её подтверждает, хранится на нашем сервере открытым текстом и сравнивается без учёта регистра, так что относитесь к нему как к рукопожатию, а не как к паролю.
12Резервное копирование устройства
Начиная с версии 5.0.0 приложение отказывается от системы резервного копирования Android: и облачная копия в вашу учётную запись Google, и перенос с устройства на устройство выключены для всех частей данных приложения. Версии по 4.1.0 включительно от этого не отказывались, поэтому, если вы пользуетесь приложением давно, копия его локальной базы и настроек может уже лежать в резервной копии Google. Эта копия — в вашей учётной записи Google, а не в нашей, и удаляется так, как Google позволяет удалять резервные копии приложений. Инструменты переноса, сделанные производителями телефонов, работают вне системы резервного копирования Android, и эта настройка их не касается.
13Сколько это хранится и как удаляется
Данные лежат на сервере столько, сколько существует учётная запись. Удаление транспорта, расхода, напоминания, категории или записи о совместном доступе внутри приложения — это мягкое удаление на сервере: строка перестаёт показываться и перестаёт синхронизироваться, но сохраняется с пометкой об удалении.
Экрана удаления учётной записи в приложении нет, и на сервере метода для этого тоже нет. Удаление — это запрос по почте на contacts@mve.suxlv2.space, на который отвечает тот единственный человек, который читает этот адрес. Это вся процедура, и написать обратное было бы легче, чем выполнить.
Конкретно:
- Удаление внутри приложения: запись уходит из вашего приложения и из приложения того, с кем вы поделились, и сохраняется на сервере с пометкой об удалении.
- Выход из учётной записи: нигде ничего не удаляется. Записи, которые ещё ждут отправки, теряются, если выйти до того, как они отправлены, и приложение сначала об этом предупреждает.
- Удаление приложения: локальная копия уходит. Повторный вход возвращает то, что хранит сервер, — включая месячные лимиты и шаблоны расходов, если Premium успел их туда сохранить; всё, что до сервера не дошло, потеряно.
- Удалить учётную запись и её данные на сервере: напишите на contacts@mve.suxlv2.space.
14Ваши права
Вы можете спросить, что о вас хранится, попросить исправление, попросить копию, попросить удаление или возразить против части обработки. Адрес для всего этого один: contacts@mve.suxlv2.space. Пишите, пожалуйста, с того адреса, на который зарегистрирована учётная запись, потому что этот адрес — единственный ваш идентификатор, который у нас есть.
- Доступ и копия. Приложение выгружает по одному транспорту за раз в CSV или в отчёт PDF, и CSV из них полнее. За тем, чего выгрузка не покрывает, обращайтесь по почте.
- Исправление. Большинство полей можно исправить в самом приложении. Там, где нельзя, — по почте.
- Удаление. По почте, как описано в разделе выше.
- Возражение. По почте, включая возражение против попадания вашего транспорта в список глобальной статистики: переключателя для этого в приложении нет, поэтому это должен быть запрос.
15Изменения в этой политике
Когда этот документ меняется, вместе с ним меняется дата вверху страницы, и эта дата — единственная отметка: обновления политики приложение вам не присылает. Если изменение когда-нибудь будет означать, что собирается что-то новое, оно будет описано здесь так же подробно, как и всё остальное, — до того, как дойдёт до приложения.

