Shadowsocks-AEAD-2022, ShadowTLS, AmneziaWG
Это три «специальных» инструмента, каждый под свой случай: Shadowsocks — минималистичный proxy без TLS-обёртки, ShadowTLS — обёртка чтобы он выглядел как HTTPS, AmneziaWG — модификация WireGuard с обфускацией для РФ.
- Эволюция Shadowsocks: stream → AEAD → AEAD-2022
- Почему AEAD-2022 — стандарт для SS в 2026
- ShadowTLS — как Shadowsocks завернуть в настоящий TLS handshake
- AmneziaWG — junk-пакеты против ТСПУ, конфигурация
- Когда какой инструмент выбирать
1. Эволюция Shadowsocks
Shadowsocks (clowwindy, 2012) — самый простой SOCKS-прокси с шифрованием. Изначально создан для китайских пользователей: минимум кода, никаких сложных handshake, «трафик выглядит как случайный шум».
| Версия | Год | Шифр | Безопасность |
|---|---|---|---|
| Stream | 2012 | RC4-MD5, AES-CFB | Сломан |
| AEAD | 2017 | AES-GCM, ChaCha20-Poly1305 | C — replay |
| AEAD-2022 | 2022 | 2022-blake3-aes-256-gcm, 2022-blake3-chacha20-poly1305 | A — современный |
Stream cipher без аутентификации
Старый Shadowsocks использовал stream-cipher (RC4, AES-CFB) без MAC. Атакующий мог менять биты ciphertext — расшифровка проходила без обнаружения. Active probe эксплуатировал это: слал крафтнутые пакеты, по реакции сервера опознавал SS. К 2019 в Китае любой SS-сервер банился за 24 часа.
2. AEAD-2022 — что нового
SIP022 (spec, 2022) добавил три ключевых улучшения:
- Pre-shared key из BLAKE3. Не пароль (легко перебрать), а 256-битный ключ. Active probe без знания ключа — отвергается на этапе MAC.
- Replay protection. Каждый пакет имеет уникальный nonce + timestamp. Replay в окне 30 секунд — отвергается. Это закрывает probing-атаки последнего поколения.
- Padding. К каждому пакету добавляется случайный padding 0-900 байт. Распределение размеров становится «более случайным» — статистические классификаторы работают хуже.
В конфиге сервера (sing-box):
{
"inbounds": [{
"type": "shadowsocks",
"listen": "::",
"listen_port": 8388,
"method": "2022-blake3-aes-256-gcm",
"password": "BASE64-32-BYTES-KEY", // сгенерируй: openssl rand -base64 32
"multiplex": { "enabled": true }
}]
}
SS-AEAD-2022 в чистом виде НЕ маскируется под HTTPS. Это «шум на UDP/TCP-порту». В РФ работает локально, но любой DPI с classifier'ом поймёт «непонятный шифрованный поток». Для production-обхода нужна обёртка — ShadowTLS.
3. ShadowTLS — обёртка под настоящий TLS
ShadowTLS v3 (ihciah, 2022-2023) — гениально простая идея: проводим настоящий TLS-handshake с настоящим сервером, а потом «переключаемся» на Shadowsocks payload в том же TCP-стриме.
- Клиент шлёт ClientHello с SNI=apple.com (реальный сайт)
- ShadowTLS-сервер проксирует ClientHello на apple.com:443
- Получает ServerHello, Certificate от apple — пересылает клиенту
- Handshake завершается между клиентом и apple через прокси-сервер
- Дальше клиент шлёт не настоящие HTTP-запросы, а зашифрованный Shadowsocks payload внутри того же TCP. Сервер видит «после handshake пошёл шифр» — не парсит, просто снимает «оболочку», достаёт SS-payload и обрабатывает как обычно
Снаружи DPI видит идеальный TLS handshake с apple.com и шифрованный поток. Это идентично Reality в плане «маскировки», но проще в реализации.
- Совместим с любыми Shadowsocks-клиентами (через обёртку sing-box)
- На сервере меньше CPU (нет дополнительного шифрования Vision)
- Легче деплоится — не нужны X25519-ключи, только PSK
- Длины пакетов после handshake могут отличаться от настоящего HTTP/2 — ML может зацепить
- Менее активно развивается, чем Reality
- В РФ работает, но «по ощущению» немного хуже чем Reality на тех же каналах
Конфигурация ShadowTLS-сервера (sing-box):
{
"inbounds": [{
"type": "shadowtls",
"listen": "::",
"listen_port": 443,
"version": 3,
"users": [{
"name": "user1",
"password": "PSK-BASE64"
}],
"handshake": {
"server": "www.microsoft.com", // ← маскируемся под MS
"server_port": 443
},
"detour": "ss-in" // ← после ShadowTLS — на SS
}, {
"type": "shadowsocks",
"tag": "ss-in",
"listen": "127.0.0.1",
"listen_port": 8388,
"method": "2022-blake3-aes-256-gcm",
"password": "BASE64-32-BYTES-KEY"
}]
}
4. AmneziaWG — российский ответ ТСПУ
Российская команда AmneziaVPN в 2023 году выпустила модификацию протокола WireGuard, которая ломает байтовые сигнатуры ТСПУ. AmneziaWG — это патч к референсному WG-демону.
Идея — параметризовать handshake/data так, чтобы пакеты больше не выглядели как «стандартный WG»:
| Параметр | Что делает | Эффект |
|---|---|---|
Jc | Количество junk-пакетов перед handshake (1-128) | DPI видит «много мусора», не находит сигнатуру |
Jmin / Jmax | Длина каждого junk-пакета (50-1000 байт) | Распределение размеров не как у обычного WG |
S1 / S2 | Префикс/суффикс к каждому data-пакету | Длина пакета меняется → не «148-байт детект» |
H1 / H2 / H3 / H4 | Замена magic header (0x01, 0x02, 0x03, 0x04) | Первый байт больше не 0x01 |
Что меняется в пакете
Оригинальный WG-init: 01 00 00 00 [148 байт]. AmneziaWG-init:
[H1] [random][actual payload][random]. Первый байт уже не 0x01 (можно поставить любую цифру
от 5 до 127). Длина пакета — переменная. Перед handshake летят несколько junk-пакетов
случайных размеров.
DPI с pattern-matching «01 + 148 байт» больше не срабатывает. Чтобы детектить AmneziaWG по таким сигнатурам — нужно знать H1/H2/H3/H4 (а они уникальные для каждой инсталляции).
Конфиг AmneziaWG (на сервере, /etc/amnezia/awg/wg0.conf):
[Interface] PrivateKey = SERVER_PRIV Address = 10.8.2.1/24 ListenPort = 51820 # AmneziaWG extension Jc = 5 # 5 junk-пакетов перед handshake Jmin = 50 Jmax = 1000 S1 = 50 # prefix size S2 = 100 # postfix size H1 = 1234567 # подменённый magic byte type 1 H2 = 2345678 H3 = 3456789 H4 = 4567890 [Peer] PublicKey = CLIENT_PUB AllowedIPs = 10.8.2.2/32
На клиенте — те же Jc/Jmin/Jmax/S1/S2/H1-H4 (обязательно идентичные серверу). Клиенты AmneziaVPN (Android, iOS, Win, Mac) автоматически принимают конфиг с этими параметрами.
AmneziaWG работает в России. ТСПУ не научился детектить эту обфускацию (поскольку она кастомизируется per-server, нет «общего» паттерна). Это решение №1 для домашнего VPN в РФ для тех, кто хочет «просто работающий WG».
AmneziaWG не маскируется под HTTPS — это всё равно «странный UDP-поток на нестандартный порт». На сильно агрессивном DPI (Иран в режиме blackout, Китай) — может быть задетектен через ML на flow statistics. В РФ — пока ок, на 1-2 года точно хватит.
5. Что выбирать в 2026
| Сценарий | Рекомендация |
|---|---|
| Домашний VPN РФ, нужна простота | AmneziaWG (клиент Amnezia) |
| Домашний VPN РФ, максимум стабильности | VLESS + Reality + Vision |
| Корпоративный VPN с разных платформ | VLESS + Reality (Xray) + sing-box клиенты |
| Мобильный, плохие сети | Hysteria 2 + Brutal |
| Запасной канал (когда основной не работает) | ShadowTLS + Shadowsocks AEAD-2022 |
| Для Китая | Reality + uTLS:chrome или VLESS+WS+TLS через Cloudflare |
| Для Ирана (когда жёстко) | Hysteria 2 с port hopping + Salamander, или MASQUE |
6. Дальше
Мы прошли все основные протоколы. Дальше — про развёртывание: панели управления (3x-ui, Marzban, Hiddify), серверная инфра, выбор VPS, антидетект, клиенты. Это уроки 10-12.