En ny VPN-implementering, WireGuard, er lagt til FreeBSD-kodebasen.

FreeBSD-kildetreet har blitt oppdatert med en ny implementering av VPN WireGuard, basert på kjernemodulkode i fellesskap produsert av kjerneutviklingsteamene for FreeBSD og WireGuard med bidrag fra Jason A. Donenfeld, forfatter av VPN WireGuard, og John H. Baldwin ), en kjent utvikler av GDB og FreeBSD, som implementerte støtte for SMP og NUMA i FreeBSD-kjernen tidlig på 2000-tallet. Etter at driveren er akseptert i FreeBSD (sys/dev/wg), vil utviklingen og vedlikeholdet heretter bli utført i FreeBSD-depotet.

Før koden ble akseptert, ble det utført en fullstendig gjennomgang av endringene med støtte fra FreeBSD Foundation, hvor samspillet mellom driveren og resten av kjerneundersystemene også ble analysert og muligheten for å bruke kryptografiske primitiver levert av kjernen ble vurdert.

For å bruke de kryptografiske algoritmene som kreves av driveren, ble APIen til FreeBSD-kjernens krypto-undersystem utvidet, som en sele ble lagt til som tillater bruk av algoritmer som ikke støttes i FreeBSD gjennom standard krypto-API, ved å bruke implementeringen av nødvendige algoritmer fra libsodium-biblioteket. Av algoritmene som er innebygd i driveren, er det bare koden for å beregne Blake2-hasher igjen, siden implementeringen av denne algoritmen gitt i FreeBSD er knyttet til en fast hash-størrelse.

I tillegg, under gjennomgangsprosessen, ble kodeoptimalisering utført, noe som gjorde det mulig å øke effektiviteten av lastfordelingen på flerkjerne-CPUer (det ble sikret enhetlig balansering av tildelingen av pakkekryptering og dekrypteringsoppgaver til CPU-kjerner). Som et resultat var overheaden ved behandling av pakker nær den for Linux-driverimplementeringen. Koden gir også muligheten til å bruke ossl-driveren for å fremskynde krypteringsoperasjoner.

I motsetning til det forrige forsøket på å integrere WireGuard i FreeBSD, bruker den nye implementeringen standard wg-verktøyet, i stedet for en modifisert versjon av ifconfig, som gjør det mulig å forene konfigurasjonen på Linux og FreeBSD. Wg-verktøyet, så vel som driveren, er inkludert i FreeBSD-kildekoden, som ble muliggjort ved å endre lisensen for wg-koden (koden er nå tilgjengelig under MIT- og GPL-lisensene). Det siste forsøket på å inkludere WireGuard i FreeBSD ble gjort i 2020, men endte i en skandale, som et resultat av at den allerede lagte koden ble fjernet på grunn av lav kvalitet, uforsiktig arbeid med buffere, bruk av stubber i stedet for sjekker, ufullstendig implementering av protokollen og brudd på GPL-lisensen.

La oss minne om at VPN WireGuard er implementert på grunnlag av moderne krypteringsmetoder, gir svært høy ytelse, er enkel å bruke, fri for komplikasjoner og har bevist seg i en rekke store distribusjoner som behandler store mengder trafikk. Prosjektet har vært under utvikling siden 2015, og har gjennomgått en revisjon og formell verifisering av krypteringsmetodene som er brukt. WireGuard bruker konseptet med krypteringsnøkkelruting, som innebærer å feste en privat nøkkel til hvert nettverksgrensesnitt og bruke den til å binde de offentlige nøklene.

Offentlige nøkler utveksles for å etablere en forbindelse på lignende måte som SSH. For å forhandle nøkler og koble til uten å kjøre en egen demon i brukerrommet, brukes Noise Protocol Frameworks Noise_IK-mekanisme, på samme måte som å opprettholde autoriserte_nøkler i SSH. Dataoverføring utføres gjennom innkapsling i UDP-pakker. Den støtter endring av IP-adressen til VPN-serveren (roaming) uten å koble fra forbindelsen med automatisk klientrekonfigurering.

Kryptering bruker ChaCha20-strømchifferet og Poly1305-meldingsautentiseringsalgoritmen (MAC), utviklet av Daniel J. Bernstein, Tanja Lange og Peter Schwabe. ChaCha20 og Poly1305 er posisjonert som raskere og sikrere analoger av AES-256-CTR og HMAC, hvis programvareimplementering gjør det mulig å oppnå en fast utførelsestid uten bruk av spesiell maskinvarestøtte. For å generere en delt hemmelig nøkkel, brukes den elliptiske kurven Diffie-Hellman-protokollen i Curve25519-implementeringen, også foreslått av Daniel Bernstein. BLAKE2s-algoritmen (RFC7693) brukes til hashing.

Kilde: opennet.ru

Legg til en kommentar