Hvorfor man ikke bĂžr bruke WireGuard

I det siste har WireGuard fÄtt mye oppmerksomhet, det er faktisk den nye «stjernen» blant VPN. Men er den sÄ god som den ser ut til? Jeg vil gjerne diskutere noen observasjoner og se nÊrmere pÄ implementeringen av WireGuard for Ä fortelle hvorfor den ikke er en lÞsning som vil erstatte IPsec eller OpenVPN.

I denne artikkelen vil jeg avkrefte noen myter [rundt WireGuard]. Ja, det blir en lang lesning, sÄ hvis du ikke har laget deg en kopp te eller kaffe enda, er det pÄ tide Ä gjÞre det. Jeg vil ogsÄ takke Peter for korrekturlesingen av mine kaotiske tanker.

Jeg har ikke som mĂ„l Ă„ diskreditere utviklerne av WireGuard eller undervurdere innsatsen deres. Deres produkt fungerer, men jeg mener personlig at det blir presentert som noe helt annet enn det faktisk er — presentert som en erstatning for IPsec og OpenVPN, noe som faktisk ikke eksisterer akkurat nĂ„.

Som en merknad vil jeg legge til at ansvaret for denne posisjoneringen av WireGuard ligger hos mediene som har omtalt det, og ikke hos prosjektet eller skaperne.

I det siste har det ikke vÊrt mange gode nyheter om Linux-kjernen. Vi har fÄtt hÞre om grusomme sikkerhetshull i prosessorene som har blitt utbedret programvaremessig, og Linus Torvalds har snakket om dette pÄ en altfor grov og kjedelig mÄte, med et utviklersprÄk. Planleggeren eller nettverksstakken i nullnivÄ er heller ikke de mest forstÄelige temaene for glinsende magasiner. Og sÄ dukker WireGuard opp.

PĂ„ papiret hĂžres alt bra ut: en spennende ny teknologi.

Men la oss se nÊrmere pÄ den.

Den tekniske dokumentasjonen for WireGuard

This article is based on den offisielle dokumentasjonen til WireGuard, skrevet av Jason Donenfeld. Der forklarer han konseptet, mÄlet og den tekniske implementeringen av [WireGuard] i Linux-kjernen.

Det fĂžrste setningen lyder:

WireGuard [
] sÞker Ä erstatte bÄde IPsec i de fleste bruksomrÄder og andre populÊre lÞsninger basert pÄ brukerrom og/eller TLS, som OpenVPN, samtidig som den er et mer sikkert, effektivt og brukervennlig [verktÞy].

SelvfÞlgelig er den stÞrste fordelen med alle nye teknologier deres enkelhet [sammenlignet med forgjengerne]. Men VPN mÄ ogsÄ vÊre effektiv og sikker.

Og hva nÄ?

Hvis du sier at du ikke trenger dette fra [VPN], kan vi avslutte lesningen her. Jeg vil imidlertid pÄpeke at slike oppgaver stilles til enhver annen tunnelingteknologi.

Det mest interessante fra sitatet ovenfor ligger i ordene "i de fleste tilfeller", som presse selvsagt har ignorert. Og her er vi, der vi har havnet pĂ„ grunn av det kaoset som denne uaktsomheten har skapt — i denne artikkelen.

Hvorfor man ikke bĂžr bruke WireGuard

Vil WireGuard erstatte min [IPsec] VPN-forbindelse mellom nettsteder?

Nei. Det er bare ingen sjanse for at store leverandÞrer, som Cisco, Juniper og andre, vil ta i bruk WireGuard for sine produkter. De "hopper ikke pÄ forbipasserende tog" med mindre det er et stort behov. Senere vil jeg forklare noen grunner til at de sannsynligvis ikke vil kunne implementere WireGuard i produktene sine, selv om de Þnsket det.

Vil WireGuard flytte min RoadWarrior fra laptopen til datasenteret?

Nei. Akkurat nÄ har ikke WireGuard et stort antall viktige funksjoner som gjÞr at den kan gjÞre noe lignende. For eksempel kan den ikke bruke dynamiske IP-adresser pÄ serversiden av tunnelen, og bare dette Þdelegger hele scenariet for denne typen bruk.

IPFire brukes ofte for billige internettkanaler, for eksempel for DSL eller kabeltilkobling. Dette gir mening for smÄ eller mellomstore bedrifter som ikke har behov for rask fiberoptikk. [Notat fra oversetteren: husk at i kommunikasjonsplan er Russland og noen CIS-land langt foran Europa og USA, fordi vi begynte Ä bygge vÄre nettverk mye senere, og med ankomsten av Ethernet og fiberoptiske nettverk som standard, var det lettere for oss Ä omstille oss. I land som EU eller USA er xDSL bredbÄnd med hastigheter pÄ 3-5 Mbps fortsatt en normalstandard, mens fiberoptisk tilkobling koster absurde belÞp etter vÄre mÄlestokker. Derfor snakker forfatteren av artikkelen om DSL eller kabeltilkobling som normen, ikke som et gammelt relikvie.] Men DSL, kabel, LTE (og andre trÄdlÞse tilgangsmÄter) har dynamiske IP-adresser. SelvfÞlgelig endres de ikke ofte, men de endres fremdeles.

Det eksisterer et underprosjekt kalt «wg-dynamic», som legger til en brukerrom-demo for Ä overvinne denne mangelen. Et stort problem med brukerhistorien beskrevet ovenfor er forverringen av situasjonen med dynamisk IPv6-adressering.

Fra distributÞrens stÄsted ser alt dette ogsÄ ikke sÄ bra ut. Et mÄl med utviklingen var Ä bevare enkelheten og renheten i protokollen.

Dessverre har alt dette faktisk blitt altfor enkelt og primitivt, sÄ vi mÄ bruke ekstra programvare for at hele denne strukturen skal vÊre levedyktig under reelle driftsforhold.

Er WireGuard sÄ enkelt Ä bruke?

Ikke enda. Jeg sier ikke at WireGuard aldri vil bli et godt alternativ for Ă„ tunnelere mellom to punkter, men for Ăžyeblikket er det bare en alfa-versjon av produktet det bĂžr vĂŠre.

Men hva gjÞr den egentlig? Er IPsec virkelig sÄ mye mer komplisert Ä bruke?

Åpenbart ikke. IPsec-leverandĂžren har tenkt pĂ„ dette og tilbyr sitt produkt sammen med et grensesnitt, for eksempel med IPFire.

For Ä konfigurere en VPN-tunnel via IPsec trenger du fem datasett som mÄ legges inn i konfigurasjonen: din egen offentlige IP-adresse, den offentlige IP-adressen til mottakeren, nettverkene du vil gjÞre tilgjengelige gjennom denne VPN-tilkoblingen og en forhÄndsdelt nÞkkel. Slik sett kan VPN settes opp pÄ noen minutter, og det er kompatibelt med hvilken som helst leverandÞr.

Dessverre finnes det noen unntak i denne historien. Alle som har prĂžvd Ă„ tunnelere en VPN-tilkobling via IPsec til en maskin med OpenBSD, vet hva jeg snakker om. Det finnes et par andre smertefulle eksempler, men det er faktisk langt flere positive erfaringer med bruk av IPsec.

Om kompleksiteten til protokollen

Sluttbrukeren skal ikke bekymre seg om protokollens kompleksitet.

Hvis vi levde i en verden der dette virkelig var en bekymring for brukeren, ville vi for lengst ha kvittet oss med SIP, H.323, FTP og andre protokoller laget for mer enn ti Är siden som fungerer dÄrlig med NAT.

Det er grunner til at IPsec er mer komplisert enn WireGuard: det gjĂžr mye flere ting. For eksempel, brukerautentisering med brukernavn/passord eller SIM-kort med EAP. Den har utvidet mulighet for Ă„ legge til nye kryptografiske primtall.

