Разбор протокола ShadowTLS — маскировка, которая не маскируется.
Контекст
До появления ShadowTLS все попытки спрятать трафик от DPI упирались в одну проблему: пассивный анализ. Shadowsocks и VMess шифруют payload, но их заголовки часто выглядят подозрительно — случайные байты, странная длинна, невалидные TLS-рукопожатия. DPI достаточно увидеть, что пакет не похож на настоящий HTTPS, чтобы заблокировать. Trojan сделал шаг вперёд — он пытается выглядеть как TLS, но его handshake всё равно легко отличить от реального браузерного трафика.
Как работает ShadowTLS
Ключевая идея — не маскировать трафик под HTTPS, а сделать так, чтобы сам факт установки соединения проходил через реальный TLS. ShadowTLS сначала открывает полноценное TLS-соединение с легитимным сайтом (например, cloudflare.com). Клиент и сервер ShadowTLS договариваются: «мы используем TLS-сессию с сайтом X, но в payload будем передавать наши данные поверх неё». DPI видит рукопожатие с валидным сертификатом, SNI, ALPN, cipher suite — всё как у обычного браузера. Никаких отличий на уровне handshake. После установки TLS-туннеля клиент отправляет серверу ShadowTLS зашифрованный «запрос на переключение протокола» — обычную HTTP-заглушку с секретным маркером. Если маркер совпадает, сервер переключает поток внутрь этого же TLS-соединения. DPI не может отличить, где кончается «настоящий» TLS и начинается «теневой».
Сильные стороны
— Почти неотличим от обычного HTTPS-трафика на уровне пакетов.
— Не требует фиксированного IP-адреса или домена — можно использовать публичные CDN как «прикрытие».
— Работает даже при глубоком анализе JIT-трафика (фактически, пассивный DPI не может его выделить).
Слабые стороны
— Активный DPI (провокация: попытка установить два соединения с одного IP и сравнить) может выявить аномалию — но это требует сложной инфраструктуры.
— ShadowTLS уязвим к анализу временных задержек (timing analysis), если DPI замеряет RTT и сравнивает с эталоном.
— Нет встроенного механизма обфускации размера пакетов — при большом объёме трафика можно засечь по статистике.
— Разработка заморожена: последний коммит в оригинальный репозиторий — 2022 год.
Текущий статус
Стабилен, но не развивается. Для задач, где критична маскировка под HTTPS без сложных конфигов — до сих пор хороший выбор. Но если у вас высокие требования к скорости и устойчивости к активным атакам, лучше смотреть в сторону Hysteria 2 или Reality.
Финальная мысль
ShadowTLS — это элегантный ответ на вопрос «как сделать так, чтобы DPI не мог отличить ваш трафик от трафика соседнего сайта». Но элегантность не гарантирует вечной защиты. Вопрос не в том, заблокируют ли его завтра, а в том, насколько сложно это сделать. Пока пассивный DPI не научится анализировать пакеты внутри установленного TLS-соединения — ShadowTLS жив.
#ShadowTLS #DPI #обход_блокировок #сетевая_безопасность #маскировка_трафика