Prečo by ste nemali používať WireGuard

WireGuard si v poslednej dobe získava veľkú pozornosť, v skutočnosti je to nová hviezda medzi VPN. Ale je taký dobrý, ako sa zdá? Chcel by som prediskutovať niektoré pozorovania a preskúmať implementáciu WireGuard, aby som vysvetlil, prečo nie je riešením nahradiť IPsec alebo OpenVPN.

V tomto článku by som chcel vyvrátiť niektoré mýty [o WireGuard]. Áno, čítanie bude trvať dlho, takže ak ste si ešte neuvarili šálku čaju alebo kávy, je čas to urobiť. Chcel by som sa poďakovať aj Petrovi za napravenie mojich chaotických myšlienok.

Nedávam si za cieľ zdiskreditovať vývojárov WireGuardu, znehodnotiť ich snahu či nápady. Ich produkt funguje, ale osobne si myslím, že je prezentovaný úplne inak, ako v skutočnosti je - je prezentovaný ako náhrada za IPsec a OpenVPN, ktoré v skutočnosti teraz jednoducho neexistujú.

Ako poznámku dodávam, že zodpovednosť za takéto umiestnenie WireGuardu nesú médiá, ktoré o ňom hovorili, a nie samotný projekt alebo jeho tvorcovia.

O linuxovom jadre nie je v poslednej dobe veľa dobrých správ. Dozvedeli sme sa teda o monštruóznych zraniteľnostiach procesora, ktoré vyrovnal softvér, a Linus Torvalds o tom hovoril príliš hrubo a nudne, v utilitárnom jazyku vývojára. Plánovač alebo sieťový zásobník na nulovej úrovni tiež nie sú príliš jasné témy pre lesklé časopisy. A tu prichádza WireGuard.

Na papieri to všetko znie skvele: vzrušujúca nová technológia.

Poďme sa však na to pozrieť trochu bližšie.

Biely papier WireGuard

Tento článok je založený na oficiálna dokumentácia WireGuardnapísal Jason Donenfeld. Tam vysvetľuje koncept, účel a technickú implementáciu [WireGuard] v linuxovom jadre.

Prvá veta znie:

Cieľom WireGuard […] je nahradiť IPsec vo väčšine prípadov použitia a iné populárne riešenia založené na používateľskom priestore a/alebo TLS, ako je OpenVPN, pričom je bezpečnejšie, výkonnejšie a ľahšie sa používa [nástroj].

Hlavnou výhodou všetkých nových technológií je samozrejme ich jednoduchosť [v porovnaní s predchodcami]. Ale VPN by tiež mala byť efektívne a bezpečné.

Takže, čo bude ďalej?

Ak poviete, že toto nie je to, čo potrebujete [od VPN], môžete čítanie ukončiť tu. Poznamenám však, že takéto úlohy sú stanovené pre akúkoľvek inú technológiu tunelovania.

Najzaujímavejší z vyššie uvedených citátov spočíva v slovách „vo väčšine prípadov“, ktoré, samozrejme, tlač ignorovala. A tak sme tam, kde sme skončili kvôli chaosu vzniknutému touto nedbalosťou – v tomto článku.

Prečo by ste nemali používať WireGuard

Nahradí WireGuard moju sieť VPN typu site-to-site [IPsec]?

Nie Jednoducho nie je šanca, že veľkí predajcovia ako Cisco, Juniper a ďalší si kúpia WireGuard pre svoje produkty. „Nenaskakujú do okoloidúcich vlakov“ v pohybe, pokiaľ to nie je veľmi potrebné. Neskôr prejdem niektoré z dôvodov, prečo pravdepodobne nebudú môcť dostať svoje produkty WireGuard na palubu, aj keby chceli.

Prenesie WireGuard môj RoadWarrior z môjho notebooku do dátového centra?

Nie Momentálne WireGuard nemá implementované veľké množstvo dôležitých funkcií, aby niečo také dokázal. Napríklad nemôže používať dynamické IP adresy na strane tunelového servera, a to samo osebe narúša celý scenár takéhoto použitia produktu.

IPFire sa často používa na lacné internetové spojenia, ako je DSL alebo káblové pripojenie. To dáva zmysel pre malé alebo stredné podniky, ktoré nepotrebujú rýchle vlákno. [Poznámka od prekladateľa: nezabudnite, že z hľadiska komunikácie sú Rusko a niektoré krajiny SNŠ ďaleko pred Európou a USA, pretože naše siete sme začali budovať oveľa neskôr a s príchodom ethernetových a optických sietí ako štandard, bolo pre nás jednoduchšie prestavať. V tých istých krajinách EÚ alebo USA je širokopásmový prístup xDSL rýchlosťou 3-5 Mbps stále všeobecnou normou a optické pripojenie stojí na naše pomery nereálne peniaze. Preto autor článku hovorí o DSL alebo káblovom pripojení ako o norme, a nie o staroveku.] DSL, kábel, LTE (a iné bezdrôtové prístupové metódy) však majú dynamické IP adresy. Samozrejme, niekedy sa nemenia často, ale menia sa.

Existuje podprojekt tzv "wg-dynamic", ktorý pridáva démona používateľského priestoru na prekonanie tohto nedostatku. Obrovským problémom vyššie opísaného používateľského scenára je zhoršenie dynamického adresovania IPv6.

Z pohľadu distribútora to všetko tiež nevyzerá veľmi dobre. Jedným z cieľov návrhu bolo zachovať jednoduchý a čistý protokol.

Bohužiaľ, toto všetko sa v skutočnosti stalo príliš jednoduchým a primitívnym, takže musíme použiť ďalší softvér, aby bol celý tento dizajn životaschopný v reálnom použití.

Je WireGuard také jednoduché používať?

Ešte nie. Nehovorím, že WireGuard nikdy nebude dobrou alternatívou pre tunelovanie medzi dvoma bodmi, ale zatiaľ je to len alfa verzia produktu, ktorým má byť.

Ale čo potom vlastne robí? Je IPsec skutočne oveľa ťažšie udržiavať?

Očividne nie. Dodávateľ IPsec na to myslel a dodáva svoj produkt spolu s rozhraním, ako je napríklad IPFire.

Na nastavenie VPN tunela cez IPsec budete potrebovať päť sád údajov, ktoré budete musieť zadať do konfigurácie: svoju vlastnú verejnú IP adresu, verejnú IP adresu prijímajúcej strany, podsiete, ktoré chcete zverejniť. toto pripojenie VPN a predzdieľaný kľúč. VPN je teda nastavená v priebehu niekoľkých minút a je kompatibilná s akýmkoľvek dodávateľom.

Bohužiaľ, v tomto príbehu existuje niekoľko výnimiek. Každý, kto skúšal tunelovať cez IPsec na OpenBSD stroj, vie, o čom hovorím. Existuje niekoľko bolestivých príkladov, ale v skutočnosti existuje oveľa viac osvedčených postupov na používanie protokolu IPsec.

O zložitosti protokolu

Koncový používateľ sa nemusí obávať zložitosti protokolu.

Ak by sme žili vo svete, kde by to bola skutočná starosť používateľa, potom by sme sa už dávno zbavili protokolov SIP, H.323, FTP a iných protokolov vytvorených pred viac ako desiatimi rokmi, ktoré s NAT nefungujú dobre.

Existujú dôvody, prečo je protokol IPsec zložitejší ako WireGuard: dokáže oveľa viac vecí. Napríklad autentifikácia používateľa pomocou prihlasovacieho mena / hesla alebo SIM karty s EAP. Má rozšírenú schopnosť pridávať nové kryptografické primitívy.

A to WireGuard nemá.

A to znamená, že WireGuard sa v určitom bode zlomí, pretože jedno z kryptografických primitívov sa oslabí alebo bude úplne kompromitované. Autor technickej dokumentácie hovorí toto:

Stojí za zmienku, že WireGuard je kryptograficky presvedčený. Zámerne mu chýba flexibilita šifier a protokolov. Ak sa v základných primitívoch nájdu vážne diery, bude potrebné aktualizovať všetky koncové body. Ako môžete vidieť z prebiehajúceho prúdu zraniteľností SLL/TLS, flexibilita šifrovania sa teraz výrazne zvýšila.

Posledná veta je úplne správna.

Dosiahnutie konsenzu o tom, aké šifrovanie použiť, vytvára protokoly ako IKE a TLS viac komplexné. Príliš komplikované? Áno, zraniteľnosti sú v TLS/SSL pomerne bežné a neexistuje k nim žiadna alternatíva.

O ignorovaní skutočných problémov

Predstavte si, že máte server VPN s 200 bojovými klientmi niekde po celom svete. Toto je celkom štandardný prípad použitia. Ak musíte zmeniť šifrovanie, musíte aktualizáciu doručiť do všetkých kópií WireGuard na týchto notebookoch, smartfónoch atď. Súčasne dodať. Je to doslova nemožné. Správcovia, ktorí sa o to pokúsia, budú trvať mesiace, kým nasadia požadované konfigurácie, a stredne veľkej spoločnosti bude trvať doslova roky, kým takúto udalosť zrealizuje.

IPsec a OpenVPN ponúkajú funkciu vyjednávania šifry. Preto nejaký čas, po ktorom zapnete nové šifrovanie, bude fungovať aj to staré. Súčasným zákazníkom to umožní prejsť na novú verziu. Po zavedení aktualizácie jednoducho vypnete zraniteľné šifrovanie. A to je všetko! Pripravený! si úžasný! Klienti si to ani nevšimnú.

Toto je v skutočnosti veľmi bežný prípad pre veľké nasadenia a dokonca aj OpenVPN má s tým určité problémy. Spätná kompatibilita je dôležitá a aj keď používate slabšie šifrovanie, pre mnohých to nie je dôvod na zatvorenie firmy. Pretože to ochromí prácu stoviek zákazníkov kvôli neschopnosti vykonávať svoju prácu.

Tím WireGuard urobil ich protokol jednoduchším, no úplne nepoužiteľným pre ľudí, ktorí nemajú stálu kontrolu nad oboma rovesníkmi vo svojom tuneli. Podľa mojich skúseností je to najbežnejší scenár.

Prečo by ste nemali používať WireGuard

Kryptografia!

Ale čo je to zaujímavé nové šifrovanie, ktoré používa WireGuard?

WireGuard používa Curve25519 na výmenu kľúčov, ChaCha20 na šifrovanie a Poly1305 na autentifikáciu dát. Funguje tiež so SipHash pre hash kľúče a BLAKE2 pre hash.

ChaCha20-Poly1305 je štandardizovaný pre IPsec a OpenVPN (cez TLS).

Je zrejmé, že vývoj Daniela Bernsteina je využívaný veľmi často. BLAKE2 je nástupcom BLAKE, finalistu SHA-3, ktorý nevyhral kvôli jeho podobnosti s SHA-2. Ak by sa zlomil SHA-2, bola veľká šanca, že by bol ohrozený aj BLAKE.

IPsec a OpenVPN nepotrebujú SipHash kvôli svojmu dizajnu. Takže jediná vec, ktorá sa s nimi momentálne nedá použiť, je BLAKE2, a to len dovtedy, kým nebude štandardizovaná. Toto nie je veľká nevýhoda, pretože VPN používajú HMAC na vytvorenie integrity, čo sa považuje za silné riešenie aj v spojení s MD5.

Dospel som teda k záveru, že vo všetkých VPN sa používa takmer rovnaká sada kryptografických nástrojov. Preto nie je WireGuard o nič viac alebo menej bezpečný ako ktorýkoľvek iný súčasný produkt, pokiaľ ide o šifrovanie alebo integritu prenášaných údajov.

Ale ani to nie je to najdôležitejšie, čo sa podľa oficiálnej dokumentácie projektu oplatí venovať pozornosť. Hlavná vec je predsa rýchlosť.

Je WireGuard rýchlejší ako iné riešenia VPN?

Stručne povedané: nie, nie rýchlejšie.

ChaCha20 je prúdová šifra, ktorá sa ľahšie implementuje do softvéru. Šifruje po jednom bite. Blokové protokoly ako AES šifrujú blok 128 bitov naraz. Na implementáciu hardvérovej podpory je potrebných oveľa viac tranzistorov, takže väčšie procesory sa dodávajú s AES-NI, rozšírením inštrukčnej sady, ktorá vykonáva niektoré úlohy šifrovacieho procesu, aby ho urýchlila.

Očakávalo sa, že AES-NI sa nikdy nedostane do smartfónov [ale stalo sa - cca. za.]. Na tento účel bol ChaCha20 vyvinutý ako ľahká alternatíva šetriaca batériu. Preto vám môže prísť ako novinka, že každý smartfón, ktorý si dnes môžete kúpiť, má nejakú AES akceleráciu a s týmto šifrovaním beží rýchlejšie a s nižšou spotrebou energie ako s ChaCha20.

Je zrejmé, že takmer každý desktopový/serverový procesor zakúpený za posledných pár rokov má AES-NI.

Preto očakávam, že AES prekoná ChaCha20 v každom jednom scenári. Oficiálna dokumentácia WireGuard uvádza, že s AVX512 ChaCha20-Poly1305 prekoná AES-NI, ale toto rozšírenie inštrukčnej sady bude dostupné iba na väčších CPU, čo opäť nepomôže s menším a mobilnejším hardvérom, ktorý bude s AES vždy rýchlejší. - N.I.

Nie som si istý, či sa to dalo predvídať pri vývoji WireGuard, ale dnes už skutočnosť, že je pripútaný k samotnému šifrovaniu, je nevýhodou, ktorá nemusí veľmi ovplyvniť jeho fungovanie.

IPsec vám umožňuje slobodne si vybrať, ktoré šifrovanie je pre váš prípad najlepšie. A to je samozrejme potrebné, ak napríklad chcete preniesť 10 a viac gigabajtov dát cez pripojenie VPN.

Problémy s integráciou v systéme Linux

Hoci WireGuard zvolil moderný šifrovací protokol, už to spôsobuje veľa problémov. A tak namiesto použitia toho, čo podporuje jadro hneď po vybalení, sa integrácia WireGuard roky oneskoruje kvôli nedostatku týchto primitív v Linuxe.

Nie som si úplne istý, aká je situácia na iných operačných systémoch, ale asi sa to veľmi nelíši od Linuxu.

Ako vyzerá realita?

Bohužiaľ, zakaždým, keď ma klient požiada, aby som mu nastavil pripojenie VPN, narazím na problém, že používajú zastarané poverenia a šifrovanie. 3DES v spojení s MD5 je stále bežnou praxou, rovnako ako AES-256 a SHA1. A hoci to druhé je o niečo lepšie, nie je to niečo, čo by sa malo používať v roku 2020.

Na výmenu kľúčov vždy Používa sa RSA - pomalý, ale pomerne bezpečný nástroj.

Moji klienti sú spojení s colnými úradmi a inými vládnymi organizáciami a inštitúciami, ako aj s veľkými korporáciami, ktorých mená sú známe po celom svete. Všetky používajú formulár žiadosti, ktorý bol vytvorený pred desiatkami rokov, a možnosť používať SHA-512 jednoducho nikdy nebola pridaná. Nemôžem povedať, že to nejako jednoznačne ovplyvňuje technologický pokrok, ale evidentne to spomaľuje firemný proces.

