Технологии цензуры
shadow-tls
Обёртка для Shadowsocks, маскирующая трафик под TLS-handshake к настоящему чужому сертификату (например, cloudflare.com или microsoft.com). Альтернатива Reality для Shadowsocks-2022.
Что это
shadow-tls — это транспортная обёртка над Shadowsocks/Shadowsocks-2022, при которой клиент и сервер выполняют видимый TLS-handshake к настоящему стороннему сайту (cloudflare.com, microsoft.com, apple.com), а после handshake переключаются на собственный шифр. Создан разработчиком ihciah в 2022 году, к 2026 — стандартный transport в sing-box и Clash.Meta для Shadowsocks-2022 в условиях агрессивного DPI.
Идея похожа на VLESS Reality, но проще: shadow-tls не подделывает сертификат через MITM-промежуточный handshake, а буквально проксирует первые 2 RTT к реальному cloudflare.com и переключается только после ServerHello.
Как это работает
shadow-tls v3 (актуальная версия 2026) выполняет следующий поток:
[1] Client → shadow-tls сервер: TLS ClientHello, SNI=cloudflare.com
[2] shadow-tls сервер открывает TCP к cloudflare.com:443, форвардит ClientHello
[3] cloudflare.com → shadow-tls сервер → клиент: ServerHello + Certificate
(настоящий cloudflare-сертификат, валидный JA3/JA4)
[4] Клиент проверяет HMAC-маркер внутри TLS Application Data —
если совпадает, обе стороны знают: "это shadow-tls"
[5] Соединение к cloudflare.com закрывается, поверх установленного TLS
идёт обычный Shadowsocks-2022 шифр
Конфиг sing-box (клиент):
{
"type": "shadowsocks",
"method": "2022-blake3-aes-128-gcm",
"password": "<server password>",
"server": "vpn.example.com",
"server_port": 443,
"multiplex": { "enabled": true },
"transport": {
"type": "shadowtls",
"version": 3,
"password": "<shadow-tls password>",
"server_name": "www.cloudflare.com"
}
}
Сервер при probing-запросе (без HMAC-маркера) продолжает форвардить трафик в cloudflare.com — DPI не видит разницы с обычным reverse-proxy к Cloudflare.
Отличия от VLESS Reality
| shadow-tls | VLESS Reality | |
|---|---|---|
| Базовый протокол | Shadowsocks-2022 | VLESS |
| TLS-handshake | реальный к чужому сайту | синтетический с украденным сертификатом |
| Шифрование | SS-2022 (chacha20/aes-gcm) | XTLS Vision (zero-copy) |
| Active probing | проксируется на чужой сайт | проксируется на чужой сайт |
| Latency | +1 RTT на handshake | +0 (handshake идёт сразу к серверу) |
| Сложность серверной настройки | средняя | низкая |
shadow-tls дешевле по реализации (не нужен встроенный TLS-stack), но дороже по latency на первое подключение. Reality дороже инженерно, но handshake происходит “локально”.
Почему это важно для пользователя VPN
В РФ 2026 shadow-tls — рабочий fallback, когда Reality по каким-то причинам залочен. Сценарии:
- Domain fronting через Cloudflare Workers — shadow-tls делает реальный handshake к Cloudflare, оператор не может отличить ваш VPN от обычного сайта на CF.
- Shadowsocks-2022 без TLS-маскировки. В 2024 ТСПУ начала ловить голый SS-2022 по entropy-сигнатуре первых байт. shadow-tls закрывает эту дыру.
- iOS/Android клиенты. sing-box поддерживает shadow-tls v3, конфиг распространяется как обычная подписка.
Юзеру: если ваш VPN-провайдер на 2026 продаёт Shadowsocks-конфиги и не упоминает shadow-tls — спросите, что мешает оператору заблокировать вас по entropy. Если ответ “ничего” — это плохой провайдер.
Связанные термины
Shadowsocks-2022 — базовый протокол, который оборачивает shadow-tls. VLESS Reality — концептуальный аналог для VLESS. SNI — что подделывает shadow-tls. TLS 1.3 — версия handshake. sing-box — основная серверная и клиентская реализация.
Источники
- github.com/ihciah/shadow-tls — основной репозиторий.
- sing-box docs — ShadowTLS
- shadow-tls v3 protocol description