✖

Lösenordssäkerhet

En angripare som försöker ta sig in i en lösenordsskyddad applikation (ett lösenordsskyddat RAR-arkiv, e-post …) har flera möjligheter att nå sitt mål utan att känna till lösenordet. Några av dem kräver en viss dos intelligens, list och kunskap, andra kräver lite tur och fysisk träning. Låt oss därför först sammanfatta vilka möjligheter angriparen har.

Hur man knäcker någons lösenord

  • Hitta den som känner till lösenordet (till exempel ägaren till e-postkontot) och få lösenordet av honom — övertala honom, muta honom, slå ner honom. Den metoden kommer jag inte att beskriva vidare i artikeln :-).
  • Försöka lirka ur ägaren lösenordet på något diskret sätt, till exempel med ett falskt mejl, något som kallas nätfiske (phishing). Metoden går ut på att du skickar ett mejl till kontoinnehavaren där du uppmanar honom att skicka tillbaka sitt användarnamn och lösenord. Det beror helt på dig hur trovärdigt meddelandet ser ut, själva uppmaningen räcker nog inte, utan du måste lägga till någon historia. Ofta stöter vi på att databasen har gått sönder och att alla användare därför uppmanas att ange sitt lösenord och användarnamn igen, annars stänger vi deras brevlåda, och så vidare. Om meddelandet ser riktigt seriöst ut brukar andelen som går på det inte vara liten.
  • Ordboksattack — vi laddar ner paket med de vanligaste lösenorden från internet och provar alla. Om vi har tur och ägaren har ett vanligare lösenord får vi det mycket lätt. Av det följer den grundläggande lärdomen — välj inte lösenord som betyder något. Välj till exempel lösenordet banan, så garanterar jag att den första bästa nybörjarhackern knäcker det på några sekunder. Det här är nog den mest effektiva metoden. Om du har en riktigt stor ordlista med lösenord kan du gissa lösenordet för en stor del av användarna utan större ansträngning.
  • Brute force är den dummaste metoden, rå kraft. Den går ut på att prova alla tänkbara lösenord som överhuvudtaget finns. Programmet sätter ihop bokstäver efter hand enligt någon algoritm och prövar om det träffade det sökta lösenordet. När det hittar det sparar det lösenordet och avslutar. Den metoden går vi igenom närmare.

Brute force

Ett program som använder den här metoden skapar bara olika ordnade urval av tecken och prövar om det av en slump träffar lösenordet. Vi räknar ut hur lång tid en sådan provning kan ta.

Antag att vi har ett lösenord på fem tecken som bara består av små bokstäver i det engelska alfabetet (alltså utan å, ä och ö). Det engelska alfabetet har tjugosex bokstäver. Nu kan vi enkelt räkna ut hur många olika lösenord vi kan bilda av fem sådana bokstäver. Vi använder ordnade urval, eftersom ordningen spelar roll (lösenordet lampa är inte detsamma som palma, fastän de består av samma bokstäver), och vi måste dessutom använda ordnade urval med återläggning, eftersom bokstäver kan upprepas i lösenord. Och så till själva beräkningen. Formeln för antalet ordnade urval av k element ur n med återläggning är nk. För n sätter vi in antalet bokstäver vi väljer bland — antalet bokstäver i det engelska alfabetet — och för k antalet bokstäver lösenordet består av, i vårt fall fem. Vi får 265, vilket är ungefär tolv miljoner olika möjligheter. Är det mycket eller lite?

Det beror också på vilken maskin vi har till förfogande. En äldre skrothög klarar bara ett fåtal jämförelser per sekund, supermoderna datorer klarar tiotusen gånger fler. Jag kommer i de här exemplen att räkna med att datorn klarar tio miljoner jämförelser och utvärderingar per sekund. Nu inser nog alla att ett lösenord på fem tecken skulle avslöjas av en sådan dator på under två sekunder, vilket verkligen inte är ett positivt resultat. Men vi ger inte upp.

Vi gör lösenordet starkare

