Π Π΄Π΅ΡΠ΅Π²ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ² 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