Hashing is een fundamenteel concept in cryptografie en informatiebeveiliging. Onze gids verkent de principes van hashing en legt uit hoe cryptografische hashfuncties werken en hoe belangrijk ze zijn voor de bescherming van gevoelige gegevens.
Lees meer over de verschillende soorten hashfuncties, hun eigenschappen en veelvoorkomende toepassingen, zoals wachtwoordopslag, verificatie van gegevensintegriteit en digitale handtekeningen. Ontdek hoe u de juiste hashfunctie voor uw specifieke gebruikssituatie kunt kiezen en veilige hashingpraktijken in uw organisatie kunt implementeren.

Wat is een hash-algoritme?
Hashes zijn de output van een hashing-algoritme zoals MD5 (Message Digest 5) of SHA (Secure Hash Algorithm). Deze algoritmen zijn in wezen bedoeld om een unieke string met een vaste lengte te produceren – de hashwaarde of 'message digest' – voor elk willekeurig stukje data of 'bericht'. Aangezien elk bestand op een computer uiteindelijk slechts gegevens zijn die in binaire vorm kunnen worden weergegeven, kan een hash-algoritme die gegevens nemen en er een complexe berekening op uitvoeren, waarna een tekenreeks met een vaste lengte als resultaat van de berekening wordt weergegeven. Het resultaat is de hashwaarde of message digest van het bestand.
Om de hash van een bestand in Windows 10 te berekenen, gebruikt u de ingebouwde Get-FileHash
cmdlet en voer het pad in naar een bestand waarvan u de hashwaarde wilt genereren. Standaard wordt het SHA-2 256-algoritme gebruikt:

U kunt naar een ander algoritme overschakelen door dit achter het bestandspad te specificeren met de schakelaar -Algorithm
. Door het resultaat door te geven aan Format-List
krijgt u ook een meer leesbare uitvoer:

Voor Mac- en Linux-gebruikers hebben de opdrachtregelprogramma's shasum
en md5
hetzelfde doel. Zoals wezo dadelijk zullen zien, is de hashwaarde identiek voor elk bestand en hash-algoritme, ongeacht of u Windows, Mac of Linux gebruikt.
Hoe hashes identiteit vaststellen
Hashes kunnen niet worden teruggedraaid, dus als u alleen de hash van een bestand kent die is gegenereerd met een hash-algoritme, kunt u de inhoud van het bestand niet reconstrueren. Wat je wel kunt doen, is bepalen of twee bestanden identiek zijn zonder iets te weten over hun inhoud.
Om deze reden is het idee dat het resultaat uniek is fundamenteel voor het hele concept van hashes. Als twee verschillende bestanden dezelfde digest zouden kunnen produceren, zouden we een "botsing" hebben en zouden we de hash niet kunnen gebruiken als een betrouwbare identificatie voor dat bestand.
De kans op een botsing is klein, maar niet ondenkbaar, en dat is de reden waarom veiligere algoritmen zoals SHA-2 SHA-1 en MD5 hebben vervangen. De inhoud van de volgende twee bestanden, ship.jpg en plane.jpg duidelijk verschillend, zoals uit een eenvoudige visuele inspectie blijkt, dus zouden ze verschillende berichtdigests moeten opleveren.

Wanneer we de waarde echter met MD5 berekenen, krijgen we een botsing, waardoor ten onrechte wordt aangegeven dat de bestanden identiek zijn. Hier is de uitvoer afkomstig van de opdrachtregel op macOS met behulp van Terminal.app, maar u kunt zien dat de hashwaarde ship.jpg
hetzelfde is als die we eerder met PowerShell hebben gekregen:

Laten we de hashwaarde berekenen met SHA-2 256. Nu krijgen we een nauwkeuriger resultaat dat aangeeft dat de bestanden inderdaad verschillend zijn, zoals verwacht:

Waarvoor wordt hashing gebruikt?
Als we een unieke identificatiecode voor een bestand hebben, kunnen we deze informatie op verschillende manieren gebruiken. Sommige oudere antivirusoplossingen vertrouwen volledig op hashwaarden om te bepalen of een bestand schadelijk is, zonder de inhoud of het gedrag van het bestand te onderzoeken. Ze doen dit door een interne database bij te houden van hashwaarden die bij bekende malware horen. Bij het scannen van een systeem berekent de antivirusengine een hashwaarde voor elk uitvoerbaar bestand op de computer van de gebruiker en controleert of er een overeenkomst is in de database.
Dit moet in de begintijd van cyberbeveiliging, maar achteraf gezien is het niet moeilijk om de tekortkomingen van het vertrouwen op hashwaarden in te zien.
Ten eerste is het bijhouden van een database met handtekeningen een taak geworden die simpelweg niet meer te doen is, omdat het aantal malwarevoorbeelden explosief is toegenomen. Naar schatting verschijnen er dagelijks meer dan 500.000 unieke malwarevoorbeelden. Dat komt waarschijnlijk grotendeels doordat malware-authors zich realiseren dat ze AV-engines die gebruikmaken van hashes gemakkelijk kunnen misleiden, zodat ze een voorbeeld niet herkennen. Het enige wat de aanvaller hoeft te doen, is een extra byte aan het einde van een bestand toevoegen, waardoor een andere hash wordt geproduceerd.

Dit is zo'n eenvoudig proces dat malware-authors het proces automatiseren zodat dezelfde URL om de paar seconden dezelfde malware met een andere hash aan slachtoffers levert.
Ten tweede is het altijd een tekortkoming van traditionele antivirussoftware geweest dat detectie voorkennis van de dreiging vereist, waardoor een antimalwareoplossing die afhankelijk is van een database met bekende hashwaarden altijd een stap achterloopt op de volgende aanval.
Het antwoord daarop is natuurlijk een beveiligingsoplossing die gebruikmaakt van gedragsmatige AI maakt en die een diepgaande verdedigingsstrategie hanteert.
Dat betekent echter niet dat hashwaarden geen waarde hebben! Integendeel, het uniek kunnen identificeren van een bestand heeft nog steeds belangrijke voordelen. Hashwaarden worden in veel contexten gebruikt in digitale handtekeningen en certificaten, zoals bij het ondertekenen van code en SSL, om te helpen vaststellen dat een bestand, website of download echt is.

Hashwaarden zijn ook een grote hulp voor beveiligingsonderzoekers, SOC-teams, malwarejagers en reverse engineers. Een van de meest voorkomende toepassingen van hashes die u in veel technische rapporten hier op SentinelOne en elders, is het delen van Indicators of Compromise. Met behulp van hash-waarden kunnen onderzoekers verwijzen naar malwarevoorbeelden en deze delen met anderen via malware-repositories zoals VirusTotal, VirusBay, Malpedia en MalShare.

Voordelen van hashes bij het opsporen van bedreigingen
Threat hunting wordt ook eenvoudiger dankzij hash-waarden. Laten we eens kijken naar een voorbeeld van hoe een IT-beheerder met behulp van hash-waarden in de SentinelOne-beheerconsole naar bedreigingen in zijn hele netwerk kan zoeken.
Hashes zijn erg handig wanneer u een bedreiging op één machine identificeert en uw hele netwerk wilt doorzoeken op de aanwezigheid van dat bestand. Klik op het pictogram Zichtbaarheid in de SentinelOne-beheerconsole en start een nieuwe zoekopdracht. In dit geval gebruiken we alleen de SHA1-hash van het bestand en zoeken we naar het bestaan ervan in de afgelopen 3 maanden.

Geweldig, we kunnen zien dat er een paar gevallen zijn geweest, maar daar houdt de magie niet op. De hash-zoekopdracht heeft ons naar de TrueContext ID, waar we ons op kunnen richten om echt diep in het konijnenhol te duiken en precies te zien wat dit bestand deed: welke processen het creëerde, welke bestanden het wijzigde, met welke URL's het contact maakte, enzovoort. Kortom, we kunnen met slechts een paar klikken vanuit de hash van het bestand het hele verhaal van de aanval reconstrueren.

AI-gestuurde cyberbeveiliging
Verhoog uw beveiliging met realtime detectie, reactiesnelheid en volledig overzicht van uw gehele digitale omgeving.
Vraag een demo aanConclusie
Hashes zijn een fundamenteel hulpmiddel in computerbeveiliging, omdat ze ons op betrouwbare wijze kunnen vertellen wanneer twee bestanden identiek zijn, zolang we maar veilige hash-algoritmen gebruiken die botsingen voorkomen. Toch kunnen twee bestanden, zoals we hierboven hebben gezien, hetzelfde gedrag en dezelfde functionaliteit hebben zonder noodzakelijkerwijs dezelfde hash te hebben. Het is dus een gebrekkige aanpak om voor AV-detectie te vertrouwen op hash-identiteit.
Desondanks zijn hashes nog steeds nuttig voor beveiligingsanalisten voor zaken als het delen van IOC's en het opsporen van bedreigingen, en u zult ze ongetwijfeld dagelijks tegenkomen als u ergens in de computer- en netwerkbeveiliging werkt.
Vindt u dit artikel interessant? Volg ons dan op LinkedIn, Twitter, YouTube of Facebook om de inhoud te bekijken die we plaatsen.
Lees meer over cyberbeveiliging
- De vijand van binnenuit – Top 7 van meest verontrustende datalekken in 2018
- 5 manieren waarop een CISO het tekort aan cyberbeveiligingsvaardigheden nu kan aanpakken
- Hoe malware de beveiliging van Apple's macOS gemakkelijk kan omzeilen
- Wat is Windows PowerShell (en kan het schadelijk zijn)?
Veelgestelde vragen over hashing
Hashing is een eenrichtingsversleutelingstechniek die gegevens omzet in een reeks tekens van vaste lengte. Dit proces kan niet worden omgekeerd om de oorspronkelijke gegevens terug te krijgen. Het werkt als een digitale vingerafdruk: dezelfde invoer levert altijd dezelfde hash op, maar verschillende invoer levert volledig verschillende uitvoer op. Hashing beschermt wachtwoorden, controleert de integriteit van bestanden en zorgt ervoor dat er niet met gegevens is geknoeid. Het is essentieel voor blockchaintechnologie en digitale handtekeningen.
Een bekend voorbeeld is SHA-256-hashing van het woord 'hello' om '2cf24dba4f21d4288094c30e2ede82c380cac19544bb5c4ab02f5b2db38500d3”'. Als u slechts één teken verandert in 'Hello', krijgt u een volledig andere hash. Wachtwoordsystemen maken gebruik van hashing: wanneer u een wachtwoord aanmaakt, wordt dit gehasht en opgeslagen. Wanneer u inlogt, wordt het door u ingevoerde wachtwoord gehasht en vergeleken met de opgeslagen hash. Ook bij het controleren van de integriteit van bestanden wordt hashing gebruikt om wijzigingen te detecteren.
Hashing waarborgt de integriteit van gegevens door ongeoorloofde wijzigingen te detecteren. Het beschermt wachtwoorden door ze onleesbaar te maken, zelfs als databases worden gehackt. U kunt controleren of gedownloade bestanden niet zijn beschadigd of geïnfecteerd met malware. Hashing maakt digitale handtekeningen en veilige communicatieprotocollen mogelijk. Het is van fundamenteel belang voor blockchaintechnologie en de veiligheid van cryptovaluta. Zonder hashing kunt u er niet op vertrouwen dat gegevens tijdens verzending of opslag ongewijzigd blijven.
De belangrijkste hashingfamilies zijn MD (Message Digest), SHA (Secure Hash Algorithm) en RIPEMD. MD5 produceert 128-bits hashes, maar wordt nu als onveilig beschouwd. SHA-256 wordt momenteel het meest gebruikt en produceert 256-bits hashes. SHA-3 is de nieuwste standaard, ontworpen om oudere algoritmen te vervangen. Elk type verschilt in beveiligingssterkte, hash-lengte en rekenvereisten. Moderne systemen geven de voorkeur aan SHA-256 of SHA-3 voor toepassingen waarbij beveiliging van cruciaal belang is.
Hashing is eenrichtingsverkeer en onomkeerbaar, terwijl encryptie tweerichtingsverkeer en omkeerbaar is. Hashing produceert altijd een output met een vaste lengte, ongeacht de grootte van de input. De lengte van de output van encryptie varieert op basis van de inputgegevens. Hashing verifieert de integriteit van gegevens, terwijl encryptie de vertrouwelijkheid van gegevens beschermt. Je kunt versleutelde gegevens decoderen met de juiste sleutel, maar je kunt gegevens niet dehashen. Beide dienen verschillende beveiligingsdoeleinden en werken vaak samen.
Hashing houdt gegevens veilig door het onmogelijk te maken om de oorspronkelijke informatie te reverse-engineeren. Zelfs als aanvallers gehashte wachtwoorden stelen, kunnen ze niet gemakkelijk de werkelijke wachtwoorden achterhalen. Elke wijziging in de oorspronkelijke gegevens leidt tot een volledig andere hash, waardoor manipulatie detecteerbaar is. Voor hashing zijn geen encryptiesleutels nodig, dus er is geen sleutel die kan worden gecompromitteerd. Het biedt verificatie van de gegevensintegriteit zonder de daadwerkelijke inhoud bloot te geven. Dit maakt het ideaal voor het opslaan van wachtwoorden en het verifiëren van bestanden.
Hashing zorgt voor snelle gegevensopvraging en -verificatie. Het garandeert de integriteit van gegevens zonder de oorspronkelijke inhoud bloot te geven. De wachtwoordbeveiliging wordt aanzienlijk verbeterd door het gebruik van de juiste hashingtechnieken. Het controleren van de integriteit van bestanden wordt eenvoudig en betrouwbaar. Hashing maakt blockchaintechnologie en veilige transacties mogelijk. Het is computationeel efficiënt en vereist geen sleutelbeheer. Digitale handtekeningen en authenticatiesystemen zijn voor hun veiligheid afhankelijk van hashing. Ook gegevensdeduplicatie en efficiënt opslagbeheer profiteren van hashing.