Ett lösenord på fem tecken är verkligen inte säkert alls, vissa förnuftigare system tillåter inte ens ett så kort lösenord. Man brukar säga att ett lösenord inte bör vara kortare än åtta tecken. Låt oss nu räkna ut hur många möjligheter det finns för ett lösenord på åtta tecken. Precis som i förra fallet räknar vi bara med små bokstäver i det engelska alfabetet. Vi sätter in i formeln och får 268, vilket är ungefär tvåhundra miljarder möjligheter. Det är ett snyggare tal. Datorn skulle utvärdera alla möjligheter på knappt sex timmar. Det är bättre än förra gången, men låt oss se hur mycket starkare lösenordet skulle bli om du också använde stora bokstäver, siffror och specialtecken som understreck, bindestreck och liknande.

Små bokstäver är 26, stora bokstäver är också 26, vilket ger tillsammans 52 tecken. Till det måste vi lägga 10 siffror och några specialtecken. Alla specialtecken är inte tillåtna överallt, så för enkelhetens skull räknar jag bara med åtta specialtecken, så att antalet tecken avrundas till fina 70. Lösenordets längd blir åter åtta. Efter insättning får vi talet 708, vilket för att du ska få en bättre uppfattning är ungefär 5,8 · 1014, med ord nästan sex hundra biljoner möjligheter. Det är ett ganska imponerande tal. Vår dator skulle kontrollera alla möjligheter på sexton tusen timmar! Det är knappt två år. Angriparen skulle behöva ha väldigt stor tur för att hitta lösenordet inom någon realistisk tid. Dessutom skulle angriparen behöva känna till lösenordets längd, annars skulle angriparen också behöva pröva möjligheterna med färre tecken.

Vissa människor är så oroliga för sina data att de använder lösenord med bara siffror. Sådana lösenord står sig mycket bra mot ordboksattacker, eftersom det knappast står just 41 274 390 553 i någon ordlista med vanliga lösenord. Tyvärr står sådana lösenord sig visserligen bra mot ordboksattacker, men sämre mot brute force. Det finns nämligen bara tio siffror, vilket betyder att antalet möjligheter alltid är 10k. Lösenordets styrka bestäms bara av dess längd. Vårt tidigare lösenord på åtta tecken med alla slags tecken hade ungefär 5,8 · 1014 möjligheter. För att nå upp till samma sak med ett lösenord av bara siffror skulle det behöva ha femton siffror, nästan dubbelt så många tecken. Det syns tydligt att det är effektivare att välja ett kortare lösenord med fler slags tecken.

Underskatta inte angriparen

Angriparen kan vara klyftig. Efter att ha läst raderna ovan har du till exempel bestämt dig för att ändra ditt nuvarande lösenord ”jordgubb” åtminstone till ”Jordgubb”, vilket ökar antalet möjligheter flera gånger om, eftersom angriparen nu måste ta med stora bokstäver i algoritmen. Men angriparen kan anta att den stora bokstaven bara står först, eftersom det är lättare att komma ihåg och det inte är brukligt att ha en stor bokstav mitt i ett ord. Så angriparen skriver en algoritm som prövar alla ord med små bokstäver och eventuellt med en stor bokstav allra först.

Ditt ursprungliga lösenord hade komplexiteten (nu menar jag hur många möjligheter det sammanlagt kunde finnas om vi behåller samma form på lösenordet — åtta små bokstäver) 268. Om angriparen inte tänkte efter skulle det nya lösenordet ha komplexiteten 528, men om angriparen använde algoritmen som skisserades ovan skulle lösenordet ha komplexiteten 52 · 267. På lösenordets första plats kan små och stora bokstäver växla, det finns 52 sådana tillsammans, och på de följande sju platserna kan bara små bokstäver växla, vilket redan är ett vanligt ordnat urval med återläggning.

Angriparen kan dessutom till exempel veta att ditt lösenord består av fyra bokstäver och fyra siffror, inte blandade, alltid siffrorna efter varandra och bokstäverna efter varandra. Komplexiteten för ett sådant lösenord räknar vi ut så här: den första fyrgruppen bokstäver har sammanlagt 264 möjligheter, den andra fyrgruppen siffror har 104 möjligheter. Dessa två resultat multiplicerar vi sedan: 264 · 104. Om angriparen inte visste om det först kommer siffror eller bokstäver skulle vi behöva multiplicera det förra resultatet med två.

Du kan också titta på de här tabellerna, där finns hastigheterna för lösenordsknäckning.