Om informationssäkerhet och sekretess i en allt digitalare vardag

Dataintrång,Kryptering,Säkerhet,Vad är

Vad beyder det att ”hasha” lösenord? Eller: Vad är en kryptografisk hashfunktion?

10 Dec , 2017, 16.32 Linus Nyman

 

Det har blivit så gott som omöjligt att komma igenom en enda vecka utan historier om nya dataintrång. Lösenord och annat data läcker till höger och vänster. Hur illa det är att just t.ex. något av dina lösenord läckt beror till stor del på hur företaget eller tjänsten i fråga hanterar ditt lösenord.

Sköter de sitt på säkerhetsfronten så har företaget eller tjänsten i fråga faktiskt ingen aning vad ditt egentliga lösenord är(!)

”Alltså det där låter ju både fantastiskt intressant och helt omöjligt, Linus!”, hör jag dig tänka. ”Kan du snälla ta och berätta om hur något så vansinnigt kan gå till i praktiken?”

Jamen då du nu ber så vänligt så visst sjutton kan jag väl det. Vilket kommer att innebära ett snäppet nördigare inlägg, men man lever väl bara en gång så vi tutar och kör.

Hur sajter sparar – eller borde spara – dina lösenord

E-post, bank, social media, m.m. – tillbringar man någon tid alls på nätet så leder det lätt till en massa olika konton. Vilka alla brukar tryggas åtminstone med ett lösenord. (Men kan också tryggas med ytterligare steg genom tvåstegsverifiering.)

Sidor du vill logga in på måste egentligen inte veta ditt lösenord. Vad de måste veta, eller kunna kontrollera, är enbart att du själv  vet ditt lösenord.

Vad det innebär i praktiken är att de inte behöver spara ditt lösenord i klartext – alltså typ ”LinusLösenord”. Utan de kan spara en krypterad version av lösenordet. Alltså en förvrängd version, från vilket det inte går att tolka eller gissa vad det egentliga lösenordet är.

När du sedan vill logga in i tjänsten så har de inte ditt lösenord sparat i klartext. Men de vet vad den krypterade versionen av ditt lösenord är. Och de kan köra samma kryptering på lösenordet du skriver då du loggar in – och sedan helt enkelt kolla om slutresultatet blir detsamma. Alltså om den förvrängda versionen av vad du just matat in är identisk till den förvrängda versionen på lösenordet du ursprungligen skapat.

Vi tar en förenklad jämförelse…

Tänk dig en situation där jag har en online sajt där du vill skapa ett konto. På den här sajten använder man en siffra som lösenord. Jag har så där ungefär koll på säkerhet och vill därför inte spara de riktiga siffrorna – lösenorden – i min tjänsts databas. (Vilket sku vara jämförbart med att spara lösenorden i klartext.)

Utan istället, då någon skapar ett konto, så multiplicerar jag talet de matar in som lösenordet med 5 och sparar det talet istället. Det egentliga lösenordet sparar jag aldrig någonstans.

Om du t.ex. väljer talet ”7” som ditt lösenord så sparar jag ”35” som lösenord åt dig i tjänsten. Då du sedan återvänder till sidan och försöker logga in så tar jag vad du skriver i lösenordsfältet på inloggningssidan och multiplicerar det med 5. Blir svaret 35 så vet jag att du matat in det rätta lösenordet – utan att jag vet vad det egentliga lösenordet är.

Efter att ha tittat på ett förenklat exempel är det dags att titta på ”the real thing”. Håll i era hattar – det är dags för hashfunktioner!

Vad är en (kryptografisk) hashfunktion? Vad är att ”hasha”?

Kryptografiska hashfunktioner (en specifik variant av hashfunktion) är designade att vara lämpliga för t.ex. just specifikt att kryptera lösenord för att kunna jämföra dem med senare. Likt vårt exempel med att multiplicera med 7, men mycket mera robust och säkert än det.

Då man kör en kryptografisk hashfunktion på ett lösenord så talar man om att ”hasha” lösenordet. Här är några exempel (från Wikipedia) på hashad text.

 

"Hashad" text. Allstå text som körts igenom en kryptografisk hashfunktion (mera specifikt SHA-1)

Exempel på text som körts igenom en kryptografisk hashfunktion (mera specifikt hashfunktionen SHA-1). Originalet till vänster, hashade texten till höger.

 

En intressant och ur säkerhetssynvinkel viktig sak att lägga märke till i den hashade texten (vilken syns under ”Digest”) är att fast man bara gör små ändringar i den urprungliga texten så blir slutresultatet – den hashade versionen – ändå alldeles annorlunda.

Exemplet ovan är hashat med funktionen SHA-1 (vilken inte längre anses vara säker). Men det finns många olika kryptografiska hash funktioner att välja mellan.

Alltså…

Så, för att (äntligen?) återgå till vad jag skrev i början av inlägget om hur farligt ett dataintrång är: om företaget eller tjänsten i fråga alls bryr sig om din säkerhet så kommer de att ha hashat lösenorden. Då, ifall av ett dataintrång, läcker alltså listan av hashade lösenord men inte ditt (eller andras) lösenord i klartext.

För att göra sparandet av ditt lösenord ännu säkrare så används ofta inte bara hashande, utan också något som kallas att ”salta” lösenord (men det får vi ta en annan gång).

Ur en säkerhetssynvinkel så är ett av dina viktigaste uppgifter som skapare av konton att du – oberoende av hashande och saltande – borde ha ett starkt, unikt lösenord för varje tjänst.

Kryptografiska hashfunktioner kan användas för annat än bara att trygga lösenord. Men nu tycker jag att du kämpat dig igenom tillräckligt mycket nörderi för en dag, så vi tar även det en annan gång. Håller du inte med utan vill nörda vidare så kan du läsa mera om hashfunktioner eller t.ex. testa själv på att hasha text.

Lämna ett svar

E-postadressen publiceras inte. Obligatoriska fält är märkta *