В основном мобильные устройства делятся на два вида – Android и iPhone, и для оптимизации доставки уведомлений был введен механизм, при котором смартфон не будет поддерживать соединение со всеми приложениями, а лишь с сервером уведомлений, будь то FCM (Firebase Cloud Messaging, Google) или APNS (Apple Push Notification Service). При таком подходе смартфон существенно сократит расход батареи, а доставка уведомлений будет надежной, но всему есть цена.


Google и Apple хранят информацию об уведомлениях, и активно делятся ей с правоохранительными органами. Это вызывает несколько проблем: если содержимое не зашифровано, возможна утечка основной информации (разработчики сами должны реализовывать шифрование уведомлений). Если зашифровано – все равно произойдет утечка метаданных, а именно – приложение и время. 


Давайте теперь разберем как Telegram и Signal пытаются противодействовать чтению содержимого, и как это может не помочь:


Signal не раскрывает никаких данных в уведомлениях, так как сам не имеет доступа к содержимому сообщений – по этой причине в случае получения доступа к уведомлениям – возможно лишь узнать получателя. Допустим есть человек А и он пишет анонимному собеседнику – человеку Б. Человека А поймали, вскрыли устройство и нашли тайминги отправки его сообщений. Теоретически можно попытаться найти собеседника через службы доставки push сообщений, узнав кому приходили эти пуши. Apple заявляет, что хранит 1 последнее сообщение для каждого приложения, Google заявляет о 100. Проверить эту информацию невозможно, спецслужбы могут заставить эти компании не разглашать детали сотрудничества. В любом случае, это остается эффективным. 


Теперь Telegram. Про управление push уведомлениями есть подробная статья, ознакомьтесь (https://core.telegram.org/api/push-updates) в которой описывается механизм шифрования уведомлений. Поскольку уведомления шифруются, доступны атаки аналогичные Signal, но также дополнительный интересный вектор.


Предположим, вы очистили переписку Telegram, и в вашем телефоне не найти ее следы. Однако все еще можно извлечь ключ которым шифруются уведомления с устройства и расшифровать содержимое запрошенное у Google или Apple (даже если они не вели логи, их могли заставить сделать это для специального круга лиц). В таком случае вся структура будет вскрыта для облачных чатов, там будут id, текст сообщения и т. д. о ней подробно описано в статье от Telegram по ссылке выше.


Также помните, что в Telegram есть каналы и группы, если у вас включены от них уведомления, спецслужбам будет не так сложно сопоставить тайминги прихода сообщений с таймингами постов в каналах, например. Несколько сообщений будет уже достаточно чтобы выявить всех участников со включенными уведомлениями.


Вывод простой: в случае использования уведомлений от этих централизованных сервисов вы жертвуете анонимностью, а иногда и приватностью. Помните, что методы можно комбинировать. Как пример – возможно получить данные о потенциальной отправке сообщений Signal через провайдера A и узнать ip адрес человека (и много других метаданных) через систему уведомлений даже не имея никакого доступа к провайдеру Б.


Автор статьи: @chekist42