Hashing
ConceptenEen methode om met een speciaal algoritme een unieke code te berekenen voor een bestand of een stuk tekst of andere informatie. Deze unieke code heet hash of hashwaarde en is een soort digitale vingerafdruk. SHA-2 en Bcrypt zijn veelgebruikte algoritmes. Men gebruikt bijvoorbeeld SHA-2 om te controleren of een bestand, tekst of informatie niet is aangepast.
Hashing is een cryptografisch proces waarbij data van willekeurige grootte wordt omgezet in een vaste reeks tekens, de zogenaamde hashwaarde of digest. Deze omzetting is eenrichtingsverkeer: uit de hashwaarde kun je de oorspronkelijke data niet reconstrueren. In cybersecurity vormt hashing de basis voor wachtwoordopslag, integriteitscontrole van bestanden en digitale handtekeningen. Zonder hashing zou het veilig opslaan van wachtwoorden onmogelijk zijn en zou je niet kunnen verifieren of een bestand onderweg is gewijzigd.
Bekende hashalgoritmen zijn MD5, SHA-1 en SHA-256, waarbij SHA-256 onderdeel is van de SHA-2 familie die in 2001 door het NIST is gepubliceerd. Elk algoritme produceert een hashwaarde van een vaste lengte. SHA-256 genereert bijvoorbeeld altijd een hash van 256 bits, ongeacht of de invoer een enkel woord is of een bestand van meerdere gigabytes. Zelfs de kleinste wijziging in de invoer leidt tot een volledig andere hashwaarde, een eigenschap die het avalanche-effect wordt genoemd en cruciaal is voor de betrouwbaarheid van cryptografie in de praktijk.
Waarom is hashing belangrijk?
Hashing beschermt gevoelige gegevens op meerdere niveaus. Bij wachtwoordbeveiliging sla je nooit het wachtwoord zelf op, maar alleen de hashwaarde. Wanneer een gebruiker inlogt, wordt het ingevoerde wachtwoord opnieuw gehasht en vergeleken met de opgeslagen hash. Zelfs als een aanvaller de database met hashwaarden buit maakt, heeft die niet direct de wachtwoorden in handen. Dit principe is fundamenteel voor elke moderne authenticatie-implementatie.
Voor integriteitscontrole is hashing onmisbaar. Wanneer je software downloadt, kun je de hashwaarde van het gedownloade bestand vergelijken met de officieel gepubliceerde hash. Komen ze overeen, dan weet je dat het bestand niet is gemanipuleerd. Dit mechanisme beschermt tegen supply chain aanvallen waarbij kwaadwillenden malware injecteren in legitieme software. Het NCSC adviseert organisaties om checksums te verifieren bij het installeren van software en updates.
In de context van digitale handtekeningen en certificaten speelt hashing eveneens een centrale rol. Een digitale handtekening wordt niet over het hele document berekend, maar over de hashwaarde ervan. Dit maakt het proces efficient en veilig. Blockchain-technologie is volledig gebouwd op hashfuncties, waarbij elke block een hash bevat van het vorige block, waardoor een onveranderbare keten ontstaat. Ook forensisch onderzoek maakt gebruik van hashing om te bewijzen dat digitaal bewijs niet is gewijzigd na het veiligstellen.
Hoe pas je hashing toe?
Bij wachtwoordopslag is het cruciaal om niet alleen te hashen, maar ook salt en stretching toe te passen. Een salt is een willekeurige waarde die aan het wachtwoord wordt toegevoegd voor het hashen, waardoor identieke wachtwoorden verschillende hashwaarden krijgen. Key stretching algoritmen zoals bcrypt, scrypt of Argon2 maken het hashproces opzettelijk traag, waardoor brute-force aanvallen veel meer rekenkracht en tijd vergen. Volgens de OWASP Password Storage Cheat Sheet is Argon2id momenteel het aanbevolen algoritme voor wachtwoordhashing.
Voor integriteitscontrole implementeer je hashing in je change management en deployment processen. Bereken hashwaarden van kritieke systeembestanden en sla deze op als referentie. Gebruik een intrusion detection system dat automatisch hashwaarden vergelijkt en alarm slaat bij onverwachte wijzigingen. Host-based intrusion detection systemen zoals OSSEC en Wazuh bieden deze functionaliteit standaard aan en integreren met je SIEM-omgeving.
Bij het kiezen van een hashalgoritme is het belangrijk om verouderde algoritmen te vermijden. MD5 en SHA-1 zijn kwetsbaar voor collision-aanvallen, waarbij twee verschillende invoerwaarden dezelfde hash produceren. Gebruik minimaal SHA-256 voor integriteitscontroles en specifieke wachtwoordhash-algoritmen zoals bcrypt of Argon2 voor credentials. Plan een migratiepad voor het geval dat huidige algoritmen in de toekomst worden gecompromitteerd, en documenteer welke algoritmen waar in je infrastructuur worden gebruikt.
Implementeer ook hashing in je backup-strategie. Bereken hashwaarden van backups direct na het aanmaken en verifieer deze voor het terugzetten. Zo weet je zeker dat je backup niet is gecorrumpeerd of gemanipuleerd, wat essentieel is bij recovery na een ransomware-aanval. Automatiseer dit proces zodat menselijke fouten worden uitgesloten en integriteitscontroles consistent worden uitgevoerd bij elke backup-cyclus.
Hashing in de praktijk
Een middelgroot bedrijf slaat klantgegevens op in een webapplicatie. De wachtwoorden worden gehasht met bcrypt en een unieke salt per gebruiker. Wanneer een SQL-injectie aanvaller toegang krijgt tot de database, vindt die alleen hashwaarden en salts. Zonder de oorspronkelijke wachtwoorden kan de aanvaller niet direct inloggen op accounts. Het bcrypt-algoritme maakt brute-force pogingen extreem tijdrovend, waardoor het securityteam voldoende tijd heeft om het lek te dichten, getroffen gebruikers te waarschuwen en wachtwoordresets af te dwingen.
Had datzelfde bedrijf wachtwoorden in plaintext of met een ongesalte MD5-hash opgeslagen, dan was de impact catastrofaal geweest. Onderzoek van Specops Software toont aan dat een brute-force aanval op ongesalte SHA-256 hashes met een Nvidia RTX 4090 videokaart wachtwoorden van acht tekens binnen seconden kan kraken. Met salt en stretching loopt diezelfde kraaktijd op tot jaren, wat het verschil maakt tussen een beheersbaar incident en een volledig datalek. Dit onderstreept waarom de keuze van het juiste hashalgoritme en de correcte implementatie zo belangrijk zijn voor de bescherming van gebruikersgegevens en de reputatie van de organisatie.
Ook bij software-updates speelt hashing een praktische rol. Wanneer je een update voor bedrijfskritische software downloadt, vergelijk je de SHA-256 checksum met de waarde op de website van de leverancier. Als deze niet overeenkomen, installeer je de update niet en onderzoek je of er sprake is van een gecompromitteerde downloadbron. Deze simpele controle heeft in de praktijk al meerdere supply chain aanvallen voorkomen.
Veelgestelde vragen over hashing
Wat is het verschil tussen hashing en encryptie?
Hashing is eenrichtingsverkeer: je kunt de oorspronkelijke data niet terughalen uit een hash. Encryptie is tweezijdig: met de juiste sleutel kun je versleutelde data weer ontsleutelen. Gebruik hashing voor wachtwoorden en integriteitscontroles, encryptie voor data die je later weer leesbaar moet maken.
Is MD5 nog veilig voor wachtwoorden?
Nee. MD5 is kwetsbaar voor collision-aanvallen en te snel te berekenen voor veilige wachtwoordopslag. Gebruik in plaats daarvan bcrypt, scrypt of Argon2id. Deze algoritmen zijn specifiek ontworpen om brute-force aanvallen te vertragen door opzettelijk veel rekenkracht te vereisen.
Wat is een salt bij hashing?
Een salt is een willekeurige waarde die aan de invoer wordt toegevoegd voor het hashen. Hierdoor krijgen identieke wachtwoorden verschillende hashwaarden, wat rainbow table aanvallen onbruikbaar maakt. Elke gebruiker krijgt een unieke salt die samen met de hash wordt opgeslagen.
Kan een hash worden gekraakt?
Technisch gezien kun je een hash niet omkeren, maar je kunt proberen de oorspronkelijke invoer te raden via brute-force of rainbow tables. Sterke algoritmen met salt en stretching maken dit praktisch onhaalbaar voor complexe wachtwoorden, maar zwakke wachtwoorden blijven kwetsbaar ongeacht het algoritme.
Welk hashalgoritme moet ik kiezen?
Voor wachtwoorden: Argon2id (aanbevolen door OWASP) of bcrypt. Voor integriteitscontroles en digitale handtekeningen: SHA-256 of SHA-3. Vermijd MD5 en SHA-1 voor beveiligingsdoeleinden. Kies altijd het algoritme dat past bij het specifieke gebruik en volg actuele richtlijnen.
Bescherm je data met de juiste beveiligingsoplossingen. Vergelijk Identity & Access Management aanbieders op IBgidsNL.