Og WireGuard har ikke det.

Og dette betyr at WireGuard pÄ et tidspunkt vil svikte, fordi en av de kryptografiske primitive vil bli svekket eller helt kompromittert. Forfatteren av teknisk dokumentasjon sier dette slik:

Det er viktig Ä merke seg at WireGuard er kryptografisk selvtilfreds. Den mangler bevisst fleksibilitet i krypteringene og protokollene. Hvis det oppdages alvorlige hull i de underliggende primitive, vil alle endepunktene mÄtte oppdateres. Som vi ser fra det fortsatt pÄgÄende strÞmmen av sÄrbarheter i SSL/TLS, har fleksibiliteten til kryptering Þkt enormt.

Det siste utsagnet er helt riktig.

Å oppnĂ„ konsensus om hvilken kryptering som skal brukes, gjĂžr protokoller som IKE og TLS over komplekse. For kompliserte? Ja, i TLS/SSL oppstĂ„r sĂ„rbarheter ganske ofte, og det finnes ingen alternativer.

Om Ă„ ignorere reelle problemer

Tenk deg at du har en VPN-server med 200 aktive klienter spredt over hele verden. Dette er et ganske standard bruksomrÄde. Hvis du mÄ endre kryptering, mÄ du levere oppdateringen til alle kopiene av WireGuard pÄ disse bÊrbare datamaskinene, smarttelefonene og sÄ videre. Samtidigt Ä levere. Dette er bokstavelig talt umulig. Administratorer som prÞver Ä gjÞre dette vil trenge mÄneder for Ä rulle ut de nÞdvendige konfigurasjonene, og for mellomstore selskaper vil det bokstavelig talt ta Är Ä gjennomfÞre slike tiltak.

IPsec og OpenVPN tilbyr funksjoner for forhandlingskryptering. Derfor vil det vÊre en periode etter at du har aktivert ny kryptering, hvor den gamle fortsatt vil fungere. Takket vÊre dette kan nÄvÊrende klienter oppdatere seg til den nye versjonen. Etter at oppdateringen er implementert, kan du enkelt deaktivere den sÄrbare krypteringen. Og alt! Ferdig! Du er fantastisk! Og kundene vil ikke engang legge merke til det.

Dette er faktisk et veldig vanlig tilfelle for store distribusjoner, og selv OpenVPN opplever noen utfordringer her. Bakoverkompatibilitet er viktig, og selv om du bruker svakere kryptering, fÞrer det ikke til at mange stenger virksomheten. Fordi det ville fÞre til lammelse av arbeidet til hundrevis av kunder pÄ grunn av manglende evne til Ä utfÞre jobben sin.

WireGuard-teamet har gjort protokollen enklere, men helt uegnet for personer som ikke har konstant kontroll over begge endepunktene i tunnelen sin. Etter min erfaring er akkurat dette scenariet det vanligste.

Hvorfor man ikke bĂžr bruke WireGuard

Kryptografi!

Men hva er dette interessante nye krypteringssystemet som WireGuard bruker?

WireGuard bruker Curve25519 for nÞkkelutveksling, ChaCha20 for kryptering og Poly1305 for autentisering av data. Det samarbeider ogsÄ med SipHash for hash-nÞkler og BLAKE2 for hashing.

ChaCha20-Poly1305 er standardisert for IPsec og OpenVPN (gjennom TLS).

Det er tydelig at utviklingen av Daniel Bernsteins arbeid blir brukt veldig ofte. BLAKE2 er etterfÞlgeren til BLAKE, som var finalist i SHA-3, men ikke vant pÄ grunn av likheten med SHA-2. Hvis SHA-2 skulle bli brutt, var det stor sjanse for at BLAKE ogsÄ ville bli kompromittert.

IPsec og OpenVPN trenger ikke SipHash pÄ grunn av sin design. Dermed er det eneste som for tiden ikke kan brukes med dem, BLAKE2, og det kun inntil det blir standardisert. Dette er ikke en stor ulempe, fordi VPN-er bruker HMAC for Ä skape integritet, noe som anses som en sterk lÞsning selv i kombinasjon med MD5.

