Lösenord 1/2

Om lösenord

När du loggar in någonstans, t.ex. på en webbsida eller en dator, så anger du oftast användarnamn och lösenord. Detta kallas autentisering. Lösenord är inte det enda sättet att autenticera sig på, men det är än så länge det vanligaste.

Men hur vet datorn/webbsidan om du har angett rätt lösenord? Någonstans måste det finnas en lista med alla användare och deras respektive lösenord. Eller?

Ja, det går att spara lösenorden i klartext, men det är inte så smart. Om datorn/webbsidan attackeras och lösenordsfilen kommer på vift är det kört. Därför brukar inte lösenorden sparas i klartext. Istället sparas ett fingeravtryck av lösenordet, en s.k. hash.

En one-way-hash algortitm skapar ett fingeravtryck av lösenordet

Det kallas one-way-hash därför att algoritmen bara går att räkna ut åt ena hållet, lösenord->hash. Om du bara har hashen går det inte att räkna ut lösenordet (åt andra hållet så att säga). Inte med någon algoritm.

Brute force

Men det finns ett sätt. Om man har filen med lösenordshasharna går det att gissa lösenord, köra det gissade lösenordet genom algoritmen och sedan jämföra hasharna. Är de lika har man gissat rätt. Det låter kanske långsökt, men tänk då på att en modern dator kan gissa i storleksordningen 30 miljoner lösenord per sekund… Lite beroende på vilken algoritm som används och vilken hårdvara som används.

Lösenords knäcks genom att räkna ut hasharna för varje gissat lösenord (och sedan jämföra med hashen för det riktiga lösenordet)

Om det gissade lösenordet är AAA blir hashen av lösenordet H(AAA). Jämför H(AAA) med alla hashar i lösenordsfilen. Fortsätt sedan med AAB och AAC osv. Att testa alla kombinationer av tecken kallas ”brute force”. Testar man t.ex. alla lösenord som består av 8 versaler i det engelska alfabetet (26 tecken) blir antalet kombinationer 26^8, vilket tar lite mindre än 2 timmar om datorn klarar av att testa 30 miljoner lösenord per sekund.

Men om lösenordet istället består av både små och stora bokstäver i det engelska alfabetet blir det 52 olika bokstäver. Antalet kombinationer blir då 52^8 vilket skulle ta 20 dagar med samma dator. Lägger man dessutom till siffror ökar tiden till 84 dagar och lägger man till 10 specialtecken blir tiden 278 dagar.

Dictionary

Dessa siffror gäller om alla kombinationer av tecken testas. Ett alternativt tillvägagångssätt är att ta en stor ordlista och testa alla ord. Finns ditt lösenord med i ordlistan knäcks det omedelbart. Med tanke på att datorn kan testa 30 miljoner ord per sekund går det att ha en väldigt stor ordlista. Datorn kan till och med hinna med att testa flera kombinationer av varje ord i ordlistan. T.ex. varje ord med små bokstäver, stora bokstäver, framlänges, baklänges, med stor bokstav i början, med olika siffror före och/eller efter ordet osv. På en sekund skulle datorn klara av att testa alla ord i det svenska språket varierat på 300 olika sätt. (Detta kallas för en ”dictionary attack”, dictionary = ordlista)

Att välja lösenord

Om vi förutsätter att lösenordsfilen kommer att komma på avvägar är det bra om lösenordet väljs så att det är svårt att gissa, även om fienden kan gissa 30 miljoner lösenord per sekund. Åtta tecken är som sagt för lite. För att det ska ta mer än ett år att gissa lösenordet bör det vara minst 9 tecken långt och variera små och stora bokstäver med siffror och specialtecken insprängda. För att komma ihåg lösenordet kan man ta en fras. Som exempel kan vi använda frasen ”in dreams”. Då kan man t.ex. ersätta första i:et med en etta och r:et med 12 (12 ser ungefär ut som R). För att blanda stora och små bokstäver kan man dessutom skriva dreams med stort D. Då får man lösenordet 1nD12eams. Det har 9 tecken, stora och små bokstäver blandade och dessutom två siffror. Ett relativt bra lösenord. För att göra det ännu bättre kan man lägga in specialtecken också. T.ex. kan s ersättas av $ och a av @. Andra varianter är att ersätta e med en trea och s med en femma.

Byta lösenord

Låt säga att vi har valt ovanstående lösenord med 9 tecken. Det borde rimligtvis ta ett par år att knäcka med normal hårdvara. Sannolikheten att det knäcks på halva tiden, 1 år, blir då 50%. Därför bör vi byta lösenord minst ett par gånger per år. Tycker du det är drygt när IT-systemet på jobbet beordrar dig att byta lösenord var tredje månad? Förmodligen. Men nu vet du varför.

0wnly1nD12eam$

Klicka här för del 2.

Advertisements

Om albertveli

Grävande programmerare.
Det här inlägget postades i Säkerhet. Bokmärk permalänken.

En kommentar till Lösenord 1/2

  1. Ping: Lösenord 2/2 « Arkeoblog

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s