Encryptie
Encryptie is het proces van het omzetten van leesbare data (plaintext) naar een onleesbare data (ciphertext).
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Plain text: De leesbare data, voor encryptie.
Cipher text: De onleesbare data, na encryptie.
Algorithm: De wiskundige formule achter de encryptie.
Key: Een geheime waarde die gebruikt wordt door het algoritme om de data te versleutelen of ontsleutelen.
Decryptie: Het proces van het omzetten van ciphertext terug naar plaintext.
Encryptie vs Hashing vs Encoding
Encryptie | Hashing | Encoding |
|---|---|---|
Omkeerbaar (met sleutel) | Onomkeerbaar | Omkeerbaar |
Variabele output lengte | Vaste output lengte | Variabele output lengte |
Gebruikt voor beschermen van data. | Gebruikt voor data-integriteit, wachtwoord opslag. | Gebruikt voor data in ander formaat te zetten. |
Symmetrische encryptie
Symmetrische encryptie gebruikt één enkele sleutel voor zowel encryptie als decryptie.
De zender en ontvanger moeten dus beide dezelfde sleutel hebben.
Symmetrische encryptie is efficient, maar het is moeilijk om de sleutel veilig te delen.
Het meest gebruikte symmetrische algoritme is AES (Advanced Encryption Standard).
Voorbeeld van symmetrische encryptie
Stel dat Alice een bericht naar Bob wil sturen.
Maar als het versturen van de sleutel niet veilig gebeurt kan een derde partij de sleutel onderscheppen en het bericht lezen.
Asymmetrische encryptie
Asymmetrische encryptie gebruikt twee verschillende sleutels: een publieke sleutel voor encryptie en een privésleutel voor decryptie.
Elke zender en ontvanger heeft een publieke en privésleutel.
De publieke sleutel kan vrij gedeeld worden, terwijl de privésleutel geheim blijft.
Asymmetrische encryptie is trager dan symmetrische encryptie, maar het lost het probleem van sleuteluitwisseling op.
De meest gebruikte asymmetrische algoritmes zijn RSA (Rivest-Shamir-Adleman) & ECDHE (Elliptic Curve Diffie-Hellman Ephemeral).
Voorbeeld van asymmetrische encryptie (RSA)
Stel dat Alice een bericht naar Bob wil sturen.
Zo is het versturen van de sleutel veilig, de publieke sleutel kan vrij gedeeld worden omdat alleen Bob met zijn privésleutel het bericht kan decrypteren.
Het enige nadeel is dat asymmetrische encryptie minder efficiënt is dan symmetrische encryptie.
Beide tegelijk
In de praktijk worden symmetrische en asymmetrische encryptie vaak samen gebruikt.
Bijvoorbeeld, bij het opzetten van een beveiligde verbinding (zoals HTTPS) wordt asymmetrische encryptie gebruikt om een symmetrische sleutel veilig uit te wisselen.
Vervolgens wordt symmetrische encryptie gebruikt vanwege de hogere snelheid.
Tegelijk - RSA
Tegelijk - ECDHE
ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) is een moderne variant van Diffie-Hellman.
Het maakt gebruik van tijdelijke sleutels en elliptische krommen voor verbeterde beveiliging en efficiëntie.
Daarom wordt het gebruikt in bijvoorbeeld TLS 1.3, wat de nieuwste en aanbevolen versie van TLS is.
Toepassingen
Digitale handtekening
Een digitale handtekening wordt gebruikt om de authenticiteit en integriteit van data te bewijzen.
De zender maakt een hash van de data.
De zender encrypteert de hash met zijn privésleutel, dit is de digitale handtekening.
De ontvanger ontvangt de originele data en de digitale handtekening.
De ontvanger maakt een hash van de ontvangen originele data.
De ontvanger decrypteert de digitale handtekening met de publieke sleutel van de zender.
De ontvanger vergelijkt de gedecrypteerde digitale handtekening (hash) met de zelfgemaakte hash.
Als de 2 hashes overeenkomen is de data authentiek en intact.
Digitaal certificaat
Een digitaal certificaat wordt gebruikt om de identiteit van een entiteit (website, server...) te verifiëren.
De identiteit wordt bevestigd door een vertrouwde derde partij, een Certificate Authority (CA).
Een digitaal certificaat bevat:
De publieke sleutel van de entiteit
Informatie over de entiteit (naam, domein...)
Informatie over de CA
Geldigheidsperiode
Digitale handtekening van de CA
Andere metadata
Digitale certificaten volgen het X.509-standaard.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
PKI (Public Key Infrastructure): Het systeem dat digitale certificaten beheert, uitgeeft en intrekt.
Dit bestaat uit:
Root CA's: De hoogste vertrouwde autoriteiten die certificaten uitdelen aan Intermediate CA's.
Intermediate CA's: Delen certificaten uit aan eindgebruikers of servers.
Digitale certificaten: Bevestigen de identiteit van entiteiten en bevatten hun publieke sleutels.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Hoe een website een digitaal certificaat krijgt:
De website-eigenaar genereert een publieke en privésleutel.
De eigenaar maakt een Certificate Signing Request (CSR) met de publieke sleutel en informatie over de website.
De CSR wordt naar een Certificate Authority (CA) gestuurd.
De CA verifieert de informatie en maakt een digitaal certificaat.
De CA ondertekent het certificaat door het te hashen en dat te encrypteren met zijn privésleutel.
De website-eigenaar ontvangt het digitale certificaat en installeert het op de webserver.
SSH authenticatie
Hoe SSH asymmetrische encryptie gebruikt voor authenticatie:
De gebruiker genereert een publieke en privésleutel.
De gebruiker plaatst de publieke sleutel op de server.
De gebruiker probeert te verbinden, de server checkt of de publieke sleutel overeenkomt met een opgeslagen sleutel.
De server encrypteert data met de publieke sleutel van de gebruiker en stuurt deze terug.
Als de gebruiker de data kan decrypteren met zijn privésleutel, weet de server dat de gebruiker correct is.