Представлен знаковый выпуск VPN
WireGuard 1.0.0, который отметил собой поставку компонентов WireGuard в основном составе ядра
Linux 5.6 и стабилизацию разработки. Включённый в состав ядра Linux код
прошёл дополнительный аудит безопасности, выполненный независимой фирмой, специализирующейся на подобных проверках. Аудит не выявил каких-либо проблем.
Так как WireGuard теперь развивается в основном составе ядра Linux, для дистрибутивов и пользователей, продолжающих использование старых версий ядра, подготовлен репозиторий
wireguard-linux-compat.git. Репозиторий включает бэкпортированный код WireGuard и слой compat.h для обеспечения совместимости со старыми ядрами. Отмечается, что пока есть возможность разработчиков и потребность у пользователей обособленный вариант патчей будет поддерживаться в рабочем виде. В текущем виде обособленный вариант WireGuard может использоваться с ядрами из
Ubuntu 20.04 и
Debian 10 "Buster", а также доступен в виде патчей для ядер Linux
5.4 и
5.5. Дистрибутивы, применяющие самые свежие ядра, такие как Arch, Gentoo и Fedora 32, получат возможность использования WireGuard вместе с обновлением ядра 5.6.
Основной процесс разработки теперь ведётся в репозитории
wireguard-linux.git, включающем полное дерево ядра Linux с изменениями от проекта Wireguard. Патчи из данного репозитория будут рецензироваться для включения в основное ядро и регулярно переноситься в ветки net/net-next. Разработка запускаемых в пространстве пользователя утилит и скриптов, таких как wg и wg-quick, ведётся в репозитории
wireguard-tools.git, который можно использовать для создания пакетов в дистрибутивах.
Напомним, что VPN WireGuard реализован на основе современных методов шифрования, обеспечивает очень высокую производительность, прост в использовании, лишён усложнений и хорошо зарекомендовал себя в ряде крупных внедрений, обрабатывающих большие объёмы трафика. Проект развивается с 2015 года, прошёл аудит и
формальную верификацию применяемых методов шифрования. Поддержка WireGuard уже интегрирована в NetworkManager и systemd, а патчи для ядра входят в базовый состав дистрибутивов
Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS,
Subgraph и
ALT.
В WireGuard применяется концепция маршрутизации по ключам шифрования, которая подразумевает привязку к каждому сетевому интерфейсу закрытого ключа и применение для связывания открытых ключей. Обмен открытыми ключами для установки соединения производится по аналогии с SSH. Для согласования ключей и соединения без запуска отдельного демона в пространстве пользователя применяется механизм Noise_IK из
Noise Protocol Framework, похожий на поддержание authorized_keys в SSH. Передача данных осуществляется через инкапсуляцию в пакеты UDP. Поддерживается смена IP-адреса VPN-сервера (роуминг) без разрыва соединения с автоматической перенастройкой клиента.
Для шифрования
используется потоковый шифр
ChaCha20 и алгоритм аутентификации сообщений (MAC)
Poly1305, разработанные Дэниелом Бернштейном (
Daniel J. Bernstein), Таней Ланге (Tanja Lange) и Питером Швабе (Peter Schwabe). ChaCha20 и Poly1305 позиционируются как более быстрые и безопасные аналоги AES-256-CTR и HMAC, программная реализация которых позволяет добиться фиксированного времени выполнения без задействования специальной аппаратной поддержки. Для генерации совместного секретного ключа применяется протокол Диффи-Хеллмана на эллиптических кривых в реализации
Curve25519, также предложенной Дэниелом Бернштейном. Для хеширования используются алгоритм
BLAKE2s (RFC7693).
При старом
тестировании производительности WireGuard продемонстрировал в 3.9 раза более высокую пропускную способность и в 3.8 раз более высокую отзывчивость, по сравнению с OpenVPN (256-bit AES c HMAC-SHA2-256). По сравнению с IPsec (256-bit ChaCha20+Poly1305 и AES-256-GCM-128) в WireGuard наблюдается небольшое опережение по производительности (13-18%) и снижение задержек (21-23%). Размещённые на сайте проекта результаты тестирования охватывают старую обособленную реализацию WireGuard и отмечены как недостаточно качественные. Со времени проведения тестов код WireGuard и IPsec был дополнительно оптимизирован и теперь работает быстрее. Более полное тестирование, охватывающее интегрированную в ядро реализацию, пока не проведено. Тем не менее, отмечается, что WireGuard в некоторых ситуациях по-прежнему обгоняет IPsec в силу многопоточности, в то время как OpenVPN остаётся очень медленным.
Источник
https://www.opennet.ru/opennews/art.shtml?num=52636