Hashing-algoritmes: soorten, methoden en toepassingen
Hashing-algoritmes: soorten, methoden en toepassingen
Hashing-algoritmes: soorten, methoden en toepassingen
Een hashing-algoritme is een wiskundige functie die data vervormt zodat ze onleesbaar worden.
Hashing-algoritmes zijn programma’s die in één richting werken. Dit betekent dat de tekst niet door iemand anders kan worden gedecodeerd. En dat is precies de essentie van hashing: het is bedoeld om inactieve data te beschermen. Mocht iemand toegang tot uw server krijgen, dan zijn de opgeslagen items onleesbaar.
U kunt hashing ook gebruiken om zeker te weten dat data na voltooiing niet meer is aangepast of gewijzigd. En sommige mensen gebruiken hashing om grote hoeveelheden data te ordenen.
Wat is een hashing-algoritme?
Er zijn tientallen verschillende hashing-algoritmes en ze werken allemaal net even anders. Wat ze met elkaar gemeen hebben, is dat iemand data intypt en het programma de vorm van die data wijzigt.
Voor alle hashing-algoritmes geldt het volgende:
- Ze zijn wiskundig. Het werk dat een algoritme verricht, is gebaseerd op strikte regels en deze kunnen niet worden gekraakt of aangepast.
- Ze zijn uniform. Ongeacht het aantal tekens dat u in het systeem invoert, heeft het resultaat van een bepaald type hashing-algoritme altijd een vaste lengte, die vooraf door het programma wordt bepaald.
- Ze zijn consequent. Deze algoritmes doen maar één ding (data comprimeren) en niets anders.
- Ze werken één kant op. Als data eenmaal is omgezet door het algoritme, is het praktisch onmogelijk om deze weer in de oorspronkelijke staat te herstellen.
Het is belangrijk om te weten dat hashing niet hetzelfde is als versleuteling. U kunt ze wel combineren, maar moet de termen niet door elkaar gebruiken.
Hoe werkt een hashing-algoritme?
Om een algoritme te ontwikkelen, hebt u in theorie alleen een diagram, een rekenmachine en elementaire wiskundige kennis nodig. Maar de meeste mensen gebruiken er een computer voor.
Algoritmes volgen over het algemeen het volgende proces:
- Het bericht wordt opgesteld. De gebruiker bepaalt wat moet wordt gehasht.
- Er wordt een type algoritme gekozen. Er bestaan tientallen hashing-algoritmes. De gebruiker moet bepalen wat de beste optie is voor zijn bericht.
- Het bericht wordt ingevoerd. De gebruiker voert het bericht in een computer in die het algoritme uitvoert.
- Het hashen gaat van start. Het systeem zet het bericht, dat kort of lang kan zijn, om in een vooraf vastgesteld aantal bits. Meestal breken programma’s het bericht op in een reeks blokken van gelijke grootte en wordt elk blok één voor één gecomprimeerd.
- De hash wordt opgeslagen of gedeeld. De gebruiker verstuurt de hash (ook wel "message digest" genoemd) naar de beoogde ontvanger of de gehashte data wordt opgeslagen.
Dit proces is ingewikkeld maar snel: de hash is na een paar seconden klaar.
Waarvoor worden hashing-algoritmes gebruikt?
Het eerste hashing-algoritme, dat in 1958 werd ontwikkeld, werd gebruikt voor het classificeren en ordenen van data. Sindsdien hebben developers tientallen toepassingen van de technologie ontdekt.
Het kan zijn dat uw organisatie al een hashing-algoritme gebruikt voor een van de volgende doeleinden:
- Opslag van wachtwoorden. U moet overzichten bijhouden van alle gebruikersnaam/wachtwoord-combinaties die mensen gebruiken om toegang te krijgen tot uw resources. Maar als een hacker hier toegang toe krijgt, kan niet-beschermde data eenvoudig worden gestolen. Hashing zorgt ervoor dat de data wordt opgeslagen in een onleesbare indeling, zodat deze lastiger te stelen is.
- Digitale handtekeningen. Met een hele kleine hoeveelheid data kan worden aangetoond dat tekst niet is gewijzigd tussen het moment van verzending en ontvangst.
- Documentbeheer. Hashing-algoritmes kunnen worden gebruikt om data te authenticeren. De auteur gebruikt een hash om het document te beveiligen wanneer het voltooid is. De hash fungeert dan eigenlijk als een soort goedkeuringsstempel.
De ontvanger kan een hash genereren en deze vergelijken met het origineel. Als de twee overeenkomen, betekent dit dat de data authentiek is. Als dat niet het geval is, is het document gewijzigd.
- Bestandsbeheer. Sommige organisaties gebruiken hashes ook om data te indexeren, bestanden te identificeren en duplicaten te verwijderen. Als een systeem duizenden bestanden bevat, kan met behulp van hashes veel tijd worden bespaard.
Voorbeelden van hashing-algoritmes
Het kan lastig zijn om te begrijpen wat deze gespecialiseerde programma’s precies doen zonder ze in actie te zien.
Stelt u zich voor dat we een antwoord op een securityvraag willen hashen. De vraag is "Wat was uw eerste woning?". Het antwoord dat de persoon heeft gegeven is "een appartement op de bovenste verdieping van een gebouw in de Jordaan". Dan zien de hashes er als volgt uit:
- met MD5:: 72b003ba1a806c3f94026568ad5c5933
- met SHA-256:: f6bf870a2a5bb6d26ddbeda8e903f3867f729785a36f89bfae896776777d50af
Stel dat we diezelfde vraag nu aan een andere persoon stellen, die als antwoord "Rotterdam" geeft. Dan zien de hashes er zo uit:
- met MD-5:: 9cfa1e69f507d007a516eb3e9f5074e2
- met SHA-256:: 0f5d983d203189bbffc5f686d01f6680bc6a83718a515fe42639347efc92478e
De oorspronkelijke berichten bevatten niet hetzelfde aantal tekens, maar de algoritmes produceren toch hashes met dezelfde lengte.
Zoals u kunt zien, zijn de hashes volledig onherkenbaar. Het is praktisch onmogelijk om te begrijpen wat ze betekenen en hoe ze werken.
Een toelichting op populaire hashing-algoritmes
Er zijn heel veel programma’s die tekst kunnen omzetten in een hash en ze werken allemaal net even anders.
Dit zijn veelgebruikte hashing-algoritmes:
- MD-5. Dit is een van de eerste algoritmes die breed werden aanvaard. Het werd ontwikkeld in 1991 en werd toen beschouwd als buitengewoon betrouwbaar.
Inmiddels weten hackers hoe ze dit algoritme in een paar seconden kunnen decoderen. De meeste experts zijn van mening dat dit algoritme niet geschikt is voor een breed gebruik omdat het zo eenvoudig te kraken is.
- RIPEMD-160. De RACE Integrity Primitives Evaluation Message Digest (of RIPEMD-160) werd midden jaren 90 in België ontwikkeld. Het wordt beschouwd als een zeer betrouwbaar algoritme. Hackers hebben het nog niet weten te kraken.
- SHA. Algoritmes uit de SHA-familie worden verondersteld net iets veiliger te zijn. De eerste versies werden ontwikkeld door de Amerikaanse overheid, maar andere programmeurs hebben voortgebouwd op de oorspronkelijke frameworks en nieuwe varianten gemaakt, die strikter en moeilijker te kraken zijn. Als vuistregel geldt: hoe hoger het nummer na de letters "SHA", hoe recenter de release en hoe complexer het programma.
Zo bevat SHA-3 bronnen van willekeur in de code, waardoor het algoritme veel lastiger te kraken is dan eerdere versies. Om die reden is het sinds 2015 het standaard hashing-algoritme.
- Whirlpool. In 2000 ontwikkelden developers dit algoritme op basis van de Advanced Encryption Standard. Het wordt ook geacht erg veilig te zijn.
De Amerikaanse overheid schrijft dan misschien geen hashing-algoritmes meer, maar overheidsinstanties spelen nog wel een belangrijke rol bij de bescherming van data. Het Cryptographic Module Validation Program, dat deels wordt uitgevoerd door het National Institute of Standards and Technology, valideert cryptografische modules. Organisaties kunnen deze resource gebruiken om zeker te weten dat de technologieën die ze gebruiken veilig en effectief zijn.
Hoeveel moet ik weten over hashing?
Als u op het gebied van security werkt, moet u op de hoogte zijn van de ins en outs van beschermingsmethoden. Hashing is een belangrijke methode om te voorkomen dat belangrijke data, waaronder wachtwoorden, wordt gestolen door iemand met de verkeerde intenties.
Het kan voor particulieren ook handig zijn om te weten wat hashing-concepten zijn. Als u bijvoorbeeld van plan bent bitcoins aan te schaffen, moet u over voldoende kennis over hashing beschikken. Uw handelspartners zullen dan namelijk grootafnemers van deze technologie zijn, omdat ze met blockchain-processen werken.
Maar maakt u zich geen zorgen als de wiskunde achter algoritmes verwarrend overkomt. De meeste computerprogramma’s voeren de ingewikkelde berekeningen voor u uit.
Bovendien is het met Okta erg eenvoudig om uw data te beschermen. We hebben geavanceerde programma’s die hackers op afstand houden en ervoor zorgen dat uw processen soepel verlopen.
En we staan altijd klaar om vragen te beantwoorden of u te helpen wanneer u daar behoefte aan hebt. Neem contact met ons op voor meer informatie.
Referenties
Hans Peter Luhn and the Birth of the Hashing Algorithm. (Januari 2018). IEEE Spectrum.
Hashing Algorithms. IBM Knowledge Center.
MD5 Hash Generator. Dan's Tools.
SHA-256 Hash Generator. Dan's Tools.
Cryptographic Hash Function. Wikipedia.
Cryptographic Module Validation Program. National Institute of Standards and Technology.