Bolí ma to vidieť, pretože IPsec podporuje eliptické krivky už od roku 2005. Curve25519 je tiež novší a dostupný na použitie. Existujú aj alternatívy k AES ako Camellia a ChaCha20, ale samozrejme nie všetky sú podporované hlavnými dodávateľmi ako Cisco a iní.

A ľudia to využívajú. Existuje veľa súprav Cisco, existuje veľa súprav navrhnutých na prácu so spoločnosťou Cisco. V tomto segmente sú lídrami na trhu a nemajú veľký záujem o žiadne inovácie.

Áno, situácia [vo firemnom segmente] je hrozná, ale kvôli WireGuard neuvidíme žiadne zmeny. Dodávatelia pravdepodobne nikdy nezaznamenajú žiadne problémy s výkonom s nástrojmi a šifrovaním, ktoré už používajú, neuvidia žiadne problémy s IKEv2, a preto nehľadajú alternatívy.

Vo všeobecnosti, premýšľali ste niekedy o opustení spoločnosti Cisco?

Benchmarks

A teraz prejdime k benchmarkom z dokumentácie WireGuard. Hoci táto [dokumentácia] nie je vedeckým článkom, aj tak som od vývojárov očakával vedeckejší prístup alebo vedecký prístup ako referenciu. Akékoľvek referenčné hodnoty sú zbytočné, ak sa nedajú reprodukovať, a ešte viac zbytočné, keď sa získajú v laboratóriu.

V linuxovom zostavení WireGuard využíva výhodu použitia GSO - Generic Segmentation Offloading. Vďaka nemu klient vytvorí obrovský paket 64 kilobajtov a zašifruje / dešifruje ho jedným ťahom. Tým sa znížia náklady na vyvolanie a implementáciu kryptografických operácií. Ak chcete maximalizovať priepustnosť pripojenia VPN, je to dobrý nápad.

Ale ako to už býva, realita nie je taká jednoduchá. Odoslanie takého veľkého paketu do sieťového adaptéra vyžaduje jeho rozrezanie na veľa menších paketov. Normálna veľkosť odosielania je 1500 bajtov. To znamená, že náš gigant s veľkosťou 64 kilobajtov bude rozdelený do 45 paketov (1240 bajtov informácií a 20 bajtov hlavičky IP). Potom na chvíľu úplne zablokujú prácu sieťového adaptéra, pretože musia byť odoslané spolu a naraz. V dôsledku toho to povedie k skoku priority a pakety, ako napríklad VoIP, budú radené do frontu.

Vysoká priepustnosť, ktorú WireGuard tak odvážne tvrdí, sa teda dosahuje za cenu spomalenia sieťovania iných aplikácií. A tím WireGuard už je potvrdené toto je môj záver.

Ale poďme ďalej.

Podľa benchmarkov v technickej dokumentácii pripojenie vykazuje priepustnosť 1011 Mbps.

Pôsobivé.

Toto je obzvlášť pôsobivé vzhľadom na skutočnosť, že maximálna teoretická priepustnosť jedného pripojenia Gigabit Ethernet je 966 Mbps s veľkosťou paketu 1500 bajtov mínus 20 bajtov pre hlavičku IP, 8 bajtov pre hlavičku UDP a 16 bajtov pre hlavičku samotný WireGuard. V zapuzdrenom pakete je ešte jedna hlavička IP a ďalšia v TCP pre 20 bajtov. Odkiaľ sa teda vzala táto extra šírka pásma?

S obrovskými rámcami a výhodami GSO, o ktorých sme hovorili vyššie, by teoretické maximum pre veľkosť rámca 9000 bajtov bolo 1014 Mbps. Takáto priepustnosť je zvyčajne v skutočnosti nedosiahnuteľná, pretože je spojená s veľkými ťažkosťami. Môžem teda len predpokladať, že test bol vykonaný s ešte tučnejšími nadrozmernými rámcami 64 kilobajtov s teoretickým maximom 1023 Mbps, čo podporujú len niektoré sieťové adaptéry. To je ale v reálnych podmienkach absolútne nepoužiteľné, alebo sa dá použiť len medzi dvoma priamo prepojenými stanicami, výlučne v rámci testovacej stolice.

