Att knäcka ett lösenord är alltså i själva verket en gissningslek där angripare gissar lösenord tills dess att rätt ord hittats. Hur många gissningsförsök som krävs innan en lösenord har knäckts beror på lösenordets komplexitet. Läs mer om det i den förra artikeln.
På senare år har stora mängder lösenord läckt ut vid hacker-attacker.
8 tecken vanlig policy
Många system använder sig av en lösenordspolicy som kräver åtminstone åtta tecken långa lösenord. Om ett tecken kan vara antingen en stor eller liten bokstav, en siffra eller ett specialtecken, kan varje tecken ha 112 (baserat på tjugosex bokstävers alfabet, tio siffror och cirka femtio specialtecken) olika värden.
Om ett åtta tecken långt lösenord väljs slumpmässigt, vilket oftast inte sker i praktiken, ger det här en angripare sannolikheten en på cirka 2,48 x 10^16 att gissa rätt.
Enligt diskret matematik kan man förvänta sig att gissa rätt efter halva antalet, alltså cirka 1,24 x 10^16 gissningar. För att ge en referensram kan tilläggas att sannolikheten för att vinna Svenska Spels Drömvinsten är cirka 1 på 338 miljoner – det är alltså ungefär 36,6 miljoner gånger troligare att vinna drömvinsten än att gissa rätt lösenord.
Tålamod eller kapacitet
Att knäcka lösenord genom den här tekniken kräver antingen ett, för att uttrycka det milt, stort tålamod eller tillgång till stor beräkningskapacitet. En allt vanligare trend är att använda grafikkort för att knäcka lösenord. För att förstå varför behöver vi titta närmare på tre egenskaper som knäckning av lösenord uppvisar:
Oberoende: Knäckning av ett lösenord är oberoende av resultatet från knäckning av andra lösenord – det gör det möjligt att knäcka flera lösenord parallellt.
Sisd-arkitektur. En given instruktion appliceras på data lagrad i en minnescell.
Simd-arkitektur. En given instruktion appliceras på data i flera minnesceller parallellt.
Beräkningsintensivt: Många beräkningar krävs för att generera en hashsumma av ett lösenord samtidigt som förgreningar (branches) inte förekommer.
Ej latenskritiskt: Det är inte viktigt hur snabbt hashsumman av ett specifikt lösenord beräknas (latency, latens) utan vad som är av intresse är antalet hashsummor som beräknas per sekund (throughput, genomströmning).
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.