He whakatinanatanga VPN hou, WireGuard, kua taapirihia ki te turanga waehere FreeBSD.

Π’ Π΄Π΅Ρ€Π΅Π²ΠΎ исходных тСкстов FreeBSD приняты измСнСния с Π½ΠΎΠ²ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ VPN WireGuard, основанной Π½Π° ΠΊΠΎΠ΄Π΅ модуля ядра, совмСстно ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ основными ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² FreeBSD ΠΈ WireGuard ΠΏΡ€ΠΈ участии ДТСйсона Π”ΠΎΠ½Π΅Π½Ρ„ΠΈΠ»Π΄Π° (Jason A. Donenfeld), Π°Π²Ρ‚ΠΎΡ€Π° VPN WireGuard, ΠΈ Π”ΠΆΠΎΠ½Π° Π‘ΠΎΠ»Π΄ΡƒΠΈΠ½Π° (John H. Baldwin), извСстного Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° GDB ΠΈ FreeBSD, Π² Π½Π°Ρ‡Π°Π»Π΅ 2000-Ρ… Π³ΠΎΠ΄ΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π²ΡˆΠ΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ SMP ΠΈ NUMA Π² ядрС FreeBSD. ПослС принятия Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π² состав FreeBSD (sys/dev/wg), Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ сопровоТдСниС ΠΎΡ‚Π½Ρ‹Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅ΡΡ‚ΠΈΡΡŒ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ FreeBSD.

ΠŸΠ΅Ρ€Π΅Π΄ принятиСм ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ FreeBSD Foundation Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ Ρ€Π΅Ρ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π² Ρ…ΠΎΠ΄Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ взаимодСйствиС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ подсистСмами ядра ΠΈ ΠΎΡ†Π΅Π½Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ задСйствования прСдоставляСмых ядром криптографичСских ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ².

Для использования Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρƒ криптографичСских Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ API криптоподсистСмы ядра FreeBSD, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° обвязка, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· стандартный ΠΊΡ€ΠΈΠΏΡ‚ΠΎ-API Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π²ΠΎ FreeBSD Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libsodium. Из Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², встроСнных Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ оставлСн лишь ΠΊΠΎΠ΄ для вычислСния Ρ…ΡΡˆΠ΅ΠΉ Blake2, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ прСдоставляСмая Π²ΠΎ FreeBSD рСализация Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° завязана Π½Π° фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ…ΡΡˆΠ°.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² процСссС рСцСнзирования Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация ΠΊΠΎΠ΄Π°, позволившая ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ распрСдСлСния Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° многоядСрных CPU (обСспСчСна равномСрная балансировка привязки Π·Π°Π΄Π°Ρ‡ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΊ ядрам CPU). Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Ρ‹ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° для Linux. Π’ ΠΊΠΎΠ΄Π΅ Ρ‚Π°ΠΊΠΆΠ΅ обСспСчСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ossl для ускорСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ WireGuard Π²ΠΎ FreeBSD Π² Π½ΠΎΠ²ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ задСйствована ΡˆΡ‚Π°Ρ‚Π½Π°Ρ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° wg, Π° Π½Π΅ модифицированная вСрсия ifconfig, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ настройку Π² Linux ΠΈ FreeBSD. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° wg ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² состав исходных тСкстов FreeBSD, Ρ‡Ρ‚ΠΎ стало Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря измСнСнию Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ Π½Π° ΠΊΠΎΠ΄ wg (ΠΊΠΎΠ΄ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ доступСн ΠΏΠΎΠ΄ лицСнзиями MIT ΠΈ GPL). ΠŸΡ€ΠΎΡˆΠ»Π°Ρ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ WireGuard Π² состав FreeBSD Π±Ρ‹Π»Π° прСдпринята Π² 2020 Π³ΠΎΠ΄Ρƒ, Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»Π°ΡΡŒ скандалом, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π±Ρ‹Π» ΡƒΠ΄Π°Π»Ρ‘Π½ ΠΈΠ·-Π·Π° Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ качСства, Π±Π΅Π·Π°Π»Π°Π±Π΅Ρ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΡƒΡ„Π΅Ρ€Π°ΠΌΠΈ, использования Π·Π°Π³Π»ΡƒΡˆΠ΅ΠΊ вмСсто ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ, Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΈ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ GPL.

Kia maumahara matou ki a koe ko te VPN WireGuard kua whakatinanahia i runga i nga tikanga whakamunatanga hou, e whakarato ana i nga mahi tino tiketike, he ngawari ki te whakamahi, kaore he raruraru me te whakamatau i a ia ano i roto i te maha o nga waahanga nui e whakahaere ana i nga pukapuka nui o te hokohoko. Kua whanakehia te kaupapa mai i te tau 2015, a kua tukuna he arotake me te whakamana okawa o nga tikanga whakamunatanga i whakamahia. Ka whakamahi a WireGuard i te ariā o te ararere matua whakamunatanga, e uru ana ki te whakapiri i tetahi kii motuhake ki ia atanga whatunga me te whakamahi hei here i nga kii a te iwi.

Ka whakawhitihia nga taviri a te iwi ki te whakarite hononga kia rite ki te SSH. Hei whiriwhiri i nga taviri me te hono me te kore e whakahaere i tetahi daemon motuhake ki te waahi kaiwhakamahi, ka whakamahia te tikanga Noise_IK a te Anga Kawa Noise, he rite ki te pupuri i nga mana_mau i roto i te SSH. Ko te tuku raraunga ka mahia ma te whakauru i roto i nga paatete UDP. E tautoko ana i te huri i te wahitau IP o te tΕ«mau VPN (roopu) me te kore e momotu te hononga ki te whirihora aunoa a te kiritaki.

Ka whakamahia e te whakamunatanga te ChaCha20 stream cipher me te Poly1305 message authentication algorithm (MAC), i hangaia e Daniel J. Bernstein, Tanja Lange me Peter Schwabe. Ko te ChaCha20 me te Poly1305 he tere ake, he haumaru ake hoki mo te AES-256-CTR me te HMAC, ko te whakatinanatanga o te rorohiko ka taea te whakatutuki i te waa mahi me te kore e whakamahi i te tautoko taputapu motuhake. Hei whakaputa i tetahi kΔ« ngaro tiritahi, ka whakamahia te kawa elliptic Diffie-Hellman i roto i te whakatinanatanga Curve25519, na Daniel Bernstein hoki i tono. Ka whakamahia te BLAKE2s algorithm (RFC7693) mo te hashing.

Source: opennet.ru

Tāpiri i te kōrero