Keďže sa však tunel VPN preposiela medzi dvoma hostiteľmi pomocou internetového pripojenia, ktoré vôbec nepodporuje jumbo snímky, výsledok dosiahnutý na benchmarku nemožno brať ako benchmark. Toto je jednoducho nereálny laboratórny úspech, ktorý je nemožný a nepoužiteľný v skutočných bojových podmienkach.

Dokonca aj keď som sedel v dátovom centre, nemohol som preniesť snímky väčšie ako 9000 XNUMX bajtov.

Kritérium použiteľnosti v reálnom živote je absolútne porušené a ako si myslím, autor vykonaného „merania“ sa z pochopiteľných dôvodov vážne zdiskreditoval.

Prečo by ste nemali používať WireGuard

Posledný záblesk nádeje

Na stránke WireGuard sa o kontajneroch veľa hovorí a je jasné, na čo je vlastne určený.

Jednoduchá a rýchla sieť VPN, ktorá nevyžaduje žiadnu konfiguráciu a možno ju nasadiť a nakonfigurovať pomocou masívnych nástrojov na orchestráciu, ako má Amazon vo svojom cloude. Konkrétne Amazon používa najnovšie hardvérové ​​funkcie, ktoré som už spomenul, ako napríklad AVX512. Toto sa robí s cieľom urýchliť prácu a nie je viazaný na x86 alebo inú architektúru.

Optimalizujú priepustnosť a pakety väčšie ako 9000 bajtov – budú to obrovské zapuzdrené rámce pre kontajnery na vzájomnú komunikáciu alebo na operácie zálohovania, vytváranie snímok alebo nasadzovanie tých istých kontajnerov. Ani dynamické IP adresy nijako neovplyvnia fungovanie WireGuardu v prípade scenára, ktorý som opísal.

Dobre zahrané. Brilantná implementácia a veľmi tenký, takmer referenčný protokol.

Ale jednoducho sa nehodí do sveta mimo dátového centra, ktoré úplne ovládate. Ak to risknete a začnete používať WireGuard, budete musieť robiť neustále kompromisy pri návrhu a implementácii šifrovacieho protokolu.

Výkon

Je pre mňa ľahké dospieť k záveru, že WireGuard ešte nie je pripravený.

Bol koncipovaný ako ľahké a rýchle riešenie množstva problémov s existujúcimi riešeniami. Bohužiaľ, kvôli týmto riešeniam obetoval veľa funkcií, ktoré budú relevantné pre väčšinu používateľov. Preto nemôže nahradiť IPsec alebo OpenVPN.

Aby sa WireGuard stal konkurencieschopným, potrebuje pridať aspoň nastavenie IP adresy a konfiguráciu smerovania a DNS. Je zrejmé, že na to slúžia šifrované kanály.

Bezpečnosť je mojou najvyššou prioritou a momentálne nemám dôvod veriť, že IKE alebo TLS sú nejakým spôsobom ohrozené alebo poškodené. V oboch je podporované moderné šifrovanie, ktoré je overené desaťročiami prevádzky. To, že je niečo novšie, neznamená, že je to lepšie.

Interoperabilita je mimoriadne dôležitá, keď komunikujete s tretími stranami, ktorých stanice neovládate. IPsec je de facto štandard a je podporovaný takmer všade. A on pracuje. A bez ohľadu na to, ako to vyzerá, teoreticky WireGuard v budúcnosti nemusí byť kompatibilný ani s rôznymi verziami seba samého.

Akákoľvek kryptografická ochrana je skôr či neskôr narušená, a preto sa musí nahradiť alebo aktualizovať.

Popierať všetky tieto fakty a slepo chcieť použiť WireGuard na pripojenie vášho iPhone k vašej domácej pracovnej stanici je len majstrovská trieda strkania hlavy do piesku.

Zdroj: hab.com

Pridať komentár