Det visar sig att de här egenskaperna medför att knäckning av hashsummor kan parallelliseras, och det är mer lämpligt att utföra med ett grafikkort i stället för med en traditionell processor. Anledningen till det blir tydligt när man tittar närmare på skillnaderna i arkitektur mellan grafikkort och processorer.
Parallellt, inte seriellt
Man kan förenklat säga att en vanlig processor, som består av en eller flera cpu:er, hanterar data seriellt medan ett grafikkort hanterar data parallellt.
En cpu i en processor är uppbyggd enligt en sisd-arkitektur. I en sådan tillämpas en given instruktion på data lagrad i en minnescell. Sisd-arkitekturen uppvisar alltså ett seriellt beteende.
En cpu är skapad för att hantera en uppgift så snabbt som möjligt. För att uppnå snabbheten är cpu:n beroende av ett relativt stort cache-minne, djup instruktionspipeline samt avancerad kontrollogik.
En cpu lämpar sig väl att användas i applikationer som innehåller många förgreningar och många beroenden mellan applikationer, till exempel operativsystem eller databaser.
Skillnaden mellan cpu och gpu. I gpu:n får fler beräkningsenheter (alu) plats eftersom den inte är lika beroende av komplex kontrollogik och stort cacheminne som cpu:n.
En gpu i grafikkort är i stället uppbyggd enligt en simd-arkitektur, där varje given instruktion appliceras på data i flera minnesceller parallellt.
En simd-arkitektur fungerar väldigt bra för vissa typer av applikationer där det är möjligt att utföra parallella beräkningar. Grafikkort används som bekant normalt för att rendera 2d- och 3d-grafik där varje bild består av flera miljoner pixlar, en beräkningsintensiv uppgift som lämpar sig väl för en simd-arkitektur då pixlar till stor del kan beräknas oberoende av varandra.
Vid rendering av grafik ligger fokus på att uppnå en så hög genomströmning av pixlar som möjligt medan latens är mindre viktigt. Exempel på andra lämpliga användningsområden för ett grafikkort är beräkningar av fysiska fenomen, sortering av långa listor och knäckning av lösenord.
Cpu:er och gpu:er konstrueras på chip där chipets storlek är en starkt kostnadsdrivande faktor. Tillverkarna är alltså måna om att hålla nere på chipets storlek för att hålla nere kostnaderna.
Det innebär att den funktionalitet som kan läggas på ett chip begränsas av mängden transistorer som får plats på chipet. För en cpu, som behöver mycket snabbt cacheminne och en komplicerad kontrollogik, måste många transistorer användas för det ändamålet.
För en gpu, som inte har det behovet, kan transistorerna i stället användas för att lägga flera beräkningsenheter, till exempel alu på chipet. En gpu får därför plats med många fler beräkningsenheter än en cpu – gpu:n är alltså lämpliga att använda för beräkningar som kan parallelliseras.
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.