В Telegram встроили средства обхода блокировок нового типа
В Telegram была добавлена возможность маскировки трафика под протокол HTTPS. У мессенджера есть собственный протокол MTProto, который обеспечивает работу прокси. Но в таких странах как Иран и Китай всем незнакомым протоколам урезают скорость, чем и вызвана необходимость маскировки. В России она тоже понадобится после вступления в силу закона об автономном рунете.
Маскировка Telegram
В мессенджере Telegram появилась возможность маскировки трафика под протокол HTTPS. Информация об этом появилась на ресурсе GitHub. Для маскировки под HTTPS разработчики добавили в код клиента префикс секрета "ee". Кроме того, помимо метода кодирования base16 была реализована возможность шифровать секрет в адресе прокси-сервера с помощью base64.
В протоколе между клиентом Telegram и прокси-сервером был добавлен дополнительный слой инкапсуляции поверх протокола TCP. Благодаря этому данные оборачиваются в записи TLS. Передача данных в HTTPS происходит поверх этого криптографического протокола. Также была добавлена эмуляция TLS-рукопожатия в начале работы. Telegram уже запустил прокси-сервера на Python и Erlang, где реализована маскировка.
Пользователь alexbers отмечает в блоге на ресурсе Habr, что маскировка трафика под какой-нибудь популярный протокол — это ожидаемое решение со стороны разработчиков. Иран и Китай по умолчанию урезают скорость работы всех неизвестных протоколов, что делает затруднительным передачу каких-либо данных кроме текстовых сообщений. Россию ожидает то же самое после вступления в силу закона об автономном рунете.
Как было до этого
В мессенджере уже есть прокси, который работает по собственному протоколу Telegram под названием MTProto, его начали применять в 2018 г. Изначально он позволял обнаружить прокси-серверы, результатом чего стали блокировки мессенджера со стороны крупных провайдеров.
Идентификации MTProto мешает отсутствие служебных заголовков, но его выдает длина пакетов. Когда клиент подключается к прокси-серверу, они обмениваются пакетами определенной длины. А в ходе работы мессенджера происходит передача пакетов одинаковой длины. Все это и дает возможность провайдерам засечь трафик Telegram.
Впоследствии протокол был модифицирован разработчиками таким образом, что блокировки стало можно избежать. Его замаскировали путем добавления случайных байтов в каждый пакет. В секрет пришлось добавить префикс dd, чтобы избежать проблем с совместимостью. Но данная модификация станет неэффективной после вступления в силу закона об автономном рунете — уже сейчас MTProto позволяет заблокировать Telegram в Иране и Китая путем атак повторного воспроизведения.
В ответ разработчики добавили частичную защиту от атак повторного воспроизведения в альтернативных вариантах прокси-серверов на Python, Erlang и Go. С этой целью был введен механизм запоминания сервером данных, передающихся в самом начале подключения. Это помогает избежать повторного соединения с такими же данными. Метод проблематично применять для крупных серверов, так как он требует большого расхода оперативной памяти.
Запрет Telegram в России
Напомним, с апреля 2018 г. Telegram находится под блокировкой Роскомнадзора. Запрет мессенджера в России связан с неисполнением требований, которые российское законодательство накладывает на организаторов распространения информации (ОРИ), в частности, с отказом предоставить правоохранителям ключи шифрования переписки пользователей. Согласиться внести Telegram в реестр ОРИ создателя мессенджера Павла Дурова уговорил глава Роскомнадзора Александр Жаров.
Правда, Дуров сразу предупредил, что он готов только на формальную регистрацию в Реестре ОРИ. Требования, предъявляемые к ОРИ в части хранения на территории России данных о переданных их пользователями сообщений и содержимого самих сообщений он соблюдать не будет.
В итоге блокировку Telegram удалось оттянуть на год, после чего она все-таки началась. Но Дуров не собирался сдаваться: Telegram стал «перескакивать» с одного IP-адреса на другой, используя обширные возможности зарубежных облачных хостингов. Со своей стороны, корпорации Apple и Google отказались удалять приложение Telegram из своих магазинов мобильных приложений, благодаря чему приложение продолжило иметь возможность обновляться и получать данные о новых IP-адресах.
Роскомнадзор пошел на радикальную меру и стал блокировать подсети (группы IP-адресов), принадлежащие крупным хостинг-провайдерам: Amazon Web Services, Google, Microsoft Azure, Digital Ocean и др. В результате в апреле 2018 г. число заблокированных в России IP-адресов достигало 20 млн. Также Роскомнадзор стал пытаться блокировать VPN-сервисы, использующиеся для обхода блокировки Telegram.
Последствия такого шага оказались крайне негативными. Под удар попало множество зарубежных и российских интернет-сервисов. Например, перебои в работе наблюдались у мессенджера Viber, сервисов Google (Google Docs, Gmail и пр.) и ряда американских научных ресурсов. А из-за недоступности сервиса Re:CAPTCHA от Google была парализована продажа электронных сервисов ОСАГО. В то же время сам Telegram, хоть и с перебоями, но продолжал быть доступным. В итоге Роскомнадзор сократил общее число заблокированных IP-адресов до 4 млн. Мобильное приложение Telegram продолжает работать без серьезных затруднений.