FreeBSD-i algsete tekstidesse on tehtud muudatused, mis sisaldavad uut WireGuardi VPN-i teostust, mis põhineb tuumamooduli koodil, mille on koostanud FreeBSD ja WireGuardi peamised arendustiimid koos Jason A. Donenfeldi, WireGuardi autori, ja John H. Baldwini, tuntud GDB ja FreeBSD arendajaga, kes20. sajandi alguses viis läbi SMP ja NUMA toe rakendamise FreeBSD tuumas. Pärast juhi vastuvõtmist FreeBSD-sse (sys/dev/wg) toimub tema arendamine ja hooldus nüüd FreeBSD hoidlas.
Enne koodi vastuvõtmist FreeBSD Foundation'i toetusel viidi läbi täielik muudatuste läbivaatamine, mille käigus analüüsiti ka juhi suhtlemist ülejäänud südamiku allhoovustega ja hinnati tuumast pakutavate krüptograafia primitivate kasutamise võimalusi.
Juhi nõutavate krüptograafiliste algoritmide kasutamiseks laiendati FreeBSD tuuma krüptosüsteemi API-d, kuhu lisati koonus, mis võimaldab kasutada FreeBSD-s toetamata algoritme, kasutades vajalikku algoritmi rakendust libsodium raamatukogust. Juhi sisseehitatud algoritmidest jäi alles vaid Blake2 hash-arvutamise kood, kuna FreeBSD-s pakutud rakendus on seotud kindla hash-suurusega.
Lisaks viidi läbivaatamise käigus läbi koodi optimeerimine, mis tõstis koormuse jaotuse efektiivsust mitme tuuma CPU-de peal (tagades võrdsed ülesannete krüptimise ja dekrüptimise tasakaalu tuumadele). Tulemuseks oli pakettide töötlemise kulud, mis olid lähenenud Linuxi seadme rakendusele. Koodis on samuti tagatud võimalus kasutada ossl draiverit krüptimise operatsioonide kiirendamiseks.
Erinevalt WireGuardi eelmise integreerimise katsetusest FreeBSD-s on uues rakenduses kasutusel standardne utiliit wg, mitte muudetud versioon ifconfig, mis võimaldas ühtlustada seadistust Linuxis ja FreeBSD-s. Utiliit wg, nagu ka draiver, on integreeritud FreeBSD lähtekoodidesse, mis sai võimalikuks tänu wg koodi litsentsi muutusele (kood on nüüd litsentside MIT ja GPL all saadaval). Eelmine WireGuardi integreerimise katse FreeBSD-s toimus 2020. aastal, kuid see lõppes skandaaliga, mille tulemusena eemaldati juba lisatud kood madala kvaliteedi, bufrite haldamise hooletuse, vale kontrollide kasutamise, protokolli mittetäieliku rakendamise ja GPL litsentsi rikkumise tõttu.
peamine VPN WireGuard põhineb kaasaegsetel krüpteerimismeetoditel, tagab väga kõrge jõudluse, on lihtne kasutada, on vaba keerukusest ja on end tõestanud mitmetes suurtes rakendustes, mis töötlevad suures mahus liiklust. Projekt on arenenud alates 2015. aastast, läbinud auditi ja ametliku valideerimise kasutatavatele krüpteerimismeetoditele. WireGuardis rakendatakse võtmete krüpteerimise kaudu marsruutimise kontseptsiooni, mis hõlmab iga võrgu liidese kinnise võtme sidumist ja avalike võtmete seondamise rakendamist.
Ühenduse loomise avatud võtmete vahetus toimub SSH-i sarnaselt. Võtmete kokkuleppimiseks ja ühenduse loomiseks ilma eraldi kasutaja ruumi deemonit käitata kasutatakse Noise Protocol Frameworki Noise_IK mehhanismi, mis sarnaneb SSH autoriseeritud võtmete haldamisega. Andmed edastatakse UDP-pakettidesse kapseldatuna. Toetatakse vahetust IP-aadressid VPN-serverid (roaming) katkestusteta ühenduse hoidmine automaatse kliendi seadistamisega.
Krüptimiseks kasutatakse voogkrüptereid ChaCha20 ja sõnumi autentimise algoritmi (MAC) Poly1305, mille on välja töötanud Daniel Bernstein, Tanja Lange ja Peter Schwabe. ChaCha20 ja Poly1305 on turundatud kui kiiremad ja turvalisemad analoogid AES-256-CTR ja HMAC, mille programmiline rakendus võimaldab saavutada fikseeritud täitmise aega ilma spetsiaalset riistvara tuge kasutamata. Ühise salajase võtme genereerimiseks kasutatakse elliptsete käivete Difii-Hellmani protokolli Curve25519 rakenduses, mis on samuti ettepaneku Daniel Bernsteinilt. Hashimise jaoks kasutatakse algoritmi BLAKE2s (RFC7693).
Allikas: opennet.ru
