Den allvarligaste bristen är att man inte använder sig av salt. Det innebär att en angripare inte behöver göra om beräkningarna varje gång han försöker knäcka ett lösenord, utan kan använda sig av en databas för att slå upp rätt lösenord utifrån ett givet hashvärde. Det är här regnbågstabeller kommer in i bilden.
10 000–100 000 ord
Regnbågstabeller är tabeller av så kallade hashkedjor. En hashkedja brukar innehålla mellan tiotusen och hundratusen lösenord, men endast första och sista värdet lagras i regnbågstabellen.
Tabellen kan bestå av i princip hur många kedjor som helst, beroende på vilka antaganden man gjort om lösenordets längd och komplexitet.
Regnbågstabellen består endast av start och slutvärden av m stycken kedjor som är n långa. Det representerar att m x n lösenord testas i tabellen som genereras. I och med att reduktionsfunktionen R är positionsberoende i varje kedja undviker man dubbletter.
En hashkedja består av två funktionsklasser. Dels hashfunktionen som ”krypterar” lösenordet och dels en mängd reduktionsfunktioner. Om kedjan är tiotusen lösenord lång så används tiotusen olika reduktionsfunktioner.
Kedjan skapas genom att man gissar ett startvärde, till exempel ordet ”sommar” och lagrar värdet i tabellen. Sedan hashar man ”sommar” med den metod som skyddar lösenordet.
Reduktion på reduktion
Hashen som genereras reduceras sedan till ett nytt ”läsbart” lösenord med hjälp av den första reduktionsfunktionen – det ska alltså vara läsbart utifrån den lösenordsrymd man försöker söka igenom.
Resultatet hashas på nytt för att sedan reduceras till ett nytt ”läsbart” lösenord som sedan hashas på nytt, och så vidare.
Så håller man på tills man gått igenom alla tiotusen reduktionsfunktionerna och avslutat med en hash av det sista reducerade lösenordet. Det sista hashvärdet lagras i regnbågstabellen.
Sedan väljs ett nytt värde som inte finns i tidigare hashkedja och en ny kedja skapas. Till slut har man en fullständig regnbågstabell.
I kedja, men vilken och var?
Vid knäckning används tabellen enligt följande. Man testar antagandet att lösenordet befinner sig någonstans i en kedja, men oklart i vilken position och i vilken kedja.
Först testas att hashen reduceras, med den sista reduktionsfunktionen, till ett läsbart lösenord som hashas igen.
Resultatet jämförs sedan med ändpunkterna i regnbågstabellerna.
Får vi ingen träff reducerar vi hashen med hjälp av den näst sista reduktionsfunktionen, hashar, reducerar den till ett lösenord med den sista reduktionsfunktionen, hashar och söker sedan om den matchar ändpunkten i regnbågstabellen.
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.