Tuta Mail доступна на F-Droid, чтобы вы могли освободиться от слежки Больших Технологий

Мы здесь для того, чтобы остановить слежку со стороны таких корпораций, как Google и Apple. Именно поэтому мы заменили FCM от Google на собственную систему уведомлений и свели к минимуму данные уведомлений от Apple. Узнайте здесь, почему это так важно.

Когда мы переделывали клиент Tuta в 2017 году, мы строго придерживались нашей миссии - освободить всех от принудительного использования сервисов Google. Новые данные показывают, что это был отличный ход, поскольку Google и Apple контролируют все ваши push-уведомления. За исключением случаев, когда вы используете Tuta: Мы предлагаем одно из немногих приложений для работы с электронной почтой без службы push-уведомлений Google. Технически это было настоящим вызовом, так что давайте объясним, как нам это удалось!


Предоставление всем желающим возможности полностью уйти от Google

Наша цель в Tuta - дать всем возможность перейти на безопасный почтовый сервис, который уважает ваши данные и ваше право на конфиденциальность. Для нас очень важно, чтобы каждый мог полностью уйти от Gmail, что также известно как “deGoogle”.

Поэтому избавление от службы push-уведомлений Google было нашим главным приоритетом при создании безопасного почтового приложения с нуля. Мы очень рады, что нам удалось заменить GCM Google на push, так что приложение Tuta не имеет никакой связи с Google. Это защищает вас от массового сбора данных Google, а также от правительственного шпионажа.

Теперь новые данные показывают, что этот упреждающий переход был важным шагом в защите вашей конфиденциальности. Tuta - единственный провайдер зашифрованной электронной почты, предлагающий такой уровень конфиденциальности, даже безопасная альтернатива Protonmail не делает этого дополнительного шага.

ВКЛЮЧИТЕ приватность одним нажатием.

Apple и Google отслеживают все ваши Push-уведомления

7 декабря 2023 года агентство Reuters опубликовало поразительные данные о том, что правительства по всему миру шпионят за пользователями Apple и Google, отслеживая push-уведомления, которые приходят на их устройства. Впервые об этой альтернативной форме слежки стало известно после публикации открытого письма, направленного сенатором США Роном Уайденом в Министерство юстиции США.

Эти уведомления позволяют спецслужбам и правоохранительным органам связывать уже собранные метаданные с аккаунтами Google или Apple.

Команда Tuta уже несколько лет назад знала об этом потенциальном риске, и в 2017 году мы заменили службу уведомлений Google на собственную службу push-уведомлений. Если вы используете Tuta на Android, данные push-уведомлений не передаются Google. С нами ваша конфиденциальность в безопасности.

Мы также поддерживаем установку приложения Tuta на устройства Android через F-Droid, что позволяет использовать программу, не предоставляя Google информацию о том, что вы ее используете. Но независимо от того, устанавливаете ли вы приложение для Android через F-Droid или Google Play, ваши push-уведомления находятся в безопасности с нами и не подвержены сбору данных и слежке Google.

Для максимальной защиты конфиденциальности все push-уведомления на устройствах iOS отображают лишь минимальную информацию, просто информируя вас о том, что получено новое письмо. Таким образом, мы ограничиваем потенциальные данные, которые могут быть собраны Apple и правительственными службами. Когда мы добавили предварительный просмотр уведомлений, чтобы показать отправителя и тему письма в уведомлениях, мы убедились, что эта информация надежно зашифрована, чтобы защитить вас от слежки со стороны Apple! Теперь вы можете даже использовать быстрые действия с уведомлениями из приложения Tuta, при этом мы максимально защищаем вашу конфиденциальность.

Как мы заменили GCM

GCM (или, как он называется сейчас, FCM, Firebase Cloud Messaging) - это сервис, принадлежащий Google. Мы в Tuta использовали FCM для нашего старого приложения для Android до 2017 года. К сожалению, FCM включает в себя код отслеживания Google для аналитики, который мы не хотели иметь в нашем защищенном почтовом приложении.

И, что еще более важно: Чтобы иметь возможность использовать FCM, вы должны отправлять все свои данные уведомлений в Google - что не должно быть обязательным условием для любого безопасного почтового сервиса. Кроме того, вам придется использовать их собственные библиотеки. Из-за проблем с конфиденциальностью и безопасностью, которые, естественно, связаны с этим, мы не отправляли никакой информации вместе с уведомлениями в старом приложении (что, по понятным причинам, вызвало жалобы со стороны наших пользователей). Таким образом, push-уведомление в старом приложении для Android говорило только о том, что вы получили новое сообщение, без каких-либо ссылок на само письмо или почтовый ящик, в который оно было помещено.

FCM довольно удобен в использовании, с годами Google внесла в Android изменения, которые сделали отказ от использования их сервиса для уведомлений более сложным. С другой стороны, отказ от службы уведомлений Google избавил бы нас от необходимости устанавливать на телефоны наших пользователей сервисы Google Play. Так что именно так мы и поступили!

ВКЛЮЧИТЕ приватность одним нажатием.

Задача заменить Google FCM

Приложения Tuta - это Libre-программное обеспечение, и мы хотим предоставить настоящую альтернативу Gmail с открытым исходным кодом, что для нас включает в себя публикацию нашего приложения для Android на F-Droid. Мы хотели, чтобы наши пользователи могли использовать Tuta на любом ROM и любом устройстве, без вмешательства сторонних сервисов, таких как Google.

Мы решили принять вызов и создать свой собственный сервис push-уведомлений.

Когда мы начали разрабатывать нашу систему push-уведомлений, мы преследовали несколько целей:

  • Она должна быть безопасной
  • Быть быстрой
  • Она должна быть энергоэффективной.

Мы изучили, как другие безопасные и приватные приложения (Signal, Wire, Conversations, Riot, Mastodon) решают подобные проблемы. У нас было несколько вариантов, включая WebSockets, MQTT, Server Sent Events и HTTP/2 Server Push.

Замена FCM на SSE

Мы остановились на SSE (Server Sent Events), потому что это казалось простым решением. Под этим я подразумеваю “простое в реализации, простое в отладке”. Отладка такого рода вещей может стать серьезной головной болью, поэтому не стоит недооценивать этот фактор. Еще одним аргументом в пользу SSE была относительная энергоэффективность: Нам не нужны были восходящие сообщения, и постоянное соединение с сервером не было нашей целью.

Итак, что же такое SSE?

SSE - это веб-интерфейс, который позволяет серверу отправлять события подключенным клиентам. Это относительно старый API, который, на мой взгляд, недостаточно используется. Я никогда не слышал о SSE, пока не познакомился с федеративной сетью Mastodon: Они используют SSE для обновления временной шкалы в реальном времени, и это отлично работает.

Сам протокол очень прост и напоминает старый добрый опрос: Клиент открывает соединение, а сервер держит его открытым. Отличие от классического опроса в том, что мы держим это соединение открытым для нескольких событий. Сервер может посылать события и сообщения с данными; они просто отделяются друг от друга новыми строками. Поэтому единственное, что нужно делать клиенту, - это открывать соединение с большим таймаутом и читать поток в цикле.

SSE подходит для наших нужд лучше, чем WebSocket (он дешевле и быстрее сходится, поскольку не является дуплексным). Мы видели множество приложений для чатов, которые пытались использовать WebSocket для push-уведомлений, и это не выглядело энергоэффективным.

У нас уже был опыт работы с WebSocket, и мы знали, что брандмауэрам не нравятся соединения с постоянным обновлением. Чтобы решить эту проблему, мы использовали тот же обходной путь для SSE, что и для WebSocket: Мы отправляем пустые сообщения “heartbeat” каждые несколько минут. Мы сделали этот интервал регулируемым со стороны сервера и случайным, чтобы не перегружать сервер.

