Короткий ответ: AmneziaWG — это WireGuard, у которого изменён внешний вид пакетов. Внутри всё то же самое: те же ключи, то же рукопожатие, то же шифрование. Снаружи соединение перестаёт выглядеть как WireGuard — и это единственное, но решающее отличие. Ниже — что именно меняется, что остаётся прежним и чем за это приходится платить.
Почему WireGuard узнаётся с первого пакета
WireGuard устроен экономно: у него всего четыре типа сообщений, и тип написан в первом байте каждого пакета — 1, 2, 3 или 4. Размеры служебных пакетов тоже постоянные: у пакета, которым начинается соединение, длина всегда одна и та же. Этой пары признаков достаточно, чтобы опознать протокол, не расшифровывая ни байта содержимого: первый байт равен единице, длина совпадает — значит, это WireGuard.
Для оборудования, которое разбирает трафик в сети оператора, это подарок. Ему не нужно ломать шифрование — достаточно посмотреть на форму пакета. Дальше решение принимается по политике: пропустить, замедлить или уронить. Именно поэтому «у меня VPN просто перестал работать в этой сети» звучит так часто: перестало работать не шифрование, а узнаваемость.
Что меняет AmneziaWG
AmneziaWG — форк WireGuard от команды Amnezia. Он оставляет протокол как есть и добавляет к нему слой маскировки. Что происходит при подключении:
- Мусорные пакеты перед рукопожатием. Клиент отправляет несколько датаграмм случайной длины со случайным содержимым. Полезных данных в них нет вовсе — их задача в том, чтобы новый поток не начинался с узнаваемого пакета.
- Случайные типы вместо 1, 2, 3, 4. Числа, обозначающие тип сообщения, заменяются значениями из заранее согласованных диапазонов — свой диапазон на каждый тип. Проверка «первый байт равен единице» перестаёт что-либо значить.
- Переменная длина. К служебным пакетам добавляется случайный паддинг, поэтому «всегда одинаковый размер рукопожатия» тоже перестаёт быть признаком.
- Сигнатурные пакеты. Первое, что видит сеть, можно сделать похожим на начало другого, повседневного протокола — например, на первый пакет QUIC, которым браузер открывает обычный сайт.
Всё это — параметры соединения, а не отдельный протокол: их согласуют обе стороны, и менять их можно, не переписывая ни клиент, ни сервер.
Что при этом НЕ меняется
Это место чаще всего понимают неправильно, поэтому скажем прямо: обфускация не трогает криптографию. Остаются те же ключи X25519, то же рукопожатие Noise IK, тот же шифр ChaCha20-Poly1305 — всё, за что WireGuard уважают. Маскировка работает снаружи конверта, а не внутри письма.
Отсюда следствие, которое стоит держать в голове: обфускация не делает соединение «безопаснее». Она делает его менее заметным. Это разные свойства, и путать их не стоит — в том числе когда сервис обещает «двойное шифрование» там, где на деле просто изменена форма пакета.
Чем приходится платить
- Несовместимость со стандартным клиентом. Обычное приложение WireGuard к серверу AmneziaWG не подключится: оно не знает параметров маскировки и сочтёт такие пакеты неверными. Нужен клиент с поддержкой AmneziaWG — и наоборот.
- Немного лишнего трафика. На установленном соединении это несколько десятков байт на пакет; основная часть накладных расходов приходится на начало соединения — мусорные датаграммы уходят один раз.
- Параметры должны совпадать. Разошлись значения на клиенте и сервере — соединение не поднимется вовсе. Поэтому их раздаёт сервер, а не человек вписывает руками.
- Это не «навсегда». Маскировка — соревнование, а не разовая настройка: набор признаков, по которым узнают протокол, со временем меняется.
Как это устроено у Маяка
Мы используем AmneziaWG 3.1 на всех выходах. Параметры маскировки приложение не придумывает и человек не вписывает: их выдаёт сервер вместе с настройками подключения, каждой линии — свои. Это позволяет менять рисунок соединения централизованно, когда в какой-то сети он перестаёт проходить, и не просить людей ничего перенастраивать.
Одной маскировки, впрочем, мало. Бывают сети, где не проходит и она — тогда приложение само переключается на другой путь к серверу: через промежуточный вход или через обычное защищённое веб-соединение. Как устроен этот перебор, мы разобрали в статье «Одна кнопка, три пути».
Короткие ответы
AmneziaWG — это то же самое, что WireGuard? Криптографически — да: те же ключи X25519, то же рукопожатие Noise IK, то же шифрование ChaCha20-Poly1305. Отличается только внешний вид пакетов в сети.
Обфускация ослабляет шифрование? Нет. Она меняет форму пакета снаружи и не трогает криптографию внутри; в мусорных пакетах полезных данных нет вовсе.
Можно ли подключиться обычным клиентом WireGuard? Нет: обе стороны должны применять одинаковые параметры обфускации, а стандартный клиент о них не знает.
AmneziaWG медленнее? На установленном соединении разница невелика — несколько десятков байт паддинга на пакет. Заметная часть расходов приходится на начало соединения.
Зачем это нужно, если WireGuard и так шифрует трафик? Шифрование прячет содержимое, но не сам факт, что соединение — WireGuard. Обфускация убирает опознавательные признаки, по которым протокол определяют, не читая содержимого.
Если коротко: WireGuard отвечает за то, чтобы ваш трафик нельзя было прочитать. AmneziaWG добавляет к этому то, чтобы его нельзя было опознать. Первое без второго в сложных сетях иногда не работает вовсе.
WireGuard — зарегистрированный товарный знак Jason A. Donenfeld. Mayak Networks не аффилирован с WireGuard LLC и не одобрен ею. AmneziaWG — проект команды Amnezia, распространяется на условиях открытой лицензии.