MTProto: протокол Telegram изнутри
MTProto — собственный протокол Telegram, разработанный в 2013 году. Его главным архитектором считается Николай Дуров. Протокол создавался под конкретные задачи: быстрая работа на слабых мобильных сетях, устойчивость к разрывам соединения и относительно высокий уровень защиты без сильного усложнения клиентской части.
Базовая архитектура
MTProto работает поверх TCP (иногда UDP в отдельных реализациях) и использует собственный бинарный формат сообщений. В отличие от многих мессенджеров, которые опираются на готовые стеки вроде TLS + XMPP или Signal Protocol, Telegram выбрал путь полной кастомизации.
Ключевые элементы:
- Auth Key — долгоживущий ключ авторизации, который создаётся при первом входе и хранится на устройстве.
- Server Salt и Session ID — параметры, которые помогают защищаться от replay-атак.
- Message ID и Sequence Number — для упорядочивания и защиты от дублирования.
- Шифрование на базе AES-256 в режиме IGE (Infinite Garble Extension) в ранних версиях и более современных схемах в MTProto 2.0.
При создании сессии клиент и сервер проводят обмен ключами на базе Diffie-Hellman. После этого формируется auth_key длиной 2048 бит. Этот ключ не передаётся повторно при каждом сообщении — он остаётся на устройстве и используется для дальнейшей шифровки.
MTProto 1.0 и 2.0
Первая версия протокола вызывала критику со стороны криптографов. Основные претензии касались:
- использования самописных конструкций вместо проверенных стандартов;
- недостаточной формальной верификации;
- особенностей режима IGE, который считался менее изученным.
В ответ Telegram выпустил MTProto 2.0. В нём были переработаны некоторые криптографические примитивы, усилена защита от определённых классов атак и улучшена совместимость. Однако полная открытая формальная верификация протокола по-прежнему отсутствует в том виде, в каком её делают для Signal Protocol.
Облачные чаты и Secret Chats
Важно разделять два режима:
-
Обычные (облачные) чаты. Сообщения шифруются между клиентом и серверами Telegram. Серверы видят содержимое в расшифрованном виде, потому что именно они обеспечивают синхронизацию между устройствами, поиск и облачное хранение.
-
Secret Chats. Здесь используется дополнительный слой end-to-end шифрования. Ключи генерируются на устройствах участников, серверы передают только зашифрованный трафик. Secret Chats не синхронизируются между устройствами одного пользователя и не сохраняются в облаке.
Именно из-за этого разделения многие утверждения вида «в Telegram всё зашифровано end-to-end» являются неточными. По умолчанию большинство переписок идут через облачную модель.
Auth Key и сессии
Auth Key — одна из самых чувствительных частей системы. Он хранится локально. В Telegram Desktop это часть данных внутри папки tdata. Тот, кто получает auth_key (или всю tdata), фактически получает возможность работать от имени аккаунта без пароля и SMS-кода, пока сессия не будет завершена с другого устройства.
Сессии можно завершать через настройки «Устройства». Однако на практике пользователи часто не проверяют список активных сессий, что упрощает долгосрочное использование украденных ключей.
Критика и защита
Основные линии критики MTProto:
- Закрытость части реализации.
- Исторические претензии к криптографическим решениям первой версии.
- Модель доверия к серверам в облачных чатах.
Telegram отвечает тем, что клиенты открыты, серверный код частично описывается в документации, а на практике платформа выдерживает высокие нагрузки и редкие успешные атаки именно на протокол (гораздо чаще взламывают пользователей через фишинг и кражу сессий).
Практический вывод
MTProto — это не «самый безопасный протокол в мире» и не «дыра». Это прагматичный протокол, заточенный под масштаб и удобство. Его сильная сторона — скорость и устойчивость. Слабая — необходимость доверять серверам Telegram в обычных чатах и высокая цена ошибки при утечке auth_key.
Для обычного пользователя главные риски лежат не в математике протокола, а в фишинге, вредоносных мини-приложениях и краже tdata.