ВКЛЮЧИТЕ приватность одним нажатием.

Поддержка нескольких аккаунтов создает дополнительные проблемы

Следует отметить, что приложение Tuta поддерживает несколько аккаунтов, и это создало для нас проблему: Мы хотели, чтобы на каждом устройстве было открыто только одно соединение. После нескольких итераций мы нашли дизайн, который нас удовлетворил. Каждое устройство имеет только один идентификатор. При открытии соединения клиент отправляет список пользователей, для которых он хочет получать уведомления. Сервер проверяет этот список на соответствие записям пользователей и отсеивает недействительные.

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

Для получения уведомлений мы используем возможности Android. Мы запустили фоновую службу, которая держит соединение с сервером открытым, аналогично тому, как это делает процесс FCM. Еще одна сложность была вызвана режимом Doze, появившимся в Android M. Doze, который включается после периода бездействия, помимо прочего, не позволяет фоновым процессам получить доступ к сети. Как вы понимаете, это мешает нашему приложению получать уведомления.

Мы решили эту проблему, попросив пользователей сделать исключение из оптимизации батареи для нашего приложения. Это работает достаточно хорошо. Похожая проблема, но не связанная с Doze, - это оптимизация батареи, выполняемая конкретным производителем. Чтобы продлить время автономной работы своих устройств, производители телефонов, например Xiaomi, по умолчанию включают строгую оптимизацию батареи. К счастью, пользователи могут отключить их, но мы должны лучше об этом рассказать.

Еще одна проблема была вызвана изменениями в Android O. Одно из них - ограничение фоновых процессов: Если ваше приложение не видно пользователю, фоновые процессы будут остановлены, и вы не сможете запустить новые.

Изначально мы думали, что решить эту проблему можно, показывая постоянное уведомление с минимальным приоритетом, которое видно в желобе уведомлений, но не в строке состояния. В Oreo это не сработало: Если вы попытаетесь запустить фоновую службу и использовать для ее уведомления минимальный приоритет, приоритет уведомления повышается до более высокого (видимого все время), и в дополнение к этому система показывает еще одно постоянное уведомление: “Приложение X расходует заряд батареи”.

Изначально мы планировали объяснить пользователям, как они могут скрыть эти постоянные уведомления, но это было не очень удобно для пользователей, поэтому нам пришлось искать лучшее решение. Мы воспользовались механизмом Android Job, чтобы периодически запускать наш сервис (по крайней мере, каждые 15 минут), а также стараемся поддерживать его в рабочем состоянии после этого. Мы не ставим WakeLocks вручную - система делает это за нас. Мы смогли полностью отказаться от постоянных уведомлений. Даже если уведомления иногда приходят с небольшой задержкой, они всегда будут получены, а электронные письма придут мгновенно.

В итоге нам пришлось немного потрудиться, но это того стоило. Мы освободили наших пользователей от требования Google Play Services. Наконец-то каждый может получить приложение Tuta на F-Droid. Теперь система сочетает в себе и энергоэффективность, и скорость работы.

Новое приложение “Календарь Тута” также можно найти в F-Droid, нашем любимом магазине приложений.

Заключительное мнение: Каждый пользователь должен иметь возможность выбрать “Поставщика уведомлений” для каждого приложения

Разве не было бы здорово, если бы пользователь мог просто выбрать “поставщика push-уведомлений” в настройках телефона, а ОС сама управляла бы всеми этими сложными деталями? Таким образом, каждому приложению, которое не хочет, чтобы его контролировал владелец платформы, не нужно было бы изобретать систему заново? Она может быть зашифрована из конца в конец между приложением и сервером приложений. В этом нет никакой технической сложности, но пока наши системы контролируются крупными игроками, которые этого не позволяют, мы должны решать эту проблему сами.

Для свободного и открытого интернета нам нужно перестать отдавать все наши частные данные крупным корпорациям. Вот почему мы говорим: #NoMoreGoogle.

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