Hvad er en kryptografisk hash-funktion?

Indholdsfortegnelse:

Hvad er en kryptografisk hash-funktion?
Hvad er en kryptografisk hash-funktion?
Anonim

En kryptografisk hash-funktion (CHF) er en algoritme, der kan køres på data såsom en individuel fil eller en adgangskode for at producere en værdi kaldet en checksum.

Den primære anvendelse af en CHF 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. Disse omtales ofte som "hash-funktioner", men det er ikke teknisk korrekt. En hash-funktion er et generisk udtryk, der omfatter CHF'er sammen med andre slags algoritmer som cykliske redundanstjek.

Kryptografiske hashfunktioner: en brugssag

Sig, at du downloader den seneste version af Firefox-browseren. Af en eller anden grund var du nødt til at downloade det fra et andet websted 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 at bruge 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.

Image
Image

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 t alt umulige at vende tilbage, er de ikke 100 procent garanterede for 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.

Selv om dette ikke teknisk set er at vende 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 vise alle mulige kontrolsum, der findes, er de norm alt 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 SHA-1 kryptografiske hash-funktion:

Rainbow Table Eksempel
Almindelig tekst SHA-1 kontrolsum
12345 8cb2237d0679ca88db6464eac60da96345513964
adgangskode1 e38ad214943daad1d64c102faec29de4afe9da3d
ilovemydog a25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984 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 udfører nogle websteder, der gemmer brugeradgangskoder, 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 omarrangeres, før den gemmes i adgangskodedatabasen, eller visse tegn kan blive udskiftet med andre. Når du forsøger at godkende, næste gang brugeren logger på, vender serveren denne ekstra funktion om, og den oprindelige kontrolsum genereres igen for at bekræfte, at en brugers adgangskode er gyldig.

Hvis du tager disse trin, begrænser du 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 et regnbuebord. Når din adgangskode indtastes, genereres kontrolsummen og sammenlignes med den, der er registreret med dit brugernavn. Du får derefter adgang, hvis de to er identiske.

I betragtning af at en CHF 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 for 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 en adgangskode. I dette tilfælde ville det være nemt at gætte 12345, men ret svært at 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.

Selv om kryptografiske hash-funktioner producerer svære til umulige at gætte kontrolsummer, bør du stadig bruge en kompleks adgangskode til 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 tovejsproces, hvor noget krypteres for at blive ulæseligt og derefter dekrypteres senere for at blive brugt norm alt igen. Du kan kryptere filer, du har gemt, så alle, der får adgang til dem, ikke er i stand til at bruge dem, eller du kan bruge filoverførselskryptering til 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 CHF'er tjener, 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 funktionen er at lave unikke kontrolsummer for hver data, der indtastes i den.

Kollisioner kan forekomme, fordi hver CHF producerer en værdi med en fast længde uanset inputdata. Den kryptografiske hash-funktion MD5 genererer f.eks. 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 og e10adc3949ba05 i alt tre s for tre s i alt for tre.

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, da MD5 kontrolsum blev brugt.

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

Det 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 flere tegn kontrolsummen har, jo mindre sandsynlighed for, at en kollision vil opstå.

Anbefalede: