Oko 100 izmjena vezanih za implementaciju podrške za VPN WireGuard usvojeno je u kernel DragonFly BSD operativnog sistema. "wg" drajver sa podrškom za WireGuard protokol je prenet iz FreeBSD-a, a kod za kriptografske funkcije, mrežni interfejs i ioctl API (za kontrolu iz korisničkog prostora) je posuđen iz OpenBSD-a. Promjene u uslužnom programu ifconfig potrebne za konfiguraciju VPN-a prenijete su iz OpenBSD-a. Implementacija je kompatibilna sa svim službenim WireGuard klijentima za Linux, Windows, macOS, *BSD, iOS i Android. DragonFly BSD je postao peti otvoreni OS nakon Linuxa, OpenBSD-a, NetBSD-a i FreeBSD-a s integriranom podrškom za WireGuard.
WireGuard koristi koncept usmjeravanja zasnovanog na ključu, koji uključuje vezivanje privatnog ključa za svaki mrežni interfejs i njegovo korištenje za vezivanje javnog ključa. Za pregovaranje o ključevima i povezivanje bez pokretanja zasebnog daemona u korisničkom prostoru, koristi se mehanizam Noise_IK iz Noise Protocol Frameworka, sličan SSH-ovoj podršci za authorized_keys. Prijenos podataka se vrši putem enkapsulacije u UDP pakete. Podržana je preraspodjele IP adrese. VPN-serveri (roaming) bez prekidanja veze s automatskom rekonfiguracijom klijenata.
Enkripcija koristi ChaCha20 stream šifru i Poly1305 algoritam za provjeru autentičnosti poruke (MAC) koji su razvili Daniel J. Bernstein, Tanja Lange i Peter Schwabe. ChaCha20 i Poly1305 su pozicionirani kao brži i sigurniji analozi AES-256-CTR i HMAC, čija softverska implementacija omogućava postizanje fiksnog vremena izvršenja bez uključivanja posebne hardverske podrške. Za generiranje zajedničkog tajnog ključa koristi se Diffie-Hellmanov protokol eliptičke krive u implementaciji Curve25519, koji je također predložio Daniel Bernstein. Za heširanje se koristi BLAKE2s algoritam (RFC7693).
izvor: opennet.ru
