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

Протокол MTProto

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

История

Разработка MTProto началась в 2013 году, одновременно с созданием самого мессенджера Telegram. Первая версия протокола (MTProto 1.0) была представлена в августе 2013 года. В декабре 2013 года команда Telegram опубликовала подробное описание протокола и пригласила криптографов к его аудиту. В 2014 году был проведён независимый аудит протокола, в результате которого были выявлены некоторые уязвимости, в частности, в схеме обмена ключами. В ответ на это в 2015 году была выпущена версия MTProto 2.0, которая исправила обнаруженные проблемы и усилила криптостойкость.

В 2016 году Telegram объявил о проведении конкурса на взлом протокола с призовым фондом 300 000 долларов США, что стимулировало дополнительное тестирование безопасности. С тех пор протокол неоднократно обновлялся, в том числе для поддержки новых функций, таких как голосовые и видеозвонки (с использованием протокола MTProto для установления соединения), а также для улучшения производительности на мобильных устройствах.

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

MTProto работает на транспортном уровне и уровне приложений модели OSI. Он состоит из трёх основных компонентов:

  1. Высокоуровневый компонент (API) — определяет формат запросов и ответов между клиентом и сервером. Все команды (отправка сообщения, загрузка файла, получение списка чатов) кодируются в виде бинарных структур.
  2. Криптографический слой (авторизация и шифрование) — отвечает за установление безопасного соединения, аутентификацию сторон и шифрование данных.
  3. Транспортный слой — определяет, как зашифрованные данные передаются по сети (через TCP, HTTP, WebSocket или собственный протокол MTProto Transport).

Криптографические алгоритмы

MTProto 2.0 использует следующие криптографические примитивы:

Процесс авторизации и шифрования

  1. Генерация ключей: При первом подключении клиент генерирует пару ключей (открытый и закрытый) для асимметричного шифрования. Открытый ключ отправляется на сервер.
  2. Обмен ключами: Клиент и сервер выполняют протокол Диффи — Хеллмана, чтобы получить общий секретный ключ (сессионный ключ). Этот ключ используется для симметричного шифрования всех последующих сообщений в рамках данной сессии.
  3. Шифрование сообщения: Каждое сообщение (например, текст, фото, команда) упаковывается в контейнер, который включает:
  1. Передача: Зашифрованный контейнер передаётся через транспортный слой на сервер. Сервер расшифровывает его, проверяет целостность и выполняет команду.

Классификация и режимы работы

MTProto поддерживает несколько режимов работы, определяющих уровень конфиденциальности:

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

MTProto неоднократно подвергался критике со стороны криптографического сообщества. Основные претензии:

  1. Нестандартные криптографические конструкции: Использование режима IGE для AES, который не является широко распространённым и имеет потенциальные уязвимости (например, уязвимость к атакам на основе манипуляции с зашифрованными блоками). В 2015 году группа криптографов (включая Мэттью Грина) указала на то, что MTProto 1.0 не обеспечивает аутентифицированного шифрования, что делает его уязвимым для атак типа «man-in-the-middle» при определённых условиях.
  2. Отсутствие сквозного шифрования по умолчанию: В облачных чатах сервер имеет доступ к ключам шифрования, что противоречит принципу «нулевого доверия» (zero-trust). Telegram утверждает, что это необходимо для синхронизации и облачных функций, но критики считают это компромиссом безопасности.
  3. Сложность аудита: Протокол является проприетарным, хотя его описание и исходный код клиентских библиотек опубликованы. Это затрудняет независимый аудит по сравнению с открытыми стандартами, такими как Signal Protocol.
  4. Атаки на основе времени: В 2021 году исследователи из Университета Рутгерса выявили, что MTProto может быть уязвим для атак по сторонним каналам, позволяющих злоумышленнику, имеющему доступ к сети, определить, что пользователь находится в сети (онлайн-статус) или даже определить, с кем он общается, анализируя размеры зашифрованных пакетов.

В ответ на критику команда Telegram активно дорабатывает протокол, внедряя исправления и улучшения. В 2021 году была выпущена версия MTProto 2.0 с улучшенной схемой аутентификации, которая устранила многие из ранних уязвимостей.

Применение

MTProto используется исключительно в экосистеме Telegram. Он применяется для:

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

Источники

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

На главную BFOmetr →