SÄ jeg kom til den konklusjonen at nesten alle VPN-er bruker de samme kryptografiske verktÞyene. Derfor er WireGuard ikke mer eller mindre sikkert enn andre aktuelle produkter nÄr det gjelder kryptering eller integritet av overfÞrte data.

Men selv ikke dette er det viktigste Ă„ merke seg ifĂžlge prosjektets offisielle dokumentasjon. Det viktigste er hastighet.

Er WireGuard raskere enn andre VPN-lĂžsninger?

Kort sagt: nei, ikke raskere.

ChaCha20 er en strĂžm-kryptering, som er lettere Ă„ implementere i programvare. Den krypterer ett bit av gangen. Blokkprotokoller som AES krypterer blokker pĂ„ 128 bit av gangen. For Ă„ implementere maskinvarestĂžtte kreves det langt flere transistorer, derfor leveres stĂžrre prosessorer med AES-NI — et utvidelsessett som utfĂžrer enkelte oppgaver i krypteringsprosessen for Ă„ akselerere det.

Det var forventet at AES-NI aldri skulle nĂ„ smarttelefoner [men det gjorde det, — anm. red.]. ChaCha20 ble utviklet som et lettvektsalternativ som sparer batteri. Derfor kan det vĂŠre en nyhet for deg at hver smarttelefon du kan fĂ„ tak i i dag har en eller annen form for akselerasjon for AES og jobber med denne krypteringen raskere og med mindre energiforbruk enn med ChaCha20.

Det er Äpenbart at nesten alle stasjonÊre PC-/serverprosessorer kjÞpt de siste par Ärene har AES-NI.

Derfor forventer jeg at AES vil overgÄ ChaCha20 i hvert eneste scenario. Den offisielle dokumentasjonen til WireGuard nevner at ChaCha20-Poly1305 vil overgÄ AES-NI takket vÊre AVX512, men denne instruksjonssettutvidelsen vil kun vÊre tilgjengelig pÄ stÞrre prosessorer, noe som igjen ikke vil vÊre til hjelp for mindre og mobile enheter, som alltid vil jobbe raskere med AES-NI.

Jeg er ikke sikker pĂ„ om dette kunne bli forutsett under utviklingen av WireGuard, men i dag er det et faktum at den er lĂ„st til Ă©n kryptering — et trekk som kan pĂ„virke ytelsen negativt.

IPsec lar deg fritt velge hvilken kryptering som passer best for ditt bruksomrÄde. Og det er selvsagt nÞdvendig, hvis du for eksempel Þnsker Ä overfÞre 10 GB eller mer med data over en VPN-tilkobling.

Integrasjonsproblemer i Linux

Selv om WireGuard valgte en moderne krypteringsprotokoll, har dette allerede fÞrt til flere problemer. I stedet for Ä bruke det som er stÞttet av kjernen, har integrasjonen av WireGuard blitt forsinket i flere Är pÄ grunn av mangelen pÄ disse primitive funksjonene i Linux.

Jeg er ikke helt oppdatert pÄ hvordan situasjonen er i andre operativsystemer, men det er sannsynlig at den ikke avviker mye fra situasjonen med Linux.

Hvordan ser virkeligheten ut?

Dessverre, hver gang en kunde ber meg om Ă„ sette opp en VPN-tilkobling, mĂžter jeg temaet om at de bruker utdaterte legitimasjoner og kryptering. 3DES kombinert med MD5 er fortsatt en vanlig praksis, akkurat som AES-256 og SHA1. Og selv om den siste er litt bedre — er det ikke noe man bĂžr bruke i 2020.

For nþkkelutveksling altid brukes RSA — et sakte, men tilstrekkelig sikkert verktþy.

Mine kunder er knyttet til tollmyndigheter og andre statlige organer, samt store selskaper med navn kjent over hele verden. Alle bruker et forespÞrselsskjema som ble laget for flere tiÄr siden, og muligheten for Ä bruke SHA-512 har aldri blitt lagt til. Jeg kan ikke si at dette Äpenbart pÄvirker den teknologiske utviklingen, men det er klart at det bremser bedriftsprosesser.

Det er smertefullt Ä se, fordi IPsec har stÞttet elliptiske kurver siden omtrent 2005. Curve25519 er ogsÄ nyere og tilgjengelig for bruk. Det finnes ogsÄ alternativer til AES, som Camellia og ChaCha20, men Äpenbart stÞttes ikke alle av de store leverandÞrene som Cisco og lignende.

Og folk bruker det. Det finnes mange Cisco-sett, og flere sett laget for Ă„ fungere med Cisco. De er markedslederne i dette segmentet og er ikke sĂŠrlig interessert i innovasjoner.

Ja, situasjonen [i bedriftssegmentet] er forferdelig, men vi vil ikke se noen endringer pĂ„ grunn av WireGuard. Produsenter vil sannsynligvis aldri identifisere noen ytelsesproblemer med verktĂžyene og krypteringen de allerede bruker, og vil ikke oppdage problemer med IKEv2 — derfor leter de ikke etter alternativer.

Har du noen gang vurdert Ä gi slipp pÄ Cisco?

Benchmark

NÄ skal vi gÄ videre til benchmarkene fra WireGuard-dokumentasjonen. Selv om dette [dokumentasjonen] ikke er en vitenskapelig artikkel, forventet jeg mer vitenskapelighet fra utviklerne, eller det Ä bruke en vitenskapelig tilnÊrming som standard. Enhver benchmark er ubrukelig hvis den ikke kan reproduseres, og enda mer ubrukelig nÄr den er utfÞrt under laboratorieforhold.

I WireGuard-byggingen for Linux fĂ„r den fordelen ved Ă„ bruke GSO — Generic Segmentation Offloading. Dette lar klienten lage en enorm pakke pĂ„ 64 kilobyte og kryptere/dekryptere den i ett enkelt trinn. Dermed reduseres kostnadene ved Ă„ pĂ„kalle og implementere kryptografiske operasjoner. Hvis du Ăžnsker Ă„ maksimere bĂ„ndbredden til VPN-tilkoblingen din, er dette en god idĂ©.

Men, som det ofte er tilfelle, er ikke alt sÄ enkelt i praksis. Sending av en sÄ stor pakke til nettverksadapteren krever at den deles opp i mange mindre pakker. Den vanlige stÞrrelsen pÄ en sending er 1500 byte. Det vil si at vÄr gigant pÄ 64 kilobyte vil bli delt opp i 45 pakker (1240 byte med informasjon og 20 byte IP-hode). Deretter vil de blokkere nettverksadapterens arbeid fullstendig i en periode, fordi de mÄ sendes sammen og med en gang. Resultatet vil vÊre en prioritetssjakk, og pakker som VoIP vil bli satt i ventekÞ.

Dermed oppnÄs den hÞye bÄndbredden som WireGuard sÄ dristig hevder, ved Ä bremse nettverksarbeidet til andre applikasjoner. Og teamet bak WireGuard allerede bekreftet dette er min konklusjon.

Men la oss gÄ videre.

IfÞlge benchmarkene i te dokumentasjonen viser forbindelsen en bÄndbredde pÄ 1011 Mbit/s.

Imponerende.

Dette er spesielt imponerende med tanke pÄ at den maksimale teoretiske bÄndbredden for en gigabit Ethernet-tilkobling er 966 Mbit/s ved en pakke stÞrrelse pÄ 1500 byte minus 20 byte for IP-hodet, 8 byte for UDP-hodet og 16 byte for WireGuard-hodet. Det er ogsÄ et annet IP-hode i den inkapslede pakken og et annet pÄ 20 byte i TCP. SÄ hvor kom denne ekstra bÄndbredden fra?

