FreeBSD kodu bāzei pievienota jauna VPN WireGuard ieviešana

FreeBSD avota koks ir atjaunināts ar jaunu VPN WireGuard ieviešanu, kuras pamatā ir kodola moduļa kods, ko kopīgi izstrādājušas galvenās FreeBSD un WireGuard izstrādes komandas ar Džeisona A. Donenfelda, VPN WireGuard autora un Džona H. Boldvina ieguldījumu. labi pazīstams GDB un FreeBSD izstrādātājs, kurš 2000. gadu sākumā ieviesa atbalstu SMP un NUMA FreeBSD kodolā. Pēc tam, kad draiveris ir pieņemts FreeBSD (sys/dev/wg), tā izstrāde un uzturēšana turpmāk tiks veikta 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 procesā tika veikta koda optimizācija, kas ļāva palielināt slodzes sadales efektivitāti uz daudzkodolu CPU (tika nodrošināta vienota pakešu šifrēšanas un atšifrēšanas uzdevumu piešķiršanas līdzsvarošana CPU kodoliem). Tā rezultātā pakešu apstrādes pieskaitāmās izmaksas bija tuvu Linux draivera ieviešanas izmaksām. Kods nodrošina arī iespēju izmantot ossl draiveri, lai paātrinātu šifrēšanas darbības.

Atšķirībā no iepriekšējā mēģinājuma integrēt WireGuard sistēmā FreeBSD, jaunajā implementācijā tiek izmantota standarta wg utilīta, nevis modificēta ifconfig versija, kas ļauj apvienot Linux un FreeBSD konfigurāciju. Wg utilīta, kā arī draiveris ir iekļauti FreeBSD pirmkodā, kas kļuva iespējams, mainot wg koda licenci (kods tagad ir pieejams saskaņā ar MIT un GPL licencēm). Pēdējais mēģinājums iekļaut WireGuard FreeBSD tika veikts 2020. gadā, taču beidzās ar skandālu, kā rezultātā tika noņemts jau pievienotais kods zemas kvalitātes, neuzmanīga darba ar buferiem, stubs izmantošanas čeku vietā, nepilnīgas ieviešanas dēļ. protokola pārkāpumu un GPL licences pārkāpumu.

Atgādinām, ka VPN WireGuard ir ieviests uz modernu šifrēšanas metožu bāzes, nodrošina ļoti augstu veiktspēju, ir viegli lietojams, bez sarežģījumiem un ir pierādījis sevi vairākos lielos izvietojumos, kas apstrādā lielu trafika apjomu. Projekts tiek izstrādāts kopš 2015. gada, un tam ir veikts audits un formāla izmantoto šifrēšanas metožu pārbaude. WireGuard izmanto šifrēšanas atslēgu maršrutēšanas koncepciju, kas ietver privātās atslēgas pievienošanu katram tīkla interfeisam un tās izmantošanu publisko atslēgu saistīšanai.

Publiskās atslēgas tiek apmainītas, lai izveidotu savienojumu līdzīgi kā SSH. Lai vienotos par atslēgām un izveidotu savienojumu, nepalaižot atsevišķu dēmonu lietotāja telpā, tiek izmantots Noise Protocol Framework mehānisms Noise_IK, kas ir līdzīgi autorizēto atslēgu uzturēšanai SSH. Datu pārraide tiek veikta, iekapsulējot UDP paketēs. Tā atbalsta VPN servera IP adreses maiņu (viesabonēšana), neatvienojot savienojumu 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

Pievieno komentāru