Опубликованы VPN WireGuard для Windows и WireGuardNT 1.0
Джейсон Доненфилд (Jason A. Donenfeld), автор VPN WireGuard, представил первый значительный релиз клиентского ПО WireGuard для Windows 1.0, а также драйверов WireGuardNT 1.0 с портом VPN WireGuard для ядра Windows 10 и 11, поддерживающий архитектуры AMD64, x86 и ARM64. Код компонентов для ядра Windows распространяется под лицензией GPLv2, а клиентского ПО под лицензией MIT.
Порт основан на кодовой базе основной реализации WireGuard для ядра Linux, которая была переведена на использование сущностей ядра Windows и сетевого стека NDIS. По сравнению с реализацией wireguard-go, работающей в пространстве пользователя и использующей сетевой интерфейс Wintun, WireGuardNT отличается существенным повышением производительности за счёт исключения операций переключения контекста и копирования содержимого пакетов из ядра в пространство пользователя. По аналогии с реализациями для Linux, OpenBSD и FreeBSD в WireGuardNT вся логика обработки протокола работает непосредственно на уровне сетевого стека.
Версия 1.0 отмечена как своеобразный рубеж, ознаменовавший решение ряда проблем и задач, таких как: задействование функции NdisWdfGetAdapterContextFromAdapterHandle () вместо менее безопасного хранения состояния драйвера в поле Reserved и использования недокументированных смещений на поля в структуре; корректного и оперативного отслеживания размера MTU (Maximum Transmission Unit) через перехват системных вызовов; задействование в коде стандарта C23.
Напомним, что VPN WireGuard реализован на основе современных методов шифрования, обеспечивает очень высокую производительность, прост в использовании, лишён усложнений и хорошо зарекомендовал себя в ряде крупных внедрений, обрабатывающих большие объёмы трафика. Проект развивается с 2015 года, прошёл аудит и формальную верификацию применяемых методов шифрования. В 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).
Источник: http://www.opennet.ru/opennews/art.shtml? num=65238
OpenNet прочитано 911 раз
