DragonFly BSD operatsioonisüsteemi tuum sisaldab umbes 100 muudatust, mis on seotud WireGuard VPN toe rakendamisega. WireGuard protokolli toetav „wg” draiver on kantud FreeBSD-st, samas kui krüptograafiliste funktsioonide, võrgu liidese ja ioctl API (kasutajaruumi haldamiseks) kood on laenatud OpenBSD-st. VPN-i seadistamiseks vajalikke muudatusi ifconfig utiliidi osas on samuti üle kantud OpenBSD-st. Rakendus on ühilduv kõigi ametlike WireGuard klientidega Linuxile, Windowsile, macOS-ile, *BSD-dele, iOS-ile ja Androidile. DragonFly BSD on pärast Linuxi, OpenBSD, NetBSD-d ja FreeBSD-d viies avatud operatsioonisüsteem, kus on integreeritud WireGuard tugi.
WireGuard rakendab krüpteerimise võtmete järgi marsruutimise kontseptsiooni, mis tähendab, et iga võrgu liidese jaoks on seotud privaatvõti ja avalikke võtmeid kasutatakse ühendamiseks. Võtmete kokkuleppimiseks ja ühendamiseks ilma eraldi demonit kasutajaruumi käivitamata kasutatakse Noise_IK mehhanismi Noise Protocol Frameworkist, mis on sarnane authorized_keys hoidmisega SSH-s. Andmete edastamine toimub UDP-pakettide kapseldamise kaudu. IP-aadressi vahetamine on toetatud. VPN-serverid (roaming) ilma katkestuseta client'i automaatse ümberkonfigureerimisega.
Krüptimiseks kasutatakse voogkrüptimist ChaCha20 ja sõnumi autentimise algoritmi (MAC) Poly1305, mis on välja töötatud Daniel J. Bernstein'i, Tanja Lange'i ja Peter Schwabe'i poolt. ChaCha20 ja Poly1305 positsioneeritakse kui kiirem ja turvalisem alternatiiv AES-256-CTR ja HMAC-le, mille tarkvaraline implementeerimine võimaldab saavutada fikseeritud täitmise aega, ilma spetsiaalset riistvaratugi kasutamata. Ühise salajase võtme genereerimiseks kasutatakse Diiffi-Hellmani protokolli elliptiliste kõverate puhul Curve25519 elluviimises, mille on samuti esitanud Daniel J. Bernstein. Hasherimiseks kasutatakse algoritmi BLAKE2s (RFC7693).
Allikas: opennet.ru
