MTProto

криптопротокол Telegram · Николай Дуров · 2013

Что это

MTProto (Mobile Transport Protocol) — основной криптографический протокол мессенджера Telegram. Разработан Николаем Дуровым (математиком, брат Павла Дурова) и командой Telegram. Первая версия — MTProto 1.0 (2013). Текущая — MTProto 2.0 (декабрь 2017). Не путать с MTProto Proxy — это отдельный прокси-протокол на его основе.

Зачем изобрели свой

Когда братья Дуровы делали Telegram (2013), они не взяли готовые протоколы (например, TLS, HTTPS или Signal Protocol от Open Whisper Systems). Причины по их объяснению:

Это «rolled-your-own crypto» — то, за что криптографическое сообщество Telegram сильно ругало.

Как устроен (MTProto 2.0)

Слои

  1. Auth key — постоянный 2048-битный ключ, установленный при первом подключении через Diffie-Hellman с сервером Telegram. Хранится на устройстве и на сервере
  2. Server salt — периодически меняющаяся соль от сервера, для защиты от replay
  3. Session — временная сессия внутри auth key, привязана к устройству
  4. Message — конкретное сообщение с msg_id (timestamp-based), seq_no, длиной, телом

Шифрование

Diffie-Hellman первого подключения

1. Клиент: req_pq_multi (nonce)
2. Сервер: resPQ (server_nonce, pq)
3. Клиент: раскладывает pq на p и q (RSA prime factorization challenge)
4. Клиент: req_DH_params с зашифрованным по RSA server_public_key
5. Сервер: server_DH_params (dh_prime, g_a)
6. Клиент: set_client_DH_params (g_b)
7. Обе стороны вычисляют auth_key = g^(a*b) mod dh_prime
8. auth_key = 256-байт (2048 бит) секрет

Cloud chats vs Secret chats

Cloud (обычные)Secret (секретные)
End-to-endнет, только client-serverда, client-client
Сохранение на сервереда (зашифрованно на серверном ключе)нет, только на устройствах
Мультидевайсданет, только одно устройство
Perfect Forward Secrecyограниченно (server salt)да (rekey каждые 100 msg или неделю)
Skруткигрупповые чаты, каналытолько 1-на-1
По умолчаниюданет, надо создать вручную

Обычные чаты Telegram НЕ end-to-end — серверы Telegram могут прочитать всё. Только Secret Chat даёт E2E-шифрование.

Критика от криптографов

MTProto 1.0 (2013-2017)

MTProto 2.0 (2017-сейчас)

Транспорты MTProto

MTProto — уровнем криптографии выше транспорта. Может работать поверх:

Работа с Telegram-серверами

Клиент подключается напрямую к DC (Data Center) — их 5-6 штук по миру (Amsterdam, Miami, Singapore и др.). MTProto скрывает от провайдера только содержимое, IP-адрес DC виден. Именно поэтому РКН в 2018 году блокировал по IP, а не по DPI-сигнатуре MTProto.

MTProto как прокси

На основе MTProto построен отдельный прокси-протокол — MTProto Proxy (2018). Работает как обёртка: клиент шлёт данные Telegram через прокси-сервер, а тот пересылает на настоящий DC Telegram. См. отдельную страницу.

См. также

← на главную
← на главную