SHA (Secure Hash Algorithm) is een familie van cryptografische hashfuncties die gegevens van elke grootte omzetten in een unieke waarde met een vaste lengte, een zogenaamde hash-digest. Het is eenrichtingsverkeer en gebruikt geen sleutel, waardoor het niet kan worden teruggedraaid. SHA wordt gebruikt om de integriteit van gegevens te controleren, wachtwoorden te beschermen en digitale handtekeningen en certificaten te beveiligen.
SHA (Secure Hash Algorithm) is een familie van cryptografische hashfuncties die elke invoer omzetten in een tekenreeks met een vaste lengte, een zogenaamde hash-digest. Hashing is eenrichtingsverkeer en sleutelloos: dezelfde invoer levert altijd dezelfde digest op, maar de digest kan niet worden teruggezet naar de invoer. SHA wordt gebruikt om de integriteit van gegevens te controleren, wachtwoorden veilig op te slaan en als basis te dienen voor digitale handtekeningen en certificaten.
Key Takeaways
- SHA (Secure Hash Algorithm) is een familie van eenrichtingscryptografische hashfuncties die een unieke hash-samenvatting van vaste lengte genereren uit elke invoer.
- Hashing is geen encryptie: het is eenrichtingsverkeer en gebruikt geen sleutel, dus een hash kan niet worden teruggezet naar de oorspronkelijke gegevens.
- Een minuscule verandering in de invoer verandert de uitvoer volledig (het lawine-effect), en dat maakt SHA ideaal voor het detecteren van manipulatie.
- SHA-1 is gekraakt (door de SHAttered-botsingsaanval uit 2017) en wordt niet meer gebruikt. SHA-2 (inclusief SHA-256) is de huidige standaard en SHA-3 is een alternatief gebaseerd op een ander ontwerp.
- SHA wordt gebruikt voor gegevensintegriteit, wachtwoordopslag, digitale handtekeningen en certificaten, en blockchain. Elk publiekelijk vertrouwd TLS-certificaat is ondertekend met SHA-2.
Wat is SHA?
SHA staat voor Secure Hash Algorithm. Het is een familie van hashfuncties die worden gebruikt om data en digitale certificaten te hashen . Een hashfunctie neemt een invoer van willekeurige grootte en reduceert deze, met behulp van bitwise-bewerkingen, modulaire optellingen en compressiefuncties, tot een uitvoer van vaste lengte die niet kan worden gelezen of teruggedraaid. De SHA-familie stamt af van de eerdere MD (Message Digest)-ontwerplijn, maar is een aparte, sterkere set algoritmen die is ontworpen door de NSA en gestandaardiseerd door NIST.

Hashing is geen encryptie.
Een veelvoorkomende misvatting is dat hashing een vorm van encryptie is. Dat is het niet. Encryptie is tweerichtingsverkeer en maakt gebruik van een sleutel: je versleutelt met een sleutel en ontsleutelt met een sleutel om de oorspronkelijke gegevens te herstellen. Hashing is eenrichtingsverkeer en sleutelloos: zodra gegevens gehasht zijn, kan de hash niet meer worden teruggezet naar de oorspronkelijke invoer. Er bestaat geen 'ontsleuteling' van een hash. De enige manier om de invoer achter een hash te achterhalen, is door invoerwaarden te raden en deze te hashen totdat er één overeenkomt (een brute-force-aanval). Deze eenrichtingseigenschap is precies de reden waarom hashing wordt gebruikt om de integriteit te controleren en wachtwoorden op te slaan, waarbij je nooit het origineel hoeft te herstellen, maar alleen hoeft te controleren of een waarde overeenkomt.
Het lawine-effect
SHA is zo ontworpen dat zelfs een wijziging van één enkel teken in de invoer de uitvoer volledig verandert. Het hashen van het woord 'Heaven' en het woord 'heaven', die slechts één hoofdletter verschillen, levert twee volledig verschillende, ongerelateerde hashwaarden op. Deze eigenschap wordt het lawine-effect genoemd en is om twee redenen belangrijk: het voorkomt dat een aanvaller iets over de invoer kan afleiden uit de hashwaarde, en het stelt een ontvanger in staat te detecteren dat een bericht tijdens de verzending is gewijzigd, aangezien elke wijziging, hoe klein ook, een andere hashwaarde oplevert.
SHA-functies zijn ook deterministisch: dezelfde invoer levert altijd dezelfde hash op, dus iedereen die dezelfde SHA-functie gebruikt, kan een hash opnieuw berekenen en verifiëren. Deze deterministische aard is een van de redenen waarom elk publiekelijk vertrouwd TLS-certificaat op internet gehasht moet worden met een SHA-2-functie.
De SHA-familie: SHA-1, SHA-2 en SHA-3
Er worden verschillende namen gebruikt (SHA-1, SHA-256, SHA-512, enzovoort), maar ze behoren tot een paar verschillende generaties. SHA-256 en SHA-512 zijn bijvoorbeeld simpelweg varianten van SHA-2 met verschillende digestgroottes.
| Algoritme | Digestgrootte | Status |
| SHA-1 | 160-bit | Defect en verouderd (SHAttered-botsing, 2017). Niet gebruiken. |
| SHA-2 (SHA-224/256/384/512) | 224 tot 512 bits | Huidige standaard; SHA-256 is de meest voorkomende. Veilig. |
| SHA-3 (SHA3-256/384/512) | 224 tot 512 bits | Alternatief voor SHA-2, ander intern ontwerp (Keccak). Veilig. |
SHA-1 (verouderd)
SHA-1, geïntroduceerd in 1993, was het oorspronkelijke veilige hash-algoritme en produceerde een hash van 160 bits. Deze hash is te kort volgens moderne standaarden, waardoor botsingsaanvallen (het vinden van twee verschillende invoerwaarden die dezelfde hash opleveren) steeds vaker mogelijk werden. In 2017 demonstreerden onderzoekers van Google en CWI een praktische SHA-1-botsing in de baanbrekende SHAttered-aanval, waarmee werd bevestigd dat SHA-1 niet meer betrouwbaar was. Het algoritme is nu verouderd en mag niet meer worden gebruikt voor beveiligingsdoeleinden.
SHA-2 (de huidige standaard)
SHA-2 is de huidige industriestandaard en biedt een reeks hashgroottes van 224 tot 512 bits, waarbij SHA-256 de meest gebruikte is. De grotere hashes maken botsingen en brute-force-aanvallen met de huidige technologie computationeel onhaalbaar. Sinds 2016 is SHA-2 verplicht voor alle publiekelijk vertrouwde digitale certificaten en digitale handtekeningen. De migratie van SHA-1 naar SHA-2 heeft jaren geduurd, omdat het upgraden van verouderde systemen, het vervangen van certificaten en het herconfigureren van protocollen vereiste, maar SHA-256 is nu de standaard voor SSL/TLS-certificaten en digitale handtekeningen.
SHA-3 (het moderne alternatief)
SHA-3, gestandaardiseerd door NIST in 2015, is geen vervanging voor SHA-2, maar een alternatief gebouwd op een volledig ander intern ontwerp (de Keccak-sponsconstructie). Omdat het anders werkt, biedt het een extra beveiliging: mocht er ooit een structurele zwakte in SHA-2 worden gevonden, dan zou SHA-3 daar geen last van hebben. Het werd bij de introductie niet breed geaccepteerd omdat de meeste organisaties nog bezig waren met de overstap van SHA-1 naar SHA-2, en SHA-2 nog steeds veilig was. SHA-3 kan in software trager zijn, maar is efficiënt in hardware. Zowel SHA-2 als SHA-3 worden tegenwoordig als veilig beschouwd.
Waarvoor wordt SHA gebruikt?
SHA is overal in de moderne beveiliging te vinden, meestal achter de schermen. De belangrijkste toepassingen zijn:
- Digitale handtekeningen en certificaten: SHA-2 is vereist voor alle TLS/SSL-certificaten en digitale handtekeningen. De gegevens worden gehasht en de hash wordt vervolgens ondertekend. Dit is sneller en veiliger dan het ondertekenen van het hele bericht.
- Data-integriteit: De hash van een bestand fungeert als een vingerafdruk. Als het bestand tijdens transport of opslag verandert, komt de hash niet meer overeen met het origineel, wat wijst op manipulatie of beschadiging.
- Wachtwoordopslag: Systemen slaan de hash van een wachtwoord op, niet het wachtwoord zelf. Bij het inloggen wordt het ingevoerde wachtwoord gehasht en vergeleken. Als de database wordt gestolen, krijgen aanvallers hashes in handen, geen bruikbare wachtwoorden (vooral niet als ze een salt bevatten).
- Veilige protocollen: SSH, S/MIME en IPsec gebruiken allemaal SHA-functies als onderdeel van hun beveiliging.
- Blockchain: SHA-256 is essentieel voor Bitcoin, omdat het het miningproces beveiligt en de blokken in de blockchain met elkaar verbindt.
Waarom SHA gebruiken?
- Weerstand tegen aanvallen: Een wachtwoord dat met SHA-2 is gehasht, kan jaren of zelfs decennia duren om te kraken met een brute-force-aanval. Dit ontmoedigt aanvallers en beschermt opgeslagen inloggegevens.
- Uniekheid (botsingsbestendigheid): Bij SHA-2 levert elke afzonderlijke invoer in de praktijk een afzonderlijke hash op, waardoor er geen patroon is dat een aanvaller kan misbruiken.
- Integriteitsverificatie: Elke wijziging in de gegevens, hoe klein ook, produceert een volledig andere hash, waardoor manipulatie gemakkelijk te detecteren is.
- Determinisme en snelheid: Dezelfde invoer levert altijd snel dezelfde hashwaarde op, waardoor de verificatie efficiënt en betrouwbaar is.
SHA en de post-kwantumtransitie
In tegenstelling tot de publieke-sleutelalgoritmen RSA en ECC zijn hashfuncties relatief bestand tegen kwantumcomputers. De relevante kwantumaanval (het algoritme van Grover) zorgt slechts voor een kwadratische versnelling, waardoor het beveiligingsniveau van een hash effectief wordt gehalveerd in plaats van volledig te worden gekraakt. In de praktijk betekent dit dat SHA-256 en hoger veilig blijven, terwijl SHA-384 en hoger worden aanbevolen voor de hoogste betrouwbaarheid en langdurig gebruik. Hashfuncties spelen ook een directe rol in post-kwantumcryptografie : de NIST-standaard SLH-DSA (FIPS 205) en de stateful schema's LMS en XMSS bouwen digitale handtekeningen volledig op uit hashfuncties, juist omdat hashing zo goed begrepen en kwantumbestendig is.
Hoe encryptieconsultancy kan helpen
Het gebruik van de juiste hashfuncties en het uitfaseren van zwakke functies zoals SHA-1 en MD5 is onderdeel van een solide cryptografische strategie. De Encryption Advisory Services van Encryption Consulting helpen organisaties te beoordelen waar hashing wordt gebruikt, verouderde algoritmen te identificeren en hashing-, ondertekenings- en certificeringspraktijken af ​​te stemmen op de NIST- en FIPS - richtlijnen, inclusief de voorbereiding op de post-kwantumtransitie. Ondersteund door ISO/IEC 27001:2022 en SOC 2-gecertificeerde werkwijzen.
Veelgestelde Vragen / FAQ
Wat is SHA?
SHA (Secure Hash Algorithm) is een familie van cryptografische hashfuncties die gegevens van elke grootte omzetten in een waarde met een vaste lengte, een zogenaamde hash-digest. Het is eenrichtingsverkeer, wat betekent dat de digest niet kan worden teruggezet naar de oorspronkelijke gegevens, en er wordt geen sleutel gebruikt. SHA wordt gebruikt om te controleren of gegevens niet zijn gewijzigd, om wachtwoorden veilig op te slaan en om digitale handtekeningen en certificaten te ondersteunen. SHA-256 is de meest gebruikte versie.
Waarvoor wordt SHA gebruikt?
SHA wordt voor diverse beveiligingsdoeleinden gebruikt: het verifiëren van de data-integriteit (de hash van een bestand laat zien of het is gewijzigd), het veilig opslaan van wachtwoorden (systemen slaan de hash op, niet het wachtwoord) en het beveiligen van digitale handtekeningen en certificaten (de data wordt gehasht en de hash wordt ondertekend). Het is vereist voor alle publiekelijk vertrouwde TLS/SSL-certificaten, wordt gebruikt in beveiligde protocollen zoals SSH en IPsec, en is essentieel voor blockchain-systemen zoals Bitcoin.
Is SHA-encryptie correct?
Nee. SHA is een hashfunctie, geen encryptie. Encryptie is tweerichtingsverkeer en gebruikt een sleutel, waardoor versleutelde gegevens met de juiste sleutel weer kunnen worden gedecodeerd naar de oorspronkelijke gegevens. Hashing is eenrichtingsverkeer en sleutelloos: zodra gegevens zijn gehasht, kan de hash niet meer worden teruggezet naar de oorspronkelijke gegevens. De enige manier om de oorspronkelijke gegevens achter een hash te achterhalen, is door te gokken en verschillende invoerwaarden te testen. Daarom wordt hashing gebruikt voor integriteitscontroles en wachtwoordopslag, waar het herstellen van de oorspronkelijke gegevens niet nodig is.
Is SHA-1 nog steeds veilig?
Nee. SHA-1 is onveilig en verouderd. De hash van 160 bits is te kort, waardoor botsingsaanvallen (twee verschillende invoerwaarden die dezelfde hash opleveren) mogelijk werden. In 2017 demonstreerden onderzoekers van Google en CWI een praktische botsing in de SHAttered-aanval, waarmee werd bevestigd dat SHA-1 onveilig is. Het mag niet worden gebruikt voor beveiligingsdoeleinden. SHA-2 (zoals SHA-256) is de huidige standaard en SHA-3 is een veilig alternatief.
Wat is het verschil tussen SHA-1, SHA-2 en SHA-3?
SHA-1 is het oorspronkelijke 160-bits algoritme, dat inmiddels is gekraakt en verouderd. SHA-2 is de huidige standaard, een familie van algoritmen die hashgroottes van 224 tot 512 bits biedt (SHA-256 is het meest voorkomend) en is veilig. SHA-3, gestandaardiseerd in 2015, is een veilig alternatief gebouwd op een volledig ander intern ontwerp (Keccak), dat een vangnet biedt voor het geval er ooit een zwak punt in SHA-2 wordt gevonden. Zowel SHA-2 als SHA-3 worden tegenwoordig als veilig beschouwd; SHA-1 niet.
Is SHA veilig tegen kwantumcomputers?
Grotendeels wel. Hashfuncties zijn veel beter bestand tegen kwantumaanvallen dan algoritmen met publieke sleutels zoals RSA. De relevante kwantumaanval, het Grover-algoritme, halveert slechts de effectieve beveiliging van een hash in plaats van deze te breken. Daarom blijven SHA-256 en hoger veilig, terwijl SHA-384 en hoger worden aanbevolen voor langdurige zekerheid. Hashing geniet zoveel vertrouwen dat post-kwantumsignatuurstandaarden zoals SLH-DSA (FIPS 205) en de LMS- en XMSS-schema's volledig zijn gebaseerd op hashfuncties.
Verbeter uw hashing- en certificeringspraktijken.
Het gebruik van actuele hashfuncties en het uitfaseren van zwakke functies is een kleine aanpassing met een grote winst op het gebied van beveiliging. Ontdek de adviesdiensten van Encryption Consulting om uw hash-, ondertekenings- en certificaatpraktijken te laten beoordelen aan de hand van de huidige standaarden.
