Все статьи
Технологии

Как MTProto обходит DPI с помощью FakeTLS

FakeTLS — приём, которым MTProto-прокси маскируется под трафик к обычному HTTPS-сайту. Разбираем как именно это работает.

FakeTLS — техника маскировки MTProto-прокси под обычный HTTPS-трафик. Сервер MTProto «представляется» обычным веб-сервером с TLS-сертификатом, а внутри TLS-канала — Telegram.

Что видит DPI без FakeTLS

У классического MTProto-прокси (без FakeTLS) первый пакет — это Obfuscated2-handshake: 64 случайных байта. Это можно отличить от любого нормального протокола статистически: «нормальный HTTPS начинается с TLS ClientHello, а тут какие-то случайные байты на порту 443».

DPI ловил такие соединения и блокировал. К 2024 году обычный MTProto в РФ почти везде уже не работал.

Что делает FakeTLS

FakeTLS добавляет перед obfuscated2-handshake поддельный TLS ClientHello — пакет, который выглядит как обычный заход браузера на HTTPS-сайт.

  1. Клиент шлёт fake ClientHello — длиной и структурой как у настоящего TLS 1.3.
  2. Внутри ClientHello.random зашит HMAC от секрета прокси.
  3. Сервер проверяет HMAC — если совпадает, продолжает диалог по MTProto. Если нет (значит, это случайный сканнер) — отдаёт реальный TLS-handshake обычного «прикрытия» (cover-сайта).
  4. Дальше идёт fake ServerHello + ChangeCipherSpec + ApplicationData — тоже выглядит как нормальный TLS.
  5. Внутри ApplicationData — MTProto-сессия как обычно.

Где «зашивается» секрет

Секрет прокси (32 байта hex с префиксом ee) делится на две части:

  • Первые 16 байт — ключ HMAC-SHA256 для подписи fake ClientHello.random.
  • Последние 16 байт — имя cover-сайта (для случая, если кто-то стучится без знания секрета — отдаём настоящий TLS этого домена).

Префикс ee означает Extended Encrypted — то есть FakeTLS. Без префикса (или с dd) — старые протоколы без FakeTLS.

Активная проба DPI

ТСПУ умеет делать «active probing»: если соединение подозрительное, ТСПУ сам шлёт на тот же сервер свой TLS-handshake и смотрит ответ. Если ответ выглядит как ответ от обычного веб-сервера — нормально, не блокирует. Если возвращается какая-то ерунда — блокирует IP.

Поэтому хорошие MTProto-прокси держат cover-сайт — реальный HTTPS-сервер на 443 порту, который отдаёт хоть какую-то статичную страницу. Активная проба → видит нормальный TLS → отстаёт.

Почему ТСПУ всё-таки иногда ловит

В апреле 2026 в РФ начали блокировать FakeTLS по JA3-фингерпринту ClientHello — параметры fake ClientHello в старых клиентах совпадали друг с другом, и DPI ловил эту сигнатуру.

Свежие клиенты Telegram (tdesktop с PR #30513, DrKLO PR #1949) подгружают браузерные ClientHello-шаблоны — fake handshake выглядит как реальный Chrome/Firefox. Это снова обходит фильтр.

WProxy использует свежие версии MTProto-серверов с обновлённой FakeTLS-маскировкой. Это позволяет работать там, где старые публичные MTProto уже не пробиваются.

Куда дальше

Следующая ступень — это HSJA (Heat Simulated Adversarial JA3 Adjustment): автоматическое подстраивание JA3-фингерпринта под текущий профиль популярных браузеров. Это исследовательская область, в продакшен ещё не везде попало.

Попробовать WProxy

Один аккаунт — пять протоколов

MTProto, Hysteria, VLESS, AmneziaWG и Whitelist — пять протоколов под разные задачи, каждый подключается отдельно. Регистрация бесплатная, на старте хватит 100 ₽ чтобы попробовать.

Приложение WGate для Android

AmneziaWG и Whitelist-VPN в один тап. Только Android.

Скачать WGate.apk

Читать дальше