
Читаю ленту, и у меня откровенно горит.
«⚡️ Telegram обошёл блокировку прокси Роскомнадзором», «Команда мессенджера закрыла уязвимость в ClientHello», «Цифровое сопротивление возвращается — разработчики выпустили фикс!»
Спойлер: официальная команда Telegram не сделала для этого ровным счётом ничего, пока энтузиасты не принесли им готовое решение, разжёванное до конкретного байта. Дальше — как это было на самом деле.
Три месяца тишины
Слухи о том, что ТСПУ возьмутся за Telegram-прокси, ходили с начала 2026 года. У официальной команды было минимум три месяца, чтобы провести аудит своей реализации MTProxy. Код mtproto_tls_socket.cpp лежал в том же виде с ноября 2025 года.
Команда Телеграм ждала и 1 апреля ТСПУ дёрнули рубильник. Встроенный FakeTLS с маскировкой отвалился у большинства пользователей в России. Прокси падают, коннекты таймаутятся.
Реакция Telegram? Молчание.
Кто реально взялся за работу
Пока СМИ ждали «официального обновления», участники сообщества вокруг прокси-сервера Telemt взяли ситуацию в свои руки, надели перчатки и давай анализировать дампы.
Алгоритм диагностики был прост до гениальности:
Перехватываем TLS-хэндшейк настоящего Chrome — который ТСПУ пропускает. Перехватываем хэндшейк Telegram — который блокируется. Меняем поля пакета по одному и гоняем на живой сети. В какой момент пакеты телеги перестают блокироваться, а пакеты от браузера начинают дропаться — в том поле и сидит сигнатура.
Через сутки картина стала ясной. Нашли конкретные байты, форкнули десктопный клиент, проверили на двух провайдерах всем сообществом — заработало. Детали тестирования намеренно не раскрываю — не стоит облегчать работу тем, кто фильтры настраивает.
«Маскировка», за которую стыдно
FakeTLS — это попытка притвориться обычным HTTPS-трафиком. Чтобы DPI посмотрел на пакет и сказал: «А, это просто Васян ходит на сайт — пропускаем».
Что слал Telegram?
Ошибка 1 — несуществующий идентификатор расширения:
- S("\xfe\x02"_q); + S("\xfe\x0d"_q);
0xFE02 — это старый драфтовый мусор, которого нет ни в одном реальном браузере в 2026 году. 0xFE0D — стандартный IANA codepoint для Encrypted Client Hello (ECH), которое сегодня повсеместно использует, например, Cloudflare. Telegram годами слал в сеть расширение с идентификатором-призраком и называл это «маскировкой под браузер».
Ошибка 2 — математически кривой пакет:
- S("\x00\x20"_q); // объявляем 32 байта - R(20); // а генерируем 20 + R(32); // теперь совпадает
В заголовке заявлена длина 32 байта, а код генерировал 20. Тут я выпадаю в осадок: таких пакетов в реальном TLS не существует в природе. Любой DPI-фильтр, умеющий сравнивать declared length с actual, отстреливал это за миллисекунды. И это годами называлось защитой от блокировок.
Кража лавров
Сообщество оформило находки в Pull Request #30513, подробно расписав: что менять, почему, и с результатами тестирования на живых российских сетях. PR прошёл ревью внутри сообщества ещё до того, как официальная команда его увидела. В чате tdlib несколько раз поднимали эту тему, но разрабы ТГ игнорировали вопросы.
Реакция Telegram Desktop: мейнтейнер делает коммит 407bf19 с комментарием «Fix parts of client hello generation. Inspired by wide internet discussions and #30513». Берут минимальный набор изменений из PR, сливают и на следующий день — заголовки про великую победу мессенджера над цензурой. Комьюнити в пресс-релизах не упомянули.
Ирония дня: john-preston (мейнтейнер tdesktop) сам подтвердил в треде PR, что tdlib содержит те же самые ошибки в ClientHello. Та же 0xFE02. Те же 20 байт вместо 32. Это значит, что iOS-клиент, Android-клиент и все библиотеки, написанные на tdlib, по-прежнему детектируются точно так же. Desktop получил заплатку. Остальные — ждут.

А потом вышел пост от самого Дурова. Про 65 млн россиян, про банковский коллапс от блокировок, про «Цифровое сопротивление» — в общем, красиво. В конце — ключевая фраза: «On our end, we'll keep adapting — making Telegram's traffic harder to detect and block».
«С нашей стороны». Мы будем адаптироваться... Мы!!
Чувак, ваша сторона не делала ровно ничего, пока комьюнити не принесло вам готовый PR с байтами, тестами и объяснением на пальцах. «Наша сторона» в этой истории — это анонимные ребята в чатах, которые разбирали hex-дампы пока вы молчали три месяца. Хотя, честно говоря, вы молчали с 2018 года!
Маркетинг — десять из десяти. Инженерный процесс — ноль из десяти.
Это всего лишь хотфикс, а не решение
То, что смёрджили — необходимый минимум на данный момент, но не более. Карта детектируемых сигнатур в реализации FakeTLS намного длиннее двух исправленных строк:
Проблема | Серьёзность |
|---|---|
Padding target = ровно 513 байт → фиксированная длина всего ClientHello | 🔴 Критическая |
ECH payload с фиксированной длиной на весь процесс жизни приложения (singleton) | 🔴 Критическая |
ALPS-расширение с устаревшим codepoint | 🟠 Высокая |
Darwin-ветка ( | 🟠 Высокая |
Равномерные inter-packet timings без jitter — статистически аномальны | 🟠 Высокая |
Фиксированные размеры TLS-записей (1380 / 4096 / 16384) — механистично | 🟡 Средняя |
После handshake ALPN декларирует | 🔴 Критическая (отдельный трек) |
Последний пункт — отдельная история. Telegram заявляет в handshake «я HTTP/2», а затем гонит внутри TLS-туннеля голый MTProto без какого-либо HTTP-фрейминга. Для продвинутого L7-анализа это самостоятельная поведенческая сигнатура, которую не закрыть никаким JA3/JA4-шейпингом.
Современные ТСПУ работают не только по статичным байтовым паттернам. Это ML-классификация: тайминги между пакетами, распределение размеров записей, поведение потока, концентрация соединений. Бюджет системы — 84+ млрд рублей. Статический TLS-хэндшейк против такого инструмента — не решение.
Что дальше
Пока медиа праздновали, в сообществе Telemt уже проектировали фундаментальное решение — для tdlib, то есть для всех платформ сразу. С динамическими профилями браузеров (Chrome, Firefox, Safari, Edge), per-connection энтропией, шейпингом timing'ов и route-aware политикой. С нормальными тестами против реальных pcap-захватов и проверкой на трёх провайдерах, а не двумя строками diff.
Настоящее «цифровое сопротивление» — не громкие посты в Telegram-каналах от Павла. Это безымянные инженеры, которые по ночам реверсят правила DPI и пишут патчи за тех, кто получает за это зарплату и пиар.
И им огромное спасибо!
P.S. Если занимаетесь низкоуровневым C++, сетевой безопасностью или просто хотите сделать что-то реально полезное — ищите сообщество Telemt. Там есть задачи, с которыми стоит помочь.
