FreeBSD pirmkoda koks ir atjaunināts ar jaunu VPN ieviešanu. WireGuard, pamatojoties uz kodola moduļa kodu, ko kopīgi sagatavojušas FreeBSD galvenās izstrādes komandas un WireGuard piedaloties Džeisonam A. Donenfeldam, grāmatas “VPN” autoram WireGuard, un Džons H. Boldvins, atzīts GDB un FreeBSD izstrādātājs, kurš 2000. gadu sākumā ieviesa SMP un NUMA atbalstu FreeBSD kodolā. Pēc tam, kad draiveris būs pieņemts FreeBSD (sys/dev/wg), tā izstrāde un uzturēšana tagad notiks FreeBSD repozitorijā.
Pirms koda pieņemšanas ar FreeBSD Foundation atbalstu tika veikts pilns izmaiņu apskats, kura laikā tika analizēta arī draivera mijiedarbība ar pārējām kodola apakšsistēmām un iespēja izmantot kodola nodrošinātās kriptogrāfiskās primitīvas. tika novērtēts.
Lai izmantotu draiverim nepieciešamos kriptogrāfiskos algoritmus, tika paplašināta FreeBSD kodola kriptogrāfijas apakšsistēmas API, kurai pievienota instalācija, kas ļauj izmantot FreeBSD neatbalstītus algoritmus caur standarta kriptogrāfijas API, izmantojot nepieciešamie algoritmi no libsodium bibliotēkas. No draiverā iebūvētajiem algoritmiem ir palicis tikai kods Blake2 jaucējvārdu aprēķināšanai, jo šī FreeBSD piedāvātā algoritma ieviešana ir saistīta ar fiksētu jaucējvārdu lielumu.
Turklāt pārskatīšanas procesa laikā tika veiktas koda optimizācijas, lai uzlabotu slodzes sadales efektivitāti vairāku kodolu procesoros (nodrošinot vienmērīgu pakešu šifrēšanas un atšifrēšanas uzdevumu līdzsvarošanu visos procesora kodolos). Rezultātā pakešu apstrādes izmaksas tika pietuvinātas draivera ieviešanas izmaksām. LinuxKods nodrošina arī iespēju izmantot ossl draiveri, lai paātrinātu šifrēšanas darbības.
Atšķirībā no iepriekšējiem integrācijas mēģinājumiem WireGuard FreeBSD jaunajā ieviešanā tiek izmantota standarta wg utilīta, nevis modificēta ifconfig versija, kas ļāva apvienot konfigurāciju. Linux un FreeBSD. wg utilīta, tāpat kā draiveris, ir iekļauta FreeBSD pirmkodā, kas kļuva iespējams, mainot wg koda licenci (kods tagad ir pieejams saskaņā ar MIT un GPL licencēm). Iepriekšējais mēģinājums iekļaut WireGuard 2020. gadā tika veikts apvienošanas mēģinājums ar FreeBSD, taču tas beidzās ar strīdiem, jo jau pievienotais kods tika noņemts sliktas kvalitātes, sliktas bufera apstrādes, nepilnīgu pārbaužu vietā izmantotu nepilnīgu protokola ieviešanu un GPL licences pārkāpumu dēļ.
Atgādināt, ka VPN WireGuard Ieviests, izmantojot modernas šifrēšanas metodes, tas nodrošina ļoti augstu veiktspēju, ir viegli lietojams, bez sarežģījumiem un ir pierādījis sevi vairākās liela mēroga izvietošanās reizēs, apstrādājot lielu datplūsmas apjomu. Projekts tiek izstrādāts kopš 2015. gada un ir ticis pakļauts auditam un oficiālai tā šifrēšanas metožu pārbaudei. WireGuard Tiek izmantota uz atslēgām balstītas maršrutēšanas koncepcija, kas ietver privātās atslēgas piesaisti katrai tīkla saskarnei un publisko atslēgu izmantošanu saistīšanai.
Publisko atslēgu apmaiņa savienojuma izveidei ir līdzīga SSH apmaiņai. Lai vienotos par atslēgām un izveidotu savienojumu, nepalaižot atsevišķu dēmonu lietotāja telpā, tiek izmantots Noise_IK mehānisms no Noise Protocol Framework, līdzīgi kā authorized_keys uzturēšana SSH. Datu pārsūtīšana tiek veikta, izmantojot iekapsulēšanu UDP paketēs. Mainīšana ir atbalstīta. IP adreses VPN serveri (viesabonēšana) bez savienojuma pārtraukuma ar automātisku klienta pārkonfigurāciju.
Šifrēšanai tiek izmantots ChaCha20 straumes šifrs un Poly1305 ziņojumu autentifikācijas algoritms (MAC), ko izstrādājuši Daniels J. Bernsteins, Tanja Lange un Pīters Švābe. ChaCha20 un Poly1305 ir pozicionēti kā ātrāki un drošāki AES-256-CTR un HMAC analogi, kuru programmatūras ieviešana ļauj sasniegt fiksētu izpildes laiku, neizmantojot īpašu aparatūras atbalstu. Lai ģenerētu koplietotu slepeno atslēgu, Curve25519 implementācijā tiek izmantots eliptiskās līknes Difija-Helmana protokols, ko arī ierosināja Daniels Bernsteins. Jaukšanai tiek izmantots BLAKE2s algoritms (RFC7693).
Avots: opennet.ru