Med store rammer og fordelene ved GSO som vi har diskutert tidligere, vil den teoretiske maksimumet ved en ramme stÞrrelse pÄ 9000 byte vÊre 1014 Mbit/s. Slike bÄndbredder er vanligvis ikke oppnÄelige i virkeligheten, da det er knyttet til store utfordringer. Jeg kan derfor bare anta at testen ble utfÞrt med enda mer overdimensjonerte rammer med en stÞrrelse over 64 kilobyte med en teoretisk maksimum pÄ 1023 Mbit/s, noe som kun stÞttes av enkelte nettverksadaptere. Men dette er absolutt ikke praktisk i virkelige forhold, eller det kan kun brukes mellom to direktesammensatte stasjoner, utelukkende i et testoppsett.

Men since VPN-tunnelen passeres mellom to verter via en internettforbindelse som generelt ikke stÞtter store rammer, kan ikke resultatet oppnÄdd i testen betraktes som en standard. Dette er rett og slett en urealistisk laboratorieprestasjon som ikke kan anvendes under reelle forhold.

Selv om jeg skulle sitte i datasenteret, ville jeg ikke klart Ă„ overfĂžre rammer stĂžrre enn 9000 byte.

Kriteriet for anvendbarhet i virkeligheten er helt brutt, og jeg mener at forfatteren av den utfÞrte «mÄlingen» har diskredittert seg selv av Äpenbare grunner.

Hvorfor man ikke bĂžr bruke WireGuard

Den siste glÞden av hÄp

PĂ„ WireGuard sin nettside snakkes det mye om containere, og det blir klart hva det egentlig er ment til.

En enkel og rask VPN som ikke krever oppsett og kan implementeres og konfigureres med masseverktÞy for orkestrering, som for eksempel Amazon i deres sky. Spesielt bruker Amazon de nyeste maskinvarefunksjonene jeg nevnte tidligere, som AVX512. Dette gjÞres for Ä akselerere ytelsen og unngÄ Ä vÊre bundet til x86 eller noen annen arkitektur.

De optimaliserer bĂ„ndbredden og pakkene som overskrider 9000 byte – dette blir enorme innkapslede rammer for kommunikasjon mellom containere, eller for operasjoner som sikkerhetskopiering, snapshotting eller deployment av disse containerne. Selv dynamiske IP-adresser vil ikke pĂ„virke WireGuard sin funksjonalitet i det scenariet jeg beskrev.

Godt spilt. Glimrende implementering og et veldig subtilt, nesten standardisert protokoll.

Men det passer bare ikke for verden utenfor datasenteret du helt kontrollerer. Hvis du risikerer Ä bruke WireGuard, mÄ du vÊre forberedt pÄ Ä ta kontinuerlige kompromisser i utviklingen og implementeringen av krypteringsprotokollen.

Utdata

Det er ikke vanskelig for meg Ă„ konkludere med at WireGuard fortsatt ikke er klart.

Det ble tenkt pÄ som en lettvekts- og rask lÞsning pÄ flere problemer med allerede eksisterende lÞsninger. Dessverre har det ofret mange funksjoner som ville vÊrt relevante for de fleste brukere. Derfor kan det ikke erstatte IPsec eller OpenVPN.

For WireGuard to be competitive, it needs to add at least IP address configuration and routing and DNS setup. Clearly, this is why encrypted channels are necessary.

Security is my top priority, and I currently have no reason to believe that IKE or TLS are in any way compromised or broken. Modern encryption is supported in both, and they have been tested over decades of operation. Just because something is newer doesn’t mean it’s better.

Functional compatibility is extremely important when you connect with third parties whose stations you do not control. IPsec is de facto the standard and is supported almost universally. And it works. Regardless of how it may seem, theoretically, WireGuard could be incompatible with even its own different versions in the future.

Any cryptographic protection will eventually be broken and must therefore be replaced or updated.

Denying all these facts and blindly wanting to use WireGuard to connect your iPhone to your home workstation is simply a masterclass in burying your head in the sand.

Kilde: habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster