Rilasciate WireGuard VPN per Windows e WireGuardNT 1.0

Jason A. Donenfeld, l'autore di WireGuard VPN, ha rilasciato la prima versione principale del software client WireGuard per Windows 1.0, nonché i driver WireGuardNT 1.0 con una porta VPN WireGuard per il kernel di Windows 10 e 11, con supporto per architetture AMD64, x86 e ARM64. Il codice del componente del kernel di Windows è rilasciato sotto licenza GPLv2, mentre il software client è rilasciato sotto licenza MIT.

Questa implementazione si basa sul codice sorgente principale di WireGuard per il kernel Linux, che è stato convertito per utilizzare le entità del kernel Windows e lo stack di rete NDIS. Rispetto all'implementazione wireguard-go, che viene eseguita nello spazio utente e utilizza l'interfaccia di rete Wintun, WireGuardNT offre significativi miglioramenti delle prestazioni eliminando i cambi di contesto e copiando il contenuto dei pacchetti dal kernel allo spazio utente. Analogamente alle implementazioni per Linux, OpenBSD e FreeBSD, tutta la logica di elaborazione dei protocolli in WireGuardNT viene eseguita direttamente a livello dello stack di rete.

La versione 1.0 è stata considerata una pietra miliare, a testimonianza della risoluzione di una serie di problemi e del completamento di obiettivi prefissati, quali: l'utilizzo della funzione NdisWdfGetAdapterContextFromAdapterHandle() al posto della memorizzazione meno sicura dello stato del driver nel campo Reserved e dell'utilizzo di offset non documentati; il tracciamento corretto e tempestivo della dimensione dell'MTU (Maximum Transmission Unit) tramite l'intercettazione delle chiamate di sistema; l'utilizzo dello standard C23 nel codice.

Ricordiamo che WireGuard VPN si basa su metodi di crittografia moderni, offre prestazioni eccezionali, è facile da usare, privo di complicazioni e ha dimostrato la sua efficacia in numerose implementazioni su larga scala, gestendo ingenti volumi di traffico. Il progetto è in fase di sviluppo dal 2015 e ha superato un audit e una verifica formale dei suoi metodi di crittografia. WireGuard utilizza un concetto di routing con crittografia basata su chiavi, che prevede l'associazione di una chiave privata a ciascuna interfaccia di rete e l'utilizzo di chiavi pubbliche per l'associazione delle chiavi.

Lo scambio di chiavi pubbliche per stabilire una connessione è simile a quello di SSH. Per negoziare le chiavi e connettersi senza eseguire un demone separato nello spazio utente, viene utilizzato il meccanismo Noise_IK del Noise Protocol Framework, simile alla gestione delle authorized_keys in SSH. Il trasferimento dei dati avviene tramite incapsulamento in pacchetti UDP. La modifica è supportata. Indirizzi IP Server VPN (roaming) senza interruzione di connessione con riconfigurazione automatica del client.

Per la crittografia vengono utilizzati il ​​cifrario a flusso ChaCha20 e l'algoritmo di autenticazione dei messaggi (MAC) Poly1305, sviluppati da Daniel J. Bernstein, Tanja Lange e Peter Schwabe. ChaCha20 e Poly1305 sono commercializzati come alternative più veloci e sicure ad AES-256-CTR e HMAC, la cui implementazione software consente l'esecuzione a tempo fisso senza richiedere un supporto hardware specifico. La chiave segreta condivisa viene generata utilizzando il protocollo Diffie-Hellman a curva ellittica nell'implementazione Curve25519, anch'essa proposta da Daniel Bernstein. Per l'hashing viene utilizzato l'algoritmo BLAKE2s (RFC7693).

Fonte: opennet.ru