Hva er en kryptografisk hash-funksjon?

Innholdsfortegnelse:

Hva er en kryptografisk hash-funksjon?
Hva er en kryptografisk hash-funksjon?
Anonim

En kryptografisk hash-funksjon (CHF) er en algoritme som kan kjøres på data som en individuell fil eller et passord for å produsere en verdi som kalles en kontrollsum.

Hovedbruken av en CHF er å verifisere ektheten til et stykke data. To filer kan antas å være identiske bare hvis kontrollsummene som genereres fra hver fil, ved bruk av samme kryptografiske hash-funksjon, er identiske.

Noen ofte brukte kryptografiske hash-funksjoner inkluderer MD5 og SHA-1, selv om mange andre også finnes. Disse blir ofte referert til som "hash-funksjoner", men det er ikke teknisk korrekt. En hash-funksjon er et generisk begrep som omfatter CHF-er sammen med andre typer algoritmer som sykliske redundanssjekker.

Cryptographic Hash Functions: A Use 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 Mozillas. Fordi det ikke er vert på et nettsted du har lært å stole på, vil du gjerne sørge for at installasjonsfilen du nettopp lastet ned er nøyaktig den samme som Mozilla tilbyr.

Ved å bruke en sjekksumskalkulator beregner du en sjekksum ved å bruke en bestemt kryptografisk hash-funksjon, for eksempel SHA-2, og sammenligner den med den som er publisert på Mozillas nettsted. Hvis de er like, kan du være rimelig sikker på at nedlastingen du har er den Mozilla hadde til hensikt at du skulle ha.

Image
Image

Kan kryptografiske hash-funksjoner reverseres?

Kryptografiske hash-funksjoner er utformet for å forhindre muligheten til å reversere kontrollsummene de lager tilbake til origin altekstene. Men selv om de er praktisk t alt umulige å reversere, er de ikke 100 prosent garantert å beskytte data.

Hackere kan bruke en regnbuetabell for å finne ut ren tekst til en kontrollsum. Regnbuetabeller er ordbøker som viser tusenvis, millioner eller til og med milliarder av sjekksummer sammen med deres tilsvarende ren tekstverdi.

Selv om dette ikke er teknisk reversering av den kryptografiske hash-algoritmen, kan det like gjerne være det, gitt at det er så enkelt å gjøre. I virkeligheten, siden ingen regnbuetabeller kan vise alle mulige kontrollsum som finnes, er de vanligvis bare nyttige for enkle fraser som svake passord.

Her er en forenklet versjon av en regnbuetabell for å vise hvordan man vil fungere når man bruker den kryptografiske hash-funksjonen SHA-1:

Rainbow Table Eksempel
Ren tekst SHA-1 sjekksum
12345 8cb2237d0679ca88db6464eac60da96345513964
password1 e38ad214943daad1d64c102faec29de4afe9da3d
ilovemydog a25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984 c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

En hacker må vite hvilken kryptografisk hash-algoritme som ble brukt til å generere kontrollsummer for å finne ut verdiene.

For ekstra beskyttelse utfører enkelte nettsteder som lagrer brukerpassord tilleggsfunksjoner på den kryptografiske hash-algoritmen etter at verdien er generert, men før den er lagret. Denne prosessen produserer en ny verdi som bare webserveren forstår og som ikke samsvarer med den opprinnelige kontrollsummen.

For eksempel, etter at et passord er angitt og kontrollsummen generert, kan det deles i flere deler og omorganiseres før det lagres i passorddatabasen, eller visse tegn kan byttes med andre. Når du prøver å autentisere neste gang brukeren logger på, reverserer serveren denne tilleggsfunksjonen, og den opprinnelige kontrollsummen genereres igjen for å bekrefte at brukerens passord er gyldig.

Å ta disse trinnene begrenser nytten av et hack der alle kontrollsummene blir stjålet. Tanken er å utføre en funksjon som er ukjent, så hvis hackeren kjenner den kryptografiske hash-algoritmen, men ikke den tilpassede, er det ikke nyttig å kjenne passordsjekksummene.

Passord og kryptografiske hasjfunksjoner

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

Gitt at en CHF produserer en ikke-reversibel kontrollsum, er det trygt for deg å gjøre passordet ditt så enkelt som 12345, i stedet for 12@34 $5, ganske enkelt fordi selve sjekksummene ikke kan forstås? Nei, og her er grunnen.

Disse to passordene er begge umulige å tyde bare ved å se på kontrollsummene:

MD5 for 12345: 827ccb0eea8a706c4c34a16891f84e7b

MD5 for 12@34$5: a4d3cc004f487b18b2ccd4853053818b

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

Et brute force-angrep oppstår når flere tilfeldige stikk blir tatt for å gjette et passord. I dette tilfellet ville det være lett å gjette 12345, men ganske vanskelig å finne ut av den andre tilfeldig. Et ordbokangrep ligner på at angriperen kan prøve hvert ord, tall eller setning fra en liste over vanlige (og ikke-så-vanlige) passord, og 12345 er en av de vanlige passord.

Selv om kryptografiske hashfunksjoner produserer vanskelige til umulige å gjette kontrollsummer, bør du fortsatt bruke et komplekst passord for alle dine online og lokale brukerkontoer.

Mer informasjon om kryptografiske hash-funksjoner

Det kan virke som om kryptografiske hash-funksjoner er relatert til kryptering, men de to fungerer på forskjellige måter.

Kryptering er en toveis prosess der noe krypteres for å bli uleselig og deretter dekrypteres senere for å brukes norm alt igjen. Du kan kryptere filer du har lagret slik at alle som får 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 hash-funksjoner fungerer annerledes, ved at kontrollsummene ikke er ment å reverseres med et spesielt dehashing-passord. Det eneste formålet med CHF-er er å sammenligne to datastykker, for eksempel når du laster ned filer, lagrer passord og henter data fra en database.

Det er mulig for en kryptografisk hash-funksjon å produsere den samme kontrollsummen for forskjellige datastykker. Når dette skjer, kalles det en kollisjon, som er et stort problem med tanke på at hele poenget med funksjonen er å lage unike kontrollsummer for hver data som legges inn i den.

Kollisjoner kan oppstå fordi hver CHF produserer en verdi med en fast lengde uavhengig av inndata. For eksempel genererer den kryptografiske hash-funksjonen MD5 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983, og e10adc3949ba08af633b2909b9c1addf32302c7a497983, og e10adc3949ba505tot alt tre for tre

Den første sjekksummen er fra 12345. Den andre ble generert fra over 700 bokstaver og tall, og den tredje er fra 123456. Alle tre inngangene har forskjellig lengde, men resultatene er alltid bare 32 tegn lange siden MD5-sjekksum ble brukt.

Det er ingen grense for antall kontrollsummer som kan opprettes fordi hver lille endring i inndata skal gi en helt annen kontrollsum. Fordi det er en grense for antall sjekksummer som én CHF kan produsere, er det alltid en mulighet for at du vil støte på en kollisjon.

Dette er grunnen til at andre kryptografiske hash-funksjoner har blitt opprettet. Mens MD5 genererer en verdi på 32 tegn, genererer SHA-1 40 tegn og SHA-2 (512) genererer 128. Jo flere tegn kontrollsummen har, jo mindre sannsynlighet for at en kollisjon vil oppstå.

Anbefalt: