Ny fampiharana VPN vaovao, WireGuard, dia nampiana tao amin'ny codebase 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.

Avelao izahay hampahatsiahy anao fa ny VPN WireGuard dia ampiharina amin'ny alΓ lan'ny fomba fanafenana maoderina, manome fampisehoana avo lenta, mora ampiasaina, tsy misy fahasarotana ary efa nanaporofo ny tenany tamin'ny fametrahana lehibe maromaro izay mandrindra ny fifamoivoizana be dia be. Efa hatramin'ny taona 2015 no nivoatra ny tetikasa, ary nandalo fizahana sy fanamarinana ofisialy ny fomba fanafenana ampiasaina. Ny WireGuard dia mampiasa ny foto-kevitry ny fanalahidin'ny fanalahidin'ny encryption, izay misy ny fametahana fanalahidy manokana amin'ny fifandraisana amin'ny tambajotra tsirairay ary mampiasa azy io hamatotra ny fanalahidin'ny daholobe.

Ny fanalahidin'ny daholobe dia mifanakalo mba hametrahana fifandraisana mitovy amin'ny SSH. Raha hifampiraharaha amin'ny fanalahidy sy hifandraisana tsy misy daemon misaraka amin'ny habaka mpampiasa, dia ampiasaina ny mekanika Noise_IK an'ny Noise Protocol Framework, mitovy amin'ny fitazonana ny key_authorized ao amin'ny SSH. Ny fandefasana data dia atao amin'ny alΓ lan'ny encapsulation ao anaty fonosana UDP. Izy io dia manohana ny fanovana ny adiresy IP an'ny mpizara VPN (roaming) nefa tsy manapaka ny fifandraisana amin'ny fanavaozana mpanjifa mandeha ho azy.

Ny encryption dia mampiasa ny cipher stream ChaCha20 sy ny algorithm authentication message poly1305 (MAC), novolavolain'i Daniel J. Bernstein, Tanja Lange ary Peter Schwabe. Ny ChaCha20 sy Poly1305 dia napetraka ho analogue haingana kokoa sy azo antoka kokoa amin'ny AES-256-CTR sy HMAC, ny fampiharana rindrambaiko izay mamela ny fanatontosana ny fotoana famonoana tsy misy fampiasana fitaovana manokana. Mba hamoronana fanalahidy miafina zaraina, ny protocole Diffie-Hellman curve elliptic dia ampiasaina amin'ny fampiharana Curve25519, natolotr'i Daniel Bernstein ihany koa. Ny algorithm BLAKE2s (RFC7693) dia ampiasaina amin'ny hashing.

Source: opennet.ru

Add a comment