Alles over de verschillende encryptie-soorten
Wat is encryptie en hoe werkt het in grote lijnen? In dit artikel kijken we naar de verschillende encryptie-soorten die mogelijk zijn.Belangrijke basiskennis voor elke computergebruiker die zijn communicatie graag privé houdt.
Bij encryptie of versleuteling wordt een boodschap (de ‘plaintext’) op zo’n manier gecodeerd dat alleen iemand met de juiste sleutel de oorspronkelijke boodschap kan decoderen. De versleutelde versie van de boodschap wordt ook wel ‘ciphertext’ genoemd. Wie de ciphertext dus weer in de oorspronkelijke boodschap wil omzetten (dat proces heet ‘decryptie’), heeft de sleutel nodig. De sleutel is in principe een willekeurig getal. In de praktijk maken we gebruik van een wachtwoord en dus wordt het wachtwoord via een ‘key derivation function’ eerst omgezet naar een willekeurig getal dat dan als sleutel dient.
Er bestaan diverse manieren om die versleuteling uit te voeren. Zo’n manier heet een encryptie-algoritme of ‘cipher’. De Nederlandse taalkundige en cryptograaf Auguste Kerckhoffs stelde al in de 19de eeuw een belangrijk ontwerpprincipe op: een encryptie-algoritme moet zelfs veilig zijn als alle details van het systeem publiek bekend zijn, behalve de sleutel. Dit principe van Kerckhoffs is anno 2020 nog altijd even belangrijk voor de veiligheid van een encryptie-algoritme.
Als iemand je dus wil overtuigen om een propriëtair, topgeheim encryptiesysteem te gebruiken, loop er dan maar in een wijde boog omheen. De enige verantwoorde keuzes voor encryptiesystemen zijn algoritmes waarvan de specificatie openbaar is, waarvan de ontwikkeling in open commissies gebeurt en waarvan opensource implementaties bestaan.
Symetrische en asymetrische encryptie
De diverse encryptie-algoritmes zijn in twee groepen onder te verdelen: symmetrische en asymmetrische. Bij die eerste (‘symmetric-key encryption’) gebeuren de encryptie en decryptie met dezelfde sleutel. Een voorbeeld van zo’n algoritme is AES (Advanced Encryption Standard). Bijna alle programma’s die tegenwoordig symmetrische encryptie aanbieden, doen dat met AES. Zo ook BitLocker in Windows, FileVault in macOS en LUKS (Linux Unified Key Setup) in Linux.
Algoritmes voor symmetrische encryptie werken doorgaans snel. Maar dat encryptie en decryptie dezelfde sleutel vereisen, zorgt in heel wat situaties voor praktische problemen. Als je een versleutelde boodschap met iemand wilt uitwisselen, dienen de ontvanger en jij namelijk ook de gebruikte sleutel uit te wisselen. Dat doe je het liefst op een veilige manier, maar de vraag is hoe: met encryptie? Maar hoe zit het dan met de sleutel daarvoor?
Asymmetrische encryptie (met als bekendste algoritme RSA) pakt dit probleem aan door de sleutel voor encryptie en de sleutel voor decryptie los te koppelen. Bij deze vorm van encryptie heb je namelijk niet één sleutel meer voor encryptie én decryptie, maar een sleutelpaar. Twee afzonderlijke sleutels: één voor encryptie en één voor decryptie.
Hoe werkt dat in de praktijk? De encryptiesleutel publiceer je en iedereen mag die zien. Deze sleutel wordt dan ook de publieke sleutel genoemd. De decryptiesleutel houd je zelf bij en je zorgt dat alleen jijzelf deze sleutel kan inzien. Die heet daarom ook de geheime sleutel (‘private key’). Als iemand een boodschap met je publieke sleutel versleutelt, kan alleen jij met de bijbehorende geheime sleutel de boodschap decrypteren.
©PXimport
Digitale handtekening
Als je de twee sleutels omdraait, krijg je iets heel anders: een digitale handtekening. Je zendt dan een boodschap (onversleuteld) aan iemand anders en zendt ook diezelfde boodschap mee, versleuteld met je eigen geheime sleutel.
De ontvanger kan met jouw publieke sleutel, die immers gewoon bekend is, de versleutelde boodschap decrypteren. Als er niets met de boodschap gebeurd is, zou die ontsleutelde boodschap exact moeten overeenkomen met de boodschap die je samen met de digitale handtekening hebt verzonden.
Het resultaat? De digitale handtekening garandeert twee zaken: authenticatie van de zender en integriteit van de boodschap. Jij bent namelijk de enige met toegang tot je geheime sleutel. Als de ontvanger met je bijbehorende publieke sleutel je digitale handtekening kan ontsleutelen, weet die dan ook zeker dat jij die digitale handtekening hebt aangemaakt. En omdat de ontsleutelde digitale handtekening exact overeenkomt met de boodschap die je stuurde, weet hij ook zeker dat niemand die boodschap tussen de zender en ontvanger heeft veranderd.
Hashwaarde
In de praktijk wordt die digitale handtekening niet berekend op de boodschap zelf, want dan zou elke boodschap dubbel zo groot worden: de boodschap zelf en een versleutelde versie daarvan. Daarom wordt een hashwaarde van de boodschap berekend.
Een hashwaarde is een getal van een vaste lengte, dat afhangt van een boodschap van willekeurige lengte. Een eigenschap van een hashwaarde is dat als de boodschap verandert, de hashwaarde ervan ook verandert. Als je de hashwaarde van twee boodschappen vergelijkt en die identiek zijn, ben je zo goed als zeker dat ook die boodschappen zelf identiek zijn, zonder dat je de inhoud van die boodschappen hoeft te kennen.
Een digitale handtekening maak je in de praktijk dan ook door een hashwaarde van je boodschap te berekenen, die hashwaarde te versleutelen met je geheime sleutel en het resultaat (een kort getal) mee te sturen met je boodschap. De ontvanger hoeft je digitale handtekening maar te ontsleutelen met je publieke sleutel en de resulterende hashwaarde te vergelijken met de hashwaarde van je boodschap, die hij eenvoudig kan berekenen.
©PXimport
Encryptie en handtekening tegelijk
Dit alles kun je nu ook nog combineren: je versleutelt je boodschap met de publieke sleutel van de ontvanger, berekent een hashwaarde van de (onversleutelde) boodschap en versleutelt die met je eigen geheime sleutel. De versleutelde boodschap stuur je samen met de digitale handtekening naar de ontvanger. Die ontsleutelt de boodschap met zijn geheime sleutel en ontsleutelt de digitale handtekening met jouw publieke sleutel. Hij berekent de hashwaarde van je ontsleutelde boodschap en vergelijkt die met de ontsleutelde digitale handtekening.
Op die manier heb je een boodschap naar de ontvanger gestuurd die niemand anders kan lezen en de ontvanger weet zeker dat jij de boodschap gestuurd hebt en dat er onderweg niets aan de boodschap veranderd is. Dat is de kracht van asymmetrische encryptie!