PRINCIPE
Publieke-sleutelversleuteling met X.509-certificaten maakt het mogelijk om gegevensuitwisseling te beveiligen zonder dat een vooraf gedeeld geheim nodig is. De afzender gebruikt de publieke sleutel van de ontvanger (beschikbaar in diens X.509-certificaat) om een tijdelijk geheim te versleutelen, dat vervolgens wordt gebruikt om de inhoud te versleutelen met een krachtig symmetrisch algoritme.
TECHNISCHE DETAILS
Versleuteling met X.509-certificaat combineert twee soorten cryptografie:
- Asymmetrische cryptografie (of publieke sleutel): gebruikt voor veilige uitwisseling van de sessiesleutel
- Symmetrische cryptografie: gebruikt voor efficiënte gegevensversleuteling
De applicatie biedt twee symmetrische versleutelingsalgoritmen om uit te kiezen:
- AES-GCM (Advanced Encryption Standard in Galois/Counter Mode met AAD - Additional Authenticated Data)
- ChaCha20-Poly1305 (Combinatie van de ChaCha20-stroomversleuteling met de Poly1305-authenticator)
VERSLEUTELINGSPROCES
- De afzender haalt het X.509-certificaat van de ontvanger op dat diens publieke sleutel bevat
- Een willekeurige symmetrische sleutel (sessiesleutel) wordt gegenereerd
- Deze sessiesleutel wordt versleuteld met de publieke sleutel uit het X.509-certificaat van de ontvanger
- De sessiesleutel wordt gebruikt met het gekozen algoritme (AES-GCM of ChaCha20-Poly1305) om de gegevens te versleutelen
- Het definitieve bericht bevat:
- De versleutelde sessiesleutel
- De versleutelde gegevens
- Informatie over het gebruikte algoritme
- Authenticatie-metadata
KENMERKEN VAN SYMMETRISCHE ALGORITMEN
AES-GCM
- Gebruikt het AES-algoritme met een sleutelgrootte van 256 bits
- GCM-modus (Galois/Counter Mode) met AAD die zowel vertrouwelijkheid als authenticiteit waarborgt
- Vereist een unieke initialisatievector (IV) voor elk bericht
- Breed geaccepteerde en gecontroleerde standaard
- Uitstekende prestaties op processors met AES-NI-instructies
ChaCha20-Poly1305
- Combineert de ChaCha20-stroomversleuteling (256 bits) met de Poly1305-authenticator
- Vereist een unieke nonce voor elk bericht
- Uitstekende prestaties op mobiele apparaten en processors zonder AES-NI-instructies
- Geadopteerd in moderne protocollen zoals TLS 1.3
CRYPTOGRAFISCHE ONAFHANKELIJKHEID
De twee algoritmen (AES-GCM en ChaCha20-Poly1305) zijn gebaseerd op verschillende cryptografische principes:
- AES-GCM gebruikt blokversleuteling
- ChaCha20-Poly1305 gebruikt stroomversleuteling
Deze onafhankelijkheid biedt een belangrijk beveiligingsvoordeel: als er een kwetsbaarheid zou worden ontdekt in een van de algoritmen, zou het andere normaal gesproken niet door dezelfde kwetsbaarheid worden getroffen. Dit biedt de applicatie extra beveiliging, die indien nodig kan overschakelen van het ene algoritme naar het andere.