Skip to main content

Hva er en kryptografisk Hash-funksjon?

Googlechef om Snowden-effekten (Juni 2026)

Googlechef om Snowden-effekten (Juni 2026)
Anonim

En kryptografisk hash-funksjon er en algoritme som kan kjøres på data som en individuell fil eller et passord for å produsere en verdi kalt et sjekksum.

Hovedbruken av en kryptografisk hash-funksjon er å verifisere ektheten av et datatykke. To filer kan antas å være identiske bare hvis sjekksummene generert fra hver fil, med samme kryptografiske hash-funksjon, er identiske.

Noen vanlige kryptografiske hashfunksjoner inkluderer MD5 og SHA-1, selv om mange andre også eksisterer.

Kryptografiske hashfunksjoner blir ofte referert til som "hashfunksjoner", men det er ikke teknisk korrekt. En hash-funksjon er et generisk begrep som omfatter kryptografiske hashfunksjoner sammen med andre typer algoritmer som syklisk redundansjekontroller.

Kryptografiske Hash Funksjoner: En Bruk Case

Si at du laster ned den nyeste versjonen av Firefox-nettleseren. Av en eller annen grunn måtte du laste den ned fra et annet nettsted enn Mozilla. Fordi det ikke blir hostet på et nettsted du har lært å stole på, vil du sørge for at installasjonsfilen du nettopp lastet ned, er akkurat det samme som den ene Mozilla tilbyr.

Ved hjelp av en kontrollsumerkalkulator beregner du et sjekksum med en bestemt kryptografisk hash-funksjon, for eksempel SHA-2, og sammenligner deretter den med den som publiseres på Mozillas nettsted. Hvis de er like, kan du være ganske sikker på at nedlastingen du har er den ene Mozilla ment å ha.

Kan kryptografiske hashfunksjoner bli reversert?

Kryptografiske hashfunksjoner er utformet for å hindre evnen til å reversere kontrollsummene de lager tilbake til de opprinnelige teksten. Men selv om de er nesten umulige å reversere, er de ikke 100 prosent garantert å beskytte data.

Hackere kan bruke et regnbuebord for å finne ut den rene teksten til et sjekksum.

Rainbow-tabellene er ordbøker som viser tusenvis, millioner eller til og med milliarder sjekksummer sammen med deres tilsvarende tekstverdivelse.

Selv om dette ikke er teknisk å reversere kryptografisk hashalgoritmen, kan det like godt være, gitt at det er så enkelt å gjøre. I virkeligheten, siden ingen regnbuebord kan liste opp alle mulige sjekksum i eksistensen, er de vanligvis bare nyttige for enkle setninger som svake passord.

Her er en forenklet versjon av et regnbuebord for å vise hvordan man ville fungere når man bruker SHA-1 kryptografisk hash-funksjonen:

klartekstSHA-1 kontrollsum
123458cb2237d0679ca88db6464eac60da96345513964
password1e38ad214943daad1d64c102faec29de4afe9da3d
jeg elsker hunden mina25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny4007d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

En hacker må vite hvilken kryptografisk hashalgoritme som ble brukt til å generere kontrollsummene for å finne ut verdiene.

For å få ekstra beskyttelse, utfører noen nettsteder som lagrer brukerpassord ekstra funksjoner på kryptografisk hash-algoritmen etter at verdien er generert, men før den er lagret. Denne prosessen gir en ny verdi som kun webserveren forstår, og som ikke samsvarer med det opprinnelige kontrollsummen.

For eksempel, etter at et passord er oppgitt og sjekksummen er generert, kan det være atskilt i flere deler og omarrangert før det er lagret i passorddatabasen, eller enkelte tegn kan byttes med andre. Når du prøver å godkjenne neste gang brukeren logger på, reverserer webserveren denne tilleggsfunksjonen, og det opprinnelige kontrollsummen genereres igjen for å bekrefte at brukerens passord er gyldig.

Å ta disse trinnene begrenser bruken av en hack der alle sjekksummene blir stjålet. Tanken er å utføre en funksjon som er ukjent, så hvis hackeren kjenner kryptografisk hashalgoritme, men ikke den egendefinerte, er det uhensiktsmessig å kjenne passordets kontrollsummer.

