Om du är en vanlig Internetansvarig som jag själv, finns det en bra chans att du har fått ett e-postmeddelande som gör något så här:

Bäste kund,

Nyligen blev vår hemsida offer för en cyberattack på vårt företagsnätverk. Alla lösenord krypterades, men som en försiktighet kräver vi att alla våra kunder omedelbart återställer sina lösenord.

Tack.

Så, det var ett brott, en del av din information, inklusive ditt krypterade lösenord, läckte ut. Är ditt konto i fara?

Kort svar: JA, men varför?

För att förstå detta måste du förstå begreppet "lösenordshackning".

Vad är en Hash?

En hash är bara ett sätt att representera data som en unik teckenstorlek. Du kan ha något: musik, filmer, ditt namn eller den här artikeln. Metaforiskt sett är hashing ett sätt att tilldela ett "namn" till dina data. Det låter dig ta en ingång av vilken längd som helst och ändra den till en sträng av tecken som alltid är lika långa. Självklart finns det många metoder (algoritmer) för att göra detta.

Några av de populäraste hashingalgoritmerna:

  • MD5 - Med tanke på data returneras en unik 32-karaktärshash.
  • SHA1 - Med tanke på data returneras en unik 40-karaktärs-hash.
  • SHA256 - Med tanke på data returneras en unik 64 tecken hash; utformad av National Security Agency.

Låt oss titta på ett enkelt exempel:

Jag heter "Jamin Becker"

MD5-hashrepresentationen av mitt namn är:

 eeb7048c69b088739908f5f5144cd1f5 

SHA1-hashpresentationen av mitt namn är:

 ae480b717c08b6ab36a85075864e35b9c528d7c5 

SHA256-hashrepresentationen av mitt namn är:

 a477cc14eae5fd94fe4cb20b36ec80ac6983bad44973ae7f4f230010f01289b0 

Varför är Hashing Secure?

Anledningen till hashing är säker är enkel: hashing är en envägsoperation. De kan inte vändas om. Med tanke på en sträng "eeb7048c69b088739908f5f5144cd1f5" finns det inget sätt att vända MD5 hash för att returnera "Jamin Becker". Detta beror på hur matematikerna och programmerarna strukturerade MD5-hashingalgoritmen, och det kommer tillbaka till ett grundläggande datavetenskapsproblem som heter "P vs NP". P och NP är bara två klasser av algoritmer.

De flesta hashingalgoritmer faller under NP vilket innebär att de snabbt kan beräknas. Däremot faller un-hashing-algoritmerna (dvs. "eeb7048c69b088739908f5f5144cd1f5" -> "Jamin Becker") under P-klassen och kan bara effektivt lösas i polynomaltid (dvs att använda en kvantdator som är betydligt mer avancerad än de som finns idag).

Så varför är det bra för säkerhet?

Säg att du prenumererar på en webbplats och välj lösenord "12345". Omedelbart kommer den webbplatsen att ha ditt lösenord, förmodligen med SHA1, och lagra det i en databas. Nu varje gång du loggar in kommer webbplatsen att omhysa ditt lösenord och jämföra det med det som lagras i databasen. Om de matchar kommer du att verifieras med framgång. Om webbplatsen någonsin bryts och lösenordsdatabasen läckt visas ditt lösenord som "8cb2237d0679ca88db6464eac60da96345513964" och inte "12345".

Hash Attack Strategies

Så har angriparen den häftiga versionen av mitt lösenord och det går inte att vända det till 12345. Jag har inget att oroa mig för, eller hur? FEL!

En metod som vanligtvis används för att få det enkla textlösenordet från en hash kallas en brute force attack. I denna attack kommer angriparen att springa igenom en jätte ordlista och hash varje ord med lämplig hashingalgoritm. De kan sedan jämföra hasherna i ordlistan till de som de har fått från databasen. Om en hash från ordlistan matchar den som finns i databasen kan de helt enkelt hitta motsvarande ord i ordlistorna i den ursprungliga ordlistan som de har. Erfarna angripare kommer att använda extremt stora ordlistor i kombination med kraftfull mjukvara för att löpa igenom miljontals lösenords möjligheter en sekund.

En annan angreppsmetod försöker utnyttja hash-algoritmen själv genom att skapa en hashkollision. En hashkollision uppstår när två olika uppsättningar data löser sig till samma hash, och medan detta är sällsynt kan det vara dödligt. Detta skulle göra att angriparen kan skapa en rad tecken som inte är ditt lösenord, men kan fortfarande logga in på ditt konto eftersom det genererar samma hash.

Slutsats

Hashing-algoritmer blir alltmer avancerade. Matematiker och datavetenskapare utarbetar ständigt kryptografiska hashingalgoritmer med lägre sannolikheter för kollisioner. Det är emellertid viktigt att komma ihåg att oavsett hur stark hashingalgoritmen är, kan den alltid vara knäckt med en brute force attack. Den goda nyheten är att du enkelt kan försvara sig mot dessa attacker genom att helt enkelt följa bästa praxis lösenordspolicy.

  1. Storlek spelar roll - ju längre det ursprungliga lösenordet, desto mindre sannolikt kommer det att visas på en ordlista
  2. Var inte förutsägbar - använd inte ord som "lösenord" och "myname123"
  3. Använd en blandning av specialtecken, siffror, stora bokstäver och små bokstäver

Vad är dina tankar om hashing? Dela dina åsikter i kommentaren nedan.

Bildkrediter: Förstoringsglas Online Fingeravtryck byBigStockPhot