De senaste åren har flera databaser med lösenord publicerats efter intrång mot publika tjänster. Lösenorden har ofta forcerats med lätthet. Frågan som vi försöker svara på i den här artikelserien är: Varför är det så lätt?
I del 1 gick vi igenom svagheter som finns inbyggda i lösenordsskyddet. Knäckningen kan dock snabbas på med hjälp av hårdvara, och en växande trend är att grafikkort används för att knäcka lösenorden. I denna artikel tittar vi närmare på hur det går till.
Inte orden i klartext
I de allra flesta fall då stulna lösenordsdatabaser publicerats har de innehållit hashsummor av lösenord och inte lösenorden i klartext. Det är inte heller ovanligt att salt (se Ordlista) använts för att skydda hashsummorna mot angrepp med förberäknade regnbågstabeller, vilket gör att angripare måste använda sig av mer beräknings- och tidskrävande attacker, som till exempel ordlisteattacker eller uttömmande sökning.
Men trots att lösenorden skyddats med hjälp av hashalgoritmer och att salt använts har angripare i många fall lyckats komma åt lösenorden i klartext.
Inte alls komplicerat
Vi börjar med en kort repetition från den föregående artikeln för att beskriva hur ett lösenord forceras. Att knäcka ett lösenord kan låta komplicerat, men i själva verket följer det en mycket enkel algoritm. Följande metod förutsätter en uttömmande sökning, alltså det som kallas brute force:
1. Lösenord gissas.
2. Eventuellt salt klistras på lösenordet.
3. Lösenord tillsammans med salt matas in i en hash-algoritm, till exempel md5, ntlm eller sha1.
4. Resultatet jämförs med hashsumman av det lösenord som ska knäckas.
5. Om resultatet är identiskt med en hashsumma har man funnit lösenordet. Om inte så gissa nästa lösenord – alltså börja om på punkt 1.
Innehållsförteckning
alu, arithmetic logical unit: Enhet för aritmetiska och logiska operationer.
asic, application specific integrated circuit: Krets designad för en specifik uppgift.
cpu, central processing unit: Enhet i en dator som exekverar ett program.
fpga, field programmable gate array: Krets som kan konfigureras efter konstruktion.
gpu, graphics processing unit: Processor som finns på grafikkort. Arbetar med högre grad av parallellisering än en normal processor.
hash: Envägsfunktion. Resultatet från en hash går inte att räkna baklänges till vilka indata som angetts.
instruktionspipeline: Instruktionspipeline är en teknik som används vid tillverkning av proccessorer för att höja processorns genomströmning av instruktioner. Kan liknas vid löpande band-principen inom biltillverkning. Varje steg i pipelinen utför en liten specialiserad uppgift innan resultatet skickas vidare till nästan pipeline-steg.
ntlm, nt lan manager: Det sätt som användes för att autentisera Windows NT-klienter mot ett Windows NT-nätverk.
regnbågstabell: Tabell med förberäknade hash-kedjor. Snabbar upp formering av osaltade lösenord och därmed knäckning av krypterade lösenord.
salt: Slumpmässigt värde som läggs till ett lösenord för att göra det svårare att knäcka lösenordet. Lagras i klartext tillsammans med det krypterade lösenordet.
simd, single instruction single data:
Processorarkitektur där varje instruktion appliceras på data lagrad i en minnescell.
sisd, single instruction multiple data: Processorarkitektur där varje instruktion appliceras på data i flera minnesceller samtidigt.