знаковый выпуск VPN , который отметил собой поставку компонентов WireGuard в основном составе ядра и стабилизацию разработки. Включённый в состав ядра Linux код дополнительный аудит безопасности, выполненный независимой фирмой, специализирующейся на подобных проверках. Аудит не выявил каких-либо проблем.
Так как WireGuard теперь развивается в основном составе ядра Linux, для дистрибутивов и пользователей, продолжающих использование старых версий ядра, подготовлен репозиторий . Репозиторий включает бэкпортированный код WireGuard и слой compat.h для обеспечения совместимости со старыми ядрами. Отмечается, что пока есть возможность разработчиков и потребность у пользователей обособленный вариант патчей будет поддерживаться в рабочем виде. В текущем виде обособленный вариант WireGuard может использоваться с ядрами из и , а также доступен в виде патчей для ядер Linux и . Дистрибутивы, применяющие самые свежие ядра, такие как Arch, Gentoo и
Fedora 32, получат возможность использования WireGuard вместе с обновлением ядра 5.6.
Основной процесс разработки теперь ведётся в репозитории , включающем полное дерево ядра Linux с изменениями от проекта Wireguard. Патчи из данного репозитория будут рецензироваться для включения в основное ядро и регулярно переноситься в ветки net/net-next. Разработка запускаемых в пространстве пользователя утилит и скриптов, таких как wg и wg-quick, ведётся в репозитории , который можно использовать для создания пакетов в дистрибутивах.
Напомним, что VPN WireGuard реализован на основе современных методов шифрования, обеспечивает очень высокую производительность, прост в использовании, лишён усложнений и хорошо зарекомендовал себя в ряде крупных внедрений, обрабатывающих большие объёмы трафика. Проект развивается с 2015 года, прошёл аудит и применяемых методов шифрования. Поддержка WireGuard уже интегрирована в NetworkManager и systemd, а патчи для ядра входят в базовый состав дистрибутивов , Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, и .
В WireGuard применяется концепция маршрутизации по ключам шифрования, которая подразумевает привязку к каждому сетевому интерфейсу закрытого ключа и применение для связывания открытых ключей. Обмен открытыми ключами для установки соединения производится по аналогии с SSH. Для согласования ключей и соединения без запуска отдельного демона в пространстве пользователя применяется механизм Noise_IK из , похожий на поддержание authorized_keys в SSH. Передача данных осуществляется через инкапсуляцию в пакеты UDP. Поддерживается смена IP-адреса VPN-сервера (роуминг) без разрыва соединения с автоматической перенастройкой клиента.
Для шифрования потоковый шифр и алгоритм аутентификации сообщений (MAC) , разработанные Дэниелом Бернштейном (), Таней Ланге
(Tanja Lange) и Питером Швабе (Peter Schwabe). ChaCha20 и Poly1305 позиционируются как более быстрые и безопасные аналоги AES-256-CTR и HMAC, программная реализация которых позволяет добиться фиксированного времени выполнения без задействования специальной аппаратной поддержки. Для генерации совместного секретного ключа применяется протокол Диффи-Хеллмана на эллиптических кривых в реализации , также предложенной Дэниелом Бернштейном. Для хеширования используются алгоритм .
При старом производительности 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 остаётся очень медленным.
Источник: opennet.ru
