Idinagdag ang Bagong Pagpapatupad ng VPN WireGuard sa FreeBSD Codebase

Ang puno ng pinagmulan ng FreeBSD ay na-update sa isang bagong pagpapatupad ng VPN WireGuard, batay sa kernel module code na pinagsama-samang ginawa ng mga pangunahing koponan ng pagbuo ng FreeBSD at WireGuard na may mga kontribusyon mula kay Jason A. Donenfeld, may-akda ng VPN WireGuard, at John H. Baldwin ), isang kilalang developer ng GDB at FreeBSD, na nagpatupad ng suporta para sa SMP at NUMA sa FreeBSD kernel noong unang bahagi ng 2000s. Matapos matanggap ang driver sa FreeBSD (sys/dev/wg), ang pagbuo at pagpapanatili nito ay isasagawa sa FreeBSD repository.

Bago tinanggap ang code, ang isang buong pagsusuri ng mga pagbabago ay isinagawa sa suporta ng FreeBSD Foundation, kung saan ang pakikipag-ugnayan ng driver sa iba pang mga kernel subsystem ay nasuri din at ang posibilidad ng paggamit ng cryptographic primitives na ibinigay ng kernel ay tinasa.

Upang magamit ang mga cryptographic algorithm na kinakailangan ng driver, ang API ng FreeBSD kernel crypto-subsystem ay pinalawig, kung saan idinagdag ang isang harness na nagpapahintulot sa paggamit ng mga algorithm na hindi suportado sa FreeBSD sa pamamagitan ng karaniwang crypto-API, gamit ang pagpapatupad ng kinakailangang mga algorithm mula sa libsodium library. Sa mga algorithm na nakapaloob sa driver, tanging ang code para sa pagkalkula ng Blake2 hash ang natitira, dahil ang pagpapatupad ng algorithm na ito na ibinigay sa FreeBSD ay nakatali sa isang nakapirming laki ng hash.

Bilang karagdagan, sa panahon ng proseso ng pagsusuri, isinagawa ang pag-optimize ng code, na naging posible upang madagdagan ang kahusayan ng pamamahagi ng pag-load sa mga multi-core na CPU (natiyak ang pare-parehong pagbabalanse ng pagtatalaga ng packet encryption at decryption na mga gawain sa mga core ng CPU). Bilang resulta, ang overhead kapag nagpoproseso ng mga packet ay malapit sa pagpapatupad ng driver ng Linux. Nagbibigay din ang code ng kakayahang gamitin ang driver ng ossl upang mapabilis ang mga operasyon ng pag-encrypt.

Hindi tulad ng nakaraang pagtatangka na isama ang WireGuard sa FreeBSD, ang bagong pagpapatupad ay gumagamit ng karaniwang wg utility, sa halip na isang binagong bersyon ng ifconfig, na ginagawang posible na pag-isahin ang configuration sa Linux at FreeBSD. Ang wg utility, pati na rin ang driver, ay kasama sa source code ng FreeBSD, na naging posible sa pamamagitan ng pagpapalit ng lisensya para sa wg code (ang code ay magagamit na ngayon sa ilalim ng mga lisensya ng MIT at GPL). Ang huling pagtatangka na isama ang WireGuard sa FreeBSD ay ginawa noong 2020, ngunit natapos sa isang iskandalo, bilang isang resulta kung saan ang naidagdag na code ay tinanggal dahil sa mababang kalidad, walang ingat na pagtatrabaho sa mga buffer, ang paggamit ng mga stub sa halip na mga tseke, hindi kumpletong pagpapatupad ng protocol at paglabag sa lisensya ng GPL.

Paalalahanan ka namin na ang VPN WireGuard ay ipinatupad batay sa mga modernong pamamaraan ng pag-encrypt, nagbibigay ng napakataas na pagganap, madaling gamitin, walang komplikasyon at napatunayan na ang sarili sa maraming malalaking deployment na nagpoproseso ng malalaking volume ng trapiko. Ang proyekto ay nabuo mula noong 2015, at sumailalim sa isang pag-audit at pormal na pag-verify ng mga pamamaraan ng pag-encrypt na ginamit. Ginagamit ng WireGuard ang konsepto ng encryption key routing, na kinabibilangan ng pag-attach ng pribadong key sa bawat network interface at paggamit nito upang itali ang mga pampublikong key.

Ang mga pampublikong susi ay ipinagpapalit upang magtatag ng koneksyon sa katulad na paraan sa SSH. Upang makipag-ayos ng mga susi at kumonekta nang hindi nagpapatakbo ng hiwalay na daemon sa espasyo ng gumagamit, ginagamit ang mekanismo ng Noise_IK ng Noise Protocol Framework, katulad ng pagpapanatili ng mga authorized_key sa SSH. Ang paghahatid ng data ay isinasagawa sa pamamagitan ng encapsulation sa mga UDP packet. Sinusuportahan nito ang pagbabago ng IP address ng VPN server (roaming) nang hindi dinidiskonekta ang koneksyon sa awtomatikong muling pagsasaayos ng kliyente.

Ginagamit ng pag-encrypt ang ChaCha20 stream cipher at ang Poly1305 message authentication algorithm (MAC), na binuo ni Daniel J. Bernstein, Tanja Lange at Peter Schwabe. Ang ChaCha20 at Poly1305 ay nakaposisyon bilang mas mabilis at mas ligtas na mga analogue ng AES-256-CTR at HMAC, ang pagpapatupad ng software na nagbibigay-daan sa pagkamit ng isang nakapirming oras ng pagpapatupad nang hindi gumagamit ng espesyal na suporta sa hardware. Upang makabuo ng isang nakabahaging sikretong key, ang elliptic curve na Diffie-Hellman protocol ay ginagamit sa pagpapatupad ng Curve25519, na iminungkahi din ni Daniel Bernstein. Ang BLAKE2s algorithm (RFC7693) ay ginagamit para sa pag-hash.

Pinagmulan: opennet.ru

Magdagdag ng komento