Сначала было просто: поднял Shadowsocks, клиент дёрнул ручку, сервер ответил. Пока DPI не научился вынюхивать трафик по характерному шуму — случайным байтам в начале соединения, статическому паттерну шифрования. Shadowsocks стал просвечивать, как дешёвая занавеска.
ShadowTLS — это не протокол шифрования сам по себе, а прослойка, которая маскирует Shadowsocks-соединение под обычный HTTPS. Идея до безобразия проста: клиент открывает TCP-соединение, делает полноценное TLS-рукопожатие с сервером — но не с целью установить настоящий TLS, а чтобы DPI увидел «нормальный» HTTPS-трафик. После этого клиент отправляет серверу специальный сигнал «а теперь переключаемся». Сервер «забывает» про TLS и начинает читать трафик как обычный Shadowsocks.
Ключевая фишка — клиент сам завершает TLS-рукопожатие, а сервер просто транслирует байты. Это значит, что серверу не нужен настоящий SSL-сертификат, и он не расшифровывает TLS. DPI видит корректный ClientHello, ServerHello, обмен сертификатами — и успокаивается. Дальше пошёл уже зашифрованный поток Shadowsocks, который для наблюдателя неотличим от обычного HTTPS-датастрима.
Сильные стороны: не требует реального домена, не требует сертификата, легко накладывается поверх существующих Shadowsocks-инсталляций. Слабые: это по-прежнему обёртка, а не самостоятельный протокол — если Shadowsocks внутри уязвим, ShadowTLS не спасёт. Плюс каждое новое соединение делает полноценный TLS-handshake, что добавляет latency. На мобильных сетях с быстрым роумингом это может быть заметно.
Статус: стабильный, но нишевый. Активно не развивается, альтернативы вроде Reality делают то же самое эффективнее и без дополнительной прослойки. Однако для сценариев, где сервер уже стоит на Shadowsocks и менять стек лень, ShadowTLS — оправданный минимум.
И главный вопрос, который я бы задал сам себе перед выбором: а не проще ли сразу перейти на Reality, чем лепить костыли поверх классического SS?
#ShadowTLS #Shadowsocks #DPI #обход_блокировок #VPN


