Джейсън А. Доненфелд, авторът на WireGuard VPN, пусна първата голяма версия на клиентския софтуер 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 в кода.
Припомняме, че WireGuard VPN е базиран на съвременни методи за криптиране, осигурява изключителна производителност, лесен е за използване, не създава усложнения и се е доказал в редица мащабни внедрявания, обработващи големи обеми трафик. Проектът е в процес на разработка от 2015 г. и е преминал одит и официална проверка на методите си за криптиране. WireGuard използва концепция за маршрутизиране на криптиране, базирана на ключове, която включва обвързване на частен ключ с всеки мрежов интерфейс и използване на публични ключове за обвързване на ключове.
Обменът на публични ключове за установяване на връзка е подобен на SSH. За договаряне на ключове и свързване без стартиране на отделен демон в потребителското пространство се използва механизмът Noise_IK от Noise Protocol Framework, подобен на поддръжката на authorized_keys в SSH. Преносът на данни се осъществява чрез капсулиране в UDP пакети. Поддържа се промяна. IP адреси VPN сървъри (роуминг) без прекъсване на връзката с автоматична реконфигурация на клиента.
За криптиране се използват стрийминг шифърът ChaCha20 и алгоритъмът за удостоверяване на съобщения (MAC) Poly1305, разработени от Даниел Дж. Бернщайн, Таня Ланге и Петер Швабе. ChaCha20 и Poly1305 се предлагат на пазара като по-бързи и по-сигурни алтернативи на AES-256-CTR и HMAC, чиято софтуерна имплементация позволява изпълнение за фиксирано време, без да се изисква специална хардуерна поддръжка. Споделеният секретен ключ се генерира с помощта на протокола Diffie-Hellman с елиптична крива в имплементацията Curve25519, също предложена от Даниел Бернщайн. За хеширане се използва алгоритъмът BLAKE2s (RFC7693).
Източник: opennet.ru
