AmneziaWG
AmneziaWG — форк WireGuard-Go, который устраняет характерные сетевые сигнатуры. Версия 1.5 вводит маскировку протокола под UDP-протоколы (QUIC, DNS).
8 ключевых преимуществ
- Невидимость для DPI — динамические заголовки и рандомизация размеров пакетов
- Маскировка протокола — имитация QUIC, DNS, SIP и других UDP-протоколов
- Высокая производительность — модуль ядра с ChaCha20-Poly1305, SIMD-оптимизация
- Энергоэффективность — Go-based userspace, подходит для мобильных
- Кросс-платформенность
- UDP-транспорт
- Простота конфигурации — укажите протокол маскировки, остальное заполнится автоматически
- Обратная совместимость — идентичен стандартному WireGuard при отключённой обфускации
Как это работает
1. Динамические заголовки
Рандомные константы применяются к 4 форматам пакетов WireGuard (Init, Response, Data, Under-Load).
2. Рандомизация длины хендшейка
Init: обычно 148 байт, Response: 92 байта. Добавляются псевдослучайные префиксы S1 и S2 (0-64 байта):
len(init) = 148 + S1
len(resp) = 92 + S23. CPS (Custom Protocol Signature)
Перед хендшейками отправляется до 5 UDP-пакетов в формате CPS:
| Тег | Формат | Описание | Ограничения |
|---|---|---|---|
b | <b hex_data> | Статические байты для имитации протокола | Произвольная длина |
c | <c> | 32-битный счётчик пакетов (network byte order) | Уникален в последовательности |
t | <t> | Unix timestamp (32-бит, network byte order) | Уникален в последовательности |
r | <r length> | Криптографически рандомные байты | length ≤ 1000 |
Пример CPS:
i1 = b 0xf6ab3267facb 0xf6atr 104. Junk Train (Jc)
Псевдослучайные пакеты (Jc штук) размером Jmin-Jmax байт, маскирующие начало сессии.
5. Under-Load пакет
Keep-alive с рандомизированными заголовками вместо фиксированных WireGuard-заголовков.
6. Неизменённая криптография
Шифрование идентично WireGuard: Curve25519, ChaCha20-Poly1305, двусторонняя ротация ключей.
Параметры конфигурации
| Параметр | Диапазон | Назначение |
|---|---|---|
| I1-I5 | hex-blob | Пакеты сигнатуры протокола |
| S1, S2 | 0-64 байт | Рандомные префиксы для Init/Response |
| Jc | 0-10 | Количество мусорных пакетов |
| Jmin, Jmax | 64-1024 байт | Диапазон размеров мусорных пакетов |
INFO
Нулевые значения = стандартное поведение WireGuard.
Безопасность
Noise_IK key exchange с Curve25519, AEAD ChaCha20-Poly1305. Все существующие аудиты безопасности WireGuard применимы.