I trÀdstrukturen för FreeBSD:s kÀllkod har förÀndringar antagits med en ny implementering av VPN WireGuard, baserad pÄ koden frÄn kÀrnmodulen, som gemensamt tagits fram av de frÀmsta utvecklarteams i FreeBSD och WireGuard, med deltagande av Jason Donenfeld, skaparen av VPN WireGuard, och John Baldwin, en kÀnd utvecklare av GDB och FreeBSD, som i början av 2000-talet implementerade stöd för SMP och NUMA i FreeBSD-kÀrnan. Efter att drivrutinen godkÀnts som en del av FreeBSD (sys/dev/wg) kommer dess utveckling och underhÄll nu att skötas i FreeBSD:s repository.
Innan koden godkÀndes genomfördes en fullstÀndig granskning av förÀndringarna med stöd frÄn FreeBSD Foundation, dÀr ocksÄ interaktionen mellan drivrutinen och övriga delsystem i kÀrnan analyserades, och möjligheten att anvÀnda de kryptografiska primitiva som tillhandahÄlls av kÀrnan bedömdes.
För att möjliggöra de kryptografiska algoritmer som drivrutinen behöver expanderades API:t för FreeBSD:s kryptosubsystem, dÀr en wrapper lades till för att anvÀnda algoritmer som inte stödjs i FreeBSD via standard kryptografiska API:t, genom att anvÀnda implementationen av de nödvÀndiga algoritmerna frÄn libsodium-biblioteket. Bland de algoritmer som implementerades i drivrutinen lÀmnades endast koden för att berÀkna hashes med Blake2, eftersom den implementation som finns i FreeBSD Àr kopplad till en fast hash-storlek.
Dessutom genomfördes en optimering av koden under granskningsprocessen, vilket möjliggjorde en effektivare belastningsfördelning pÄ flerklassiga CPU:er (jÀmn fördelning av uppgifter för kryptering och dekryptering av paket pÄ CPU-kÀrnorna). Som ett resultat nÀrmade sig overheaden vid paketbehandling implementeringen av drivrutinen för Linux. Koden möjliggör ocksÄ anvÀndning av drivrutinen ossl för att pÄskynda krypteringsoperationerna.
Till skillnad frÄn det tidigare försöket att integrera WireGuard i FreeBSD anvÀnder den nya implementeringen det inbyggda verktyget wg istÀllet för den modifierade versionen av ifconfig, vilket har möjliggjort en enhetlig konfiguration i bÄde Linux och FreeBSD. Verktyget wg, precis som drivrutinen, ingÄr i kÀllkoden till FreeBSD, vilket har blivit möjligt tack vare Àndringen av licensen pÄ wg-koden (koden Àr nu tillgÀnglig under licenserna MIT och GPL). Det tidigare försöket att inkludera WireGuard i FreeBSD gjordes 2020, men avslutades i skandal, vilket ledde till att den redan tillagda koden togs bort pÄ grund av lÄg kvalitet, slarvigt arbete med buffertar, anvÀndning av platshÄllare istÀllet för kontroller, ofullstÀndig implementering av protokollet och brott mot GPL-licensen.
LÄt oss pÄminna om att VPN WireGuard Àr baserat pÄ moderna krypteringsmetoder, ger mycket hög prestanda, Àr enkel att anvÀnda, saknar komplicerade aspekter och har bevisat sig vÀl i flera stora implementationer som hanterar stora trafikvolymer. Projektet har utvecklats sedan 2015, har genomgÄtt granskningar och formell verifiering av de anvÀnda krypteringsmetoderna. WireGuard tillÀmpar konceptet nyckelbaserad routing, vilket innebÀr att varje nÀtverksgrÀnssnitt kopplas till en privat nyckel och anvÀnder öppna nycklar för att knyta ihop dem.
Nyckelutbyte för att etablera en anslutning sker pÄ liknande sÀtt som med SSH. För att samordna nycklar och ansluta utan att starta en separat demon i anvÀndarutrymmet anvÀnds mekanismen Noise_IK frÄn Noise Protocol Framework, som liknar hantering av authorized_keys i SSH. Dataöverföring sker genom inkapsling i UDP-paket. Stödet för att byta IP-adresser VPN-server (roaming) utan avbrott i anslutningen med automatisk omkonfigurering av klienten.
För kryptering anvÀnds strömkrypteringen ChaCha20 och meddelandets autentiseringsalgoritm (MAC) Poly1305, utvecklade av Daniel J. Bernstein, Tanja Lange och Peter Schwabe. ChaCha20 och Poly1305 positioneras som snabbare och sÀkrare alternativ till AES-256-CTR och HMAC, vars mjukvaruimplementering möjliggör konstant exekveringstid utan specialiserat hÄrdvarustöd. För att generera en gemensam hemlig nyckel anvÀnds Diffie-Hellman-protokollet pÄ elliptiska kurvor i implementationen Curve25519, Àven den föreslagen av Daniel J. Bernstein. För hashning anvÀnds algoritmen BLAKE2s (RFC7693).
KĂ€lla: opennet.ru
