Introductie tot cryptografie

Cryptografie (of geheimschrift) is de kunst van het veilig verzenden van informatie door deze onleesbaar te maken voor iedereen behalve de ontvanger. Cryptografie wordt veel toegepast op het internet om veilige communicatie mogelijk te maken. Van e-commerce tot online bankieren, van websites tot e-mail.

In dit artikel geven we een introductie tot cryptografie, en leggen we uit hoe dit in een praktische vorm wordt toegepast. Na het lezen van dit artikel zul je begrijpen hoe veilige verbindingen naar websites mogelijk zijn.

Nog één woord vooraf: de materie rondom cryptografie kan vrij ingewikkeld zijn. Om dit artikel beknopt en duidelijk te houden is daarom sommige uitleg versimpeld.


Cryptografie

Cryptografie (of geheimschrift) is de kunst van het veilig verzenden van informatie door deze onleesbaar te maken voor iedereen behalve de ontvanger. Het onleesbaar maken noemen we coderen of versleutelen (engels: encryption) en het leesbaar maken noemen we decoderen of ontsleutelen (engels: decryption). Om het internet te beveiligen wordt vooral gebruik gemaakt asymmetrische cryptografie, soms ook wel publieke-sleutelcryptografie genoemd. Om te begrijpen wat asymmetrische cryptografie is, en wat het zo bruikbaar maakt voor het internet kijken we eerst naar de tegenhanger: symmetrische cryptografie.


Symmetrische cryptografie

Symmetrische cryptografie is de 'simpele' vorm van cryptografie. Bij symmetrische cryptografie wordt informatie uitgewisseld tussen twee partijen door vooraf een geheim af te spreken, dit geheim noemen we in de cryptografie een sleutel.

Stel: je wilt een geheim recept voor appeltaart delen met je beste vriend Bob, maar hij woont aan de andere kant Nederland. Je kunt het recept per brief versturen, maar je wilt het geheime recept niet aan de postbode toevertrouwen. Om dit op te lossen stop je de brief in een kluisje, draait deze op slot en verstuurd het kluisje per post naar Bob. Er vanuit gaande dat Bob ook de sleutel heeft voor het kluisje, en het kluisje niet kan worden opengebroken geeft dit een veilige manier om je geheime appeltaart recept te delen. Om dit te laten werken moet je dus wel eerst de sleutel aan Bob geven, we spreken dan van een sleuteluitwisseling.

Het bovenstaande voorbeeld vertaald zich goed naar digitale cryptografie. Het kluisje is de versleutelingsmethode die je gebruikt om de informatie te beveiligen. De sleutel is een geheim stukje informatie om het versleutelde bericht weer leesbaar te maken. Een voorbeeld van een sleutel is een wachtwoord. Het op slot draaien van het denkbeeldige kluisje is het versleutelen, en het openen van het kluisje is het ontsleutelen.

Voor het internet is symmetrische cryptografie niet een heel praktische oplossing. Je wilt natuurlijk niet voor elke website die je wilt bezoeken eerst contact moeten zoeken met de eigenaar om de sleutel te krijgen. In de cryptografie staat dit bekend als het sleuteldistributieprobleem. Om het sleuteldistributieprobleem op te lossen is asymmetrische cryptografie ontwikkeld.


Asymmetrische cryptografie

Bij asymmetrische cryptografie zijn er 2 verschillende sleutels: de geheime sleutel en de publieke sleutel. De geheime sleutel hou je voor jezelf, niemand anders mag deze sleutel in bezit hebben. De publieke sleutel daarentegen is niet geheim, deze kun je aan iedereen geven, ook aan mensen die je niet vertrouwd.

De asymmetrische versleutelingsmethode kan worden gezien als een kluisje met een bijzondere eigenschap. Met de publieke sleutel kun je deze namelijk uitsluitend op slot draaien, en niet meer openen. Alleen met de geheime sleutel kan het kluisje weer worden opengemaakt. Voor computers bestaan deze sleutels uit hele lange getallen, die niet te raden zijn. De geheime en publieke sleutel zijn verschillende getallen, maar wiskundig wel aan elkaar gerelateerd. Met de geheime sleutel kan de publieke sleutel worden berekend, maar niet andersom.

We gaan terug naar het appeltaart scenario. Bob wilt nog steeds graag jouw appeltaart recept ontvangen, maar wilt liever niet helemaal naar jou toe rijden voor de sleutel van het kluisje. Bob gebruikt daarom een nieuw type kluis, welke door iedereen op slot kan worden gedaan, maar alleen kan worden geopend met de sleutel van Bob. Bob stuurt het kluisje open naar jou toe, je stopt het recept in het kluisje en doet deze dicht. Niemand anders dan Bob, die de sleutel heeft, kan het kluisje nu nog openen. Je kunt daarom het gesloten kluisje met het recept veilig terugsturen per post. Bob opent met zijn sleutel het kluisje en heeft zo veilig het recept ontvangen.

