MTProto — транспортный протокол Telegram¶
MTProto — транспортный протокол шифрованной связи, разработанный компанией Telegram FZ-LLC для обмена сообщениями между клиентскими приложениями и серверами мессенджера Telegram. Протокол обеспечивает конфиденциальность, целостность и аутентификацию сообщений, а также устойчивость к блокировкам и ограничениям со стороны провайдеров. Название MTProto образовано от сокращения «Mobile Transport Protocol».
¶История создания
Протокол был разработан Николаем Дуровым и Павлом Дуровым и впервые опубликован в 2013 году одновременно с запуском мессенджера Telegram. В 2014 году появилась версия MTProto 1.0, а в 2017 году была выпущена переработанная версия MTProto 2.0, в которой были устранены ряд критических замечаний, высказанных исследователями в области криптографии. С 2018 года Telegram перешёл на MTProto 2.0, полностью отказавшись от первой версии.
¶Принцип работы
MTProto использует комбинированную модель шифрования. Передача данных между клиентом и сервером защищается с помощью симметричного шифра AES-256 в режиме IGE (Infinite Garble Extension) с ключом, производным от общего секрета, вычисляемого по алгоритму, основанному на обмене Diffie-Hellman. Аутентификация и установка общего секрета выполняются с использованием RSA-ключей сервера и криптографической хеш-функции SHA-256.
Поверх защищённого канала клиент и сервер обмениваются сообщениями в формате TL (Type Language) — специализированного языка описания структур данных, разработанного в рамках проекта VK.com и позже адаптированного для Telegram. TL позволяет сериализовать данные в компактный бинарный формат и обеспечивает строгую типизацию запросов и ответов API.
¶Уровни протокола
MTProto разделяет защищённое соединение на три условных уровня:
- Уровень 1 — транспортный: обмен зашифрованными пакетами между клиентом и сервером, работа поверх TCP или UDP (для звонков).
- Уровень 2 — RPC (удалённый вызов процедур): механизмы надёжной доставки, нумерации и подтверждения сообщений, работа с большими пакетами.
- Уровень 3 — API-уровень: набор методов и событий, доступных клиенту (отправка сообщений, работа с чатами, загрузка медиа и т. д.).
¶Особенности и критика
В 2015 году исследователь из Университета Хьюстона опубликовал анализ MTProto 1.0, в котором указал на возможные слабые места протокола, в частности на потенциальную уязвимость при подборе ключа и на нестандартное использование режима шифрования IGE. Разработчики Telegram отреагировали на замечания и выпустили MTProto 2.0, в котором были применены более распространённые криптографические примитивы и улучшена модель угроз.
Дополнительную критику вызывает закрытость протокола на ранних этапах: до 2013 года код клиента Telegram был проприетарным, что затрудняло независимую проверку реализации. После публикации исходного кода клиентов и выхода третьими сторонами альтернативных клиентов (например, Telegram Desktop, Nicegram, Kotatogram) ситуация изменилась, и независимые специалисты смогли провести аудит протокола.
¶MTProto и блокировки
MTProto поддерживает механизмы маскировки трафика. Telegram реализует прокси-протоколы MTProxy и MTProto-прокси, которые позволяют направлять зашифрованный трафик Telegram через промежуточные серверы, что затрудняет его блокировку. В России в 2018 году Роскомнадзор ограничил доступ к Telegram на основании решения суда о нераскрытии FSB ключей шифрования, однако технические меры блокировки оказались неэффективны, и в 2020 году ограничения были сняты.
¶Сравнение с альтернативами
В отличие от Signal Protocol, используемого в мессенджере Signal, MTProto не реализует сквозное шифрование (E2EE) для обычных облачных чатов — переписка хранится на серверах Telegram в зашифрованном виде и может быть расшифрована сервером. Сквозное шифрование доступно только в «секретных чатах» и звонках. Signal Protocol, напротив, применяет E2EE по умолчанию для всех сообщений. WhatsApp (продукт Meta, признанной экстремистской и запрещённой в РФ) использует протокол, основанный на Signal Protocol, и также обеспечивает E2EE.
¶Применение
MTProto является обязательным компонентом всех официальных клиентов Telegram: для Android, iOS, Windows, macOS, Linux, а также веб-версии. Протокол также используется в Telegram Bot API и в механизмах голосовой и видеосвязи Telegram. Открытые спецификации протокола позволяют сторонним разработчикам создавать совместимые клиенты.
¶Источники
- Официальная документация Telegram Core: TL-scheme и MTProto
- Дуров П. А., Дуров Н. В. Telegram API specification (2013)
- Аналитические материалы исследователей криптографии по MTProto 1.0 и 2.0
- Публикации о работе MTProxy и механизмах маскировки трафика
