FreeBSD koodipuu on vastu võetud muudatused, mis sisaldavad uut VPN WireGuard'i teostust, mis põhineb tuumamooduli koodil, mida on koos töötanud FreeBSD ja WireGuard peamised arendustiimid, samuti Jason Donenfeld (VPN WireGuard'i looja) ja John Baldwin, tuntud GDB ja FreeBSD arendaja, kes rakendas FreeBSD-s SMP ja NUMA toe 2000. aastate alguses. Pärast juhi vastuvõtmist FreeBSD-s (sys/dev/wg) jätkatakse selle arendamist ja hooldamist FreeBSD arhiivis.
Enne koodi vastuvõtmist FreeBSD Foundation'i toe all viidi läbi põhjalik muudatuste ülevaatus, mille käigus analüüsiti ka draiveri koostööd tuuma teiste alam süsteemidega ja hinnati võimalust kasutada tuuma pakutavaid krüptograafilisi primitiive.
Draiveri jaoks vajalike krüptograafiliste algoritmide kasutamiseks viidi läbi FreeBSD tuuma krüptosüsteemi API laiendamine, mille raames lisati wrapper, mis võimaldab kasutada mitte FreeBSD-s toetatud algoritme standardse krüpto-API kaudu, kasutades vajalike algoritmide rakendusi libsodium'i raamatukogust. Draiverisse on jäetud ainult Blake2 räsi arvutamise kood, kuna FreeBSD-s pakutud rakendamine on seotud fikseeritud suurusega räsi.
Peale selle viidi ülevaatusprotsessis läbi koodi optimeerimine, mis tõstis mitme tuuma CPU koormuse jaotamise tõhusust (tagati võrdne krüpteerimise ja dekrüpteerimise ülesannete koormuse jaotamine CPU tuumade vahel). Tulemuseks olid pakettide töötlemise kulud, mis olid ligikaudsed Linuxi draiveri rakendusele. Kood sisaldab ka võimalust kasutada ossl draiverit krüpteerimise operatsioonide kiirendamiseks.
Erinevalt WireGuard'i varasemast integreerimisest FreeBSD-s, on uues teostuses kasutatud standardset tööriista wg, mitte muudetud versiooni ifconfig, mis võimaldas ühtlustada seadistamist Linuxi ja FreeBSD vahel. Tööriist wg, nagu ka draiver, on lisatud FreeBSD koodipuu, mis sai võimalikuks wg koodi litsentsi muutmisega (kood on nüüd saadaval MIT ja GPL litsentside all). Eelmine WireGuard'i integreerimise katse FreeBSD-s toimus 2020. aastal, kuid lõppes skandaaliga, mille tulemusena eemaldati juba lisatud kood madala kvaliteedi, bufferitega hooletu töötamise, pistikute kasutamise asemel kontrollide, protokolli mittetäieliku rakendamise ja GPL litsentsi rikkumise tõttu.
Tuletame meelde, et VPN WireGuard on rakendatud tänapäevaste krüptimismeetodite alusel, tagab väga kõrge jõudluse, on lihtne kasutada, vaba keerukustest ja on hästi tõestatud mitmetes suurtes rakendustes, mis töötlevad suuri andmemahtusid. Projekt on arenenud alates 2015. aastast, läbinud auditi ja ametliku verifitseerimise rakendatud krüptimismeetodite osas. WireGuard kasutab krüpteerimise võtmete põhist marsruutimise kontseptsiooni, mille kohaselt seostatakse iga võrguühenduse jaoks privaatvõti ja avatud võtmete seostamiseks rakendatakse seda.
Avauste võtmete vahetus seose loomiseks toimub SSH-i sarnasel viisil. Võtmete kooskõlastamiseks ja ühendamiseks ilma eraldi demonite käivitamiseta kasutab Noise_IK mehhanismi Noise Protocol Frameworkist, mis on sarnane SSH-s autoriseeritud võtmete haldamisega. Andmete edastamine toimub UDP-pakettidesse kapseldamise kaudu. Toetatakse vahetust IP-aadressid VPN-serverid (roaming) katkestusteta ühendusega ja automaatse kliendi ümberseadistamisega.
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
