Definitie (glossariumkaart): tls-crypt-v2 is de client-specifieke control-channel-versleutelingsmodus van OpenVPN. Elke client krijgt een unieke tls-crypt-sleutel (Kc) plus een verpakte kopie van die sleutel (WKc), versleuteld met een gedeelde serversleutel. Bij verbinding stuurt de client WKc in een P_CONTROL_HARD_RESET_CLIENT_V3 pakket; de server pakt Kc uit en beide peers versleutelen vervolgens control-channel-pakketten met de client-specifieke sleutel in plaats van één groeps-pre-shared key.

Wanneer een OpenVPN-instellingenscherm of een FAQ van een provider “tls-crypt-v2” noemt, gaat het om een beveiligingsmechanisme voor het control-channel, niet om een data-channel-cijfer en niet om een zelfstandig VPN-protocol. Het verschil begrijpen is belangrijk voor grote vloten en gehoste VPN-providers: klassieke --tls-auth and --tls-crypt delen één groepssleutel over elke client en server. Als een peer wordt gecompromitteerd, biedt die gedeelde sleutel geen zinvolle DoS- en TLS-stackbescherming meer voor alle anderen. tls-crypt-v2 houdt de wrapping-sleutel aan de serverzijde gedeeld, terwijl elke client een eigen Kc krijgt.
Waar het ontwerp vandaan komt
OpenVPN documenteert de functie in doc/tls-crypt-v2.txt en in de door het project gegenereerde API-documentatie voor versleuteling van het besturingskanaal (tls-crypt, tls-crypt-v2). Dezelfde client-specifieke aanpak komt voor in het concept OpenVPN Wire Protocol onder “Client-specifieke versleutelingssleutels,” waarin expliciet wordt vermeld dat bestaande implementaties de functie tls-crypt-v2 noemen.
De reden is evenzeer operationeel als cryptografisch. Gedeelde groepssleutels verlopen sneller naarmate het aantal clients groeit, en een gelekte laptop kan een massale hersleuteling afdwingen. Door de Kc van elke client te versleutelen onder een serversleutel en WKc met de client mee te sturen, kunnen operators individuele clients intrekken of roteren zonder één community-brede statische sleutel te herdistribueren. Servers kunnen nog steeds legacy tls-crypt or tls-auth clients tijdens de migratie omdat de V3 hard-reset-opcode de nieuwe modus signaleert.
Hoe de cookie-handshake werkt

Op hoofdlijnen is de flow een versleutelde cookie:
- Beheerders maken een tls-crypt-v2 server sleutel die alleen wordt gebruikt om clientsleutels in te pakken en uit te pakken.
- Voor elke client genereren ze een nieuwe Kc, verpakken die als WKc onder de serversleutel, en leveren
Kc || WKcaan de client (vaak als een PEM-blok met als kopBEGIN OpenVPN tls-crypt-v2 client key). - Het eerste besturingspakket van de client gebruikt opcode
P_CONTROL_HARD_RESET_CLIENT_V3en bevat WKc. - De server ontsleutelt WKc, laadt Kc, voert optioneel een
tls-crypt-v2-verifyscript uit tegen metadata, en daarna gebruiken beide zijden Kc voor tls-crypt-achtige bescherming van het besturingskanaal.
Optionele metadata in de verpakte blob kan vroege beleidscontroles meedragen (bijvoorbeeld hints over de clientidentiteit), zodat een server misbruikende handshakes kan afbreken voordat dure TLS-werkzaamheden worden uitgevoerd. Die vroege afbreking is een van de redenen waarom de functie wordt aangeprezen voor DoS-weerstand op grote multi-tenant-systemen. Grote VPN-providers profiteren vooral omdat gecompromitteerde klantdeindpunten niet langer automatisch een enkele gedeelde tls-crypt-groepsleutel blootstellen waarvan elke andere klant afhankelijk is voor filtering van het controlekanaal.
Wat tls-crypt-v2 beschermt — en wat niet
tls-crypt-v2 versleutelt en authenticeert controlekanaal pakketten: het TLS-handshakeverkeer dat sessiesleutels en opties onderhandelt. Het vervangt het data-channel-cipher niet (AES-GCM, ChaCha20-Poly1305 enzovoort), kiest geen exit-IP's en implementeert geen no-logsbeleid. Zie het als een pantser rond het besturingsvlak van OpenVPN, zodat niet-geverifieerde UDP-ruis en gestolen groepsleutels minder nuttig zijn tegen de TLS-stack.
De releasenotes van OpenVPN 2.7.8 (samengevat door Linux Compatible op 7 oktober 2026) laten ook zien waarom robuustheid rond tls-crypt-v2 nog steeds van belang is: een 2.7.8-fix voorkwam dat clients blindelings een verzoek van een peer vertrouwden om een ingepakte clientsleutel opnieuw te versturen wanneer er geen sleutelmateriaal beschikbaar was. Het CRA-beleid van Italië behandelde die klasse van “kwaadaardige server kan de client verstoren”-problemen als degradatie van de robuustheid in plaats van als een CVE-waardige vertrouwelijkheidsbreuk, maar operators willen de patch nog steeds op elke client die tls-crypt-v2 spreekt.
Hoe het verschilt van tls-auth en tls-crypt
- tls-auth: Alleen HMAC-integriteit op controlepakketten met een gedeelde statische sleutel; versleutelt het controlekanaal niet.
- tls-crypt: Versleutelt en authenticeert controlepakketten met één gedeelde groepsleutel.
- tls-crypt-v2: Dezelfde control-channelbescherming in AEAD-stijl als tls-crypt, maar met per-client Kc plus door de server verpakte WKc-cookies.
Alle drie gaan over het control channel. Het verwarren ervan met de Noise-handshake van WireGuard of met IKEv2 is een veelvoorkomende glossariumfout. WireGuard gebruikt geen tls-crypt-v2; OpenVPN-gebruikers die elders WireGuard inschakelen, zitten op een volledig andere stack. Evenzo zorgt het inschakelen van tls-crypt-v2 er niet magisch voor dat verouderde data-channelciphers worden geüpgraded of dat DNS-leaks buiten de tunnel worden verholpen.
Praktische checklist
- Als u een OpenVPN-server voor meerdere clients of een vloot van een VPN-provider beheert, kies dan voor tls-crypt-v2 in plaats van één gedeelde tls-crypt-sleutel, zodat één verloren client niet de hele groepsleutel vergiftigt.
- Houd de server-wrapping-sleutel offline geback-upt en roteerbaar; plan hoe WKc-bestanden opnieuw worden uitgegeven wanneer die serversleutel wijzigt.
- Bevestig dat clients daadwerkelijk V3 hard-reset spreken (moderne OpenVPN-builds) voordat u legacy tls-auth/tls-crypt op de server uitschakelt.
- Volg OpenVPN 2.7.8+ voor tls-crypt-v2-robuustheidscorrecties, ook als een wijziging geen CVE-ID heeft.
- Onthoud: sterke control-channel-wrapping kan een hergebruikt gebruikerswachtwoord, een phishingportaal of een DNS-leak buiten de tunnel niet oplossen.
Kortom: tls-crypt-v2 is het antwoord van OpenVPN op "hoe houden grote implementaties control-channelversleuteling zonder één catastrofale gedeelde statische sleutel?" Leer het cookiemodel, houd data-channel- en beleidsvragen gescheiden, en behandel per-client sleutelhygiëne als onderdeel van normale VPN-operaties in plaats van als een exotische, alleen-voor-enterprise-optie.
