SAMENVATTING: VPN’s gebruiken versleutelingscodes en -protocollen om je webverkeer om te zetten in onleesbare code en zo je surfactiviteiten te beschermen tegen toezicht door derden. Een betrouwbare VPN zou altijd gebruik moeten maken van sterke versleuteling, zoals AES-256 of ChaCha20, om je gegevens te beveiligen.
Een VPN-tunnel is eenvoudigweg een beveiligd kanaal dat tot stand wordt gebracht tussen jouw apparaat en de VPN-server, waarmee een veilige, privéroute over het openbare internet wordt gecreëerd.
Het wordt een tunnel genoemd omdat je oorspronkelijke verkeer wordt versleuteld en verpakt binnen een laag onversleuteld verkeer.
Zie het als het plaatsen van een verzegelde envelop in een andere envelop met een ander adres, waardoor je oorspronkelijke bericht wordt verborgen en onleesbaar wordt voor iedereen die het zou kunnen onderscheppen.
Dit proces, dat inkapseling wordt genoemd, wordt uitgevoerd door tunnelprotocollen.
VPN-versleutelingscodes
Versleuteling zet gegevens met onbewerkte tekst om in een geheime code, waardoor ze onleesbaar worden voor iedereen die niet over de benodigde sleutel beschikt om ze te ontsleutelen.
VPN’s gebruiken versleuteling om je surfactiviteiten tussen je apparaat en de VPN-server te verbergen en je zo te beschermen tegen verschillende vormen van toezicht.
VPN’s gebruiken versleutelingscodes om je online activiteiten om te zetten in onleesbare code. Een code is een wiskundig algoritme (d.w.z. een reeks regels) dat gegevens versleutelt en ontsleutelt, vaak gekoppeld aan een specifieke sleutellengte.
De sleutel is een reeks tekens die wordt gebruikt om de versleutelde gegevens te veranderen. Alleen iemand met dezelfde sleutel kan de gegevens ontsleutelen.
Langere sleutellengtes bieden over het algemeen meer veiligheid. AES-256 wordt bijvoorbeeld als veiliger beschouwd dan AES-128.
Sommige VPN-protocollen gebruiken statische sleutels, ontworpen voor langdurig gebruik, terwijl andere efemere sleutels gebruiken die na een enkele sessie of transactie verlopen.
Zo werken versleutelingscodes:
- Het algoritme gebruikt een sleutel om de gegevens te versleutelen voordat ze worden verzonden.
- Dezelfde of een verwante sleutel wordt gebruikt om de gegevens aan de ontvangende kant te ontsleutelen.
- Alleen degenen met de juiste sleutel kunnen de informatie ontsleutelen en lezen.
De versleuteling die wordt gebruikt door een VPN wordt vaak bepaald door de mate waarin de ontwikkelaars veiligheid belangrijker vinden dan prestaties, omdat sterkere versleutelingen vaak meer rekenkracht vereisen.
Na verloop van tijd komen er ook nieuwere versleutelingen beschikbaar die worden gebruikt door diensten van hogere kwaliteit.
De meest gebruikte algoritmen in VPN-diensten zijn:
- Advanced Encryption Standard (AES)
- Gouden standaard voor online encryptie
- Beschikbaar met 128-bits en 256-bits sleutellengtes
- AES-256 heeft de voorkeur voor betere bescherming
- Wordt beschouwd als kwantum-bestendig
- Blowfish
- Ontworpen in 1993, grotendeels vervangen door AES-256
- 128-bits sleutellengte (32 tot 448 bits mogelijk)
- Heeft bekende kwetsbaarheden
- Wordt gebruikt als noodoplossing voor AES-256
- ChaCha20
- Nieuwer algoritme wint aan populariteit
- 256-bits sleutellengte
- Vergelijkbare beveiliging als AES-256
- Snellere prestaties, vooral op mobiele apparaten
- Camellia
- Ontwikkeld in 2000
- Beveiliging en snelheid vergelijkbaar met AES
- Niet gecertificeerd door NIST
- Beperkt beschikbaar in VPN-diensten
Versleutelingsmodi bepalen hoe algoritmen zoals AES gegevens versleutelen. Ze zijn cruciaal voor de beveiliging van VPN’s en beïnvloeden zowel de privacy als de prestaties. Hier zijn de meest gebruikte modi in VPN’s:
- CBC (Cipher Block Chaining)
- Traditionele modus
- Creëert keten van afhankelijke blokken
- Kan langzamer zijn dan nieuwere modi
- Vereist extra beveiligingsmaatregelen
- GCM (Galois/Counter Mode)
- Biedt encryptie en authenticatie
- Sneller dan CBC
- Wordt als zeer veilig beschouwd
- Vaak gebruikt in moderne VPN’s
- CTR (Counter)
- Verandert blokalgoritme in streamalgoritme
- Snel en staat parallelle verwerking toe
- Biedt alleen geen authenticatie
- Gebruikt door ChaCha20
- OCB (Offset Codebook Mode)
- Biedt geauthenticeerde versleuteling in één keer
- Zeer efficiënt
- Beperkte toepassing vanwege patenten
Andere modi dienen het liefst te worden vermeden bij het gebruik van VPN’s. In het bijzonder is ECB (Electronic Codebook) te simpel om als veilig te worden beschouwd. CFB (Cipher Feedback) en OFB (Output Feedback) zijn beide kwetsbaar voor verkeerde configuraties vanwege hun complexiteit en worden ook als verouderd beschouwd. Daarnaast moet elke modus zonder integriteitscontroles eveneens worden vermeden, tenzij deze wordt gecombineerd met een apart authenticatiemechanisme.
De meeste VPN’s van topklasse gebruiken nu de GCM-modus met AES of de ChaCha20-Poly1305 combinatie, omdat deze een goede balans bieden tussen beveiliging en prestaties. Bij het beoordelen van VPN’s kijken we naar deze moderne, geauthenticeerde versleutelingsmodi.
VPN-protocollen
VPN-protocollen zijn de sets regels en processen die worden gebruikt om beveiligde verbindingen tussen je apparaat en de VPN-server tot stand te brengen.
Ze bepalen hoe de VPN-tunnel wordt gevormd en beheerd, terwijl versleutelingscodes de gegevens binnen de tunnel beveiligen.
Elk protocol biedt een unieke balans tussen snelheid, veiligheid en compatibiliteit. De meeste VPN-diensten zullen standaard een bepaald protocol gebruiken, maar je kunt het wijzigen in de instellingen van de app.
Gebruikelijke VPN-protocollen:
- OpenVPN: Open-source, zeer veilig, breed compatibel en zeer configureerbaar.
- WireGuard: Zeer snel en efficiënt. Relatief nieuw, maar wordt al snel overgenomen.
- IKEv2/IPsec: Goed voor mobiel dankzij snelle herverbinding, maar closed-source en mogelijk gecompromitteerd.
- SoftEther: Snel, veilig, omzeilt censuur, maar niet goed ondersteund.
- L2TP/IPsec: Langzamer, ook mogelijk gecompromitteerd.
- SSTP: Goed met firewalls, maar closed-source en mogelijk kwetsbaar.
- PPTP: Verouderd en onveilig, te vermijden.
Voor een gedetailleerde vergelijking van VPN-protocollen, zie onze VPN-protocollengids.
VPN-handshakes
VPN-handshakes zijn cruciaal voor het initiëren van veilige verbindingen. Dit proces omvat:
- Authenticatie: Het verifiëren van de identiteit van zowel de VPN-client als de server.
- Sleuteluitwisseling: Veilig delen van encryptiesleutels voor de sessie.
- Onderhandeling over parameters: Instemmen met communicatieregels en coderingssuites.
Tijdens een VPN-handshake wisselen je apparaat en de VPN-server informatie uit om een beveiligd kanaal tot stand te brengen. Deze uitwisseling resulteert in een gedeelde geheime sleutel die wordt gebruikt voor het versleutelen en ontsleutelen van gegevens tijdens de VPN-sessie.
VPN-handshakes gebruiken meestal het RSA (Rivest-Shamir-Adleman) algoritme, dat al twee decennia de basis voor internetbeveiliging vormt. De sleutellengte is echter cruciaal.
Voor adequate beveiliging gebruik je VPN-diensten die RSA-2048 of RSA-4096 implementeren. RSA-1024 wordt niet langer als veilig beschouwd vanwege de vooruitgang in rekenkracht.
Hoewel het handshake-proces doorgaans als veilig wordt beschouwd, genereert het een ‘hoofdsleutel’ die, indien gecompromitteerd, in staat kan zijn om alle sessies op die specifieke server te ontsleutelen.
In zo’n scenario kan een aanvaller de VPN-server hacken en toegang krijgen tot alle gegevens die door de VPN-tunnel stromen.
Om dit risico te beperken, raden we aan om VPN-diensten met Perfect Forward Secrecy te gebruiken.
Perfect Forward Secrecy
Diagram dat uitlegt hoe Perfect Forward Secrecy werkt.
Perfect Forward Secrecy (PFS) is een essentiële beveiligingsfunctie in moderne VPN-protocollen. Het gebruikt Diffie-Hellman (DH) of Elliptic Curve Diffie-Hellman (ECDH) algoritmen om unieke en tijdelijke sessiesleutels te genereren.
Perfect Forward Secrecy zorgt ervoor dat versleutelingscodes nooit worden uitgewisseld over de verbinding.
De belangrijkste voordelen van PFS zijn:
- Onafhankelijke sleutelgeneratie: Zowel de VPN-server als de client derivatief genereren onafhankelijk dezelfde coderingssleutel zonder deze daadwerkelijk uit te wisselen.
- Sessie-isolatie: Elke verbinding gebruikt een unieke sleutel, waardoor de potentiële schade van een enkele gecompromitteerde sessie wordt beperkt.
- Tijdelijke beveiliging: Sleutels zijn tijdelijk en worden na gebruik weggegooid, waardoor ze in de toekomst niet meer ontcijferd kunnen worden.
Hoewel RSA cruciaal is voor authenticatie, kan het alleen geen PFS bieden. Om PFS te implementeren is het nodig om DH of ECDH in de coderingssuite op te nemen. ECDH biedt robuuste beveiliging voor handshakes, terwijl DH alleen samen met andere maatregelen gebruikt moet worden vanwege potentiële kwetsbaarheden.
OpenVPN en WireGuard, onze aanbevolen VPN-protocollen, ondersteunen beide Perfect Forward Secrecy.
Hash-authenticatie
Secure Hash Algoritmen (SHA) zijn van cruciaal belang voor de beveiliging van VPN’s door:
- De integriteit van gegevens tijdens verzending te verifiëren.
- De authenticiteit van de client-server verbindingen te waarborgen.
- Ongemachtigde gegevensmanipulatie te voorkomen.
SHA’s gebruiken een hash-functie om brongegevens om te zetten in een tekenreeks met een vaste lengte, de zogenaamde “hash-waarde”. Dit is een eenrichtingsproces en kan niet worden teruggedraaid; zelfs het veranderen van één teken in de invoer verandert de uitvoer drastisch.
Hoe het werkt in VPN-communicatie:
- De verzender past een afgesproken hash-functie toe op de gegevens.
- De ontvanger genereert een hash-waarde van de ontvangen gegevens met dezelfde functie.
- Als de gegenereerde hash-waarde overeenkomt met de verzonden hash-waarde, is de integriteit van de gegevens bevestigd.
- Als de hashes niet overeenkomen, duidt dit op mogelijke manipulatie, en de gegevens worden verworpen.
SHA-hashauthenticatie voorkomt man-in-the-middle aanvallen door geknoei met certificaten te detecteren, wat hackers ervan weerhoudt zich voor te doen als legitieme VPN-servers.
Voor maximale beveiliging raden we VPN-diensten aan die SHA-2 of hoger gebruiken. SHA-1 heeft bekende zwakheden die de beveiliging in gevaar kunnen brengen.