OpenVPN vs IKEv2 vs PPTP vs L2TP / IPSec vs SSTP – Ultieme gids voor VPN-codering

Een Virtual Private Network (VPN) codeert alle gegevens tijdens het reizen tussen uw computer en een VPN-server. In deze Complete VPN-coderingsgids gaan we dieper in op wat codering is en hoe deze wordt gebruikt in VPN-verbindingen.


Misschien het allerbelangrijkste is dat we de reeks versleutelingsvoorwaarden zullen uitleggen die door VPN-services worden gebruikt. Wij hopen dat u na het lezen van dit document een beter begrip van dit complexe onderwerp zult hebben en dat u de veiligheidsclaims van VPN-providers beter zult kunnen beoordelen..

voorrondes

Als u niet zeker weet wat een VPN is en wat u voor u kunt doen, bekijk dan onze VPN's voor beginnershandleiding.

Ons doel is om de belangrijkste kenmerken van VPN-codering in zo eenvoudig mogelijke termen te presenteren. Hoewel het niet wegkomt, is het feit dat codering een complex onderwerp is.

Als zelfs de term codering ervoor zorgt dat je ogen beginnen te beglazen, maar je wilt nog steeds weten waar je op moet letten in een goede VPN-service, kun je meteen naar samenvattingen springen.

Wat is codering?

Begin bij het begin," zei de koning heel ernstig, "en ga door tot je aan het einde komt: stop dan. "

Lewis Carroll, Alice in wonderland

De eenvoudigste analogie is dat codering een slot is. Als u de juiste sleutel heeft, kunt u het slot gemakkelijk openen. Als iemand niet de juiste sleutel heeft, maar toegang wil krijgen tot de inhoud van een kluis (dat wil zeggen uw gegevens) die door dat slot wordt beschermd, dan kunnen ze proberen het slot te breken.

Net zoals het slot dat een bankkluis beveiligt, sterker is dan het slot dat een koffer beveiligt, is sommige codering sterker dan andere codering.

De basis

Heb je als kind het spel gespeeld waarin je een 'geheime boodschap' hebt gemaakt door de ene letter van de boodschap te vervangen door een andere? De vervanging is gemaakt volgens een door u gekozen formule.

U hebt bijvoorbeeld elke letter van het oorspronkelijke bericht vervangen door één drie letters erachter in het alfabet. Als iemand anders wist wat deze formule was, of het kon uitwerken, dan zouden zij uw "geheime boodschap" kunnen lezen.

In het jargon van cryptografie was u bezig het bericht (gegevens) te "coderen" volgens een zeer eenvoudig wiskundig algoritme. Cryptografen noemen dit algoritme een "codering". Om het te decoderen, hebt u de sleutel nodig. Dit is een variabele parameter die de uiteindelijke uitvoer van het cijfer bepaalt. Zonder deze parameter is het onmogelijk om de codering te decoderen.

Als iemand een gecodeerd bericht wil lezen maar niet over de sleutel beschikt, moet hij proberen het cijfer te "kraken". Wanneer de codering een eenvoudige lettervervangingscodering gebruikt, is kraken eenvoudig. De codering kan echter veiliger worden gemaakt door het wiskundige algoritme (de codering) complexer te maken.

U kunt bijvoorbeeld elke derde letter van het bericht vervangen door een nummer dat overeenkomt met de letter.

Lengte coderingssleutel

Moderne computercijfers zijn zeer complexe algoritmen. Zelfs met behulp van supercomputers zijn deze zeer moeilijk te kraken, zo niet onmogelijk voor alle praktische doeleinden. De grofste manier om de sterkte van een cijfer te meten, is door de complexiteit van het algoritme dat wordt gebruikt om het te maken.

Hoe complexer het algoritme, hoe moeilijker het cijfer is om te kraken met een brute force-aanval. Deze zeer primitieve vormaanval staat ook bekend als een uitputtende sleutelzoekactie. Het houdt in feite in dat elke mogelijke combinatie van getallen wordt geprobeerd totdat de juiste sleutel is gevonden.

Computers voeren alle berekeningen uit met binaire getallen: nullen en enen. De complexiteit van een cijfer hangt af van de sleutelgrootte in bits - het ruwe aantal enen en nullen dat nodig is om het algoritme uit te drukken, waarbij elke nul of één wordt voorgesteld door een enkele bit.

Dit staat bekend als de sleutellengte en vertegenwoordigt ook de praktische haalbaarheid van het succesvol uitvoeren van een brute force-aanval op een bepaald cijfer.

Het aantal mogelijke combinaties (en daarom de moeilijkheid om ze bruut te forceren) neemt exponentieel toe met de sleutelgrootte. Het AES-cijfer gebruiken (zie later):

Sleutelformaat Comination

Om dit in perspectief te plaatsen:

  • In 2011 was de snelste supercomputer ter wereld de Fujitsu K. Deze kon een Rmax-pieksnelheid van 10.51 petaflops bereiken. Op basis van dit cijfer zou het Fujitsu K 1,02 x 10 ^ 18 - ongeveer een miljard miljard (één miljoen) - jaar kosten om een ​​128-bits AES-sleutel (Advanced Encryption Standard) met geweld te kraken. Dit is ouder dan de leeftijd van het universum (13,75 miljard jaar).
  • De krachtigste supercomputer ter wereld nu (2017) is de Sunway TaihuLight in China. Dit beest kan een pieksnelheid van 93.02 petaflops bereiken. Dit betekent dat de krachtigste computer ter wereld nog steeds ongeveer 885 biljard jaar nodig heeft om een ​​128-bits AES-sleutel bruut te forceren.
  • Het aantal benodigde bewerkingen om een ​​256-bits codering bruut te forceren is 3,31 x 10 ^ 56. Dit is ongeveer gelijk aan het aantal atomen in het universum!

Computer cijfers

Hoewel de lengte van de coderingssleutel betrekking heeft op de hoeveelheid onbewerkte getallen, zijn cijfers de wiskunde - de eigenlijke formules of algoritmen - die worden gebruikt om de codering uit te voeren. Zoals we zojuist hebben gezien, is bruut forceren van moderne computercodes enorm onpraktisch.

Het zijn zwakke punten (soms opzettelijk) in deze coderingsalgoritmen die ertoe kunnen leiden dat codering wordt verbroken. Dit komt omdat de uitvoer van de (slecht ontworpen) codering nog enige structuur van de oorspronkelijke informatie kan onthullen vóór de codering. Dit creëert een beperkte set mogelijke combinaties om te proberen, wat in feite de effectieve sleutellengte vermindert.

Het Blowfish-cijfer is bijvoorbeeld kwetsbaar voor een aanval die gebruikmaakt van de wiskunde achter het verjaardagsprobleem in de waarschijnlijkheidstheorie. De studie van zwakke punten in cryptografische algoritmen staat bekend als cryptoanalyse.

Langere sleutellengtes compenseren dergelijke zwakke punten, omdat ze het aantal mogelijke resultaten aanzienlijk vergroten.

In plaats van het cijfer zelf aan te vallen, kan een tegenstander de sleutel zelf aanvallen. Dit kan invloed hebben op een bepaalde site of een bepaald softwareproduct. Maar de beveiliging van het coderingsalgoritme is nog steeds intact en andere systemen die hetzelfde algoritme gebruiken maar een veilige generatie sleutels hebben, worden niet beïnvloed door de pauze.

Cijfertoetslengte

Hoe sterk een cijfer is, hangt af van zowel de wiskunde van het cijfer zelf, als de sleutellengte zoals uitgedrukt in bits. Om deze reden worden cijfers meestal beschreven samen met de gebruikte sleutellengte.

Dus AES-256 (het AES-cijfer met een 256-bit sleutellengte) wordt meestal als sterker beschouwd dan AES-128. Merk op dat ik meestal zeg omdat we hier te maken hebben met zeer complexe wiskunde (zie mijn opmerkingen over AES later).

Opmerking Icon2 01 150X150

Het is belangrijk op te merken dat de sleutellengte alleen geen goede indicator is voor de sterkte van een cijfer. Het is de combinatie van sleutellengte en cijfer die ertoe doet. Cijfers die worden gebruikt voor asymmetrische codering, gebruiken bijvoorbeeld veel langere sleutelgroottes dan die worden gebruikt voor symmetrische codering om de equivalente bescherming te bieden.

Vergelijking van sleutelgroottes

Deze tabel is een beetje verouderd, omdat er geen rekening wordt gehouden met nieuwere aanvallen die op RSA zijn ontdekt. Het is ook vermeldenswaard dat de elliptische curve en Diffie-Hellman-varianten van RSA veel sterker zijn dan traditionele. Maar hopelijk krijg je het idee.

Opmerking Icon2 01 150X150

Een ding om op te merken is dat hoe hoger de sleutellengte, hoe meer berekeningen er nodig zijn, dus hoe meer rekenkracht nodig is. Dit heeft invloed op de snelheid waarmee gegevens kunnen worden gecodeerd en gedecodeerd. VPN-providers en dergelijke moeten daarom beslissen hoe de beveiliging en de praktische bruikbaarheid het beste kunnen worden afgewogen bij het kiezen van coderingsschema's.

We bespreken even later de belangrijkste cijfers die door verschillende VPN-protocollen worden gebruikt, maar de meest voorkomende cijfers die u waarschijnlijk tegenkomt zijn Blowfish en AES. Daarnaast wordt RSA gebruikt om de sleutels van een cijfer te coderen en te decoderen en wordt SHA-1 of SHA-2 gebruikt als hashfunctie om gegevens te authenticeren.

Asymmetrische coderingAsymmestrische codering

Perfect Forward Secrecy

Perfect Forward Secrecy (PFS) wordt ook wel kortstondige coderingssleutels genoemd, of gewoon Forward Secrecy (FS) door mensen die zich niet op hun gemak voelen met het woord 'perfect'.

De meeste moderne veilige online communicatie is gebaseerd op SSL / TLS. Het wordt gebruikt door HTTPS-websites en het OpenVPN-protocol. TLS (Transport Layer Security) is een asymmetrisch coderingsprotocol. Het gebruik van een asymmetrisch cijfer betekent dat gegevens worden beveiligd met een openbare sleutel, die voor iedereen beschikbaar is. Het kan echter alleen worden gedecodeerd door een beoogde ontvanger die de juiste persoonlijke sleutel heeft.

Deze privésleutel moet geheim worden gehouden. Als het wordt gestolen of gekraakt door een tegenstander, kan die tegenstander gemakkelijk alle communicatie die hij beveiligt onderscheppen en lezen.

Helaas is het gebruikelijk dat servers of zelfs hele bedrijven slechts één privéversleutelingssleutel gebruiken om alle communicatie te beveiligen. Waarom? Omdat het gemakkelijk is. Als die sleutel echter is aangetast, heeft een aanvaller toegang tot alle daarmee gecodeerde communicatie.

Deze privéversleutelingssleutel wordt daarom een ​​'hoofdsleutel' die kan worden gebruikt om alle communicatie met een server of bedrijf te ontgrendelen. Het is bekend dat de NSA deze zwakte heeft misbruikt om enorme hoeveelheden zogenaamd beveiligde gegevens te verzamelen.

De oplossing is Perfect Forward Secrecy. Dit is een systeem waarbij voor elke sessie een nieuwe en unieke private coderingssleutel wordt gegenereerd. Het is een eenvoudig idee, zelfs als de wiskunde van Diffie-Hellman ingewikkeld is. Het betekent dat elke TLS-sessie zijn eigen set sleutels heeft. Vandaar de term "kortstondige sleutels" - ze worden één keer gebruikt en verdwijnen dan.

Er is daarom geen 'hoofdsleutel' die kan worden misbruikt. Zelfs als een sessie gecompromitteerd is, is het alleen die sessie die gecompromitteerd is - niet alle andere sessies die iemand met die server of dat bedrijf heeft!

Hoewel ongewoon, is het zelfs mogelijk om PFS-sleutels binnen een sessie te vernieuwen (bijvoorbeeld elk uur). Dit beperkt verder de hoeveelheid gegevens die door een tegenstander kan worden onderschept, zelfs als een privésleutel is aangetast.

Toen ik dit artikel enkele jaren geleden over dit onderwerp schreef, was het gebruik van Perfect Forward Secrecy voor zowel HTTPS-websites als OpenVPN-verbindingen zeer zeldzaam. Gelukkig is deze situatie enigszins veranderd. Hoewel het zeker niet universeel is, is het gebruik van efemere sleutels de laatste tijd sterk toegenomen.

VPN-coderingsprotocollen

Een VPN-protocol is de set instructies (mechanisme) die wordt gebruikt om te onderhandelen over een beveiligde gecodeerde verbinding tussen twee computers. Een aantal van dergelijke VPN-protocollen wordt meestal ondersteund door commerciële VPN-services. De meest opvallende hiervan zijn PPTP, L2TP / IPSec, OpenVPN, SSTP en IKEv2.

Ik bekijk elk van deze hieronder, maar OpenVPN is nu het industriestandaard VPN-protocol dat wordt gebruikt door commerciële VPN-diensten - niet voor niets. Het is zeer veilig en kan op bijna alle VPN-compatibele apparaten worden gebruikt. Ik zal daarom extra digitale inkt besteden om OpenVPN in detail te bespreken.

PPTP

PROS

  • Client ingebouwd in zowat alle platforms
  • Zeer eenvoudig in te stellen

CONS

  • Heel onzeker
  • Absoluut gecompromitteerd door de NSA
  • Gemakkelijk geblokkeerd

Wat is PPTP?

Het is alleen een VPN-protocol en vertrouwt op verschillende authenticatiemethoden om beveiliging te bieden. Onder commerciële VPN-providers is dit bijna altijd MS-CHAP v2. Het coderingsprotocol (vergelijkbaar met een standaardcodering) dat wordt gebruikt door PPTP is Microsoft Point-to-Point Encryption (MPPE).

Point-to-Point Tunneling Protocol (PPTP) werd ontwikkeld door een consortium opgericht door Microsoft voor het creëren van VPN via dial-up netwerken. Als zodanig is PPTP al lang het standaardprotocol voor VPN-bedrijfsnetwerken.

PPTP is standaard beschikbaar op zowat elk VPN-geschikt platform en apparaat. Het is eenvoudig in te stellen, zonder de noodzaak om extra software te installeren. Dit zorgt ervoor dat PPTP een populaire keuze blijft voor zowel zakelijke VPN's als commerciële VPN-services.

Het heeft ook het voordeel dat het een lage rekenkosten vereist om te implementeren ... dus het is snel!

Helaas is PPTP niet veilig. Helemaal niet. Hoewel het nu meestal alleen wordt gevonden met 128-bits coderingssleutels, zijn in de jaren sinds het voor het eerst werd gebundeld met Windows 95 OSR2 in 1999 een aantal beveiligingsproblemen aan het licht gekomen.

De ernstigste hiervan is de mogelijkheid van niet-ingekapselde MS-CHAP v2-verificatie. Met behulp van deze exploit is PPTP binnen twee dagen gekraakt. Microsoft heeft de fout hersteld, maar zelf een aanbeveling gedaan om in plaats daarvan L2TP / IPsec of SSTP te gebruiken.

Het zal geen verrassing zijn dat de NSA vrijwel zeker PPTP-gecodeerde communicatie standaard decodeert. Nog zorgwekkender is dat de NSA enorme hoeveelheden oudere gegevens heeft verzameld die werden teruggecodeerd toen PPTP als veilig werd beschouwd. Het kan vrijwel zeker ook deze oude gegevens decoderen.

PPTP vereist zowel TCP-poort 1723 als het GRE-protocol. Het is eenvoudig om GRE te firewallen, waardoor het gemakkelijk is om PPTP-verbindingen te blokkeren.

L2TP / IPsec

  • Wordt meestal als veilig beschouwd (maar zie Nadelen)
  • Eenvoudig in te stellen
  • Beschikbaar op alle moderne platforms
  • Sneller dan OpenVPN (misschien)
  • Kan worden aangetast door de NSA (onbewezen)
  • Waarschijnlijk opzettelijk verzwakt door de NSA (onbewezen)
  • Kan worstelen met beperkende firewalls
  • Vaak slecht geïmplementeerd

Wat is L2TP en IPsec?

Layer 2 Tunneling Protocol (L2TP) is ingebouwd in bijna alle moderne besturingssystemen en VPN-compatibele apparaten. Het is daarom net zo eenvoudig en snel in te stellen als PPTP.

L2TP biedt op zichzelf geen codering of vertrouwelijkheid voor verkeer dat er doorheen gaat, dus wordt het meestal geïmplementeerd met de IPsec-authenticatiesuite (L2TP / IPsec). Zelfs als een provider alleen naar L2TP of IPsec verwijst (zoals sommigen doen), betekent dit vrijwel zeker eigenlijk L2TP / IPSec.

L2TP / IPsec kan de 3DES- of AES-cijfers gebruiken. 3DES is kwetsbaar voor Meet-in-the-middle en Sweet32 botsingsaanvallen, dus in de praktijk is het onwaarschijnlijk dat je het tegenwoordig tegenkomt.

Er kunnen problemen optreden omdat het L2TP / IPSec-protocol slechts een beperkt aantal poorten gebruikt. Dit kan complicaties veroorzaken bij gebruik achter NAT-firewalls. Deze afhankelijkheid van vaste poorten maakt het protocol ook vrij eenvoudig te blokkeren.

L2TP / IPsec inkapselt gegevens tweemaal, wat de zaken vertraagt. Dit wordt gecompenseerd door het feit dat codering / decodering plaatsvindt in de kernel en L2TP / IPsec multi-threading toestaat. OpenVPN doet dat niet. Het resultaat is dat L2TP / IPsec theoretisch sneller is dan OpenVPN.

L2TP / IPsec met behulp van de AES-codering heeft geen grote bekende kwetsbaarheden en kan, indien correct geïmplementeerd, nog steeds veilig zijn. De onthullingen van Edward Snowden hebben echter sterk gesuggereerd dat de standaard door de NSA is aangetast.

John Gilmore is een beveiligingsspecialist en oprichter van de Electronic Frontier Foundation. Hij legt uit, het is waarschijnlijk dat IPSec tijdens de ontwerpfase bewust is verzwakt.

Een veel groter probleem is dat veel VPN-services L2TP / IPsec slecht implementeren. In het bijzonder gebruiken ze pre-shared keys (PSK's) die vrij kunnen worden gedownload van hun websites.

Deze PSK's worden alleen gebruikt om de verbinding te authenticeren, dus zelfs indien gecompromitteerd, blijven de gegevens veilig gecodeerd met behulp van AES. Een aanvaller kan echter de vooraf gedeelde sleutel gebruiken om zich voor te doen als een VPN-server. Het kan dan versleuteld verkeer afluisteren of zelfs kwaadaardige gegevens in de verbinding injecteren.

Opmerking Icon2 01 150X150

Samenvatting

Ondanks enkele overwegend theoretische problemen, wordt L2TP / IPsec over het algemeen als veilig beschouwd als openlijk gepubliceerde vooraf gedeelde sleutels niet worden gebruikt. De ingebouwde compatibiliteit met een groot aantal apparaten kan het een zeer goede keuze maken.

PROS

  • Heel veilig
  • Volledig geïntegreerd in Windows
  • Ondersteuning van Microsoft
  • Kan de meeste firewalls omzeilen

CONS

  • Eigen standaard eigendom van Microsoft

Wat is SSTP?

SSTP is een type codering die SSL 3.0 gebruikt en vergelijkbare voordelen biedt als OpenVPN. Dit omvat de mogelijkheid om TCP-poort 443 te gebruiken om censuur te ontwijken. Strakke integratie met Windows kan het gemakkelijker te gebruiken en stabieler maken dan OpenVPN op dat platform.

In tegenstelling tot OpenVPN is SSTP echter een standaard die eigendom is van Microsoft. Dit betekent dat de code niet openbaar kan worden bekeken. De geschiedenis van Microsoft van samenwerking met de NSA en speculatie over mogelijke backdoors ingebouwd in het Windows-besturingssysteem wekken geen vertrouwen in de standaard.

Secure Socket Tunneling Protocol (SSTP) is geïntroduceerd door Microsoft in Windows Vista SP1. Hoewel het nu beschikbaar is voor Linux, en zelfs Mac OS X, is het nog steeds primair een alleen-Windows platform.

Een ander probleem is dat SSL v3.0 kwetsbaar is voor de zogenaamde POODLE-aanval en daarom niet wordt aanbevolen. Of dit probleem ook SSTP beïnvloedt, is onduidelijk, maar nogmaals, wekt nauwelijks vertrouwen.

Opmerking Icon2 01 150X150

Samenvatting

Op papier biedt SSTP veel van de voordelen van OpenVPN. Als een eigen Microsoft-standaard ondermijnt deze de geloofwaardigheid echter ernstig.

IKEv2

PROS

  • Snel
  • Stabiel - vooral wanneer u van netwerk wisselt of opnieuw verbinding maakt na een verbroken internetverbinding
  • Veilig (als AES wordt gebruikt)
  • Eenvoudig in te stellen (althans aan het einde van de gebruiker!)
  • Protocol wordt ondersteund op Blackberry-apparaten

CONS

  • Niet ondersteund op veel platforms
  • Het implementeren van IKEv2 aan de serverzijde is lastig, en dat kan tot problemen leiden
  • Vertrouw alleen open source-implementaties

Wat is IKEv2?

Internet Key Exchange versie 2 (IKEv2) is gezamenlijk ontwikkeld door Microsoft en Cisco. Het wordt native ondersteund door Windows 7+, Blackberry en iOS-apparaten. Dit is de reden waarom veel iOS VPN-services IKEv2 gebruiken in plaats van OpenVPN.

Onafhankelijk ontwikkelde compatibele versies van IKEv2 zijn ontwikkeld voor Linux en andere besturingssystemen. Veel van deze iteraties zijn open source. Zoals altijd stel ik voor op onze hoede te zijn voor alles wat door Microsoft is ontwikkeld. Open source-versies van IKEv2 zouden echter geen problemen moeten hebben.

IKEv2 is onderdeel van de IPsec-protocolsuite. Het zorgt voor veilig verkeer door het SA (Security Association) -attribuut binnen IPsec te overhandigen en verbetert IKEv1 op vele manieren. IKEv2 wordt daarom soms IKEv2 / IPsec genoemd. IKEv1 wordt daarentegen vaak eenvoudigweg aangeduid als IPsec.

Nagesynchroniseerde VPN-verbinding door Microsoft, IKEv2 is bijzonder goed in het automatisch herstellen van een VPN-verbinding wanneer gebruikers tijdelijk hun internetverbinding verliezen. Bijvoorbeeld bij het betreden of verlaten van een treintunnel.

Vanwege zijn ondersteuning voor het Mobility and Multihoming (MOBIKE) -protocol is IKEv2 ook zeer bestand tegen veranderende netwerken. Dit maakt IKEv2 een geweldige keuze voor gebruikers van mobiele telefoons die regelmatig schakelen tussen wifi en mobiele verbindingen thuis of die regelmatig schakelen tussen hotspots.

IKEv2 is niet zo gebruikelijk als L2TP / IPSec omdat het op veel minder platforms wordt ondersteund (hoewel deze situatie snel verandert). Het wordt echter beschouwd als minstens zo goed als, zo niet superieur aan, L2TP / IPsec in termen van beveiliging, prestaties (snelheid), stabiliteit en de mogelijkheid om een ​​verbinding tot stand te brengen (en opnieuw tot stand te brengen).

OpenVPN

PROS

  • Zeer veilig (als PFS wordt gebruikt)
  • Zeer configureerbaar
  • Open source
  • Kan firewalls omzeilen
  • Heeft software van derden nodig

Wat is OpenVPN?

OpenVPN is een open-source technologie die gebruik maakt van de OpenSSL-bibliotheek en TLS-protocollen, samen met een combinatie van andere technologieën, om een ​​sterke en betrouwbare VPN-oplossing te bieden. Het is nu het industriestandaard VPN-protocol dat wordt gebruikt door commerciële VPN-services - en dat is niet voor niets.

Een van de sterke punten van OpenVPN is dat het zeer configureerbaar is. Het wordt native door geen platform ondersteund, maar is op de meeste platforms beschikbaar via software van derden. Aangepaste OpenVPN-clients en -apps zijn vaak verkrijgbaar bij individuele VPN-providers, maar de belangrijkste open source-code wordt ontwikkeld door het OpenVPN-project.

Veel ontwikkelaars en bijdragers aan het OpenVPN-project werken ook voor OpenVPN Technologies Inc., dat toezicht houdt op het project.

OpenVPN werkt het beste op een UDP-poort, maar het kan worden ingesteld om op elke poort te worden uitgevoerd (zie opmerkingen later). Dit omvat TCP-poort 443, die wordt gebruikt door regulier HTTPS-verkeer. Het gebruik van OpenVPN via TCP-poort 443 maakt het moeilijk om VPN-verbindingen te onderscheiden van het soort beveiligde verbindingen dat wordt gebruikt door banken, e-mailservices en online retailers. Dit maakt OpenVPN zeer moeilijk te blokkeren.

Een ander voordeel van OpenVPN is dat de OpenSSL-bibliotheek die wordt gebruikt voor codering een aantal cijfers ondersteunt. In de praktijk worden echter alleen Blowfish en AES vaak gebruikt door commerciële VPN-services. Ik bespreek deze hieronder.

In het licht van informatie verkregen van Edward Snowden, lijkt het erop dat zolang Perfect Forward Secrecy wordt gebruikt, OpenVPN niet is aangetast of verzwakt door de NSA.

Een recente crowdsourced-audit van OpenVPN is nu voltooid, net als een andere die wordt gefinancierd door Private Internet Access. Er zijn geen ernstige kwetsbaarheden ontdekt die de privacy van gebruikers beïnvloeden. Er zijn een aantal kwetsbaarheden ontdekt die OpenVPN-servers mogelijk openstellen voor een Denial of Service-aanval (DoS), maar deze zijn hersteld in OpenVPN 2.4.2.

OpenVPN wordt meestal beschouwd als het veiligste VPN-protocol dat beschikbaar is en wordt breed ondersteund in de VPN-industrie. Ik zal daarom OpenVPN-codering hieronder in detail bespreken.

OpenVPN-codering

OpenVPN-codering bestaat uit twee delen - codering van gegevenskanalen en codering van besturingskanalen. Gegevenskanaalversleuteling wordt gebruikt om uw gegevens te beveiligen. Controle kanaalcodering beveiligt de verbinding tussen uw computer en de VPN-server.

Elke verdediging is slechts zo sterk als het zwakste punt, dus het is jammer dat sommige VPN-providers een veel sterkere codering op het ene kanaal gebruiken dan het andere (meestal sterker op het besturingskanaal).

Het is bijvoorbeeld niet ongewoon dat een VPN-service wordt geadverteerd als een AES-256-codering met RSA-4096-handshake-codering en SHA-512-hash-authenticatie. Dit klinkt erg indrukwekkend totdat je je realiseert dat het alleen verwijst naar codering van het besturingskanaal en niet naar het gegevenskanaal, dat is gecodeerd met louter Blowfish-128 met SHA1-hash-authenticatie. Dit gebeurt alleen om marketingredenen.

Als verschillende codering op de gegevens- en besturingskanalen wordt gebruikt, wordt de ware sterkte van de OpenVPN-verbinding gemeten door de zwakkere coderingssuite die wordt gebruikt.

Voor maximale beveiliging moeten zowel de gegevens- als het besturingskanaalcodering zo sterk mogelijk zijn. Hoe sterker de gebruikte codering, hoe langzamer de verbinding zal zijn, dat is de reden waarom sommige providers scripten op datakanaalcodering.

Codering van besturingskanalen wordt ook TLS-codering genoemd omdat TLS de technologie is die wordt gebruikt om veilig te onderhandelen over de verbinding tussen uw computer en de VPN-server. Dit is dezelfde technologie die door uw browser wordt gebruikt om veilig te onderhandelen over een verbinding met een HTTPS-gecodeerde website.

  • Besturingskanaalcodering bestaat uit een codering, handshake-codering en hash-authenticatie.
  • Datakanaalcodering bestaat uit een coderings- en hash-authenticatie.

VPN-providers gebruiken vaak hetzelfde coderingsniveau voor zowel besturings- als datakanalen. In onze beoordelingen en "verkeerslicht" -tabellen vermelden we ze alleen afzonderlijk als voor elk kanaal verschillende waarden worden gebruikt.

Als we stellen dat een provider een AES-256-codering gebruikt, betekent dit dat een AES-256-codering wordt gebruikt voor zowel de besturings- als datakanalen. *

(* Dit zou in ieder geval het geval moeten zijn. Sommige oudere beoordelingen voldoen niet aan onze huidige richtlijnen, maar deze moeten op tijd worden afgebouwd).

cijfers

OpenVPN kan een aantal cijfers met symmetrische sleutels gebruiken om gegevens op zowel besturings- als datakanalen te beveiligen. In de praktijk zijn Blowfish, AES en (zeer zelden) Camellia de enige die door commerciële VPN-providers worden gebruikt.

Blowfish

Blowfish-128 is het standaardcijfer dat wordt gebruikt door OpenVPN. Sleutelgroottes kunnen in theorie variëren van 32 bits tot 448 bits, maar Blowfish-128 is de enige versie die u waarschijnlijk in het wild zult tegenkomen.

Blowfish wordt vaak als veilig genoeg beschouwd voor informele doeleinden, maar heeft bekende zwakke punten. Het is gemaakt door de beroemde cryptograaf Bruce Schneier, die in 2007 zei: "Op dit moment ben ik echter verbaasd dat het nog steeds wordt gebruikt."

Naar onze mening is het gebruik van Blowfish-128 acceptabel als een tweede verdedigingslinie op het OpenVPN-datakanaal. Het moet echter niet als veilig worden beschouwd wanneer het op het besturingskanaal wordt gebruikt.

AES

AES is de VPN-brede "gouden standaard" symmetrische-sleutelcodering geworden. AES is NIST-gecertificeerd en wordt bijna universeel als zeer veilig beschouwd. AES-256 wordt door de Amerikaanse overheid gebruikt om 'veilige' gegevens te beschermen.

Het feit dat het een 128-bit blokgrootte heeft in plaats van de 64-bit blokgrootte van Blowfish, betekent ook dat het grotere bestanden (meer dan 4 GB) beter aankan dan Blowfish. Daarnaast profiteert de AES-instructieset van ingebouwde hardwareversnelling op de meeste platforms.

AES is meestal beschikbaar in 128-bit en 256-bit sleutelformaten (192-bit AES bestaat ook). AES-128 blijft veilig voor zover iedereen weet. Gezien wat we nu weten over de omvang van de aanval van de NSA op coderingsstandaarden, zijn de meeste experts het er echter over eens dat AES-256 een hogere beveiligingsmarge biedt.

Om er zeker van te zijn dat niemand dit onderwerp ooit te gemakkelijk vindt, is er enige discussie hierover. AES-128 heeft een sterker sleutelschema dan AES-256, waardoor sommige zeer vooraanstaande experts beweren dat AES-128 eigenlijk sterker is dan AES-256.

De algemene consensus is echter dat AES-256 sterker is.

Camelia

Camellia is een modern beveiligd cijfer en is minstens zo veilig en snel als AES. Het is beschikbaar in sleutelgroottes van 128, 192 en 256 bits. Dankzij NIST-certificering en het gebruik ervan door de Amerikaanse overheid wordt AES echter bijna altijd gebruikt in plaats van Camellia.

Maar zoals ik hieronder bespreek, zijn er redenen om NIST-gecertificeerde cijfers niet te vertrouwen. Het feit dat Camellia een niet-NIST-cijfer is, is de belangrijkste reden om het boven AES te kiezen. Deze optie is echter slechts zelden beschikbaar.

Het is ook vermeldenswaard dat Camellia lang niet zo goed is getest op zwakte als AES.

Handshake Encryption

Om veilig te kunnen onderhandelen over een verbinding tussen uw apparaat en een VPN-server, gebruikt OpenVPN een TLS-handshake. Hiermee kunnen de OpenVPN-client en VPN-server de geheime sleutels vaststellen waarmee ze communiceren.

Om deze handdruk te beschermen, gebruikt TLS meestal het openbare cryptosysteem RSA. Dit is een codering en een digitaal handtekeningalgoritme dat wordt gebruikt om TLS / SSL-certificaten te identificeren. Het kan echter ook een Diffie-Hellman- of ECDH-sleuteluitwisseling gebruiken.

RSA

RSA is een asymmetrisch coderingssysteem - een openbare sleutel wordt gebruikt om de gegevens te coderen, maar een andere persoonlijke sleutel wordt gebruikt om deze te decoderen. Het is de afgelopen 20 jaar de basis geweest voor beveiliging op internet.

Het is nu bekend dat RSA met een sleutellengte van 1024-bits (RSA-1024) of minder niet veilig is en vrijwel zeker door de NSA is gekraakt. Er is daarom een ​​gezamenlijke beweging geweest van internetbedrijven om weg te migreren van RSA-1024.

Helaas zijn we nog steeds van mening dat sommige VPN-services RSA-1024 blijven gebruiken om handshakes te beschermen. Dit is niet goed.

RSA-2048 en hoger wordt nog steeds als veilig beschouwd. RSA biedt op zichzelf geen Perfect Forward Secrecy (PFS). Dit kan echter worden geïmplementeerd door een Diffie-Hellman (DH) of Elliptische curve Diffie-Hellman (ECDH) sleuteluitwisseling in de coderingssuite op te nemen.

In dit geval doet de sterkte van de DH- of ECDH-sleutel er niet toe, omdat deze alleen wordt gebruikt om Perfect Forward Secrecy te bieden. De verbinding is beveiligd met behulp van RSA.

Omdat het verwarring kan veroorzaken, merk ik ook op dat het RSA-cryptosysteem niets te maken heeft met het in ongenade gevallen Amerikaanse technologiebedrijf RSA Security LLC. Dit bedrijf heeft opzettelijk zijn vlaggenschip BSAFE-coderingsproducten verzwakt nadat het door de NSA $ 10 miljoen was omgekocht.

Diffie-Hellman en ECDH

Een alternatieve (rivaliserende) handdrukcodering die soms door OpenVPN wordt gebruikt, is de cryptografische sleuteluitwisseling van Diffie-Hellman (DH). Dit heeft meestal een sleutellengte van 2048 bits of 4096 bits. Merk op dat alles minder dan DH-2048 moet worden vermeden vanwege gevoeligheid voor de logjam-aanval.

Het belangrijkste voordeel van een Diffie-Hellman-handshake ten opzichte van RSA is dat het native Perfect Forward Secrecy biedt. Zoals reeds opgemerkt, bereikt het simpelweg toevoegen van een DH-sleuteluitwisseling aan een RSA-handshake een soortgelijk einde.

Diffie-Hellman heeft enorme controverse veroorzaakt over het hergebruik van een beperkt aantal priemgetallen. Dit maakt het kwetsbaar om te worden gekraakt door een krachtige tegenstander, zoals de NSA. Diffie-Hellman alleen zorgt daarom niet voor veilige handshake-encryptie. Het is echter prima als het wordt gebruikt als onderdeel van een RSA-coderingssuite.

Elliptische curve Diffie-Hellman (ECDH) is een nieuwere vorm van cryptografie die niet kwetsbaar is voor deze aanval. Dit komt omdat het de eigenschappen van een bepaald type algebraïsche curve gebruikt in plaats van grote priemgetallen om verbindingen te coderen.

ECDH kan worden gebruikt als onderdeel van een RSA-handshake om Perfect Forward Secrecy te bieden, of kan een handshake zelf veilig coderen (met een ECDSA-handtekening). Dit biedt ook PFS.

ECDH-sleutellengte begint bij 384-bits. Dit wordt als veilig beschouwd, maar wanneer het op zichzelf wordt gebruikt om een ​​TLS-handshake te beveiligen, hoe langer hoe beter (in termen van beveiliging, hoe dan ook).

SHA Hash-authenticatie

Dit wordt ook wel data-authenticatie of hash-bericht authenticatiecode (HMAC) genoemd.

Secure Hash Algorithm (SHA) is een cryptografische hashfunctie die (onder andere) wordt gebruikt om gegevens en SSL / TLS-verbindingen te verifiëren. Dit omvat OpenVPN-verbindingen.

Het maakt een unieke vingerafdruk van een geldig TLS-certificaat, dat door elke OpenVPN-client kan worden gevalideerd. Zelfs de kleinste verandering is detecteerbaar. Als er met het certificaat is geknoeid, wordt dit onmiddellijk gedetecteerd en wordt de verbinding geweigerd.

Dit is belangrijk bij het voorkomen van een Man-in-the-middle (MitM) -aanval, waarbij een tegenstander probeert uw OpenVPN-verbinding om te leiden naar een van zijn eigen servers in plaats van uw VPN-provider. Dit kan bijvoorbeeld door uw router te hacken.

Als een tegenstander de hash van het echte TLS-certificaat van uw provider kan kraken, kan deze de hash omdraaien om een ​​vervalst certificaat te maken. Uw Open VPN-software zou de verbinding dan authentiek maken.

Is SHA veilig?

Wanneer het wordt gebruikt om HTTPS-websites te beschermen, is SHA-1 defect. Dit is al enige tijd bekend. SHA-1-websites zijn nog steeds te vinden, maar worden afgebouwd. De meeste browsers geven nu een waarschuwing wanneer u probeert verbinding te maken met een website die is beveiligd met SHA-1.

SHA-2 en SHA-3 hash-functies worden nu in plaats daarvan aanbevolen en zijn veilig. SHA-2 omvat SHA-256, SHA-384 en SHA-512. Echter…

OpenVPN gebruikt alleen SHA voor HMAC. Ik denk niet dat het nuttig is om hier te veel in te gaan, maar SHA-hash-authenticatie is onderdeel van het HMAC-algoritme. HMAC aanvallen ingebed met SHA-1 is veel moeilijker dan alleen de SHA-1 hashfunctie zelf aanvallen.

Met andere woorden, HMAC SHA-1 zoals gebruikt door OpenVPN wordt als veilig beschouwd en er is wiskundig bewijs hiervan. Natuurlijk zijn HMAC SHA-2 en HMAC SHA-3 nog veiliger! De recente OpenVPN-audit erkent inderdaad dat HMAC SHA-1 veilig is, maar beveelt in plaats daarvan aan om over te stappen op HMAC SHA-2 of HMAC SHA-3.

Notes

NIST

AES, RSA, SHA-1 en SHA-2 zijn allemaal ontwikkeld en / of gecertificeerd door het National Institute of Standards and Technology (NIST) van de Verenigde Staten. Dit is een instantie die naar eigen zeggen nauw samenwerkt met de NSA bij de ontwikkeling van haar cijfers.

Gezien wat we nu weten van de systematische inspanningen van de NSA om backdoors te verzwakken of in internationale coderingsstandaarden te integreren, is er alle reden om de integriteit van NIST-algoritmen in twijfel te trekken.

NIST weerlegt dergelijke aantijgingen uiteraard sterk:

"NIST zou een cryptografische standaard niet opzettelijk verzwakken."

Het heeft ook publieke participatie uitgenodigd voor een aantal aankomende voorgestelde coderingsstandaarden, in een poging om het vertrouwen van het publiek te vergroten.

De New York Times beschuldigde de NSA echter van het omzeilen van door NIST goedgekeurde coderingsstandaarden door ofwel niet-detecteerbare achterdeuren te introduceren of het openbare ontwikkelingsproces te ondermijnen om de algoritmen te verzwakken.

Dit wantrouwen werd verder versterkt toen RSA Security (een divisie van EMC) klanten privé vertelde om te stoppen met het gebruik van een coderingsalgoritme dat naar verluidt een door de NSA geconstrueerde fout bevat. Dit algoritme was ook goedgekeurd door NIST.

Bovendien is Dual_EC_DRBG (Dual Elliptic Curve Deterministic Random Bit Generator) een coderingsstandaard ontwikkeld door NIST. Het is bekend dat het al jaren onzeker is.

In 2006 merkte de Technische Universiteit Eindhoven in Nederland op dat een aanval hiertegen eenvoudig genoeg was om te starten op 'een gewone pc'. Ingenieurs van Microsoft hebben ook een vermoedelijke achterdeur in het algoritme gemarkeerd.

Ondanks deze zorgen, waar NIST leidt, volgt de industrie. Microsoft, Cisco, Symantec en RSA nemen het algoritme allemaal op in de cryptografische bibliotheken van hun product. Dit komt grotendeels omdat naleving van NIST-normen een voorwaarde is voor het verkrijgen van overheidscontracten van de VS..

NIST-gecertificeerde cryptografische standaarden zijn wereldwijd vrijwel overal aanwezig, in alle sectoren van de industrie en het bedrijfsleven die afhankelijk zijn van privacy. Dit maakt de hele situatie nogal afkoelend.

Misschien juist omdat zoveel afhankelijk is van deze normen, zijn cryptografie-experts niet bereid om het probleem onder ogen te zien.

AES-CBC versus AES-GCM

Tot voor kort was AES-CBC (Cipher Block Chaining) de enige AES-codering die u waarschijnlijk in de VPN-wereld zou tegenkomen. Dit verwijst naar de blokcoderingsmodus, een complex onderwerp dat hier niet echt de moeite waard is. Hoewel CBC theoretisch enkele kwetsbaarheden kan hebben, is de algemene consensus dat CBC veilig is. CBC wordt inderdaad aanbevolen in de OpenVPN-handleiding.

OpenVPN ondersteunt nu ook AES-GCM (Galios / Counter-modus).

  • GCM biedt authenticatie, waardoor een HMAC SHA-hashfunctie niet meer nodig is.
  • Het is ook iets sneller dan CBC omdat het hardwareversnelling gebruikt (door threading naar meerdere processorcores).

AES-CBC blijft de meest voorkomende modus voor algemeen gebruik, maar we beginnen nu AES-GCM tegen te komen "in het wild." Gezien de voordelen van GCM, zal deze trend waarschijnlijk alleen maar doorzetten. Vanuit cryptografisch perspectief zijn tho9ugh, zowel AES-CBC als AES-GCM erg veilig.

OpenVPN UDP versus OpenVPN TCP

OpenVPN kan worden uitgevoerd via TCP (Transmission Control Protocol) of UDP (User Datagram Protocol).

  • TCP = betrouwbaar. Telkens wanneer een computer een netwerkpakket verzendt met TCP, wacht het op bevestiging dat het pakket is aangekomen voordat het volgende pakket wordt verzonden. Als er geen bevestiging wordt ontvangen, wordt het pakket opnieuw verzonden. Dit staat bekend als foutcorrectie. Er is een "gegarandeerde levering" van alle gegevens, maar het kan behoorlijk langzaam zijn.
  • UDP = snel. Met UDP wordt een dergelijke foutcorrectie niet uitgevoerd. Pakketten worden eenvoudig verzonden en ontvangen zonder bevestiging of nieuwe pogingen. Dit maakt UDP veel sneller dan TCP, maar minder betrouwbaar.

Als ik de keuze krijg, raad ik aan het snellere UDP-protocol te gebruiken, tenzij je verbindingsproblemen ervaart. Dit is de standaardstrategie die door de meeste VPN-providers wordt gebruikt.

Versla censuur met OpenVPN op TCP-poort 443

Een van de grote voordelen van OpenVPN is dat het via elke poort kan worden gebruikt, inclusief TCP-poort 443. Dit is de poort die wordt gebruikt door HTTPS, het gecodeerde protocol dat alle beveiligde websites beveiligt.

Zonder HTTPS zou geen enkele vorm van online handel, zoals winkelen of bankieren, mogelijk zijn. Het is daarom zeer zeldzaam dat deze poort wordt geblokkeerd.

Als bonus kan VPN-verkeer op TCP-poort 443 op dezelfde manier binnen de TLS-codering worden gerouteerd als door HTTPS wordt gebruikt. Dit maakt het veel moeilijker te herkennen met behulp van geavanceerde Deep Packet Inspection-technieken. TCP-poort 443 is daarom de favoriete poort voor het ontwijken van VPN-blokken.

Veel VPN-providers bieden de mogelijkheid om het poortnummer dat wordt gebruikt door OpenVPN te wijzigen met behulp van hun aangepaste software.

Zelfs als de uwe dat niet doet, ondersteunen veel VPN-providers OpenVPN via TCP-poort 443 op serverniveau. U kunt er naar overschakelen met een eenvoudige bewerking van uw OpenVPN-configuratiebestand (.ovpn). Het is daarom de moeite waard om uw VPN-provider hiernaar te vragen.

Het is vermeldenswaard dat netwerkingenieurs deze tactiek niet leuk vinden, omdat TCP over TCP erg inefficiënt is. Als het gaat om het verslaan van censuur, werkt het echter vaak.

SSTP gebruikt standaard TCP-poort 443.

samenvattingen

VPN-protocollen

  • PPTP is erg onzeker en moet worden vermeden. Hoewel het instellingsgemak en de platformonafhankelijke compatibiliteit aantrekkelijk zijn, heeft L2TP / IPsec dezelfde voordelen en is het veel veiliger.
  • L2TP / IPsec is een goede VPN-oplossing voor niet-kritisch gebruik. Dit geldt met name op oudere apparaten die geen OpenVPN ondersteunen. Het is echter ernstig aangetast door de NSA.
  • SSTP biedt de meeste voordelen van OpenVPN, maar is primair alleen een Windows-protocol. Dit betekent wel dat het beter is geïntegreerd in het besturingssysteem, maar het wordt slecht ondersteund door VPN-providers dankzij deze beperking. Daarnaast betekent het eigen karakter en het feit dat het is gemaakt door Microsoft dat ik het bijvoorbeeld niet vertrouw.
  • IKEv2 is een zeer goed (veilig en snel) protocol. Vooral mobiele gebruikers kunnen het zelfs verkiezen boven OpenVPN vanwege de verbeterde mogelijkheid om opnieuw verbinding te maken wanneer een internetverbinding wordt onderbroken. Voor Blackberry-gebruikers is dit vrijwel de enige beschikbare optie. Gebruik waar mogelijk open-source versies.
  • OpenVPN is het aanbevolen VPN-protocol onder de meeste omstandigheden. Het is snel, betrouwbaar, veilig en open source. Het heeft op zichzelf geen echte nadelen, maar om echt veilig te zijn, is het belangrijk dat het goed wordt geïmplementeerd. Dit betekent een sterke codering met Perfect Forward Secrecy.

OpenVPN-codering

Als het gaat om codering, zit de duivel in de details. Het is gebruikelijk om VPN-providers te zien zeggen dat ze "ultrasterke 256-bit" AES OpenVPN-codering gebruiken, maar dit zegt ons in werkelijkheid niet veel. AES-256 is inderdaad een sterk cijfer, maar als andere aspecten van de gebruikte coderingssuite zwak zijn, zijn uw gegevens niet veilig.

  • Cijfer - dit beschermt uw werkelijke gegevens. AES-256 is nu de industriestandaard en wordt aanbevolen.
  • Handdruk - dit beveiligt uw verbinding met de VPN-server. RSA-2048 + of ECDH-384 + zijn veilig. Belangrijk is dat RSA-1024 en Diffie-Hellman handdrukken zijn niet.
  • Hash-authenticatie - maakt een unieke vingerafdruk, die wordt gebruikt om gegevens en TLS-certificaten te valideren (dat wil zeggen om te controleren of de server waarmee u verbinding maakt echt degene is waarmee u denkt verbinding te maken). HMAC SHA-1 is absoluut prima, maar HMAC SHA-2 (SHA-256, SHA-384 en SHA-512) en HMAC SHA-3 zijn nog veiliger! Houd er rekening mee dat hash-authenticatie niet vereist is als de AES-GCM-codering wordt gebruikt.
  • Perfect Forward Secrecy (PFS) - dit zorgt ervoor dat voor elke sessie nieuwe coderingssleutels worden gemaakt. OpenVPN moet niet als veilig worden beschouwd, tenzij PFS is geïmplementeerd. Dit kan worden gedaan door een Diffie-Hellman- of ECDH-sleuteluitwisseling op te nemen in een RSA-handshake of een DH- of ECDH-handshake.
  • Versleuteling is slechts zo veilig als het zwakste punt. Dit betekent dat de coderingsinstellingen sterk moeten zijn op zowel de gegevens- als de besturingskanalen.
  • Het gebruik van hogere bitlengten voor cijfers en sleutels is bijna altijd veiliger, maar dit kost snelheid.

OpenVPN zal naar believen onderhandelen over cijfers tussen client en server. Tenzij zeer specifieke parameters zijn gedefinieerd, kan OpenVPN standaard worden ingesteld op zwakke instellingen. OpenVPN zal minimaal standaard Blowfish-128-codering, RSA-1024-handshake zonder PFS en HMAC SHA-1-hash-authenticatie gebruiken.

Conclusie

Hopelijk heb je nu een beter begrip van wat zorgt voor een veilige VPN-verbinding. Als het gaat om het correct configureren van een VPN, is codering echter slechts de helft van het verhaal. De andere helft zorgt ervoor dat er geen verkeer uw computer binnenkomt of verlaat buiten de VPN-verbinding.

Raadpleeg onze complete gids voor IP-lekken voor meer informatie.

Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me