De som är lite äldre minns säkert filmen ”Wargames” från 1983, där den unge hackaren, spelad av Matthew Broderick, gissade fram lösenordet till Pentagons nya missilstyrningssystem och nästan startade ett tredje världskrig i tron att han hittat ett spel. Genom att studera utvecklarens liv, ganska ytligt, kunde hackaren lista ut att utvecklaren valt lösenordet Joshua, namnet på utvecklarens son.
Återspeglar 80-talet
Det här var före internet, när hackare försökte koppla upp sig och logga in i system med hjälp av så kallade krigsringare. Filmen återspeglar den lösenordsstandard som ansågs säker på 1980-talet.
I dag instrueras vi att skapa långa komplexa lösenord, bestående av stora och små bokstäver, något specialtecken och gärna minst 8 tecken långt för att förhindra knäckning. Men trots det knäcks de. I den här artikeln kommer vi att beskriva fundamentala tekniker för lösenordsknäckning, och motmedel.
Lösenord är ett mål
För att knäcka ett lösenord krävs att vissa kriterier är uppfyllda. För det första måste angriparen få tag i det kryptografiskt skyddade lösenordet. Det kan ses som ett av målen för en angripare då han eller hon lyckats bryta sig in i ett system.
I Unix-baserade system handlar det om att få tag i filen /etc/shadow, och för Windowsbaserade system handlar det om att ta hem sam-databasen.
I den äldre varianten av Unix-hash kunde lösenordet endast bestå av maximalt 8 tecken och endast hantera alfanumeriska tecken. Lösenordet xor:ades sedan med ett salt som sedan utgjorde nyckel till en modifierad variant av des.
En bitsträng om endast nollor krypterades sedan 25 gånger, och resultatet kodades därefter om till en teckensträng bestående av endast tecken från engelska alfabetet, vilket innebar att en lösenordshash utgjordes av 11 tecken.
Ett annat sätt är att sniffa nätverket, och försöka snappa upp krypterade lösenord till exempel då klienter kopplar upp sig mot trådlösa nät.
Ytterligare ett sätt är att stjäla lösenordsskyddade mjuka certifikat genom att ta sig in i användarnas klienter.
Det andra kriteriet som måste vara uppfyllt för att lösenorden ska vara möjliga att knäcka, är att angriparen vet hur lösenorden är skyddade. I de fall som beskrivs ovan är lösningarna väl dokumenterade och enkla för alla att tillgå.
För att visa och förstå bristerna i lösenordsskydd är lagringen av äldre Unix-lösenord ett bra exempel.
Under 90-talet var lösenorden i Unix lagrade i filen /etc/passwd. Ett lösenord kunde vara maximalt 8 tecken långt. För att kryptera lösenordet användes en modifierad variant av des, data encryption standard.
Innehållsförteckning
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 vilket indata som angetts.
krigsringare: Gammal lösning som testar olika telefonnummer för att hitta modemingångar.
lm, lanman: Det sätt som användes för att autentisera Windows 95-klienter mot ett Windowsnätverk.
mjukt certifikat: Certifikat med privat nyckel som ges ut på fil.
iteration: Variabel som anger antal gånger som lösenordet hashats eller krypterats.
ntlm, nt lan manager: Det sätt som användes för att autentisera Windows NT-klienter mot ett Windows-NT nätverk.
pbes, password based encryption scheme: Beskriver vilken algoritm som används för att kryptera en annan kryptonyckel.
pbkdf, password based key derivation function: Beskriver på vilket sätt en nyckel eller hash tas fram. Om det är nyckel som tas fram används den för att dekryptera en annan kryptonyckel via pbes.
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.
ssid, service set identification: Nätverksidentifierare för trådlösa nätverk.
wpa2, wi-fi protected access 2: Protokoll som används för att skydda autentisering mot trådlösa nätverk.
xor, ”exclusive or”: Operation som används i binära sammanhang. Om båda invärdena är samma blir resultatet noll, annars ett.