Passord og krypteringshashfunksjoner

En database lagrer brukerpassord på en måte som ligner på et regnbuebord. Når passordet ditt er oppgitt, genereres kontrollsummen og sammenlignes med den på posten med brukernavnet ditt. Du får da tilgang hvis de to er identiske.

Gitt at en kryptografisk hash-funksjon produserer et ikke-omvendt sjekksum, er det trygt for deg å gjøre passordet ditt så enkelt som 12345, i stedet for 12@34$5, bare fordi sjekksummene selv ikke kan forstås? Nei, og her er hvorfor.

Disse to passordene er begge umulig å dechifisere bare ved å se bare på sjekksummen:

MD5 for 12345: 827ccb0eea8a706c4c34a16891f84e7b

MD5 for 12 @ 34 $ 5: a4d3cc004f487b18b2ccd4853053818b

Ved første øyekast kan du tenke at det er greit å bruke ett av disse passordene. Dette er sant hvis en angriper prøvde å finne ut passordet ditt ved å gjette MD5 kontrollsummen, noe som ingen gjør, men ikke sant hvis en brute force eller ordbok angrep utføres, noe som er en vanlig taktikk.

Et brutalt kraftangrep oppstår når flere tilfeldige stabs blir tatt ved å gjette et passord. I dette tilfellet vil det være enkelt å gjette 12345, men ganske vanskelig å finne ut det andre. Et ordboksangrep er likt fordi angriperen kan prøve hvert ord, nummer eller setning fra en liste over vanlige (og ikke så vanlige) passord, og12345 er et av de vanlige passordene.

Selv om kryptografiske hashfunksjoner gir vanskelige å umulig å gjette kontrollsum, bør du likevel bruke et komplekst passord for alle dine online og lokale brukerkontoer.

Mer informasjon om kryptografiske hashfunksjoner

Det kan virke som kryptografiske hashfunksjoner er relatert til kryptering, men de to arbeider på forskjellige måter.

Kryptering er en toveisprosess der noe krypteres for å bli uleselig og deretter dekryptert senere for å bli brukt normalt igjen. Du kan kryptere filer du har lagret, slik at alle som har tilgang til dem, ikke kan bruke dem, eller du kan bruke filoverføringskryptering for å kryptere filer som beveger seg over et nettverk, som de du laster opp eller laster ned på nettet.

Kryptografiske hashfunksjoner fungerer annerledes fordi sjekksummene ikke er ment å reverseres med et spesielt dehashing-passord. Den eneste hensikten med kryptografiske hashfunksjoner er å sammenligne to deler av data, for eksempel når du laster ned filer, lagrer passord og drar data fra en database.

Det er mulig for en kryptografisk hashfunksjon å produsere det samme sjekksum for ulike data. Når dette skjer, kalles det en kollisjon, som er et stort problem med tanke på hele poenget med en kryptografisk hash-funksjon er å lage unike kontrollsummer for hver datainngang i den.

Kollisjoner kan oppstå, fordi hver kryptografisk hash-funksjon produserer en verdi av en fast lengde uavhengig av inngangsdata. For eksempel genererer MD5 kryptografisk hash-funksjonen 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 og e10adc3949ba59abbe56e057f20f883e for tre helt forskjellige datablokker.

Det første sjekksummet er fra 12345. Den andre ble generert fra over 700 bokstaver og tall, og den tredje er fra 123456.

Alle tre inngangene har forskjellige lengder, men resultatene er alltid bare 32 tegn lange siden MD5 sjekksum ble brukt.

Det er ingen grense for antall checksum som kan opprettes fordi hver liten endring i inngangen skal produsere et helt annet sjekksum. Fordi det er en grense for antall kontrollsummer som en kryptografisk hashfunksjon kan produsere, er det alltid mulighet for at du møter en kollisjon.

Det er derfor andre kryptografiske hashfunksjoner er opprettet. Mens MD5 genererer en verdi på 32 tegn, genererer SHA-1 40 tegn og SHA-2 (512) genererer 128. Jo større antall tegn som sjekksummen har, desto mindre sannsynlig vil det oppstå en kollisjon.