Een hash is een string met een vaste lengte (digest) die wordt gegenereerd uit invoergegevens van elke grootte met behulp van een hashfunctie. Het proces is eenrichtingsverkeer: je kunt een hash niet decoderen of omkeren om de oorspronkelijke gegevens te verkrijgen. Daarom is "hash-encryptie" een verkeerde benaming; Hashing is geen encryptie.
Populaire hash-algoritmen zijn onder andere:
MD5 (verouderd vanwege beveiligingsdoeleinden)
SHA-1 (verouderd)
SHA-256, SHA-512 (onderdeel van de SHA-2-familie)
SHA-3
bcrypt, scrypt, Argon2 (voor veilige wachtwoordhashing)
Hashing dient verschillende doelen op het gebied van cyberbeveiliging en gegevensintegriteit. Belangrijke redenen om hashing te gebruiken zijn onder andere:
Gegevensintegriteit: Zorgt ervoor dat gegevens niet zijn gewijzigd (bijv. controlesommen van bestanden).
Wachtwoordopslag: Slaat wachtwoorden veilig op door hashes te vergelijken in plaats van daadwerkelijke wachtwoorden op te slaan.
Digitale handtekeningen: Hashes worden ondertekend in plaats van grote documenten.
Efficiëntie: Kleine hashwaarden met een vaste grootte zijn sneller te vergelijken dan grote blokken data.
Omdat hashes deterministisch en snel zijn, zijn ze ideaal voor verificatietaken.
Het gebruik van een hashfunctie omvat:
Het invoeren van gegevens (bijv. een bestand, tekenreeks of wachtwoord).
Het verwerken van de gegevens met een hash-algoritme.
Het verkrijgen van een digest, een tekenreeks met een vaste lengte die de invoer uniek vertegenwoordigt.
Voor wachtwoordbeveiliging:
Het wachtwoord combineren met een salt (willekeurige gegevens).
Een veilige hashfunctie toepassen (bijv. bcrypt of Argon2).
Opslaan de resulterende hash en salt veilig.
Omdat hashes niet ongedaan kunnen worden gemaakt, verifieert u de invoer (zoals een wachtwoord) door deze opnieuw te hashen en de nieuwe hash te vergelijken met de opgeslagen hash.
Hashing moet worden gebruikt wanneer:
De integriteit van de gegevens moet worden geverifieerd (bijv. controleren op corruptie of manipulatie).
Wachtwoorden moeten veilig worden opgeslagen (niet versleuteld of als platte tekst).
Digitale handtekeningen en certificaten zijn hierbij betrokken (hashing garandeert de authenticiteit van documenten).
Snelle gegevens vergelijking noodzakelijk is (bijvoorbeeld in hashtabellen of caches).
Hashing is niet geschikt wanneer u later originele gegevens wilt herstellen – daar is encryptie voor.