Представена е реализация на VPN WireGuard за ядрото на Windows

Джейсон Доненфилд (Jason A. Donenfeld), автор на VPN WireGuard, представи проектът WireGuardNT, който развива високопроизводителен порт на VPN WireGuard за ядрото на Windows, съвместим с Windows 7, 8, 8.1 и 10, и поддържащ архитектури AMD64, x86, ARM64 и ARM. Кодът на реализацията се разпространява под лицензия GPLv2. Новият драйвер вече е включен в състава на клиента WireGuard за Windows, но все още е отбелязан като експериментален и не е активиран по подразбиране.

Портът се базира на проверената кодова база на основната реализация на WireGuard за ядрото на Linux, която е адаптирана да използва ядрови сущности на Windows и мрежовия стек NDIS. В сравнение с предишната версия на wireguard-go за Windows, работеща в потребителското пространство и използваща мрежовия интерфейс Wintun, WireGuardNT предлага съществено повишаване на производителността чрез изключване на контекстните превключвания и копирането на съдържанието на пакети от ядрото в потребителското пространство. Подобно на реализациите за Linux, OpenBSD и FreeBSD, в WireGuardNT логиката за обработка на протоколи работи директно на нивото на мрежовия стек.

Въпреки че специфични оптимизации все още не са извършени, WireGuardNT вече е позволил постигането на пикова производителност на предаване на данни от 7.5Gbps в наличната тестова среда с Ethernet. В реални потребителски системи с Wi-Fi производителността е значително по-ниска, но не се различава много от директната предаване на данни. Например, в система с безжична карта Intel AC9560, пропускната способност без WireGuard беше 600Mbps, а с WireGuardNT също остана на ниво 600Mbps, докато при използване на wireguard-go/Wintun беше 95Mbps.

Напомняме, че 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).

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster