Zergatik ez zenuke WireGuard erabili behar

WireGuard arreta handia hartzen ari da azkenaldian, hain zuzen ere VPNen artean izar berria da. Baina dirudien bezain ona al da? Behaketa batzuk eztabaidatu eta WireGuard-en ezarpena berrikusi nahiko nuke zergatik ez den IPsec edo OpenVPN ordezkatzeko irtenbidea azaltzeko.

Artikulu honetan, [WireGuard-en inguruan] zenbait mito gaitzetsi nahiko nituzke. Bai, denbora luzea izango da irakurtzeko, beraz, tea edo kafe bat prestatu ez baduzu, bada garaia. Eskerrak eman nahi nizkioke Peterri ere nire pentsamendu kaotikoak zuzentzeagatik.

Ez dut nire buruari WireGuard-en garatzaileak desprestigiatzea, haien ahaleginak edo ideiak gutxiestea. Beraien produktua funtzionatzen ari da, baina pertsonalki uste dut benetan denaren guztiz ezberdina dela aurkezten dela - IPsec eta OpenVPNren ordezko gisa aurkezten da, hain zuzen ere orain existitzen ez dena.

Ohar gisa, gaineratu nahi dut WireGuard-en posizionamendu horren ardura horri buruz hitz egin duten hedabideena dela, eta ez proiektua bera edo sortzaileena.

Linux nukleoari buruz ez da albiste onik izan azkenaldian. Beraz, softwareak berdindutako prozesadorearen ahultasun ikaragarriei buruz hitz egin ziguten eta Linus Torvaldsek zakarregi eta aspergarriegi hitz egin zuen horretaz, garatzailearen hizkuntza utilitarioan. Antolatzailea edo zero-mailako sareko pila bat ere ez dira oso gai argiak aldizkari satinatuentzat. Eta hemen dator WireGuard.

Paperean, oso ona dirudi: teknologia berri zirraragarria.

Baina ikus dezagun zertxobait gehiago.

WireGuard paper zuria

Artikulu hau oinarritzen da WireGuard dokumentazio ofizialaJason Donenfeld-ek idatzia. Bertan [WireGuard]-en kontzeptua, helburua eta ezarpen teknikoa azaltzen ditu Linux nukleoan.

Lehenengo esaldia honela dio:

WireGuard […] IPsec ordezkatu nahi du erabilera-kasu gehienetan eta beste erabiltzaile-espazio ezagunetan eta/edo TLS oinarritutako soluzioetan, hala nola OpenVPN, seguruagoa, eraginkorragoa eta erabiltzeko errazagoa den bitartean [tresna].

Jakina, teknologia berri guztien abantaila nagusia beraiena da arintzeko [aurrekoekin alderatuta]. Baina VPN batek ere izan beharko luke eraginkorra eta segurua.

Orduan, zer da hurrengoa?

Hau ez dela behar duzuna esaten baduzu [VPN batetik], hemen amaitu dezakezu irakurketa. Hala ere, ohartuko naiz horrelako zereginak beste edozein tunel-teknologietarako ezartzen direla.

Aurreko aiputik interesgarriena "kasu gehienetan" hitzetan datza, eta, noski, prentsak ez zuen aintzat hartu. Eta, beraz, zabarkeria horrek sortutako kaosaren ondorioz iritsi ginen tokian gaude –artikulu honetan–.

Zergatik ez zenuke WireGuard erabili behar

WireGuard-ek ordezkatuko al du nire [IPsec] gunez gune VPN?

Ez. Ez dago aukerarik Cisco, Juniper eta beste saltzaile handiek beren produktuetarako WireGuard erosteko. Mugimenduan ez dira "pasatzen diren trenetara salto egiten" horretarako behar handia izan ezean. Geroago, ziurrenik WireGuard produktuak ontziratu ezin izango dituzten arrazoi batzuk aztertuko ditut nahi izan arren.

WireGuard-ek nire RoadWarrior eramango al du nire ordenagailu eramangarritik datu-zentrora?

Ez. Oraintxe bertan, WireGuard-ek ez du funtzio garrantzitsu handirik inplementatuta horrelako zerbait egin ahal izateko. Adibidez, ezin ditu IP helbide dinamikoak erabili tunelaren zerbitzariaren aldean, eta honek bakarrik hausten du produktuaren erabilera horren eszenatoki osoa.

IPFire Interneteko lotura merkeetarako erabiltzen da askotan, hala nola DSL edo kable konexioetarako. Horrek zentzua du zuntz azkarra behar ez duten enpresa txiki edo ertainentzat. [Itzultzailearen oharra: ez ahaztu komunikazioari dagokionez, Errusia eta CISeko herrialde batzuk Europaren eta Estatu Batuen aldean oso aurretik daudela, gure sareak eraikitzen askoz beranduago hasi ginelako eta Ethernet eta zuntz optikoko sareen agerpenarekin. estandarra, errazagoa izan zitzaigun berreraikitzea. EBko edo AEBko herrialde berdinetan, xDSL banda zabaleko sarbidea 3-5 Mbps-ko abiaduran ohikoa da oraindik, eta zuntz optikoko konexio batek diru ez-errealista kostatzen du gure estandarren arabera. Hori dela eta, artikuluaren egileak DSL edo kable bidezko konexioaz hitz egiten du arau gisa, eta ez antzinako garaiaz.] Hala ere, DSL, kablea, LTE (eta haririk gabeko beste sarbide-metodo batzuk) IP helbide dinamikoak dituzte. Noski, batzuetan ez dira askotan aldatzen, baina aldatu egiten dira.

Deitzen den azpiproiektu bat dago "wg-dinamikoa", erabiltzaile-espazio daemon bat gehitzen duena gabezia hori gainditzeko. Goian azaldutako erabiltzailearen eszenatokiaren arazo handi bat IPv6 helbide dinamikoaren areagotzea da.

Banatzailearen ikuspuntutik, horrek guztiak ere ez du oso itxura ona. Diseinuaren helburuetako bat protokoloa sinple eta garbi mantentzea zen.

Zoritxarrez, hori guztia sinpleegia eta primitiboegia bihurtu da, beraz, software osagarria erabili behar dugu diseinu hau guztia benetako erabileran bideragarria izan dadin.

Hain erraza da WireGuard erabiltzeko?

Oraindik ez. Ez dut esaten WireGuard ez dela inoiz alternatiba ona izango bi punturen artean tunelak egiteko, baina oraingoz izan behar duen produktuaren alfa bertsioa besterik ez da.

Baina orduan zer egiten du benetan? Hain zailagoa da IPsec mantentzea?

Argi dago ezetz. IPsec saltzaileak hau pentsatu du eta bere produktua interfaze batekin batera bidaltzen du, adibidez IPFirerekin.

IPsec bidez VPN tunel bat konfiguratzeko, konfigurazioan sartu beharko dituzun bost datu multzo beharko dituzu: zure IP helbide publikoa, hartzailearen IP helbide publikoa, publiko egin nahi dituzun azpisareak. VPN konexio hau eta aurrez partekatutako gakoa. Horrela, VPN minutu gutxitan konfiguratzen da eta edozein saltzailerekin bateragarria da.

Zoritxarrez, istorio honetan salbuespen batzuk daude. IPsec bidez OpenBSD makina batera tunelatzen saiatu denak badaki zertaz ari naizen. Adibide mingarri pare bat gehiago daude, baina, egia esan, IPsec erabiltzeko hainbat eta hainbat praktika on gehiago daude.

Protokoloaren konplexutasunari buruz

Azken erabiltzaileak ez du protokoloaren konplexutasunaz kezkatu behar.

Hau erabiltzailearen benetako kezka zen mundu batean biziko bagina, orduan kenduko genituzke SIP, H.323, FTP eta NATekin ondo funtzionatzen ez duten duela hamar urte baino gehiago sortutako beste protokoloak.

Badira IPsec WireGuard baino konplexuagoa izateko arrazoiak: askoz gauza gehiago egiten ditu. Adibidez, erabiltzaileen autentifikazioa saio-hasiera/pasahitza edo EAP-rekin SIM txartela erabiliz. Berriak gehitzeko gaitasun hedatua du primitibo kriptografikoak.

Eta WireGuard-ek ez du hori.

Eta horrek esan nahi du WireGuard uneren batean hautsi egingo dela, primitibo kriptografikoetako bat ahuldu edo erabat arriskuan egongo delako. Dokumentazio teknikoaren egileak hau dio:

Aipatzekoa da WireGuard kriptografikoki iritzia dela. Nahita ez du zifratuen eta protokoloen malgutasuna. Azpiko primitiboetan zulo larriak aurkitzen badira, amaiera-puntu guztiak eguneratu beharko dira. SLL/TLS ahultasunen etengabeko korrontean ikus dezakezunez, enkriptaren malgutasuna izugarri handitu da orain.

Azken esaldia guztiz zuzena da.

Zer enkriptatze erabili behar den adostasuna lortzeak IKE eta TLS bezalako protokoloak egiten ditu gehiago konplexua. Konplikatuegia? Bai, ahultasunak nahiko ohikoak dira TLS/SSL-n, eta ez dago alternatibarik.

Benetako arazoak alde batera utzita

Imajinatu mundu osoko 200 borroka bezero dituen VPN zerbitzari bat duzula. Hau erabilera-kasu nahiko estandarra da. Enkriptatzea aldatu behar baduzu, eguneratzea eraman behar duzu WireGuard-en kopia guztietara eramangarri, telefono mugikor eta abar hauetan. Aldi berean entregatu. Literalki ezinezkoa da. Hori egiten saiatzen diren administratzaileek hilabeteak beharko dituzte beharrezko konfigurazioak zabaltzeko, eta, literalki, enpresa ertain batek urte batzuk beharko ditu horrelako gertaera bat ateratzeko.

IPsec eta OpenVPN-k zifra-negoziazio funtzioa eskaintzen dute. Hori dela eta, enkriptazio berria aktibatu ondoren, zaharrak ere funtzionatuko du. Horri esker, egungo bezeroek bertsio berrira eguneratu ahal izango dute. Eguneraketa zabaldu ondoren, enkriptatzea zaurgarria desaktibatu besterik ez duzu. Eta kitto! Prest! ederra zara! Bezeroek ez dute konturatu ere egingo.

Hau oso ohikoa da inplementazio handietarako, eta OpenVPN-k ere zailtasun batzuk ditu honekin. Atzerako bateragarritasuna garrantzitsua da, eta enkriptazio ahulagoa erabiltzen baduzu ere, askorentzat hau ez da negozio bat ixteko arrazoia. Ehunka bezeroren lana geldiaraziko duelako euren lana egiteko ezintasunagatik.

WireGuard taldeak bere protokoloa sinpleagoa egin du, baina guztiz erabilgaitza euren tunelean bi kideen gain etengabeko kontrola ez duten pertsonentzat. Nire esperientziaren arabera, hau da eszenatokirik ohikoena.

Zergatik ez zenuke WireGuard erabili behar

Kriptografia!

Baina zer da WireGuard-ek erabiltzen duen enkriptazio berri interesgarri hau?

WireGuard-ek Curve25519 erabiltzen ditu gakoak trukatzeko, ChaCha20 enkriptatzeko eta Poly1305 datuak autentifikatzeko. SipHash-ekin ere funtzionatzen du hash gakoetarako eta BLAKE2 hasherako.

ChaCha20-Poly1305 IPsec eta OpenVPNrako estandarizatuta dago (TLS baino gehiago).

Bistakoa da Daniel Bernsteinen garapena sarri erabiltzen dela. BLAKE2 BLAKEren oinordekoa da, SHA-3 finalista bat, SHA-2-rekin duen antzekotasunagatik irabazi ez zuena. SHA-2 hautsiko balitz, BLAKE ere arriskuan jartzeko aukera ona zegoen.

IPsec eta OpenVPN-k ez dute SipHash behar beren diseinuagatik. Beraz, gaur egun haiekin erabili ezin den gauza bakarra BLAKE2 da, eta hori normalizatu arte bakarrik da. Hau ez da eragozpen handi bat, VPNek HMAC erabiltzen baitute osotasuna sortzeko, MD5-rekin batera ere irtenbide sendotzat hartzen dena.

Beraz, VPN guztietan tresna kriptografikoen multzo bera erabiltzen dela ondorioztatu nuen. Hori dela eta, WireGuard ez da egungo beste edozein produktu baino seguruago edo gutxiago enkriptatzeari edo transmititutako datuen osotasunari dagokionez.

Baina hori ere ez da garrantzitsuena, proiektuaren dokumentazio ofizialaren arabera arreta jartzea merezi duena. Azken finean, gauza nagusia abiadura da.

WireGuard beste VPN irtenbide batzuk baino azkarragoa al da?

Laburbilduz: ez, ez azkarrago.

ChaCha20 softwarean errazagoa den korronte zifratua da. Bit bat enkriptatzen du. AES bezalako bloke-protokoloek bloke bat 128 bit enkriptatzen dute aldi berean. Askoz transistore gehiago behar dira hardwarearen euskarria ezartzeko, beraz, prozesadore handiagoak AES-NI-rekin datoz, enkriptazio-prozesuko zenbait zeregin egiten dituen argibide multzoa azkartzeko.

Espero zen AES-NI ez zela inoiz telefono mugikorretan sartuko [baina hala egin zuen β€” gutxi gorabehera. per.]. Horretarako, ChaCha20 bateria aurrezteko alternatiba arin gisa garatu zen. Hori dela eta, gaur eros ditzakezun smartphone bakoitzak AES azelerazio moduko bat duela eta azkarrago eta energia-kontsumo txikiagoarekin funtzionatzen duela enkriptatze honekin ChaCha20-rekin baino berri bat izan daiteke.

Jakina, azken bi urteetan erositako mahaigaineko/zerbitzariko prozesadore guztiek AES-NI dute.

Hori dela eta, espero dut AESek ChaCha20 gainditzea eszenatoki guztietan. WireGuard-en dokumentazio ofizialak aipatzen du AVX512-rekin ChaCha20-Poly1305-ek AES-NI gaindituko duela, baina instrukzio-multzoaren luzapen hau PUZ handiagoetan bakarrik egongo da eskuragarri, eta horrek berriro ez du lagunduko hardware txikiago eta mugikorrarekin, beti azkarragoa izango da AESekin. - N.I.

Ez nago ziur WireGuard-en garapenean hau aurreikusi zitekeen, baina gaur egun enkriptazioan bakarrik iltzatuta egotea dagoeneko bere funtzionamenduan oso ondo eraginik ez duen eragozpen bat da.

IPsec-ek zure kasurako enkriptatze egokiena aukeratzeko aukera ematen dizu. Eta, noski, beharrezkoa da, adibidez, VPN konexio baten bidez 10 gigabyte edo gehiago datu transferitu nahi badituzu.

Integrazio arazoak Linux-en

WireGuard-ek zifratze-protokolo moderno bat aukeratu badu ere, honek arazo asko eragiten ditu dagoeneko. Eta, beraz, nukleoak kaxatik onartzen duena erabili beharrean, WireGuard-en integrazioa urte luzez atzeratu da Linux-en primitibo hauen faltagatik.

Ez nago guztiz ziur zein den beste sistema eragileetan egoera, baina ziurrenik ez da Linux-en baino askoz desberdina.

Nolakoa da errealitatea?

Zoritxarrez, bezero batek VPN konexio bat konfiguratzeko eskatzen didan bakoitzean, kredentzial zaharkituak eta enkriptatzea erabiltzen ari direla ikusten dut. 3DES MD5-rekin batera praktika arrunta da oraindik, AES-256 eta SHA1 bezala. Eta azken hau apur bat hobea den arren, hau ez da 2020an erabili behar den zerbait.

Giltzak trukatzeko beti RSA erabiltzen da - tresna motela baina nahiko segurua.

Nire bezeroak aduana-agintariekin eta gobernuko beste erakunde eta erakunde batzuekin lotuta daude, baita mundu osoan ezagunak diren korporazio handiekin ere. Duela hamarkada batzuk sortu zen eskaera-inprimakia erabiltzen dute guztiek, eta SHA-512 erabiltzeko gaitasuna ez zen inoiz gehitu. Ezin dut esan nolabait argi eta garbi aurrerapen teknologikoan eragiten duenik, baina, jakina, prozesu korporatiboa moteltzen du.

Mina ematen dit hau ikusteak IPsec-ek 2005etik aurrera kurba eliptikoak onartzen dituelako. Curve25519 ere berriagoa da eta erabilgarri dago. Camellia eta ChaCha20 bezalako AESen alternatibak ere badaude, baina jakina denak ez dituzte Cisco eta beste batzuek bezalako saltzaile nagusiek onartzen.

Eta jendeak aprobetxatzen du. Cisco kit asko daude, Ciscorekin lan egiteko diseinatutako kit asko daude. Segmentu honetan merkatuko liderrak dira eta ez dute inolako berrikuntzarik oso interesatzen.

Bai, egoera [enpresa-segmentuan] izugarria da, baina ez dugu aldaketarik ikusiko WireGuard dela eta. Seguruenik, saltzaileek ez dute inoiz erabiltzen ari diren tresnekin eta enkriptazioarekin errendimendu-arazorik ikusiko, ez dute arazorik ikusiko IKEv2-rekin eta, beraz, ez dute alternatibarik bilatzen.

Oro har, inoiz pentsatu al duzu Cisco uztea?

Erreferentziak

Eta orain joan gaitezen WireGuard dokumentazioko erreferentzietara. [Dokumentazio hau] artikulu zientifiko bat ez den arren, garatzaileek ikuspegi zientifikoagoa hartzea espero nuen, edo ikuspegi zientifiko bat erreferentzia gisa erabiltzea. Edozein erreferentziak ez du ezertarako balio erreproduzitu ezin badira, eta are alferrikakoa laborategian lortzen direnean.

WireGuard-en Linux eraikuntzan, GSO - Generic Segmentation Offloading erabiltzea aprobetxatzen du. Berari esker, bezeroak 64 kilobyteko pakete erraldoi bat sortzen du eta zifratu/deszifratzen du. Horrela, eragiketa kriptografikoak deitzeko eta ezartzeko kostua murrizten da. Zure VPN konexioaren errendimendua maximizatu nahi baduzu, hau ideia ona da.

Baina, ohi bezala, errealitatea ez da hain erraza. Hain pakete handi bat sare-egokitzaile batera bidaltzeak pakete txikiago askotan moztu behar du. Bidalketa-tamaina normala 1500 byte da. Hau da, 64 kilobyteko gure erraldoia 45 paketetan banatuko da (1240 byte informazioa eta 20 byte IP goiburukoa). Gero, denbora batez, sare-egokigailuaren lana guztiz blokeatuko dute, elkarrekin eta aldi berean bidali behar direlako. Ondorioz, horrek lehentasunezko jauzia ekarriko du, eta VoIP bezalako paketeak, adibidez, ilaran jarriko dira.

Horrela, WireGuard-ek hain ausardiaz aldarrikatzen duen errendimendu handia beste aplikazioen sareko sareak moteltzearen truke lortzen da. Eta WireGuard taldea dagoeneko dago baieztatu hau da nire ondorioa.

Baina goazen aurrera.

Dokumentazio teknikoko erreferentzien arabera, konexioak 1011 Mbps-ko abiadura erakusten du.

Ikusgarria.

Hau bereziki ikusgarria da Gigabit Ethernet konexio bakar baten gehienezko errendimendu teorikoa 966 Mbps-koa delako, 1500 byte ken 20 byte IP goiburuarentzat, 8 byte UDP goiburuarentzat eta 16 byte goiburuarentzat. WireGuard bera . Kapsulatutako paketean IP goiburu bat gehiago dago eta beste bat TCPn 20 byteko. Beraz, nondik dator banda zabalera gehigarri hori?

Goian aipatu ditugun fotograma handiekin eta GSOren abantailekin, 9000 byte-ko fotograma-tamainaren gehienezko teorikoa 1014 Mbps izango litzateke. Normalean errendimendu hori lortu ezina da errealitatean, zailtasun handiekin lotzen baita. Beraz, proba 64 kilobyte-ko tamaina handiko fotograma are lodiagoak erabiliz egin dela pentsa dezaket 1023 Mbps-ko gehienezko teorikoarekin, sare-egokitzaile batzuek soilik onartzen dutena. Baina hori guztiz ez da aplikagarria baldintza errealetan, edo zuzenean konektatutako bi estazioren artean soilik erabil daiteke, proba-bankuaren barruan soilik.

Baina VPN tunela bi ostalariren artean birbidaltzen denez, batere jumbo fotograma onartzen ez duen Interneteko konexioa erabiliz, ezin da erreferente gisa hartu bankuan lortutako emaitza. Hau laborategiko lorpen errealista bat besterik ez da, ezinezkoa eta aplikaezina den borroka-baldintza errealetan.

Datu-zentroan eserita ere, ezin izan ditut transferitu 9000 byte baino gehiagoko fotogramak.

Bizitza errealean aplikatzeko irizpidea erabat urratzen da eta, nire ustez, egindako "neurketaren" egileak serioski desprestigiatu zuen bere burua ageriko arrazoiengatik.

Zergatik ez zenuke WireGuard erabili behar

Azken itxaropen aztarna

WireGuard webguneak ontziei buruz asko hitz egiten du eta argi geratzen da zertarako den benetan.

VPN sinple eta azkarra, konfiguraziorik behar ez duena eta Amazonek hodeian dituen orkestrazio tresna masiboekin zabaldu eta konfigura daitekeena. Zehazki, Amazonek lehen aipatu ditudan azken hardware funtzioak erabiltzen ditu, hala nola AVX512. Hau lana bizkortzeko eta x86 edo beste edozein arkitekturari lotuta ez egoteko egiten da.

Errendimendua eta 9000 byte baino handiagoak diren paketeak optimizatzen dituzte: kapsulatutako fotograma erraldoiak izango dira edukiontziak elkarren artean komunikatzeko, edo babeskopia eragiketetarako, argazkiak sortzeko edo edukiontzi horiek berak zabaltzeko. IP helbide dinamikoek ere ez dute WireGuard-en funtzionamenduan inola ere eragingo deskribatu dudan eszenatokiaren kasuan.

Ondo jokatua. Inplementazio bikaina eta oso mehea, ia erreferentziazko protokoloa.

Baina ez da guztiz kontrolatzen duzun datu-zentro batetik kanpoko mundu batean sartzen. Arriskua hartu eta WireGuard erabiltzen hasten bazara, etengabeko konpromisoak hartu beharko dituzu zifratze-protokoloaren diseinuan eta ezarpenean.

Irteera

Niretzat erraza da WireGuard oraindik prest ez dagoela ondorioztatzea.

Lehendik zeuden konponbideen arazo batzuen konponbide arin eta azkar gisa pentsatu zen. Zoritxarrez, irtenbide hauen mesedetan, erabiltzaile gehienentzat garrantzitsuak izango diren ezaugarri asko sakrifikatu zituen. Horregatik ezin du IPsec edo OpenVPN ordezkatu.

WireGuard lehiakorra izan dadin, gutxienez IP helbide ezarpen bat eta bideratze eta DNS konfigurazio bat gehitu behar ditu. Jakina, horretarako dira enkriptatutako kanalak.

Segurtasuna da nire lehentasun nagusia, eta oraintxe bertan ez daukat arrazoirik IKE edo TLS nolabait arriskuan edo hautsita dagoela sinesteko. Bietan enkriptatze modernoa onartzen da, eta hamarkadetako funtzionamenduarekin frogatu dute. Zerbait berriagoa izateak ez du esan nahi hobea denik.

Elkarreragingarritasuna oso garrantzitsua da zuk kontrolatzen ez dituzun geltokiak hirugarrenekin komunikatzen zarenean. IPsec de facto estandarra da eta ia nonahi onartzen da. Eta lan egiten du. Eta ez du axola nola itxura duen, teorian, WireGuard etorkizunean agian ez da bateragarria izango bere bertsio ezberdinekin ere.

Edozein babes kriptografiko apurtzen da lehenago edo beranduago eta, horren arabera, ordezkatu edo eguneratu behar da.

Gertaera hauek guztiak ukatzea eta itsu-itsuan WireGuard erabili nahi izatea zure iPhonea etxeko lan-estaziora konektatzeko, burua hondarrean sartzeko klase magistral bat besterik ez da.

Iturria: www.habr.com

Gehitu iruzkin berria