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