Basic Security
cryptografie
CERTIFICATEN

De digitale equivalent van een vingerafdruk, hashing.

Een methode om te bepalen of de data die we in handen hebben authentiek is, behelst het creëren van een digitale vingerafdruk van die data. Dit proces wordt ook wel ‘hashing’ van data genoemd.

Hashing is een techniek waarbij een gegeven hoeveelheid data wordt omgezet in een specifieke reeks hexadecimale waarden, wat in feite een digitale vingerafdruk wordt genoemd. Deze methode is reproduceerbaar, wat betekent dat telkens wanneer we dezelfde hashfunctie op dezelfde ongewijzigde data toepassen, we dezelfde reeks hexadecimale waarden zullen verkrijgen. Deze reeks wordt aangeduid als hashwaarden, hashcodes of simpelweg ‘hashes’. Opvallend is dat deze hexadecimale reeks ongeacht de grootte van de oorspronkelijke data altijd een consistente lengte heeft.

Door gebruik te maken van een hashfunctie kunnen we dus een hashwaarde genereren op basis van bepaalde data. Het is echter niet mogelijk om deze procedure om te keren. Zoals eerder vermeld, blijft de lengte van de hashwaarde altijd hetzelfde, ongeacht of de oorspronkelijke data 100 KB of 500 GB beslaat. Het is gemakkelijk voor te stellen dat het teruggaan vanuit een handvol hexadecimale waarden naar 500 GB aan data niet haalbaar is.

We kunnen onze verkregen data verifiëren aan de hand van de hashwaarde. Dit proces is echter afhankelijk van een cruciale vereiste: de hashwaarde van het oorspronkelijke bestand moet beschikbaar zijn.

Belangrijk om te beseffen is dat de hashwaarde altijd dezelfde lengte heeft en uniek is. Zelfs als we slechts één enkele letter veranderen in een tekst van duizenden letters, zal de resulterende hashwaarde volledig verschillend zijn. Laten we dit duidelijk maken met een voorbeeld, waarbij we het SHA-1 algoritme gebruiken. (Later zullen we dieper ingaan op het SHA-1 algoritme.)

Tekst: Deze cursus is opgesteld door Levi
Hash:b04f60fac243d362f8d0cbd24ab9dd1ce8bf9b7c

Als we nu iets veranderen, dan is de Hash ook compleet anders, laten we de d van door veranderen naar een v

Tekst: Deze cursus is opgesteld voor Levi
Hash:44904068b0c300d79105617457de913cf14f5fa0

Zoals duidelijk wordt, is de hashwaarde altijd uniek. Zelfs als we slechts één letter in de tekst wijzigen of één enkel bit in een bestand van meerdere gigabytes aanpassen, leidt dit tot een volledig verschillende hashwaarde. Het proces van hashing, zoals het wordt genoemd, is afkomstig uit het Engels. Het woord ‘hash’ betekent letterlijk ‘hakken’, wat overeenkomt met het idee van het in stukken hakken van gegevens. In het Nederlands is ‘hashen’ een gangbare term, en we kunnen ook spreken van ‘het berekenen van de hash’ of verwijzen naar ‘de hashwaarde’.

De hashfunctie heeft diverse toepassingen, waaronder het verifiëren van gedownloade bestanden. Dit wordt niet alleen gebruikt om te controleren of het bestand origineel is, maar ook of het onbeschadigd is. Daarnaast wordt de hashfunctie vaak ingezet voor het snel doorzoeken van grote databases. Het is namelijk veel efficiënter om te zoeken naar de hashwaarde van gegevens dan naar de gegevens zelf. Bovendien wordt de hashfunctie gebruikt bij het verzenden van wachtwoorden, waarover we later meer zullen bespreken.

Er zijn verschillende algoritmes beschikbaar voor de hashfunctie, maar we zullen hier de twee meest gangbare behandelen: MD5 en SHA.