De methode uit het hierboven beschreven scenario werkt goed, maar is niet heel efficiënt. Het werkt namelijk maar 1 kant op (richting de persoon met de sleutel), en voor elk bericht moet de tegenpartij eerst een leeg kluisje opsturen. Voor digitale systemen wordt daarom vaak een combinatie van asymmetrische en symmetrische cryptografie gebruikt. Vaak wordt asymmetrische cryptografie gebruikt om een sleutel van een symmetrische verbinding te versturen naar de wederpartij. Zodra de sleutel is uitgewisseld via de asymmetrische methode schakelen beide partijen om naar de efficiëntere symmetrische methode gebruikmakend van die sleutel. Deze procedure noemt men een sleuteluitwisselingsprotocol.

Op het internet wordt voornamelijk het Diffie-Hellman-sleuteluitwisselingsprotocol gebruikt. Met dit protocol kunnen bijvoorbeeld browsers een veilige verbinding opzetten met een website, met spreekt dan van een HTTPS, TLS of SSL-verbinding. Een website publiceert zijn publieke sleutel in het TLS-certificaat. Een browser gebruikt deze publieke sleutel samen met het sleuteluitwisselingsprotocol om een geheime sleutel uit te wisselen met de website om zo veilig te kunnen communiceren. Deze geheime sleutel is een heel lang, willekeurig getal welke niet kan worden geraden. Voor elke verbinding kiest je browser weer een nieuw willekeurig getal als sleutel.


De digitale handtekening

Asymmetrische versleuteling maakt het dus mogelijk om veilig sleutels uit te wisselen via een onveilige verbinding, zonder dat beide partijen elkaar hoeven te kennen. Maar asymmetrische cryptografie maakt nog een tweede techniek mogelijk: digitale handtekeningen.

De Digital Signature of Digitale Handtekening is een techniek die het mogelijk maakt om digitale informatie (zoals een appeltaart recept) te voorzien van een unieke handtekening. In tegenstelling tot een klassieke handtekening die je zet met een pen is een digitale handtekening anders voor elk bericht welke wordt ondertekend. Wanneer ook maar 1 letter wordt veranderd aan het bericht zal de digitale handtekening volledig anders moeten zijn om geldig te zijn. Een andere bijzondere eigenschap van de digitale handtekening is dat deze alleen te zetten is met een geheime sleutel. Met de bijbehorende publieke sleutel kun je de handtekening wel controleren op echtheid, maar niet maken.

We gaan nog een keer terug naar het appeltaart scenario. Dankzij asymmetrische versleuteling kunnen jij en Bob veilig het recept uitwisselen door Bob eerst een leeg kluisje te laten sturen. Het risico is echter dat de postbode het open kluisje stiekem omwisselt met een andere kluisje waar hij de sleutel van heeft. Om dit te voorkomen schrijft Bob een persoonlijke boodschap op het kluisje, en zet hij bovendien zijn handtekening er bij. Omdat Bob een goede vriend van jou is, herken je meteen het handschrift en de handtekening. Het handschrift en de handtekening bewijzen dat het kluisje van Bob afkomstig is. Zo kun je er op vertrouwen dat je het geheime appeltaart recept plaatst in een kluisje die alleen Bob kan openen met zijn sleutel.

Een digitale handtekening is net als een cryptografische sleutel een heel lang getal. Met de publieke sleutel kun je berekenen of dat een digitale handtekening is gemaakt met de geheime sleutel die hoort bij die publieke sleutel. Zo weet je zeker dat het bericht is gezet door iemand met toegang tot de geheime sleutel, een bevestig je dus de identiteit van de ondertekenaar. Bovendien kan worden berekend of de handtekening klopt voor het gegeven bericht, de handtekening is immers uniek voor het bericht, zo weet je dat het bericht authentiek is. De digitale handtekening bewijst dus dat het bericht niet is veranderd sinds de handtekening is gezet.

Digitale handtekeningen worden op veel plaatsen toegepast, zoals in TLS-certificaten voor HTTPS, of voor het beveiligen van e-mail.


Conclusie

Asymmetrische cryptografie maakt praktische versleuteling van gegevens op het internet mogelijk. Dankzij de publieke sleutels in asymmetrische cryptografie kan iedereen op het internet gebruik maken van veilige verbindingen. De publieke sleutel maakt het ook mogelijk om informatie digitaal te ondertekenen, waarmee de integriteit van de informatie en identiteit van de afzender kan worden bevestigd. Asymmetrische cryptografie vormt de basis van de publieke sleutel infrastructuur waarmee niet alleen het internet, maar ook ons betaalverkeer, de overheid, medische gegevens en tal van andere zaken worden beveiligd.

Zowel voor websites als e-mail is het correct inzetten van cryptografie een belangrijk onderdeel van de beveiliging. Securist biedt veiligheidsinspecties voor het controleren van diverse aspecten van digitale beveiliging om hackers en oplichters buiten de deur te houden.


Verder lezen

Zie ook onze overige relevante artikelen:

Léon Melis

Over de auteur:

Léon Melis is inspecteur bij Securist. Securist inspecteert websites, e-mail en domeinen op veiligheid en privacybescherming.