Wat is hashing en wat is een hash?
Betekenis hashen: het Engelse woord hashen betekent 'mengelen'. Hashen is het omzetten van een gegeven sleutel of tekenreeks in een andere waarde.
Hashing is een methode van cryptografie die elke vorm van gegevens omzet in een unieke tekenreeks. In een hashing-proces wordt op een willekeurige hoeveelheid gegevens een hashing-algoritme toegepast. Het algoritme genereert een reeks uitvoergegevens die de ‘hash’ of ‘hash-waarde’ wordt genoemd. Alle gegeven — van tekst en audio tot video en uitvoerbare bestanden — kunnen gehasht worden. De gegenereerde hashes zijn altijd even lang, ongeacht de hoeveelheid gegevens die je invoert.
De kernfunctie van hashing is het voorkomen dat er met informatie of een bestand wordt geknoeid.
Hashing is een eenrichtingsproces dat niet kan worden omgekeerd (in tegenstelling tot versleutelde gegevens, die met de correcte decryptiesleutel kunnen worden ontcijferd). Wanneer bedrijven gebruikersgegevens opslaan (bijvoorbeeld gebruikersnamen en wachtwoorden), kunnen ze hashing gebruiken om ervoor te zorgen dat de informatie privé blijft, zelfs als er een datalek plaatsvindt (waardoor sterke wachtwoorden ook blootgesteld worden).
Hoe werkt hashing?
Je neemt een willekeurige hoeveelheid gegevens en pas er een hashing-algoritme of hashfuntie op toe. Het algoritme genereert een hashwaarde. Hashing produceert altijd een hashwaarde met een vaste lengte, ongeacht de lengte/grootte van de invoer.
Een voorbeeld:
Input: Mijn naam is Ben.
Hash: 8ba59bc29e8b95031a61867362b55d20e5717051
Input: Input: Mijn naam is Ben. Ik hou van reizen, lezen en sporten. Mijn vriendin heet Annemarie.
Input: Hash: 44b66a71fcc92a0c8ba00c7cda0badeb1df3852e
De hashwaarde is deterministisch van aard. In principe produceert dezelfde invoer altijd dezelfde hashwaarde. Een unieke invoerstring zou dus een unieke hashwaarde moeten hebben.
Er zijn echter zeldzame gevallen waarin sleutels identieke hashwaarden gebruiken. Dit kan resulteren in de zogenaamde hash-botsing.
Een bepalend kenmerk van elk hashing-algoritme is hoe botsingsbestendig zijn hashfuncties zijn. Botsing is een kwetsbaarheid van de hashfunctie die kwaadwillenden kunnen uitbuiten, dus een goed hashing-algoritme moet complex genoeg zijn om botsingen te vermijden.
Voordelen van hashing
Wat zijn de grootste pluspunten van hashing? En zitten er ook nadelen aan?
Voordelen hashfuncties:
- Een groot pluspunt van hashen is dat twee bestanden snel en effectief op gelijkheid gecheckt kunnen worden. Zonder twee bestanden te hoeven openen om ze woord voor woord te vergelijken, is aan de hand van de berekende hash-waarden onmiddellijk zichtbaar of ze verschillen.
- Met hashing kun je snel en effectief de integriteit van een bestand controleren, nadat het over een netwerk verstuurd is. Dit doe je door de hashwaarden voor en na het versturen te berekenen – als deze waarden identiek zijn, is er tijdens de transfer niet met het bestand geknoeid. Softwarebedrijven geven bijvoorbeeld vaak hashwaarden met hun software mee. Als de software die je hebt gedownload dezelfde hashwaarde heeft, weet je zeker dat hij niet met malware geïnfecteerd is.
- Een gehasht wachtwoord kan niet worden gewijzigd of gestolen. Er bestaat geen hashsleutel of encryptiemethode die misbruikt kan worden. Je hoeft je ook geen zorgen te maken als een hashcode wordt gestolen, omdat deze nergens anders kan worden toegepast.
Nadelen hashfuncties:
Het gebruik van hashing is inefficiënt wanneer er veel botsingen zijn. Een hash-botsing komt voor wanneer twee bestanden toch dezelfde hash als resultaat geven.
Soorten hashing
Net als encryptie zijn er verschillende hashing-algoritmes die in sterkte verschillen:
- MD5. Een MD5-hashfunctie codeert een informatiestring en zet die om in een 128-bits vingerafdruk. MD5 wordt vaak gebruikt als controlesom om de integriteit van gegevens te verifiëren. 128-bits is echter niet altijd voldoende voor een goede bescherming, maar het is nog steeds een van de meest gebruikte algoritmen ter wereld.
- SHA. SHA werd ontwikkeld door de National Security Agency in 1993. De oorspronkelijke versie had veel gebreken, dus SHA is een paar keer bijgewerkt. De latere versies worden nu veel gebruikt voor cryptografische doeleinden. Vanwege de geavanceerde hash-functies wordt het beschouwd als een redelijk veilig protocol.
- CRC32. CRC32 is een populair controlesomalgoritme dat wordt gebruikt om gegevensbeschadiging op te sporen, omdat het coderen van dezelfde gegevensreeks met CRC32 altijd dezelfde hashuitvoer oplevert. Er bestaan meerdere varianten van het algoritme met vergelijkbare wiskundige eigenschappen.
Voorbeelden van het gebruik van hashing
Dit zijn enkele voorbeelden van het gebruik van hashing:
- Controleren integriteit van bestanden. Hashen controleert de integriteit van bestanden tijdens het delen, downloaden of kopiëren van bestanden. Het garandeert dat de bestanden die je krijgt intact zijn en dat er niet mee geknoeid is.
- Digitale handtekeningen. Digitale handtekeningen vereisen bijna altijd de berekening van een cryptografische hash. Dit garandeert hun efficiëntie en veiligheid.
- Wachtwoordverificatie. Voor wachtwoordverificatie worden gewoonlijk cryptografische hashes gebruikt. Hash digests voorkomen dat wachtwoorden worden gecompromitteerd. Tijdens het authenticatieproces vergelijkt een systeem de hashes van een door de gebruiker ingevoerd wachtwoord met zijn eigen opgeslagen waarden.
- Bescherming cryptocurrency. Hashing wordt gebruikt in cryptocurrency-systemen om ze te beschermen tegen DDoS-aanvallen en ander misbruik
- Bestandsidentificatie. Hashing wordt gebruikt voor bestandsidentificatie. Dit beschermt gebruikers tegen vervalsing.
Hashing vs. encryptie
Wat is het verschil tussen hashing en encryptie? Hoewel beide methoden je gegevens beschermen tegen snoopers en aanvallen, zijn er een aantal belangrijke verschillen:
- Hashing is eenrichtingsverkeer, terwijl encryptie tweerichtingsverkeer is. Encryptie verandert een platte tekst in onleesbare tekst. Maar deze tekst kan ontcijferd worden door iedereen die de juiste sleutel in bezit heeft. Hashing zet een platte tekst om in een unieke, gecodeerde hash-eenheid, die niet kan worden teruggezet in leesbare vorm.
- Hashing wordt meestal gebruikt om de integriteit van gegevens te waarborgen en wordt vooral toegepast op grote hoeveelheden date. Encryptie wordt daarentegen gebruikt om de privacy van kleine hoeveelheden gegevens tijdens transport te beschermen.
Online beveiliging begint met een klik.
Blijf veilig met 's werelds toonaangevende VPN