Hashing
MD5, SHA en bcrypt
Hashing is een gratis Ethical Hacking Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Ethical Hacking Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Ethical Hacking Academy bevat in totaal 4 lessen.
Wat is een hash?
Een hashfunctie neemt invoer van willekeurige grootte en produceert uitvoer met een vaste grootte, een zogenaamde digest. Dezelfde invoer levert altijd dezelfde digest op.
Belangrijk is dat hashing een eenrichtingsbewerking is. Je kunt een digest wiskundig niet terugdraaien naar de oorspronkelijke invoer. Daardoor verschillen hashes van zowel codering als versleuteling.
Eigenschappen van een goede hash
Een cryptografische hashfunctie hoort:
- Deterministisch te zijn: dezelfde invoer levert dezelfde uitvoer op.
- Snel te berekenen te zijn (voor algemene hashing), maar bij voorkeur traag voor het hashen van wachtwoorden.
- Bestand tegen preimages te zijn: gegeven een digest kun je de invoer niet vinden.
- Bestand tegen botsingen te zijn: het moet moeilijk zijn om twee invoeren met dezelfde digest te vinden.
- Een lawine-effect te hebben: één gewijzigde bit verandert ongeveer de helft van de uitvoerbits.
MD5
MD5 produceert een digest van 128 bits (32 hexadecimale tekens). Het is snel en was historisch veelgebruikt, maar het is cryptografisch gebroken: er bestaan praktische botsingsaanvallen.
Gebruik MD5 nooit voor beveiliging. Je komt het nog wel tegen voor controlesommen van bestanden en in oudere systemen, waardoor het tijdens beoordelingen vaak een doelwit is.
echo -n 'password' | md5sum
# 5f4dcc3b5aa765d61d8327deb882cf99De SHA-familie
De familie van SHA (Secure Hash Algorithm) is robuuster:
- SHA-1: 160 bits. Wordt nu als gebroken beschouwd (botsingsaanval 'SHADOW HAMMER' / SHAttered). Vermijd het.
- SHA-2: omvat SHA-256 en SHA-512. Breed gebruikt en momenteel veilig.
- SHA-3: een nieuwer ontwerp gebaseerd op Keccak, als alternatief voor SHA-2.
echo -n 'password' | sha256sum
# 5e884898da28047151d0e56f8dc629...Hashing is geen versleuteling
Versleuteling kan met een sleutel worden teruggedraaid. Hashing kan helemaal niet worden teruggedraaid. Precies daarom wordt hashing gebruikt om wachtwoorden op te slaan: de server heeft het oorspronkelijke wachtwoord nooit nodig.
Wanneer je inlogt, hasht de server wat je hebt ingevoerd en vergelijkt hij dat met de opgeslagen hash. Als ze overeenkomen, ben je geauthenticeerd. Het wachtwoord in platte tekst wordt nooit opgeslagen.
Het probleem: rainbowtabellen
Omdat hashing deterministisch is, is de digest van 'password' voor elke gebruiker hetzelfde. Aanvallers berekenen vooraf enorme opzoektabellen met digest-naar-plaintext-paren, genaamd rainbowtabellen.
Als twee gebruikers hetzelfde wachtwoord hebben, zijn hun opgeslagen hashes identiek, waardoor dat feit uitlekt. Gewone snelle hashes zoals MD5 of SHA-256 zijn op zichzelf niet geschikt voor wachtwoorden.
Salting
Een salt is een unieke willekeurige waarde die vóór het hashen aan elk wachtwoord wordt toegevoegd. Dit betekent:
- Identieke wachtwoorden leveren verschillende hashes op.
- Vooraf berekende rainbowtabellen worden daardoor onbruikbaar.
De salt wordt naast de hash opgeslagen en is niet geheim. Het doel is om elke hash uniek te maken, zodat aanvallers elke hash afzonderlijk moeten kraken.
stored = salt + hash(salt + password)
# salt is random and unique per userbcrypt: ontworpen voor wachtwoorden
bcrypt is specifiek ontworpen voor het opslaan van wachtwoorden. Het is bewust traag en bevat een configureerbare kostenfactor (werkfactor), die het algoritme trager maakt naarmate hardware beter wordt.
Een bcrypt-hash bevat het algoritme, de kosten en de salt in één tekenreeks. De traagheid is een functie: hierdoor kunnen aanvallers minder snel gokken.
$2b$12$R9h/cIPz0gi.URNNX3kh2OPST9/PgBkqquzi.Ss7KIUgO2t0jWMUW
# $2b$ = bcrypt, 12 = cost factor, then salt + hashAndere trage hashes
Naast bcrypt zijn dit moderne opties voor het hashen van wachtwoorden:
- scrypt: geheugenintensief en bestand tegen aanvallen met GPU's en ASIC's.
- Argon2: winnaar van de Password Hashing Competition, instelbaar voor tijd en geheugen. De aanbevolen moderne keuze.
- PBKDF2: past een snelle hash vele duizenden keren toe; acceptabel, maar zwakker dan de bovenstaande opties.
HMAC en integriteit
Hashes worden ook gebruikt voor integriteit, niet alleen voor wachtwoorden. Een HMAC (op hashing gebaseerde berichtauthenticatiecode) combineert een hash met een geheime sleutel om zowel de integriteit als de authenticiteit van een bericht te verifiëren.
Controlesommen van bestanden (vaak SHA-256) laten je controleren of er niet met een download is geknoeid. Als hacker kunnen niet-overeenkomende controlesommen gewijzigde of schadelijke bestanden onthullen.
Hashes in de praktijk
Als hacker kom je voortdurend hashes tegen:
- /etc/shadow op Linux slaat gesalte wachtwoordhashes op, met voorvoegsels zoals
$6$(SHA-512) of$2b$(bcrypt). - Windows slaat NTLM-hashes op in de SAM-database.
- Webapps slaan gehashte wachtwoorden op in hun gebruikerstabellen.
Als je het voorvoegsel herkent, weet je direct welk algoritme wordt gebruikt en welke kraakstrategie je nodig hebt.
$6$rounds=5000$salt$hash # SHA-512 crypt
$2b$12$saltandhash... # bcryptKorte controle
Kies de veiligste optie voor het opslaan van gebruikerswachtwoorden.
Samenvatting
Je begrijpt hashing nu:
- Hashing is een eenrichtings-, transformatie met een vaste grootte die deterministisch is en verschilt van codering en encryptie.
- MD5 en SHA-1 zijn gekraakt; gebruik SHA-256 voor algemene integriteit.
- Gebruik voor wachtwoorden trage algoritmen met salts: bcrypt, scrypt of Argon2.
- Salts maken rainbowtabellen onbruikbaar; HMAC voegt integriteit met een sleutel toe.
Vervolgens verken je symmetrische en asymmetrische encryptie met AES en RSA.
Leer Ethical Hacking Academy met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 31
- Lessen
- 111
Veelgestelde vragen
Is de les “Hashing” gratis?
Ja — de volledige tekst van “Hashing” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Ethical Hacking Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Ethical Hacking Academy bevat in totaal 4 lessen.
Wat leer ik in “Hashing”?
MD5, SHA en bcrypt Je oefent met Ethical Hacking Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Ethical Hacking Academy te beginnen?
Ervaring vooraf is niet nodig. Ethical Hacking Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Hashing”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Ethical Hacking Academy?
Ja. Elke les over Ethical Hacking Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.