Когда мы говорим «быстрый и безопасный VPN», за этой фразой стоит конкретный протокол — набор правил, по которым устройства договариваются о шифровании и обмениваются данными. Большинство современных VPN-клиентов, включая обфусцированный AmneziaWG, на котором работает CYBERXVPN, построены поверх WireGuard — протокола, изменившего представление о том, каким должен быть VPN. Разберёмся, как он устроен внутри и почему инженеры выбрали именно такой набор решений.
От громоздких протоколов к минимализму
До появления WireGuard индустрия десятилетиями полагалась на OpenVPN и IPsec/IKEv2. Оба решения работают, но платят за универсальность сложностью: кодовая база OpenVPN превышает 100 тысяч строк, поддерживает десятки алгоритмов шифрования и режимов совместимости — и именно из-за этой гибкости в ней регулярно находили уязвимости, а полный аудит кода занимал месяцы. WireGuard пошёл по противоположному пути: разработчики зафиксировали один современный набор криптоалгоритмов без права выбора и уместили всю логику в ядро протокола объёмом около четырёх тысяч строк кода.
Меньше кода — меньше поверхность атаки и проще независимый аудит: специалисты по безопасности буквально могут прочитать протокол целиком за один рабочий день, а не искать иголку в стоге сена.
Рукопожатие за один обмен пакетами
В основе WireGuard лежит Noise Protocol Framework — формальная схема построения криптографических рукопожатий, из которой WireGuard использует паттерн Noise_IK. Каждое устройство заранее знает открытый статический ключ собеседника, поэтому для установления защищённого канала достаточно одного обмена пакетами: клиент отправляет initiation-пакет с эфемерным и статическим публичными ключами, сервер отвечает response-пакетом — и туннель готов.
Обмен ключами построен на кривой Curve25519 (X25519) — она обеспечивает совершенную прямую секретность (forward secrecy): даже если приватный ключ устройства когда-нибудь будет скомпрометирован, расшифровать перехваченный ранее трафик не получится, потому что сессионные ключи для каждого соединения генерируются заново.
Шифрование, которое не сажает батарею
Для шифрования самих данных WireGuard использует ChaCha20-Poly1305 — алгоритм из семейства AEAD (authenticated encryption with associated data), который одновременно шифрует пакет и защищает его от подмены. ChaCha20 выбрали не случайно: на процессорах без аппаратного ускорения AES (а таких смартфонов и одноплатных серверов немало) он заметно быстрее AES-256 при сопоставимом уровне защиты, поэтому меньше нагружает батарею на телефоне.
Для хэширования применяется BLAKE2s — быстрая и криптографически стойкая функция, которая идёт на смену устаревающему SHA-1 и тяжеловесному SHA-2 в задачах, где важна скорость.
UDP и «бесшовный» роуминг
WireGuard работает поверх UDP и не держит постоянное TCP-соединение с состоянием. Формально сервер вообще не хранит «сессию» в привычном смысле — он просто помнит, какому публичному ключу какой IP-адрес и порт соответствовали при последнем полученном пакете. Из-за этого переключение между Wi-Fi и мобильной сетью не рвёт туннель: как только приходит первый пакет с нового адреса, но с правильным ключом, сервер обновляет запись и продолжает шифрованный обмен как ни в чём не бывало.
Что достраивают поверх ядра протокола
У минимализма есть обратная сторона: структура пакетов WireGuard фиксирована и легко распознаётся системами глубокого анализа трафика по характерным заголовкам и длине рукопожатия — протокол для этого и не проектировался, у него была другая задача. Поэтому поверх криптографического ядра WireGuard появляются обфусцированные форки вроде AmneziaWG: они добавляют случайный мусорный трафик, изменяют заголовки пакетов и маскируют паттерны рукопожатия, не трогая при этом саму криптографию — шифрование и проверка подлинности остаются теми же проверенными Curve25519, ChaCha20-Poly1305 и BLAKE2s.
Именно эта комбинация — компактный аудируемый код, современная криптография без компромиссов и продуманный обмен ключами — сделала WireGuard стандартом де-факто для нового поколения VPN. CYBERXVPN использует AmneziaWG: тот же проверенный протокол, дополненный маскировкой трафика поверх него.