nyligen information släpptes som FreeBSD-trädet har modifierats medn en ny implementering deVPN WireGuard baserat på kärnmodulskod som utarbetats gemensamt av FreeBSD och WireGuards kärnutvecklingsteam med input från författaren till VPN WireGuard och en välkänd GDB- och FreeBSD-utvecklare
Innan koden accepterades utfördes en fullständig granskning av ändringarna med stöd av FreeBSD Foundation, under vilken drivrutinens interaktion med resten av kärnsubsystemen och möjligheten att använda de tillhandahållna kryptografiska primitiverna också analyserades.
För att använda de kryptografiska algoritmer som krävs av styrenheten, utökade FreeBSD kärnans kryptografiska subsystem API, Lade till en länk som gör att algoritmer som inte stöds i FreeBSD kan användas via det vanliga kryptografiska API:et, med hjälp av libsodium-bibliotekets implementering av de nödvändiga algoritmerna.
Av de algoritmer som är integrerade i den kontrollerader, bara koden för att beräkna Blake2-hasharna finns kvar, eftersom den FreeBSD-försedda implementeringen av denna algoritm är bunden till en fast hashstorlek.
Dessutom, under granskningsprocessen, kodoptimering genomfördes, vilket gjorde det möjligt att öka effektiviteten av lastfördelning på flerkärniga CPU:er (säkerställde jämn balansering av paketkryptering och dekrypteringsuppgiftsbindning till CPU-kärnor).
Som ett resultat, paketbearbetning overhead ungefärlig drivrutinsimplementering för Linux. Koden ger också möjlighet att använda ossl-drivrutinen för att påskynda krypteringsoperationer.
Till skillnad från det tidigare försöket att integrera WireGuard i FreeBSD, den nya implementeringen använder verktyget stock wg istället för en modifierad version av ifconfig, som möjliggjorde en enhetlig installation mellan Linux och FreeBSD. Wg-verktyget, såväl som drivrutinen, ingår i FreeBSD-källorna, möjliggjort av en licensändring i wg-koden (koden är nu tillgänglig under MIT- och GPL-licenserna).
Det senaste försöket att inkludera WireGuard i FreeBSD gjordes 2020, men slutade i en skandal, som ett resultat av vilken redan tillagd kod togs bort på grund av dålig kvalitet, slarvig bufferthantering, användning av stubbar istället för kontroller, ofullständig implementering av protokollet och brott mot GPL-licensen.
För dem som fortfarande inte vet VPN WireGuard, de borde veta det detta är implementerat på basis av moderna krypteringsmetoder, ger mycket hög prestanda, det är lätt att använda, okomplicerat och har bevisat sitt värde i ett antal stora installationer som hanterar stora mängder trafik. Projektet har varit under utveckling sedan 2015, klarade den formella granskningen och verifieringen av de använda krypteringsmetoderna. WireGuard använder routingkonceptet för krypteringsnyckel, vilket innebär att en privat nyckel binds till varje nätverksgränssnitt och att publika nycklar används för att binda.
Utbytet av publika nycklar för att upprätta en anslutning liknar SSH. För att förhandla om nycklar och ansluta utan att köra en separat userspace-demon, används Noise Protocol Frameworks Noise_IK-mekanism, på samma sätt som att hålla auktoriserade_nycklar i SSH. Dataöverföring sker genom inkapsling i UDP-paket. Stöder ändring av IP-adressen för VPN-servern (roaming) utan att bryta anslutningen med automatisk klientomkonfiguration.
Kryptering använder ChaCha20 strömchiffer och Poly1305 meddelandeautentiseringsalgoritm (MAC) utvecklad av Daniel J. Bernstein, Tanja Lange och Peter Schwabe. ChaCha20 och Poly1305 är positionerade som snabbare och säkrare analoger till AES-256-CTR och HMAC, vars mjukvaruimplementering gör det möjligt att uppnå en fast exekveringstid utan att involvera speciellt hårdvarustöd. Den elliptiska kurvan Diffie-Hellman-protokollet i Curve25519-implementationen, också föreslagen av Daniel Bernstein, används för att generera en delad hemlig nyckel. För hashning används BLAKE2s algoritm (RFC7693).
Slutligen är det värt att nämna om modifieringen, att när en drivrutin väl har accepterats i FreeBSD (sys/dev/wg), kommer den att utvecklas och underhållas i FreeBSD-förvaret från och med nu.
Om du är intresserad av att veta mer om det kan du konsultera detaljerna I följande länk.