Telegram тестирует новый вариант обхода блокировок — маскировка трафика под обычный TLS
Читать первым в Telegram-канале «Код Дурова»
Мессенджер братьев Дуровых всячески пытается обходить блокировки, из-за которых Telegram полностью или частично недоступен в некоторых странах, в том числе и в России. Смена доступных IP, прокси SOCKS и MTProto — всё это этапы развития обходных путей блокировки, однако теперь в бою мессенджер будет использовать Fake TLS. Подробнее об этом рассказал пользователь «Хабра» под ником shifttstas.
TLS (transport layer security) — протокол, обеспечивающий защищённую передачу данных между узлами в Интернете. TLS был основан на протоколе SSL (secure sockets layer), изначально разработанном для повышения безопасности электронной коммерции в Интернете. Теперь Telegram будет притворяться обычным TLS.
Сегодня бóльшая часть трафика — это TLS. Если используется этот протокол, то провайдер или технология DPI («глубокий анализ пакетов», — прим. КД) сможет увидеть IP-сервера и домен подключения (кроме URL):
Причем над последним пунктом ведется активная работа, чтобы его убрать и помимо двух IP был просто шифрованный туннель с неизвестным содержимым. В такой ситуации все нестандартные протоколы начинают привлекать к себе дополнительное внимание и решение этой проблемы одно — если ты выглядишь как TLS (https), то вопросов становится меньше, — объясняет shifttstas.
Переход прокси-серверов на Fake TLS делает домен невидимым для провайдера, а если сервер стоит в облаке от, например, Google и при согласовании используется домен этой же компании (Google.com, — прим. КД), то по факту провайдер будет получать информацию про условный сервис Google, работающий по HTTPS/TLS-протоколу.
Как это работает?
При использовании нового фейкового протокола TLS поток данных MTProto оборачивается в HTTPS, в котором идёт передача ненастоящего или чужого домена. После согласования протокола MTProto фейковый TLS уже не нужен, после чего проход трафика осуществляется протоколом MTProto со случайной длиной, из-за которого одни DPI классифицируют трафик как «другое», а другие уже могут определять вероятность того, что трафик относится к Telegram:
Другими словами ваш провайдер или DPI будет видеть HTTPS-коннект к [чужому домену, например — Google.com, — ред. КД], но IP будет — вашего сервера, — объясняет работу нового метода на примере прокси-серверов, работающих с фейковым TLS, а также использующих при подключении домен Google.com.
Как попробовать?
Попробовать можно уже два прокси-сервера — Async MTProto Proxy и Erlang MTProto Proxy. Новый метод пока экспериментальный, уточняет shifttstas, поэтому тестировать прокси с фейковым TLS стоит на Alpha- или Beta-версии Telegram Desktop и Telegram для iOS. Вероятно, стабильная версия Telegram для Android тоже поддерживает новые возможности.
Гайд по установке нового режима с фейковым TLS пользователь «Хабра» описал в своём материале.
В будущем авторы прокси обещают сделать ввод других доменов и возможность не пускать клиентов, если они используют другой домен при согласовании подключения.
Есть ли минусы?
Если мы будем обращаться к прокси, используя браузер — соединение ожидаемо не установится (секрета то нет). Со стороны это будет выглядеть как некорректно настроенный HTTPS-сервер. Может ли это быть критерием для блокировки? Нет, сервер может ожидать, например, личный сертификат или другую информацию.
Тем не менее, пользователь «Хабра» уверяет, что в будущем всё это можно модернизировать при помощи связки «секрет + ненастоящий домен», однако для это потребуется внедрение шифрованного заголовка домена — eSNI.