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-пакетов, но это не влияет на скорость передачи данных внутри уже установленного туннеля. Если вы сравниваете сервисы по протоколу, стоит смотреть не на маркетинговые названия, а на то, какая криптография указана в документации, — общие критерии разобраны в статье как выбрать сервис приватного подключения.
