Een cryptografische hash-functie is een algoritme dat kan worden uitgevoerd op gegevens zoals een individueel bestand of een wachtwoord om een waarde met de naam een controlesom te produceren.
Het belangrijkste gebruik van een cryptografische hashfunctie is het verifiëren van de echtheid van een gegeven. Van twee bestanden kan worden aangenomen dat ze alleen identiek zijn als de controlesommen die worden gegenereerd vanuit elk bestand, met dezelfde cryptografische hashfunctie, identiek zijn.
Enkele veelgebruikte cryptografische hashfuncties omvatten MD5 en SHA-1, hoewel er ook vele andere zijn.
Cryptografische hash-functies worden vaak "hash-functies" genoemd, maar dat is technisch gezien niet correct. Een hashfunctie is een generieke term die cryptografische hashfuncties omvat, samen met andere soorten algoritmen zoals cyclische redundantiecontroles.
Cryptografische haspelfuncties: een use-case
Stel dat je de nieuwste versie van de Firefox-browser downloadt. Om de een of andere reden moest je het downloaden van een andere website dan die van Mozilla. Omdat het niet wordt gehost op een site die u heeft vertrouwd, wilt u er zeker van zijn dat het installatiebestand dat u zojuist hebt gedownload precies hetzelfde is als het bestand dat Mozilla biedt.
Met behulp van een checksumcalculator berekent u een controlesom met behulp van een bepaalde cryptografische hash-functie, zoals SHA-2, en vergelijkt u die met die op de Mozilla-site. Als ze gelijk zijn, kun je er redelijk zeker van zijn dat de download die je hebt de Mozilla is die je wilde hebben.
Kunnen de cryptografische hashfuncties worden omgekeerd?
Cryptografische hash-functies zijn ontworpen om te voorkomen dat de controlesommen die ze maken terug worden omgezet in de oorspronkelijke teksten. Hoewel ze vrijwel ongedaan kunnen worden gemaakt, zijn ze niet 100% gegarandeerd om gegevens te beveiligen.
Hackers kunnen een regenboogtabel gebruiken om de platte tekst van een controlesom te achterhalen.
Regenboogtabellen zijn woordenboeken met duizenden, miljoenen of zelfs miljarden controlesommen naast de bijbehorende waarde voor platte tekst.
Hoewel dit niet technisch het cryptografische hash-algoritme omkeert, kan het net zo goed zijn, gezien het feit dat het zo eenvoudig is om te doen. In werkelijkheid, omdat geen enkele regenboogtafel elke mogelijke controlesom kan bevatten, zijn ze meestal alleen nuttig voor eenvoudige zinsdelen zoals zwakke wachtwoorden.
Hier is een vereenvoudigde versie van een regenboogtabel om te laten zien hoe men zou werken wanneer de SHA-1 cryptografische hash-functie wordt gebruikt:
| Platte tekst | SHA-1 controlesom |
| 12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
| password1 | e38ad214943daad1d64c102faec29de4afe9da3d |
| ik hou van mijn hond | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
| Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
| dallas1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Een hacker moet weten welk cryptografisch hash-algoritme werd gebruikt om de checksums te genereren om de waarden te achterhalen.
Voor extra bescherming voeren sommige websites die gebruikerswachtwoorden opslaan extra functies uit op het cryptografische hash-algoritme nadat de waarde is gegenereerd, maar voordat deze is opgeslagen. Dit proces produceert een nieuwe waarde die alleen de webserver begrijpt en die niet overeenkomt met de oorspronkelijke controlesom.
Nadat een wachtwoord is ingevoerd en de controlesom is gegenereerd, kan het bijvoorbeeld in verschillende delen worden opgesplitst en opnieuw worden gerangschikt voordat het in de wachtwoorddatabase wordt opgeslagen, of kunnen bepaalde tekens worden verwisseld met anderen. Bij een poging tot authenticatie bij de volgende keer dat de gebruiker zich aanmeldt, keert de webserver deze extra functie om en wordt de oorspronkelijke controlesom opnieuw gegenereerd om te controleren of het wachtwoord van een gebruiker geldig is.
Het nemen van deze stappen beperkt het nut van een hack waarbij alle checksums worden gestolen. Het idee is om een onbekende functie uit te voeren, dus als de hacker het cryptografische hash-algoritme kent, maar niet de aangepaste, dan is het niet nuttig om de wachtwoordcontrolesommen te kennen.
Wachtwoorden en cryptografische hashfuncties
Een database bewaart gebruikerswachtwoorden op dezelfde manier als een regenboogtabel. Wanneer uw wachtwoord is ingevoerd, wordt de controlesom gegenereerd en vergeleken met de checksum met uw gebruikersnaam. U krijgt dan toegang als de twee identiek zijn.
Aangezien een cryptografische hash-functie een niet-omkeerbare controlesom produceert, is het voor u veilig om uw wachtwoord zo eenvoudig te maken als 12345, in plaats van 12@34$5, simpelweg omdat de checksums zelf niet begrepen kunnen worden? Nee, en hier is waarom.
Deze twee wachtwoorden zijn beide onmogelijk te ontcijferen door alleen naar de controlesommen te kijken:
MD5 voor 12345: 827ccb0eea8a706c4c34a16891f84e7b
MD5 voor 12 @ 34 $ 5: a4d3cc004f487b18b2ccd4853053818b
Op het eerste gezicht denk je misschien dat het prima is om een van deze wachtwoorden te gebruiken. Dit is waar als een aanvaller probeert je wachtwoord te achterhalen door de MD5-checksum te raden, wat niemand doet, maar niet waar als er een brute force of woordenboekaanval wordt uitgevoerd, wat een algemene tactiek is.
Een brute force-aanval treedt op wanneer meerdere willekeurige steekproeven worden genomen bij het raden van een wachtwoord. In dit geval zou het gemakkelijk te raden zijn 12345, maar vrij moeilijk om willekeurig de andere te achterhalen. Een woordenboekaanval is vergelijkbaar omdat de aanvaller elk woord, nummer of zin uit een lijst met veelvoorkomende (en niet-zo-gewone) wachtwoorden kan proberen, en12345 is een van die gemeenschappelijke wachtwoorden.
Hoewel cryptografische hash-functies moeilijk te onmogelijk te raden controlesommen maken, moet u toch een complex wachtwoord gebruiken voor al uw online en lokale gebruikersaccounts.
Meer informatie over functies van cryptografische hash
Het lijkt misschien alsof cryptografische hashfuncties gerelateerd zijn aan codering, maar de twee werken op verschillende manieren.
Versleuteling is een tweerichtingsproces waarbij iets versleuteld wordt om onleesbaar te worden en later gedecodeerd om weer normaal te worden gebruikt. U kunt bestanden die u hebt opgeslagen versleutelen zodat iedereen die toegang heeft ze niet kan gebruiken, of u kunt codering voor bestandsoverdracht gebruiken om bestanden te versleutelen die zich via een netwerk verplaatsen, zoals bestanden die u online uploadt of downloadt.
Cryptografische hash-functies werken anders doordat de controlesommen niet zijn bedoeld om te worden teruggedraaid met een speciaal dehashing-wachtwoord. Het enige doel van cryptografische hashfuncties is om twee stukjes gegevens te vergelijken, zoals bij het downloaden van bestanden, het opslaan van wachtwoorden en het ophalen van gegevens uit een database.
Het is mogelijk dat een cryptografische hash-functie dezelfde controlesom produceert voor verschillende stukjes gegevens. Wanneer dit gebeurt, wordt dit een botsing genoemd, wat een enorm probleem is, aangezien het hele punt van een cryptografische hashfunctie is om unieke controlesommen te maken voor elke gegevensinvoer erin.
Botsingen kunnen optreden omdat elke cryptografische hashfunctie een waarde van een vaste lengte produceert, ongeacht de invoergegevens. De cryptografische hashfunctie MD5 genereert bijvoorbeeld 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 en e10adc3949ba59abbe56e057f20f883e voor drie totaal verschillende gegevensblokken.
De eerste checksum is van 12345. De tweede is gegenereerd op basis van meer dan 700 letters en cijfers en de derde is afkomstig van 123456.
Alle drie de ingangen hebben verschillende lengten, maar de resultaten zijn altijd maar 32 tekens lang sinds MD5-controlesom werd gebruikt.
Er is geen limiet aan het aantal controlesommen dat kan worden gemaakt omdat elke kleine wijziging in de invoer een geheel andere controlesom zou moeten produceren. Omdat er een limiet is voor het aantal controlesommen dat een cryptografische hashfunctie kan produceren, bestaat altijd de mogelijkheid dat u een botsing tegenkomt.
Dit is de reden waarom andere cryptografische hash-functies zijn gemaakt. Terwijl MD5 een waarde van 32 tekens genereert, genereert SHA-1 40 tekens en SHA-2 (512) genereert 128. Hoe groter het aantal tekens dat de controlesom heeft, hoe kleiner de kans dat een botsing optreedt.




