Ga naar inhoud
HexaTransfer
Terug naar blog
Encryptie & beveiliging

Symmetrische vs asymmetrische encryptie: verschillen uitgelegd

Symmetrische vs asymmetrische encryptie in eenvoudige taal. Begrijp hoe elk werkt en hoe ze gecombineerd worden in moderne overdracht.

Symmetrische encryptie gebruikt één sleutel voor zowel versleuteling als ontsleuteling — denk aan AES-256-GCM, het cipher dat je bestanden beveiligt tijdens overdracht. Asymmetrische encryptie gebruikt een sleutelpaar: een publieke sleutel die iedereen kan zien en een privésleutel die alleen jij bewaart, gebruikt door algoritmen zoals RSA-4096 en Curve25519. Symmetrisch is snel (gigabytes per seconde op moderne CPU's) maar vereist dat beide partijen hetzelfde geheim delen. Asymmetrisch lost het sleuteluitwisselingsprobleem op maar is 1.000 keer langzamer. Elke moderne bestandsoverdrachtsservice — HexaTransfer, Tresorit, Proton Drive, SwissTransfer — gebruikt beide: asymmetrisch om een symmetrische sleutel uit te wisselen, dan symmetrisch om het eigenlijke bestand te versleutelen.

De wereld van één sleutel: symmetrische encryptie

Symmetrische ciphers gebruiken dezelfde sleutel voor beide richtingen. Als ik een bestand versleutel met sleutel K, heb jij sleutel K nodig om het te ontsleutelen. De belangrijkste symmetrische algoritmen die nog in gebruik zijn:

  • AES (Rijndael) met 128-, 192- of 256-bits sleutels, gestandaardiseerd in FIPS 197.
  • ChaCha20 met 256-bits sleutels, de voorkeur op apparaten zonder AES-NI hardwareversnelling.
  • 3DES — door NIST verouderd in 2023, gebruik dit niet.

Doorvoer is het grote voordeel. AES-256-GCM loopt op ongeveer 3–5 GB/s per kern op Intel AES-NI, en ChaCha20-Poly1305 haalt 1,5–3 GB/s op ARM-telefoons. Een bestand van 10 GB versleutelen duurt seconden.

Het probleem: hoe krijg je de sleutel naar de andere persoon? Het per e-mail versturen ervan doet het punt teniet. Dit is het sleuteldistributieprobleem, en dat is waarom asymmetrisch bestaat.

De wereld van twee sleutels: asymmetrische encryptie

Uitgevonden door Diffie en Hellman in 1976 en gerealiseerd door Rivest, Shamir en Adleman als RSA in 1977. Elke gebruiker heeft een sleutelpaar: een publieke sleutel die openlijk wordt gepubliceerd en een privésleutel die geheim wordt gehouden. Alles versleuteld met de publieke sleutel kan alleen worden ontsleuteld met de privésleutel, en vice versa.

Als je mij een geheim bestand wilt sturen, versleutel je het met mijn publieke sleutel. Alleen mijn privésleutel kan het openen — en ik hoefde nooit iets geheims met je te delen. Sleuteldistributie opgelost.

Huidige asymmetrische algoritmen:

  • RSA-2048 of RSA-4096 — langzaam maar universeel ondersteund, gebruikt in TLS-certificaten.
  • Elliptische curve (ECDH, ECDSA) over curves zoals P-256, P-384 of Curve25519 — kleinere sleutels, snellere bewerkingen. Een 256-bits EC-sleutel komt overeen met de beveiliging van een 3072-bits RSA-sleutel.
  • Ed25519 — de moderne standaard voor ondertekening, gebruikt door SSH en Signal.

Waarom asymmetrisch te langzaam is voor bestanden

Asymmetrische wiskunde is duur. RSA-4096-versleuteling loopt op ongeveer 100–500 bewerkingen per seconde op een moderne CPU. Elke bewerking verwerkt ongeveer 470 bytes (de RSA-blokgrootte minus opvulling). Dat is misschien 200 KB/seconde — ongeveer 50.000 keer langzamer dan AES-256-GCM.

Een bestand van 10 GB met RSA proberen te versleutelen zou ruwweg 14 uur duren. Met AES-256-GCM duurt het ongeveer 3 seconden. Deze asymmetrie in snelheid is waarom niemand RSA daadwerkelijk gebruikt om bestanden direct te versleutelen.

Hybride versleuteling: de aanpak in de praktijk

Elk protocol dat zowel beveiliging als snelheid nodig heeft, combineert de twee. TLS 1.3, PGP, Signal, Age en elke geloofwaardige bestandsoverdrachtsservice gebruiken dit patroon:

  1. De verzender genereert een willekeurige 256-bits AES-sleutel (de "sessiesleutel" of "bestandssleutel").
  2. Het bestand wordt versleuteld met AES-256-GCM met die sleutel.
  3. De AES-sleutel zelf wordt versleuteld met de publieke sleutel van de ontvanger (RSA-OAEP of ECIES).
  4. Zowel de versleutelde tekst als de versleutelde sleutel reizen naar de ontvanger.
  5. De ontvanger ontsleutelt de AES-sleutel met zijn privésleutel, en gebruikt die vervolgens om het bestand te ontsleutelen.

Je betaalt de asymmetrische kosten één keer per ontvanger, voor een 256-bits sleutel. Het bulkbestand wordt symmetrisch op volledige snelheid verwerkt. Het beste van beide werelden.

Waar bestandsoverdrachtsservices van elkaar verschillen

Browsergebaseerde overdrachtsservices worden geconfronteerd met een twist: de ontvanger heeft mogelijk geen sleutelpaar. Ze klikken gewoon op een link. Drie patronen lossen dit op:

  • Gedeelde-link alleen symmetrisch (SwissTransfer, HexaTransfer, opvolgers van Firefox Send). Een willekeurige AES-256-sleutel wordt gegenereerd in de browser van de verzender, ingebed in het URL-fragment, en de browser van de ontvanger leest die uit het fragment. Geen asymmetrische cryptografie nodig — het fragment is het kanaal.
  • Account-tot-account asymmetrisch (Tresorit, Proton Drive). Elke gebruiker heeft bij aanmelding een RSA- of ECC-sleutelpaar gegenereerd. Bestanden versleuteld voor een specifieke ontvanger gebruiken hun publieke sleutel.
  • Hybride met wachtwoord (veel diensten). Het URL-fragment bevat een salt; de gebruiker typt een wachtwoord; PBKDF2 of Argon2id leidt de symmetrische sleutel af. Geen asymmetrisch betrokken, maar het wachtwoord fungeert als gedeeld geheim.

De gedeelde-linkaanpak is het eenvoudigst en werkt voor ontvangers zonder accounts. Account-gebonden asymmetrisch is sterker omdat het verliezen van de link de sleutel niet lekt. Kies op basis van je dreigingsmodel.

Digitale handtekeningen: de andere taak van asymmetrisch

Asymmetrisch doet iets dat symmetrisch niet kan: auteurschap bewijzen. Als ik een bestand onderteken met mijn privésleutel, kan iedereen met mijn publieke sleutel verifiëren dat ik het heb ondertekend, en ze weten dat het niet is gewijzigd sindsdien. Symmetrisch kan authenticatie bieden (HMAC, GCM's tag) maar alleen tussen partijen die al een geheim delen.

Handtekeningalgoritmen in gebruik:

  • RSA-PSS met SHA-256 — legacy maar breed ondersteund.
  • ECDSA op P-256 of P-384 — NIST-goedgekeurd, gebruikt in Amerikaanse federale systemen.
  • Ed25519 — snel, deterministisch, bestand tegen slechte RNG's. De moderne keuze.

Softwaredistributie (apt, Homebrew, Docker-images) vertrouwt op Ed25519- of RSA-handtekeningen om supply-chain-manipulatie te voorkomen. Bestandsoverdrachtsservices stellen handtekeningen doorgaans niet direct beschikbaar, maar de GCM-authenticatietag in AES-256-GCM biedt integriteit binnen één versleuteling.

Sleutelgroottes en beveiligingsniveaus

Een snelle omrekeningsstabel voor equivalente beveiliging tegen klassieke computers:

  • 128-bits symmetrisch = 3072-bits RSA = 256-bits EC (P-256 of Curve25519)
  • 192-bits symmetrisch = 7680-bits RSA = 384-bits EC (P-384)
  • 256-bits symmetrisch = 15360-bits RSA = 512-bits EC (P-521)

NIST's huidige aanbeveling voor nieuwe systemen: minimaal 112-bits beveiliging, wat RSA-2048 of P-256 betekent. Federale instanties gebruiken 128-bits (RSA-3072, P-384) als minimum tot 2030.

Tegen toekomstige kwantumcomputers verliezen symmetrische sleutels ruwweg de helft van hun sterkte (Grover's algoritme), terwijl RSA en ECC volledig breken (Shor's algoritme). NIST standaardiseerde post-kwantumvervangingen in 2024: ML-KEM (voorheen Kyber) voor sleuteluitwisseling en ML-DSA (voorheen Dilithium) voor handtekeningen. Migratie is bezig maar langzaam.

Wanneer welke te gebruiken

Een praktische beslissingsgids:

  • Een bestand voor jezelf versleutelen (back-up, archief): symmetrisch AES-256-GCM met een sterk wachtwoord via Argon2id. Geen asymmetrisch nodig.
  • Een bestand naar één bekende ontvanger sturen: hybride — AES-256-GCM voor het bestand, publieke-sleutelwrap voor de sessiesleutel.
  • Naar veel ontvangers sturen: versleutel het bestand één keer met AES, wrap de sleutel dan afzonderlijk met de publieke sleutel van elke ontvanger. Voegt misschien 300 bytes per ontvanger toe.
  • Auteurschap bewijzen: Ed25519-handtekening over de versleutelde tekst.
  • Eenmalig delen via link: symmetrisch met de sleutel in het URL-fragment.

Samengebracht

Voor gevoelige overdrachten vandaag, een pragmatische stack: AES-256-GCM voor bulkversleuteling, X25519 ECDH voor sleuteluitwisseling als ontvangers identiteiten hebben, PBKDF2 of Argon2id voor wachtwoordafgeleide sleutels en TLS 1.3 als transportlaag. Deze combinatie is wat moderne geauditeerde services inzetten.

Probeer het op hexatransfer.com — gratis, zonder account, tot 10 GB.

Verstuur grote bestanden veilig met end-to-end-versleuteling

Draag bestanden tot 10 GB gratis over met end-to-end-versleuteling. Geen account nodig. Uw bestanden worden in uw browser versleuteld voordat ze worden geüpload — niemand anders kan ze lezen.

Een bestand verzenden