Shadowsocks-AEAD-2022, ShadowTLS, AmneziaWG

Это три «специальных» инструмента, каждый под свой случай: Shadowsocks — минималистичный proxy без TLS-обёртки, ShadowTLS — обёртка чтобы он выглядел как HTTPS, AmneziaWG — модификация WireGuard с обфускацией для РФ.

Что узнаешь

1. Эволюция Shadowsocks

Shadowsocks (clowwindy, 2012) — самый простой SOCKS-прокси с шифрованием. Изначально создан для китайских пользователей: минимум кода, никаких сложных handshake, «трафик выглядит как случайный шум».

ВерсияГодШифрБезопасность
Stream2012RC4-MD5, AES-CFBСломан
AEAD2017AES-GCM, ChaCha20-Poly1305C — replay
AEAD-202220222022-blake3-aes-256-gcm, 2022-blake3-chacha20-poly1305A — современный
Почему старый SS убили в Китае

Stream cipher без аутентификации

Старый Shadowsocks использовал stream-cipher (RC4, AES-CFB) без MAC. Атакующий мог менять биты ciphertext — расшифровка проходила без обнаружения. Active probe эксплуатировал это: слал крафтнутые пакеты, по реакции сервера опознавал SS. К 2019 в Китае любой SS-сервер банился за 24 часа.

2. AEAD-2022 — что нового

SIP022 (spec, 2022) добавил три ключевых улучшения:

  1. Pre-shared key из BLAKE3. Не пароль (легко перебрать), а 256-битный ключ. Active probe без знания ключа — отвергается на этапе MAC.
  2. Replay protection. Каждый пакет имеет уникальный nonce + timestamp. Replay в окне 30 секунд — отвергается. Это закрывает probing-атаки последнего поколения.
  3. 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-стриме.

  1. Клиент шлёт ClientHello с SNI=apple.com (реальный сайт)
  2. ShadowTLS-сервер проксирует ClientHello на apple.com:443
  3. Получает ServerHello, Certificate от apple — пересылает клиенту
  4. Handshake завершается между клиентом и apple через прокси-сервер
  5. Дальше клиент шлёт не настоящие HTTP-запросы, а зашифрованный Shadowsocks payload внутри того же TCP. Сервер видит «после handshake пошёл шифр» — не парсит, просто снимает «оболочку», достаёт SS-payload и обрабатывает как обычно

Снаружи DPI видит идеальный TLS handshake с apple.com и шифрованный поток. Это идентично Reality в плане «маскировки», но проще в реализации.

Где ShadowTLS лучше 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) автоматически принимают конфиг с этими параметрами.

Эффект 2024-2025

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.