Definitie (glossariumkaart): ChaCha20-Poly1305 is een constructie voor geauthenticeerde versleuteling met gekoppelde gegevens (AEAD) die het ChaCha20-stroomcijfer combineert met de Poly1305-berichtauthenticatiecode. Het versleutelt verkeer met een 256-bit sleutel en voegt een 128-bit authenticatietag toe, zodat ontvangers manipulatie in dezelfde cryptografische bewerking kunnen detecteren.

Flow chart of ChaCha20-Poly1305 authenticated encryption
Bron: Wikimedia Commons (YKC2486) — Stroomschema van ChaCha20-Poly1305-versleuteling

Wanneer een VPN-app “ChaCha20-Poly1305” vermeldt naast WireGuard of een TLS-cijferreeks, noemt het het algoritme dat de pakketpayloads na de handshake daadwerkelijk beschermt. Die naam begrijpen is belangrijker dan marketingslogans uit het hoofd leren: ChaCha20-Poly1305 is op zichzelf geen VPN-protocol, en het is geen zwakker substituut voor AES. Het is een modern AEAD-cijfer dat is gestandaardiseerd voor IETF-protocollen en breed wordt ingezet in WireGuard, TLS, SSH en IPsec.

Waar de naam vandaan komt

Daniel J. Bernstein ontwierp Poly1305 (2005) en ChaCha (2008) als snelle softwareprimitieven. De IETF standaardiseerde later een specifieke AEAD-combinatie in RFC 8439 (vervangt RFC 7539): ChaCha20 produceert een keystream die met XOR wordt gecombineerd met de plaintext, en Poly1305 authenticeert de ciphertext plus eventuele associated data. De constructie vergroot de ciphertext met een vaste tag van 16 bytes.

Volgens het ChaCha20-Poly1305 Wikipedia-overzicht, neemt het algoritme een 256-bit sleutel en een 96-bit nonce, volgt het de encrypt-then-MAC-structuur die bekend is van AES-GCM, en wordt het gebruikt in IPsec, SSH, TLS 1.2/1.3, DTLS en WireGuard. Die breedte verklaart waarom dezelfde ciphernaam voorkomt in consumenten-VPN-clients en enterprise-gateways.

Hoe ChaCha20 versleutelt

Flow chart of ChaCha20-Poly1305 authenticated decryption
Bron: Wikimedia Commons (YKC2486) — Stroomschema van ChaCha20-Poly1305-ontsleuteling

ChaCha20 is een stream cipher. Het verdeelt data niet in de 128-bit blokken die AES gebruikt. In plaats daarvan zet het een sleutel, nonce en block counter om tot keystream-blokken van 64 bytes met alleen optelling, XOR en bitrotatie over 20 rondes. De keystream wordt met XOR gecombineerd met de plaintext om ciphertext te produceren. Decryptie is dezelfde XOR met dezelfde keystream.

Protons ChaCha20-uitleg vat het praktische punt voor VPN-gebruikers samen: ChaCha20 is ontworpen om snel te blijven in gewone software, wat helpt bij telefoons, oudere CPU's en apparaten zonder AES-hardwareversnelling. AES wint vaak wanneer AES-NI of ARM-crypto-extensies aanwezig zijn; ChaCha20 wint vaak wanneer encryptie in pure software moet draaien met consistente timing-eigenschappen.

Wat Poly1305 toevoegt

Diagram of encrypt-then-MAC authenticated encryption construction
Bron: Wikimedia Commons (RokerHRO) — Geauthenticeerde versleuteling EtM

Encryptie alleen voorkomt niet dat een aanvaller onderweg bits omdraait. Poly1305 is een eenmalige message authentication code die een tag van 16 bytes produceert over de ciphertext (en associated data). In de RFC 8439 AEAD-constructie levert het eerste ChaCha20-blok een eenmalige Poly1305-sleutel; latere blokken versleutelen de payload. Als de tag niet kan worden geverifieerd, moet het pakket worden weggegooid zonder de plaintext vrij te geven.

Dat model van “eerst versleutelen, dan authenticeren in één API” is wat AEAD betekent. AES-GCM doet hetzelfde werk met andere interne mechanismen. Beveiligingsanalisten beschouwen correct geïmplementeerde ChaCha20-Poly1305 en AES-256-GCM als equivalent voor vertrouwelijkheid en integriteit onder standaardaannames—zolang nonces nooit herhalen voor een gegeven sleutel.

Waarom WireGuard en mobiele stacks dit belangrijk vinden

De gepubliceerde cryptografie van WireGuard legt het transportcijfer vast op ChaCha20-Poly1305. In klassieke WireGuard is er geen gebruikersschakelaar voor AES. Die keuze houdt het protocol klein en controleerbaar: één AEAD, één sleuteluitwisselfamilie, minimaal configuratieoppervlak. OpenVPN en IKEv2/IPsec kunnen meerdere cijfers onderhandelen, waaronder ChaCha20-Poly1305 waar bibliotheken en peers dat ondersteunen, daarom verschijnt de algoritmenaam ook buiten WireGuard.

Op mobiele netwerken en apparaten met beperkte batterij zijn softwarevriendelijke cijfers belangrijk. Historische TLS-metingen die in de prestatiebijlage van RFC 8439 worden aangehaald, toonden aan dat ChaCha20-Poly1305 beter presteerde dan AES-GCM op telefoons zonder AES-versnelling, terwijl AES-GCM vooropliep op servers met AES-NI. In 2026 hebben veel telefoons crypto-extensies, maar het softwarevriendelijke ontwerp vermindert nog steeds het implementatierisico en houdt de doorvoer voorspelbaar in gemengde vloten.

ChaCha20 vs AES: de afwegingen die ertoe doen

  • Cijfertype: ChaCha20 is een stroomcijfer; AES is een blokcijfer dat voor AEAD meestal in GCM-modus draait.
  • Hardware: AES wint doorgaans op CPU's met AES-NI / crypto-extensies; ChaCha20 wint doorgaans in pure software.
  • Timing-sidechannels: Het add-rotate-XOR-ontwerp van ChaCha20 wordt algemeen beschouwd als eenvoudiger te implementeren zonder cache-timingvalkuilen dan sommige op tabellen gebaseerde softwarepaden van AES.
  • Nonce-discipline: Zowel GCM als ChaCha20-Poly1305 falen catastrofaal als een (key, nonce)-paar opnieuw wordt gebruikt. Protocollen moeten uniciteit garanderen—WireGuard gebruikt pakkettellers; TLS leidt per record verse sleutels en nonces af.
  • Bekendheid met compliance: Bedrijfschecklists noemen AES-256 nog steeds vaker; dat is institutionele gewoonte, geen bewijs dat ChaCha20-Poly1305 zwakker is wanneer het gestandaardiseerd en correct wordt gebruikt.

Wat ChaCha20-Poly1305 niet is

Het is geen VPN-protocol. Het vervangt WireGuard, OpenVPN of IKEv2 niet. Het verbergt niet dat je een VPN gebruikt, kiest geen exitlanden en dwingt geen no-logsbeleid af. Dat zijn problemen van transport, routing en operatorvertrouwen. ChaCha20-Poly1305 beantwoordt alleen: zodra peers een sessiesleutel delen, hoe worden pakketten verzegeld zodat afluisteraars ze niet kunnen lezen of stilzwijgend wijzigen?

Het is ook niet “quantum-proof.” Net als AES-256-GCM is het een symmetrisch cijfer; de gebruikelijke harvest-now-decrypt-later-zorg voor VPN’s richt zich op de handshake-sleuteluitwisseling (vandaag ECDH, hybride ML-KEM-implementaties in opkomst), niet op het plotseling uitfaseren van ChaCha20 zelf. Behandel post-quantum-VPN-claims als uitspraken over handshakes en authenticatie, niet over het vervangen van ChaCha20 door een ander bulkcijfer.

Praktische checklist voor lezers

  1. Als je client WireGuard toont, verwacht dan ChaCha20-Poly1305 op het datakanaal, zoals ontworpen.
  2. Als je client OpenVPN of IKEv2 toont, controleer het onderhandelde cijfer in logs of geavanceerde instellingen; ChaCha20-Poly1305 kan beschikbaar zijn naast AES-GCM.
  3. Jaag niet achter “military-grade”-bijvoeglijke naamwoorden aan. Geef de voorkeur aan gedocumenteerde AEAD-suites uit actuele RFC’s en onderhouden clients.
  4. Onthoud dat een sterk AEAD een hergebruikt wachtwoord, een phishingpagina of een DNS-lek buiten de tunnel niet kan herstellen.

Kortom: ChaCha20-Poly1305 is het AEAD-werkpaard achter een groot deel van het huidige VPN- en HTTPS-verkeer. Leer de definitie, ken de nonce-regel en behandel protocolkeuze en operatorbeleid als aparte vragen, los van de naam van het bulkcijfer op het instellingenscherm.