Открыть сервис

MTProto

MTProto — это криптографический протокол и набор сетевых протоколов, разработанный компанией Telegram Messenger LLP (основатели — Павел и Николай Дуровы) для обеспечения защищённой передачи данных в одноимённом мессенджере Telegram. Протокол предназначен для шифрования сообщений, медиафайлов и служебной информации между клиентами (пользовательскими приложениями) и серверами Telegram, а также между серверами в распределённой инфраструктуре. MTProto сочетает в себе симметричное и асимметричное шифрование, использует протокол Диффи — Хеллмана для установления ключей и обеспечивает конфиденциальность, целостность и аутентификацию данных. Протокол не является стандартизированным международным органом (например, IETF) и не прошёл публичного аудита на уровне, сопоставимом с TLS 1.3 или Signal Protocol, что вызывает критику со стороны части криптографического сообщества.

История

Разработка и запуск

Протокол MTProto был создан Николаем Дуровым, старшим братом Павла Дурова, в 2013 году одновременно с запуском мессенджера Telegram. Первая версия (MTProto 1.0) была представлена в августе 2013 года. Основной целью разработки было создание протокола, способного обрабатывать большие объёмы данных (например, групповые чаты и каналы) с минимальной задержкой, что отличало его от более медленных решений, таких как OTR (Off-the-Record Messaging) или Signal Protocol, ориентированных на одноранговые соединения.

Версия 2.0

В декабре 2017 года Telegram выпустил обновлённую версию протокола — MTProto 2.0. Изменения включали:

MTProto 2.0 остаётся текущей версией протокола, используемой в Telegram по состоянию на 2025 год.

Архитектура и компоненты

Уровни протокола

MTProto состоит из трёх логических уровней:

  1. Транспортный уровень — отвечает за передачу данных по сети. Использует протоколы TCP (порт 443, 80, 5222) или UDP (порт 443) с поддержкой HTTP-прокси и SOCKS5. Для обхода блокировок применяются MTProxy и пользовательские прокси.
  2. Криптографический уровень — реализует шифрование, аутентификацию и проверку целостности. Использует AES-256 в режиме CTR (ранее IGE) для симметричного шифрования, RSA-2048 или 4096 для асимметричного обмена ключами, а также протокол Диффи — Хеллмана (DH) для генерации сессионных ключей.
  3. Прикладной уровень — обрабатывает структуру сообщений (TL-схемы), сериализацию и десериализацию данных с помощью бинарного формата TL (Type-Length).

Ключи и идентификаторы

Шифрование сообщений

Процесс шифрования в MTProto 2.0 включает:

  1. Генерацию случайного salt (64 бита) и номера сессии.
  2. Вычисление Message Key как SHA-256 от части открытого текста и ключа.
  3. Шифрование сообщения с помощью AES-256-CTR, где ключ и IV (инициализационный вектор) вычисляются на основе Auth Key и Message Key.
  4. Отправку зашифрованного сообщения вместе с Message Key и идентификатором ключа.

Режимы работы

Обычные чаты (client-server)

В стандартном режиме (облачные чаты) сообщения шифруются между клиентом и сервером Telegram. Сервер хранит расшифрованные сообщения в облаке, что позволяет синхронизировать историю между устройствами. Ключи шифрования генерируются отдельно для каждого клиент-серверного соединения.

Секретные чаты (end-to-end)

Для секретных чатов используется режим end-to-end (E2E) шифрования, при котором сообщения не передаются серверу в открытом виде. Ключи генерируются по протоколу Диффи — Хеллмана непосредственно между двумя клиентами. Сервер выступает только как ретранслятор зашифрованных данных. Этот режим не поддерживает облачную синхронизацию и доступен только для диалогов «один на один».

Групповые чаты и каналы

В групповых чатах и каналах (кроме секретных) используется client-server шифрование. Сообщения расшифровываются на сервере, который затем пересылает их всем участникам. Критики указывают, что это делает сервер Telegram потенциальной точкой компрометации, хотя компания утверждает, что доступ к серверам ограничен физически и юридически.

Критика и уязвимости

Отсутствие стандартизации

MTProto не является открытым стандартом, одобренным криптографическим сообществом. В отличие от Signal Protocol, который прошёл множественные аудиты и используется в WhatsApp, Signal и других мессенджерах, MTProto подвергался критике за «кустарный» подход к дизайну. В 2015 году группа исследователей из Университета Карнеги — Меллон (США) выявила несколько уязвимостей в MTProto 1.0, включая возможность атаки на padding oracle, которая была исправлена в версии 2.0.

Атаки на конфиденциальность

В 2018 году исследователи из Университета Твенте (Нидерланды) показали, что MTProto 2.0 уязвим к атаке «Invisible Salamander», позволяющей злоумышленнику, контролирующему сеть, переупорядочивать сообщения в групповых чатах. Telegram исправил эту уязвимость в обновлении 2019 года.

Юридические и политические аспекты

Telegram неоднократно сталкивался с требованиями властей разных стран предоставить доступ к переписке. В России в 2018—2020 годах Telegram был заблокирован (позднее блокировка снята) из-за отказа передать ФСБ ключи шифрования. Компания заявляет, что не может предоставить ключи для секретных чатов, так как они хранятся только на устройствах пользователей, но для облачных чатов технически может расшифровать данные.

Сравнение с другими протоколами

ХарактеристикаMTProto 2.0Signal ProtocolTLS 1.3
Тип шифрованияСимметричное + асимметричноеСимметричное + асимметричноеСимметричное + асимметричное
Режим E2EТолько секретные чатыВсе сообщенияНе поддерживается
Открытый аудитЧастичный (сторонние исследования)Многократный (публичные аудиты)Многократный (стандарт IETF)
Поддержка групповых чатовДа (client-server)Да (E2E)Нет
СкоростьВысокая (оптимизирован для больших объёмов)СредняяВысокая

Применение

Telegram Messenger

Основная и единственная массовая реализация MTProto — мессенджер Telegram. Протокол используется во всех официальных клиентах (iOS, Android, Desktop, Web) и в сторонних приложениях, совместимых с Telegram API (например, Plus Messenger, Telegram X).

Сторонние реализации

Существуют открытые реализации MTProto на языках Python (Pyrogram, Telethon), Go (gotd), JavaScript (GramJS) и других. Они используются для создания ботов, автоматизации и анализа данных, но не для массового обмена сообщениями.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →