Доброго времени суток, уважаемые читатели.

Статья посвящается объявленному Павлом Дуровым конкурсу по дешифровке переписки Telegram.
Несколько важных моментов:
1. Все нижеописанное является исключительно мнением автора.
2. На момент прочтения часть информации могла устареть.
3. Любую информационную систему можно взломать.
4. Telegram интересен именно высоким уровнем защищенности.

Вначале пару слов о самом mtproto. Публичная часть протокола, касающаяся общения с клиентом, доступна для свободного изучения в интернете. Построенная на стандартных общепризнанных алгоритмах криптографии она, как таковая, не вызывает вопросов. Многие возможные атаки предотвращены. Тем не менее, остаются потенциальные места, уязвимые для взлома. Под взломом будем понимать несанкционированное получение любой информации о переписке пользователей защищенных чатов. В этом случае виды взлома можно условно разделить на несколько категорий:
I) Атака на базе ошибок программной реализации.
II) Атака на базе слабости математических алгоритмов.
III) Атака со стороны сервера Telegram.
IV) Атака со стороны Большого Брата.
V) Атака со стороны обычного злоумышленника.

I) Атака на базе ошибок программной реализации.
Путь поиска ошибок и закладок бесконечен. Не стоит забывать, что если вы ищете закладки, необходимо проверять соответствие кода приложения и публикуемого протокола. Что на самом деле не очевидно. Практика показывает, что обнаруженные и опубликованные ошибки очень быстро исправляются. Так что стратегический интерес в этом пункте найти сложно.

II) Атака на базе слабости математических алгоритмов.
Теоретически используемые алгоритмы шифрования и обмена ключами могут быть слабыми. Однако пока никто в мире это публично не доказал. Даже если в какой то момент это обнаружится, убежден, что владельцы Telegram оперативно изменят протокол и исходники.

III) Атака со стороны сервера Telegram.
Что тут обсуждать ̶ не ясно. Ряд пользователей в интернете (в частности habrahabr.ru/post/206900) указывали на возможность MITM атаки со стороны сервера, аргументируя это текущей ошибкой реализации. Это разумеется было так, но выглядело как пиар Telegrama, поскольку настоящая проблема врезана в протокол. Обмен пользователей ключами происходит через сервера Telegram. Это означает, что в любой момент Telegram при начале новой сессии может подменить ключи. Тут можно возразить, что это можно обнаружить. Внимание, фокус: вероятность того, что Telegram воспользуется этим конкретно с вами крайне низка, вероятность того, что вы при этом наблюдаете и сравниваете ключи практически ноль. Вывод: при необходимости они могут этим воспользоваться, т.е. читать и подменять переписку. Решение у данного параноидального страха есть: например параллельная отправка ключей через независимые от Telegram сервера и сравнение в итоге.
Помимо этого сервера располагают информацией о том, кто и с кем общается в защищенных чатах. Идеальным выглядел бы вариант, при котором сервера Telegram были этаким BlackBox и не имели информации даже об этом. Это можно было бы реализовать созданием публичного хранилища открытых ключей и использованием RSA/эллиптики.


IV) Атака со стороны Большого Брата.
Тут все просто. Если ли сомнения в том, что иноБрат имеет достаточный для автоанализа и спец. режима по запросу уровень закладок (в том числе аппаратных) в продукцию Apple? К версиям/будущим версиям Telegrama для Android/Windows Phone/PC это относится в не меньшей степени. Работа изначально ведется на аппаратуре полностью уязвимой по пункту IV. Есть ухищрения, позволяющие даже с учетом этого попытаться обеспечить безопасность переписки. К примеру для самых параноиков добавить спец. режим в приложение, позволяющее создавать цепочки передачи пакетов на другие устройства. Однако в mtproto ничего подобного пока нет.

V) Атака со стороны обычного злоумышленника.
В данный момент получение доступа злоумышленника к телефону (по средствам установки трояна, к примеру) означает получение доступа к переписке. С выходом версий под другие платформы актуальность будет только расти. Потенциальная защита, как и в пункте IV, может представлять из себя создание цепочек для передачи пакетов на конечное устройство с упрощенным функционалом. Помимо этого существует атака, которая хоть и не позволяет прочитать текст, однако позволяет узнать список «защищенных» контактов. Если у нас есть возможность слушать трафик во многих местах сети, то замеряя размеры пакетов и тайминги (сколько идут пакеты до сервера и до 2го абонента) можно вычислить, с кем именно общается наш клиент. Защититься от данной атаки можно было бы, внеся элементы десинхронизации в протокол.

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