MTProto.fyi
ГлавнаяОбфусцированный транспорт MTProto (obfuscated2)

Обфусцированный транспорт MTProto (obfuscated2)

До FakeTLS прокси прятали трафик проще: шифровали заголовки так, чтобы первые байты выглядели случайными. Этот транспорт — obfuscated2 — до сих пор лежит в основе всех режимов, включая FakeTLS.

Зачем понадобилась обфускация

Обычные транспорты MTProto (abridged, intermediate) начинаются с узнаваемых байт: 0xef или четырёх 0xee. Фильтру достаточно посмотреть на первый пакет. В 2018 году Telegram добавил транспорт, в котором первые 64 байта — случайные на вид, а всё дальнейшее шифруется потоковым шифром. Без знания секрета отличить такое соединение от шума невозможно.

Как устроен заголовок

  1. 64 случайных байта. Клиент генерирует их так, чтобы первые четыре не совпадали с известными сигнатурами и байты 4–8 не были нулями.
  2. Ключ и вектор. Из байтов 8–56 заголовка и секрета через SHA-256 выводится ключ AES-CTR для каждого направления.
  3. Маркер протокола. Байты 56–60 шифруются тем же ключом и содержат код транспорта (например, 0xdddddddd для padded intermediate). Сервер расшифровывает их и понимает, что перед ним клиент со знанием секрета.
  4. Дата-центр. Байты 60–62 — номер DC, к которому подключить клиента.

Что шифруется дальше

Весь поток после заголовка идёт через AES-256 в режиме CTR ключами из шага 2. Внутри — обычный транспорт MTProto с уже зашифрованными сообщениями. Прокси снимает свой слой CTR и пересылает пакеты в DC. Так же устроено соединение приложения с дата-центрами напрямую при включённой обфускации — прокси не изобрёл новый протокол, а использовал существующий.

Почему этого стало мало

Случайные байты — тоже сигнатура: настоящий трафик так не выглядит. Оборудование научилось помечать соединения без узнаваемого протокола и проверять их по длинам пакетов. Ответом стали случайное дополнение и затем FakeTLS, который прячет тот же obfuscated2 внутри TLS-записей после настоящего рукопожатия.

Где это видно пользователю

Нигде: выбор транспорта происходит автоматически по префиксу секрета. Знать устройство заголовка полезно лишь для понимания, почему обычный секрет без префикса в 2026 году блокируется быстро, а ee — нет.

Частые вопросы

Что такое obfuscated2?
Транспорт MTProto с 64-байтным случайным заголовком и шифрованием AES-CTR, из которого выросли прокси.
Используется ли obfuscated2 сейчас?
Да, внутри FakeTLS: после TLS-рукопожатия идёт тот же транспорт.
Почему простой секрет блокируют быстрее ee?
Случайные байты без TLS выдают «неизвестный протокол»; FakeTLS выглядит как HTTPS.
Нужно ли выбирать транспорт вручную?
Нет, клиент определяет его по префиксу секрета.

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