È stata aggiunta una nuova implementazione di VPN WireGuard al codice di base di FreeBSD.

Nel repository dei codici sorgente di FreeBSD sono stati accettati cambiamenti con una nuova implementazione della VPN WireGuard, basata sul codice di un modulo del kernel, redatto congiuntamente dai principali team di sviluppatori di FreeBSD e WireGuard con la partecipazione di Jason Donenfeld, autore della VPN WireGuard, e John Baldwin, noto sviluppatore di GDB e FreeBSD, che nei primi anni 2000 implementò il supporto SMP e NUMA nel kernel di FreeBSD. Dopo l'accettazione del driver all'interno di FreeBSD (sys/dev/wg), il suo sviluppo e manutenzione saranno gestiti nel repository di FreeBSD.

Prima dell'accettazione del codice, supportata dall'organizzazione FreeBSD Foundation, è stata condotta una revisione completa delle modifiche, durante la quale è stato analizzato anche l'interazione del driver con gli altri sottosistemi del kernel e valutata la possibilità di utilizzare i primitivi crittografici forniti dal kernel.

Per l'uso degli algoritmi crittografici necessari al driver, è stata effettuata un'estensione dell'API della sottosistema crittografico del kernel di FreeBSD, nella quale è stata aggiunta una wrapper che consente di utilizzare, attraverso l'API crittografica standard, algoritmi non supportati in FreeBSD, utilizzando l'implementazione di algoritmi necessari dalla libreria libsodium. Tra gli algoritmi incorporati nel driver è rimasto solo il codice per il calcolo degli hash Blake2, poiché l'implementazione di questo algoritmo fornita in FreeBSD è legata a una dimensione fissa dell'hash.

Inoltre, durante la revisione è stata effettuata un'ottimizzazione del codice che ha consentito di aumentare l'efficienza della distribuzione del carico su CPU multi-core (è stata garantita un'equa bilanciamento nell'assegnazione delle attività di crittografia e decrittografia dei pacchetti ai core della CPU). Di conseguenza, le spese generali durante l'elaborazione dei pacchetti sono state avvicinate a quelle dell'implementazione del driver per Linux. Il codice prevede anche la possibilità di utilizzare il driver ossl per accelerare le operazioni di crittografia.

A differenza del precedente tentativo di integrazione di WireGuard in FreeBSD, nella nuova implementazione è stata utilizzata l'utilità standard wg e non la versione modificata di ifconfig, il che ha permesso di uniformare la configurazione tra Linux e FreeBSD. L'utilità wg, così come il driver, è stata inclusa nei codici sorgente di FreeBSD, il che è diventato possibile grazie alla modifica della licenza del codice wg (il codice è ora disponibile sotto le licenze MIT e GPL). Il precedente tentativo di inclusione di WireGuard in FreeBSD è stato effettuato nel 2020, ma si è concluso in uno scandalo, a seguito del quale il codice già aggiunto è stato rimosso a causa di bassa qualità, gestione negligente dei buffer, uso di stub invece di controlli, implementazione incompleta del protocollo e violazione della licenza GPL.

Ricordiamo che VPN WireGuard è implementato utilizzando metodi di crittografia moderni, offre prestazioni molto elevate, è facile da usare, privo di complessità e si è dimostrato efficace in numerose implementazioni su larga scala che gestiscono grandi volumi di traffico. Il progetto è in sviluppo dal 2015, ha subito audit e verifica formale dei metodi di crittografia impiegati. In WireGuard si applica il concetto di instradamento basato sulle chiavi di crittografia, il quale implica l'associazione di una chiave privata a ciascuna interfaccia di rete e l'uso di chiavi pubbliche per il collegamento.

Lo scambio di chiavi pubbliche per stabilire una connessione avviene per analogia con SSH. Per il protocollo di scambio delle chiavi e la connessione senza l'avvio di un demone separato nello spazio utente, viene utilizzato il meccanismo Noise_IK del Noise Protocol Framework, simile alla gestione di authorized_keys in SSH. La trasmissione dei dati avviene tramite incapsulamento in pacchetti UDP. È supportato il cambio Indirizzi IP Server VPN (roaming) senza interruzioni della connessione con riconfigurazione automatica del client.

Per la crittografia, viene utilizzato il cifrario a flusso ChaCha20 e l'algoritmo di autenticazione dei messaggi (MAC) Poly1305, sviluppati da Daniel Bernstein, Tanja Lange e Peter Schwabe. ChaCha20 e Poly1305 sono posizionati come alternative più veloci e sicure a AES-256-CTR e HMAC, la cui implementazione software consente di raggiungere un tempo di esecuzione fisso senza richiedere supporto hardware speciale. Per generare la chiave segreta condivisa, viene utilizzato il protocollo Diffie-Hellman su curve ellittiche nell'implementazione Curve25519, anch'essa proposta da Daniel Bernstein. Per l'hashing viene utilizzato l'algoritmo BLAKE2s (RFC7693).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster