Vad är en kryptografisk hashfunktion?

Innehållsförteckning:

Vad är en kryptografisk hashfunktion?
Vad är en kryptografisk hashfunktion?
Anonim

En kryptografisk hashfunktion (CHF) ä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.

Den huvudsakliga användningen av en CHF är att verifiera äktheten av en databit. Två filer kan endast antas vara identiska om kontrollsummorna som genereras från varje fil, med samma kryptografiska hashfunktion, är identiska.

Några ofta använda kryptografiska hash-funktioner inkluderar MD5 och SHA-1, även om många andra också finns. Dessa kallas ofta "hash-funktioner", men det är inte tekniskt korrekt. En hashfunktion är en generisk term som omfattar CHFs tillsammans med andra typer av algoritmer som cykliska redundanskontroller.

Cryptographic Hash Functions: A Use Case

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

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

Image
Image

Kan kryptografiska hash-funktioner vändas?

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

Hackare kan använda en regnbågstabell för att räkna ut den vanliga texten i en kontrollsumma. Regnbågstabeller är ordböcker som listar tusentals, miljoner eller till och med miljarder kontrollsummor tillsammans med deras motsvarande oformaterade textvärde.

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

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

Rainbow Table Exempel
Plantext SHA-1 Checksumma
12345 8cb2237d0679ca88db6464eac60da96345513964
lösenord1 e38ad214943daad1d64c102faec29de4afe9da3d
ilovemydog a25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984 c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

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

För extra skydd utför vissa webbplatser som lagrar användarlösenord ytterligare funktioner på den kryptografiska hashalgoritmen efter att värdet har genererats men innan det har lagrats. Denna process producerar ett nytt värde som bara webbservern förstår och som inte matchar den ursprungliga kontrollsumman.

Till exempel, efter att ett lösenord har angetts och kontrollsumman genererats, kan det delas upp i flera delar och ordnas om innan det lagras i lösenordsdatabasen, eller så kan vissa tecken bytas ut mot andra. När man försöker autentisera nästa gång användaren loggar in, reverserar servern denna extra funktion, och den ursprungliga kontrollsumman genereras igen för att verifiera att en användares lösenord är giltigt.

Att ta dessa steg begränsar användbarheten av ett hack där alla kontrollsummor stjäls. Tanken är att utföra en funktion som är okänd, så om hackaren känner till den kryptografiska hashalgoritmen men inte den anpassade, är det inte till någon hjälp att känna till lösenordskontrollsummorna.

Lösenord och kryptografiska hashfunktioner

En databas sparar användarlösenord på ett sätt som liknar ett regnbågsbord. När ditt lösenord har skrivits in genereras kontrollsumman och jämförs med den som finns registrerad med ditt användarnamn. Du får sedan åtkomst om de två är identiska.

Med tanke på att en CHF ger en icke-reversibel 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 själva kontrollsummorna inte kan förstås? Nej, och här är varför.

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

MD5 för 12345: 827ccb0eea8a706c4c34a16891f84e7b

MD5 för 12@34$5: a4d3cc004f487b18b2ccd4853053818b

Vid första anblicken kanske du tror att det är bra att använda något av dessa lösenord. Detta ä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 brute force eller ordboksattack utförs, vilket är en vanlig taktik.

En brute force attack inträffar när flera slumpmässiga knivhugg tas för att gissa 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 genom att angriparen kan prova varje ord, nummer eller fras från en lista med vanliga (och inte så vanliga) lösenord, och 12345 är ett av de vanligaste lösenorden. lösenord.

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

Mer information om kryptografiska hash-funktioner

Det kan tyckas som om 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 norm alt igen. Du kan kryptera filer som du har lagrat så att alla som kommer åt dem inte kan använda dem, eller så kan du använda kryptering av filöverföring för att kryptera filer som rör sig ö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 dehashinglösenord. Det enda syftet med CHF är att jämföra två datastycken, till exempel när man laddar ner filer, lagrar lösenord och hämtar data från en databas.

Det är möjligt för en kryptografisk hashfunktion att producera samma kontrollsumma för olika data. När detta händer kallas det en kollision, vilket är ett stort problem med tanke på att hela poängen med funktionen är att göra unika kontrollsummor för varje data som matas in i den.

Kollisioner kan uppstå beror på att varje CHF producerar ett värde med en fast längd oavsett indata. Till exempel genererar den kryptografiska hash-funktionen MD5 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 och e10adc3949ba05 tot alt tre för tre block.

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 är av olika längd, men resultaten är alltid bara 32 tecken långa, eftersom MD5-kontrollsumman användes.

Det finns ingen gräns för antalet kontrollsummor som kan skapas eftersom varje liten förändring i inmatningen är tänkt att producera en helt annan kontrollsumma. Eftersom det finns en gräns för antalet kontrollsummor som en CHF kan producera, finns det alltid möjligheten att du råkar ut för en kollision.

Det är därför andra kryptografiska hash-funktioner har skapats. Medan MD5 genererar ett värde på 32 tecken, genererar SHA-1 40 tecken och SHA-2 (512) genererar 128. Ju fler tecken kontrollsumman har, desto mindre sannolikt att en kollision inträffar.

Rekommenderad: