Статья

WireGuard и AmneziaWG: в чём разница между протоколами

HamikVPN, как и ряд других сервисов, использует протокол AmneziaWG — но что это на самом деле: другой алгоритм шифрования или что-то ещё? Разбираем технически, что именно меняется по сравнению с обычным WireGuard, а что остаётся неизменным.

WireGuard: компактный протокол с узнаваемым почерком

WireGuard стал популярен именно за счёт простоты: маленькая кодовая база, современная криптография без права выбора между десятками алгоритмов и высокая скорость по сравнению с более старыми протоколами. Оборотная сторона этой простоты — предсказуемость на уровне отдельных пакетов. Согласно технической документации AmneziaWG, у стандартного WireGuard пакет инициации соединения (handshake init) всегда имеет длину ровно 148 байт, пакет ответа (response) — 92 байта, а пакет cookie — 64 байта. Такие фиксированные, повторяющиеся размеры и заголовки — устойчивый «отпечаток», по которому оборудование анализа трафика на пути соединения может опознать сам факт использования протокола WireGuard, даже не имея возможности прочитать содержимое зашифрованных данных.

Это не теоретическая уязвимость шифрования — содержимое трафика остаётся защищённым. Речь о метаданных: какой именно протокол вы используете, видно по форме пакетов, даже когда их содержимое нечитаемо. А сети, где применяется анализ и шейпинг трафика — от отдельных мобильных операторов до корпоративных и гостиничных сетей, — иногда обрабатывают распознанный VPN-трафик иначе, чем обычный, что может сказываться на стабильности соединения.

Что меняет AmneziaWG: обфускация транспортного уровня

AmneziaWG — форк реализации WireGuard-Go, который убирает именно эту предсказуемость, не трогая криптографическое ядро. По данным официальной документации проекта, за это отвечают несколько групп параметров:

  • Jc, Jmin, Jmax — перед основным handshake отправляется Jc «мусорных» пакетов случайного размера в диапазоне от Jmin до Jmax байт. Получатель их не разбирает и не проверяет — для наблюдателя со стороны это выглядит как нейтральный UDP-шум, который размывает характерный тайминг и размер начала сессии.
  • S1–S2 — псевдослучайные префиксы (0–32/64 байта), которые добавляются к каждому типу пакета, делая их длину переменной вместо фиксированной.
  • H1–H4 — предсказуемые идентификаторы заголовков WireGuard заменяются случайными значениями из настроенного диапазона, так что у разных клиентов заголовки не совпадают — а значит, нельзя написать одно универсальное правило распознавания сразу для всех.

Важная деталь: все эти параметры настраиваются на стороне сервера и должны совпадать у клиента, иначе туннель просто не установится — обычный клиент WireGuard такой сервер не поймёт, и наоборот.

Что остаётся неизменным: криптографическое ядро

Обфускация работает только на транспортном уровне — форма и тайминг пакетов. Она не заменяет и не ослабляет саму криптографию. Как указывает официальная документация протокола WireGuard, обмен ключами построен на эллиптической кривой Curve25519, шифрование данных — на связке ChaCha20 и кода аутентификации Poly1305, а хеширование — на BLAKE2s. AmneziaWG наследует этот же набор алгоритмов без изменений: разработчики целенаправленно не трогали проверенный независимыми исследователями криптографический код, ограничившись изменением заголовков и служебных пакетов. С точки зрения защиты содержимого трафика разницы между WireGuard и AmneziaWG нет.

Что это значит на практике

Для обычного использования разница сводится к двум вещам. Во-первых, приложение и сервер должны использовать одинаковый набор параметров обфускации — вручную настраивать это не нужно, если оба конца используют совместимый клиент — например, приложение AmneziaVPN или HamikVPN. Во-вторых, первая фаза установки соединения занимает чуть больше времени за счёт junk-пакетов, но это не влияет на скорость передачи данных внутри уже установленного туннеля. Если вы сравниваете сервисы по протоколу, стоит смотреть не на маркетинговые названия, а на то, какая криптография указана в документации, — общие критерии разобраны в статье как выбрать сервис приватного подключения.

Хотите попробовать AmneziaWG на практике?
3 дня бесплатно, без карты
Попробовать бесплатно

Частые вопросы

AmneziaWG — это отдельный протокол шифрования или просто настройка WireGuard?
Технически это форк реализации WireGuard-Go: криптографическое ядро (обмен ключами на Curve25519, шифрование ChaCha20-Poly1305, хеширование BLAKE2s) полностью сохранено без изменений. Меняется только формат заголовков и структура пакетов на транспортном уровне — то, как туннель выглядит снаружи, а не то, как он защищает данные внутри.
Замедляет ли обфускация AmneziaWG скорость соединения?
Да, но незначительно: junk-пакеты добавляют небольшой объём служебного трафика перед установкой соединения, а не на всём протяжении сессии. На практике разница в скорости передачи данных после установления туннеля обычно не ощущается — заметнее может быть чуть более долгая первая фаза подключения.
Можно ли использовать обычный клиент WireGuard для подключения к AmneziaWG-серверу?
Нет: если параметры Jc, Jmin, Jmax, S1–S2 и H1–H4 на сервере отличаются от нуля, обычный клиент WireGuard не поймёт формат пакетов и соединение не установится. Нужен клиент, который умеет работать с этими же параметрами — например, приложение AmneziaVPN или HamikVPN с соответствующими настройками узла.
Значит ли рост числа параметров, что у AmneziaWG больше поверхность для уязвимостей?
Дополнительные параметры влияют только на транспортный уровень — формирование заголовков и служебных пакетов, а не на криптографические примитивы. Само шифрование данных остаётся тем же кодом WireGuard, прошедшим независимый криптографический анализ, а не переписанным с нуля.