Hvad er en kryptografisk hash-funktion?

click fraud protection

En kryptografisk hash-funktion er en algoritme, der kan køres på data såsom en person fil eller en adgangskode til at producere en værdi kaldet en kontrolsum.

Hovedanvendelsen af ​​en kryptografisk hash-funktion er at verificere ægtheden af ​​et stykke data. To filer kan kun antages at være identiske, hvis kontrolsummerne, der genereres fra hver fil, ved hjælp af den samme kryptografiske hashfunktion, er identiske.

Nogle almindeligt anvendte kryptografiske hash-funktioner inkluderer MD5 og SHA-1, selvom mange andre også findes.

Kryptografiske hash-funktioner omtales ofte som "hash-funktioner", men det er ikke teknisk korrekt. En hashfunktion er et generisk udtryk, der omfatter kryptografiske hashfunktioner sammen med andre slags algoritmer som cykliske redundanstjek.

Kryptografiske hash-funktioner: en brugssag

Sig, at du downloader seneste version af Firefox-browseren. Af en eller anden grund var du nødt til at downloade den fra en anden side end Mozillas. Fordi det ikke hostes på et websted, du har lært at stole på, vil du gerne sikre dig, at den installationsfil, du lige har downloadet, er nøjagtig den samme som den, Mozilla tilbyder.

Ved hjælp af en checksum-beregner beregner du en kontrolsum ved hjælp af en bestemt kryptografisk hash-funktion, såsom SHA-2, og sammenligner den derefter med den, der er offentliggjort på Mozillas websted. Hvis de er ens, kan du være rimelig sikker på, at den download, du har, er den, Mozilla havde til hensigt, du skulle have.

Foto af formler og billeder på en tavle
Yagi Studio / Digital Vision / Getty Images

Kan kryptografiske hash-funktioner vendes?

Kryptografiske hash-funktioner er designet til at forhindre muligheden for at vende de kontrolsummer, de opretter, tilbage til de originale tekster. Men selvom de er praktisk talt umulige at vende tilbage, er de ikke 100 procent garanteret at beskytte data.

Hackere kan bruge en regnbuetabel til at finde ud af den almindelige tekst af en kontrolsum. Regnbuetabeller er ordbøger, der viser tusinder, millioner eller endda milliarder af kontrolsummer sammen med deres tilsvarende almindelige tekstværdi.

Selvom dette ikke teknisk vender den kryptografiske hash-algoritme, kan det lige så godt være, da det er så nemt at gøre. I virkeligheden, da ingen regnbuetabel kan liste alle mulige kontrolsum, der findes, er de normalt kun nyttige til simple sætninger som svage adgangskoder.

Her er en forenklet version af en regnbuetabel for at vise, hvordan man ville arbejde, når man bruger den kryptografiske hash-funktion SHA-1:

Eksempel på regnbuebord
Simpel tekst SHA-1 kontrolsum
12345 8cb2237d0679ca88db6464eac60da96345513964
adgangskode1 e38ad214943daad1d64c102faec29de4afe9da3d
jeg elsker min hund a25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny 400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
Dallas 1984 c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

En hacker skal vide, hvilken kryptografisk hash-algoritme, der blev brugt til at generere kontrolsummerne for at finde ud af værdierne.

For ekstra beskyttelse, nogle websteder, der gemmer brugeradgangskoder udføre yderligere funktioner på den kryptografiske hash-algoritme, efter værdien er genereret, men før den er gemt. Denne proces producerer en ny værdi, som kun webserveren forstår, og som ikke matcher den oprindelige kontrolsum.

For eksempel, efter at en adgangskode er indtastet og checksummen genereret, kan den opdeles i flere dele og omarrangeret, før det gemmes i adgangskodedatabasen, eller visse tegn kan blive byttet med andre. Når du forsøger at godkende, næste gang brugeren logger på, vender webserveren dette om ekstra funktion, og den oprindelige kontrolsum genereres igen for at bekræfte, at en brugers adgangskode er gyldig.

At tage disse trin begrænser anvendeligheden af ​​et hack, hvor alle kontrolsummer er stjålet. Ideen er at udføre en funktion, der er ukendt, så hvis hackeren kender den kryptografiske hash-algoritme, men ikke den brugerdefinerede, så er det ikke nyttigt at kende adgangskodekontrolsummerne.

Adgangskoder og kryptografiske hash-funktioner

En database gemmer brugeradgangskoder på en måde, der ligner en regnbuetabel. Når din adgangskode er indtastet, kontrolsum genereres og sammenlignes med den registrerede med dit brugernavn. Du får derefter adgang, hvis de to er identiske.

I betragtning af at en kryptografisk hash-funktion producerer en ikke-reversibel kontrolsum, er det sikkert for dig at gøre din adgangskode så enkel som 12345, i stedet for 12@34$5, simpelthen fordi selve kontrolsummerne ikke kan forstås? Nej, og her er hvorfor.

Disse to adgangskoder er begge umulige at tyde blot ved at se på kontrolsummerne:

MD5 til 12345:827ccb0eea8a706c4c34a16891f84e7b

MD5 for 12@34$5:a4d3cc004f487b18b2ccd4853053818b

Ved første øjekast tror du måske, at det er fint at bruge en af ​​disse adgangskoder. Dette er sandt, hvis en angriber forsøgte at finde ud af din adgangskode ved at gætte MD5-kontrolsummen, hvilket ingen gør, men ikke sandt, hvis der udføres et brute force eller ordbogsangreb, hvilket er en almindelig taktik.

Et brute force-angreb opstår, når der tages flere tilfældige stik ved at gætte et kodeord. I dette tilfælde ville det være nemt at gætte 12345, men ret svært at tilfældigt finde ud af den anden. Et ordbogsangreb ligner, at angriberen kan prøve hvert ord, tal eller sætning fra en liste over almindelige (og ikke så almindelige) adgangskoder, og 12345 er en af ​​de almindelige adgangskoder.

Selvom kryptografiske hash-funktioner producerer svære til umulige at gætte kontrolsummer, bør du stadig bruge en kompleks adgangskode for alle dine online og lokale brugerkonti.

Flere oplysninger om kryptografiske hash-funktioner

Det kan virke som om kryptografiske hash-funktioner er relateret til kryptering, men de to fungerer på forskellige måder.

Kryptering er en to-vejs proces, hvor noget krypteres for at blive ulæseligt og derefter dekrypteres senere for at blive brugt normalt igen. Du kunne måske krypter filer, du har gemt så alle, der får adgang til dem, er ude af stand til at bruge dem, eller du kan bruge dem kryptering af filoverførsel at kryptere filer, der bevæger sig over et netværk, som dem du uploader eller downloader online.

Kryptografiske hash-funktioner fungerer anderledes, idet kontrolsummerne ikke er beregnet til at blive vendt med en speciel dehashing-adgangskode. Det eneste formål med kryptografiske hash-funktioner er at sammenligne to stykker data, såsom når du downloader filer, gemmer adgangskoder og trækker data fra en database.

Det er muligt for en kryptografisk hash-funktion at producere den samme kontrolsum for forskellige stykker data. Når dette sker, kaldes det en kollision, hvilket er et stort problem i betragtning af, at hele pointen med en kryptografisk hash-funktion er at lave unikke kontrolsummer for hver data, der indtastes i den.

Kollisioner kan forekomme, fordi hver kryptografisk hashfunktion producerer en værdi af en fast længde uanset inputdata. For eksempel genererer den kryptografiske hash-funktion MD5 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 og e10adc3949ba59abbe56e057f20f883e for tre helt forskellige datablokke.

Den første kontrolsum er fra 12345. Den anden blev genereret ud fra over 700 bogstaver og tal, og den tredje er fra 123456. Alle tre input er af forskellig længde, men resultaterne er altid kun 32 tegn lange siden MD5 kontrolsum var brugt.

Der er ingen grænse for antallet af kontrolsummer, der kan oprettes, fordi hver lille ændring i inputtet formodes at producere en helt anden kontrolsum. Fordi der er en grænse for antallet af kontrolsummer, som en kryptografisk hashfunktion kan producere, er der altid mulighed for, at du støder på en kollision.

Dette er grunden til, at andre kryptografiske hash-funktioner er blevet oprettet. Mens MD5 genererer en værdi på 32 tegn, genererer SHA-1 40 tegn og SHA-2 (512) genererer 128. Jo større antal tegn kontrolsummen har, jo mindre sandsynlighed for, at der vil opstå en kollision.