Skip to main content

Vad är en kryptografisk Hash-funktion?

What is cryptography? | Journey into cryptography | Computer Science | Khan Academy (Juni 2026)

What is cryptography? | Journey into cryptography | Computer Science | Khan Academy (Juni 2026)
Anonim

En kryptografisk hashfunktion är en algoritm som kan köras på data som en enskild fil eller ett lösenord för att producera ett värde som kallas en checksumma.

Huvudanvändningen av en kryptografisk hashfunktion är att verifiera äktheten hos en bit data. Två filer kan antas vara identiska endast om de checksum som genereras från varje fil, med samma kryptografiska hash-funktion, är identiska.

Vissa vanliga kryptografiska hashfunktioner inkluderar MD5 och SHA-1, även om många andra också existerar.

Kryptografiska hashfunktioner kallas ofta "hash-funktioner", men det är inte tekniskt korrekt. En hashfunktion är en generisk term som omfattar kryptografiska hashfunktioner tillsammans med andra typer av algoritmer som cykliska redundanskontroller.

Kryptografiska Hashfunktioner: Ett användningsfall

Säg att du hämtar den senaste versionen av Firefox-webbläsaren. Av någon anledning behövde du ladda ner den från en annan webbplats än Mozillas. Eftersom det inte finns värd på en webbplats du har lärt dig att lita på, vill du se till att installationsfilen du just laddade är exakt densamma som den som Mozilla erbjuder.

Med hjälp av en checksumräknare beräknar du en kontrollsumma med en viss kryptografisk hashfunktion, som SHA-2, och jämför sedan den med den som publicerades på Mozillas webbplats. Om de är lika kan du vara ganska säker på att nedladdningen du har är den som Mozilla menade att du skulle ha.

Kan Kryptografiska Hashfunktioner Vändas?

Kryptografiska hashfunktioner är utformade för att förhindra möjligheten att vända kontrollsummorna de skapar tillbaka till originaltexten. Men trots att de är praktiskt taget omöjliga att vända sig, är de inte 100 procent garanterade att skydda data.

Hackers kan använda ett regnbordsbord för att räkna ut den enkla texten i en kontrollsumma.

Rainbow-tabeller är ordböcker som listar tusentals miljoner eller till och med miljarder kontrollsummar tillsammans med motsvarande textvärde.

Även om detta inte tekniskt vänder om kryptografiska hashalgoritmen, kan det lika bra, med tanke på att det är så enkelt att göra. I verkligheten, eftersom ingen regnbordsskiva kan lista alla möjliga kontrollsummor i existensen, är de vanligtvis bara användbara för enkla fraser som svaga lösenord.

Här är en förenklad version av ett regnbordsbord för att visa hur man skulle fungera när man använder SHA-1 kryptografiska hashfunktionen:

Oformatterad textSHA-1 kontrollsumma
123458cb2237d0679ca88db6464eac60da96345513964
password1e38ad214943daad1d64c102faec29de4afe9da3d
jag älskar min hunda25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny4007d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

En hackare måste veta vilken kryptografisk hashalgoritm som användes för att generera kontrollsummorna för att räkna ut värdena.

För ytterligare skydd, utför vissa webbplatser som lagrar användarlösenord extra funktioner på kryptografisk hash-algoritmen efter att värdet genererats men innan det lagras. Denna process ger ett nytt värde som bara ser ut på webbservern och som inte stämmer överens med det ursprungliga kontrollsumman.

Efter att ett lösenord har angetts och det genererade checksummet kan det separeras i flera delar och omplaceras innan det lagras i lösenordsdatabasen, eller vissa tecken kan bytas ut med andra. När du försöker autentisera nästa gång användaren loggar in, vänder webserveren den här ytterligare funktionen och det ursprungliga kontrollsumman genereras igen för att verifiera att användarens lösenord är giltigt.

Med dessa steg begränsas användbarheten av en hack där alla kontrollsummorna blir stulna. Tanken är att utföra en funktion som är okänd, så om hackern känner till kryptografiska hashalgoritmen men inte den anpassade, är det inte lättsinnigt att veta lösenordskontrollsummorna.

Lösenord och krypterade Hash-funktioner

En databas sparar användarlösenord på ett sätt som liknar ett regnbordsbord. När ditt lösenord har angetts genereras kontrollsumman och jämförs med den som är registrerad med ditt användarnamn. Du får då tillgång om de två är identiska.

Med tanke på att en kryptografisk hashfunktion producerar en icke-omvändbar kontrollsumma, är det säkert för dig att göra ditt lösenord så enkelt som 12345, istället för 12@34$5, helt enkelt för att kontrollsummorna själva inte kan förstås? Nej, och här är varför.

Dessa två lösenord är båda omöjliga att dechiffrera bara genom att titta bara på kontrollsummorna:

MD5 för 12345: 827ccb0eea8a706c4c34a16891f84e7b

MD5 för 12 @ 34 $ 5: a4d3cc004f487b18b2ccd4853053818b

Vid första anblicken kan du tro att det är bra att använda något av dessa lösenord. Det här är sant om en angripare försökte ta reda på ditt lösenord genom att gissa MD5-kontrollsumman, vilket ingen gör, men inte sant om en brutal kraft eller en ordboksattack utförs, vilket är en vanlig taktik.

En brute force attack inträffar när flera slumpmässiga stavar tas vid gissning av ett lösenord. I det här fallet skulle det vara lätt att gissa 12345, men ganska svårt att slumpmässigt räkna ut den andra. En ordboksattack är liknande eftersom angriparen kan prova varje ord, nummer eller fras från en lista över vanliga lösenord och inte så vanliga.12345 är ett av de vanliga lösenorden.

Även om kryptografiska hashfunktioner skapar svåra att omöjliga att gissa kontrollsummor, borde du fortfarande använda ett komplext lösenord för alla dina online och lokala användarkonton.

Mer information om kryptografiska hashfunktioner

Det verkar som kryptografiska hashfunktioner är relaterade till kryptering, men de två fungerar på olika sätt.

Kryptering är en tvåvägsprocess där något krypteras för att bli oläsligt och sedan dekrypteras senare för att användas normalt igen. Du kan kryptera filer du har sparat så att alla som når dem inte kan använda dem, eller du kan använda filöverföringskryptering för att kryptera filer som flyttar över ett nätverk, som de du laddar upp eller laddar ner online.

Kryptografiska hashfunktioner fungerar annorlunda eftersom kontrollsummorna inte är avsedda att vändas med ett speciellt dehashing-lösenord. Det enda ändamålet med kryptografiska hashfunktioner är att jämföra två bitar av data, till exempel när man hämtar filer, lagrar lösenord och drar data från en databas.

Det är möjligt att en kryptografisk hashfunktion producerar samma kontrollsumma för olika data. När det händer kallas det en kollision, vilket är ett stort problem med tanke på att hela punkten för en kryptografisk hashfunktion är att göra unika kontrollsummor för varje dataingång till den.

Kollisioner kan uppstå är att varje kryptografisk hash-funktion ger ett värde av en bestämd längd oberoende av ingångsdata. Exempelvis genererar MD5-kryptografiska hash-funktionen 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 och e10adc3949ba59abbe56e057f20f883e för tre helt olika datablock.

Den första kontrollsumman är från 12345. Den andra genererades från över 700 bokstäver och siffror, och den tredje är från 123456.

Alla tre ingångarna har olika längder, men resultaten är alltid bara 32 tecken långt sedan MD5-kontrollsumma användes.

Det finns ingen gräns för antalet kontrollsummor som kan skapas eftersom varje liten förändring i inmatningen ska ge en helt annan kontrollsumma. Eftersom det finns en gräns för antalet kontrollsummor som en kryptografisk hashfunktion kan producera finns det alltid möjlighet att du stöter på en kollision.

Det är därför som andra kryptografiska hashfunktioner har skapats. Medan MD5 genererar ett värde på 32 tecken genererar SHA-1 40 tecken och SHA-2 (512) genererar 128. Ju större antal tecken som kontrollsumman har desto mindre sannolikt kommer en kollision att uppstå.