Een virtueel particulier netwerk is een service waarmee u verbinding kunt maken met servers overal ter wereld, waarbij u kunt doen alsof u ergens bent waar u niet bent, terwijl uw verbinding wordt beveiligd. Hoe werkt VPN-codering echter? Zo houdt het uw verbinding veilig.
VPN-protocollen
Om VPN-codering te begrijpen, moeten we eerst VPN-protocollen doornemen. Dit zijn programma’s die bepalen hoe een VPN communiceert met andere entiteiten op het netwerk, zoals servers of sites. Het gebruikt de term ‘protocol’ in dezelfde betekenis als ‘een reeks regels’.
Er zijn verschillende protocollen waaruit u kunt kiezen, waaronder enkele die door VPN-providers zelf zijn ontwikkeld, zoals NordVPN’s Nordlynx of ExpressVPN’s Lightway. De meest betrouwbare die niet gebonden zijn aan een bepaalde VPN zijn waarschijnlijk de beproefde OpenVPN en de relatieve nieuwkomer WireGuard.
De keuze van het protocol bepaalt een aantal zaken: zo is WireGuard een stuk sneller dan de meeste andere protocollen, terwijl OpenVPN als een van de veiligste wordt beschouwd. Dit komt door een aantal factoren, maar in dit geval is het interessant omdat het protocol ook bepaalt welk type codering u kunt gebruiken op uw VPN-tunnel.
De basisprincipes van versleuteling
Wanneer u informatie versleutelt, wordt deze omgezet in wartaal door een algoritme te gebruiken dat de informatie meestal meer dan eens versleutelt. Als kind heb je bijvoorbeeld waarschijnlijk een geheim bericht gemaakt door de letters van het alfabet te vervangen door cijfers, zodat de naam van je vriend Al 1-12 werd.
Een algoritme doet dit, maar gaat nog een paar duizend stappen verder en vervangt letters door symbolen die vervolgens steeds weer opnieuw worden vervangen. De enige manier om deze rommel te ontsluiten en weer leesbaar te maken, is door een zogenaamde sleutel te gebruiken.
In dit geval is een “sleutel” een stukje data dat versleutelde informatie kan ontgrendelen. Het is verleidelijk om het als een wachtwoord te beschouwen, maar het is meer dan dat: het is meestal een lange reeks letters, cijfers en symbolen die aan het algoritme laten zien dat je bevoegd bent om de informatie te decoderen.
Symmetrische versleuteling
Nu de informatie zelf veilig is, is er natuurlijk de vraag wat je met de sleutel doet, want dat is de zwakte van elke codering: als je de sleutel hebt, kun je ontgrendelen wat het ook is dat het beschermt. De eenvoudigste manier om met sleutels om te gaan is symmetrische codering, ook wel gedeelde sleutelcodering genoemd. In het geval van jou en je vriend Al van eerder, vertelde je Al gewoon hoe het systeem werkte, wat betekende dat jullie allebei de sleutel hadden, hoe duidelijk het ook was.
In complexere systemen werkt symmetrische codering min of meer op dezelfde manier: de sleutel die wordt gebruikt om informatie te coderen, is in het bezit van beide partijen. In het geval van een VPN versleutelt uw app of client uw gegevens met een sleutel die ook wordt bewaard door de VPN-server waarmee u verbinding hebt gemaakt, zodat deze de informatie eenvoudig kan ontsleutelen zodra deze binnenkomt.
AES en Blowfish
De meest voorkomende soorten symmetrische codering, cijfers genaamd, zijn Advanced Encryption Standard (AES) en Blowfish. AES is ontwikkeld door de Amerikaanse overheid en is de codering van militaire kwaliteit waar veel bedrijven graag over opscheppen. Blowfish is ontwikkeld als een open-sourcecijfer, maar er is veel discussie over hoe veilig het is.
Het maakt niet uit welke je gebruikt, de sterkte ervan hangt sterk af van het aantal bits dat het heeft, in wezen hoe lang het codefragment is dat als sleutel dient. Hoe langer hoe beter, dus AES-256 (dus 256 bits) is veiliger dan AES-128. AES-256 is waarschijnlijk de meest voorkomende en ook veilige variant, dus we raden je aan om je daar in de meeste gevallen aan te houden.
Sleutels verzenden
Natuurlijk zit er een duidelijke fout in al het bovenstaande: als beide partijen in de uitwisseling allebei de onbeveiligde sleutel hebben, kan een slimme operator de sleutel op de een of andere manier onderscheppen en de informatie vervolgens voor zichzelf decoderen. Er zijn verschillende manieren om dit te doen, zoals het nabootsen van een tussenliggend netwerkknooppunt of andere vormen van interceptie.
Om dit te voorkomen, moet u de verzonden gedeelde sleutels op de een of andere manier versleutelen. Nu zou je dat kunnen doen door nog meer gedeelde sleutels te gebruiken, maar dat zou alleen maar een stap toevoegen voor iedereen die meeluistert. Het is veel beter om in plaats daarvan een nieuw soort cijfer te introduceren, met behulp van openbare sleutelcodering.
“Publieke sleutel” is een verwarrende term, omdat “openbaar” en “veilig” eigenlijk antoniemen zijn. De openbare sleutel is echter slechts de helft van de vergelijking. Waar in een gedeeld sleutelsysteem zowel de zender als de ontvanger dezelfde sleutels hebben, is in een openbaar sleutelsysteem alleen de helft van de afzender openbaar, terwijl die van de ontvanger geheim is en alleen aan hen bekend is.
Dit is eigenlijk een ingenieuze manier om het probleem op te lossen: terwijl de eigenlijke gegevens worden verzonden met gedeelde sleutels, die geheim zijn maar gemakkelijk te onderscheppen, verzendt u de sleutels zelf met behulp van een open systeem dat aan de kant van de ontvanger is beschermd. Op deze manier kunnen gegevens min of meer vrij worden verzonden, maar zonder interferentie of rondsnuffelen.
Beveiliging van de transportlaag
De manier waarop de distributie en controle van openbare sleutels werkt, is door middel van certificering, waarbij een derde partij in feite voor u vaststelt dat de verzonden sleutel bonafide is. De meest gebruikelijke manier om dit te doen is door gebruik te maken van het Transport Security Layer-protocol, een manier waarop computers veilig met elkaar communiceren op internet.
TLS wordt in allerlei toepassingen gebruikt: vaak wanneer u zich aanmeldt bij een website of andere dienst, wordt uw wachtwoord dubbel gecontroleerd via TLS. TLS zelf gebruikt ook codering om informatie te beveiligen, vaak met behulp van een eenvoudiger coderingscijfer dat RSA wordt genoemd.
RSA-ketens zijn veel langer (meestal in het 1024-bits bereik of zelfs langer) dan die gebruikt door AES of Blowfish, maar omdat het informatie niet vaak versleutelt, wordt het niet als veilig beschouwd. Als zodanig kan het beter worden gebruikt voor het verzenden van sleutels via internet, omdat het sneller ontsleutelt omdat het eenvoudiger is, maar het kan waarschijnlijk het beste niet worden gebruikt voor het daadwerkelijke VPN-verkeer.
Er een hasj van maken
Naast RSA heeft TLS nog een truc in petto, namelijk hashen. Hashing is in dit geval een extra vorm van controle of een opvraagverzoek voor een gedeelde sleutel legitiem is. Het werkt als een failsafe voor het geval een aanvaller erachter komt hoe hij een certificaat kan vervalsen.
Er zijn verschillende soorten hash-algoritmen: de meest gebruikte is SHA, meer specifiek SHA-2. Er zijn echter verschillende subtypen van dit cijfer, dus u zult vaak nomenclatuur zoals SHA-256 of SHA-512 tegenkomen.
Aangezien de hashing-stap een vorm van dubbele controle is of alles in orde is voordat wordt overgegaan tot decodering, zal niet elke VPN deze gebruiken. De meeste protocollen staan ​​dit echter toe en veel providers zullen u trots vertellen dat ze het gebruiken.
Lagen op lagen
Het eindresultaat is een soep van hashes, algoritmen en sleutels die waarschijnlijk de geest verbijsteren, maar het resultaat is dat een goede VPN jezelf een paar keer zal beschermen: eerst wordt de daadwerkelijke verbinding versleuteld met AES of Blowfish, en dan de sleutels die deze codering ontgrendelen, zijn opnieuw beveiligd, vaak meer dan eens.
Alle beste VPN’s die er zijn, volgen deze blauwdruk en we raden u aan om te controleren of de VPN van uw keuze dit ook doet. Vaak bieden VPN’s deze informatie aan in hun promotiemateriaal, zodat u zelf kunt zien hoe het werkt.