Bra fråga, och jag är glad att du ställde den. Jag vill att folk ska hitta den här tråden när de googlar den så att de - förhoppningsvis - inte gör samma misstag som många andra företag gör.
Du borde inte bara hash
lösenord, bör du salta och se till att din hashingalgoritm använder någon form av SlowEquals . Du ska inte sluta där: du bör använda en säker hashingalgoritm som i hög grad motstår kollisioner , till exempel bcrypt eller scrypt.
Varför salt? Vad är kollisioner?
Jag ska använda md5 som ett exempel eftersom det är mycket känt. Använd inte det, eftersom det är sårbart för kollisioner och är mycket snabbt vilket innebär att det är mycket lättare att bryta. Låt oss föreställa oss att du bara hash dina lösenord utan salt. Du skulle sluta producera en statisk effekt nästan varje gång.
Till exempel skulle " myDarnPassword
" konverteras till " aca6716b8b6e7f0afa47e283053e08d9
" när det hashades som md5. Vid den här tiden kan du skapa en ordbokattack och använda regnbågstabeller. Du kan till och med skapa en databas som konverterar så många slumpmässiga tecken till en lätt sökbar databas som inte kräver tidskrävande regnbågsuppslag. Du kan långsamt skapa det över tiden och slå upp hash senare.
Du skulle skapa en tabell ser ut så här:
+ --------- ---------- + ---------------------------------- + | LÖSENORD | UNSALTED_HASH | + ------------------- + --------------------------- ------- + | myDarnPassword | aca6716b8b6e7f0afa47e283053e08d9 | + ------------------- + --------------------------- ------- + | snällaDontSueMe11 | 0dd395d0ec612905bed27020fb29f8d3 | + ------------------- + --------------------------- ------- +
Då skulle du välja från databasen något så här:
VÄLJ [lösenord] FRÅN [tabell] VAR [ unsalted_hash] = 'aca6716b8b6e7f0afa47e283053e08d9'
Och det skulle returnera myDarnPassword , plus alla kollisioner som inträffat.
Med tillräcklig processorkraft och tid kan du skapa biljoner kombinationer och helt enkelt knäcka ett stort antal lösenord på mycket kort tid (jag kan rekommendera att dela upp databaser i lösenordslängder på grund av det stora antalet ). Du behöver dock en enorm mängd hårddiskutrymme för detta.
Vid den tiden är allt du behöver göra att leta upp det utan att slösa bort processorkraft på brute-tvingar allt varje gång. Och om du tidigare har stulit andras lösenord från en databas kan du lägga till dem och konvertera dem till hash. Många webbplatser har redan gjort detta.
När en webbplats validerar ditt lösenord, kommer de att jämföra lösenordet med den lagrade hash, och om det matchar hash i databasen anses det vara ett giltigt lösenord. Du kan då låta användaren logga in.
Saltning av hash kan hjälpa till att besegra denna attack, men det sparar inte dig mot kollisioner. Du kan jämföra hackade hashkoder med din hashlista som genererade kollisioner och sedan ange lösenordet på en webbplats, även om du har fel lösenord: så länge hashen validerar är du pwned .
Vem bryr sig om någon knäcker mina lösenord? Jag bryr mig inte!
Nedan följer bara en liten samling exempel på vad phishers och andra skadliga individer kan med dina oskadade och osaltade lösenord i klartext. Det kan inte nödvändigtvis användas för att rikta in dig direkt, men låt oss säga att Hacker
vill rikta in sig på Person A
. Låt oss härleda hur du kan rikta dig mot Person A .
- Du är Hacker . Ditt jobb är att hacka webbplatser och utveckla en databas för att samla denna information.
-
Person A
är en person av intresse. Person A
dyker upp i en av dina hackade webbplatsers databaser. Du känner nu till deras e-postadress och lösenord de använder för den webbplatsen.
- Nu kan du försöka logga in på deras e-postadress med lösenord du har stulit från den webbplatsen. Söta, det fungerar!
- Nu när du har tillgång till deras e-post, laddar du ner alla deras e-postmeddelanden via
IMAP
eller via deras webb-e-post. Vid denna punkt hittar du massor av intressanta saker. De kommunicerar med Person B . - Du kan faktiskt google vissa människors användarnamn och e-postadresser, och det kan visa webbplatser de publicerar på. Detta kommer att visa andra webbplatser som användaren använder. Kanske kan du försöka hacka dessa webbplatser eller kanske bara dra slutsatser om vad de är intresserade av. Nu kan du låtsas vara som dem eller hitta ytterligare information. Information / aktiviteter kan inkludera:
- Användarnamn .
Person A
postar online som Mark Buffalo
. Det är ett relativt unikt namn. Du kan sedan googla Mark Buffalo och leta efter webbplatser som han publicerar på. Kanske avslöjar han mer av sin personlighet på andra webbplatser? - Lösenord . Kanske
Mark Buffalo
har samma lösenord på den webbplatsen. Kanske kan du logga in på den webbplatsen och se hans privata kommunikation med andra?
- Personlig information . Eftersom du vet identiteten för
Mark Buffalo
, vad händer om han delar personlig information
på certains webbplats? Vad händer om han lägger in på craigslist som söker efter manliga eller kvinnliga eskorter, och han har lämnat sitt telefonnummer där? Du har redan hittat hans telefoninformation så att du kan hitta ett sätt att ställa upp honom och utpressa honom för pengar / information / makt. Detta har inte mycket att göra med att salta lösenorden om du inte inkluderar telefonnumret, men de hittar sitt telefonnummer på en annan webbplats tack vare din läcka. Det är ett av de många mycket kraftfulla sätten att information kan samlas in och användas mot dig. Det här är trots allt ett Informationssäkerhet -forum, så jag vill använda detta exempel. - Familjinformation . Nu blir det läskigt. Vi har Mark Buffalos personliga information. Låt oss titta på hans sociala nätverk. Åh, han har ett
Facebook
-konto (jag har inte). Kan vi komma åt detta med samma lösenord? Om Buffalo använder samma lösenord / e-postkombination, då förmodligen. Och du kan nog dra slutsatsen från hans e-postmeddelande som du öppnade tidigare, där du hittade många intressanta saker. Vi kan nu logga in och läsa hans Facebook-meddelanden. Nu vet vi vem hans familjemedlemmar är. Vi kan sedan samordna utpressningsattacken lättare. - Annan inloggningsinformation . Eftersom vi fick tillgång till hans e-post tidigare ser vi att han också har ett Skype-konto. En av dem är hemlig. Vi loggar in och ser att han flörtar med människor på Skype. Vi har nu mer utpressningsmaterial.
- Imitation . Du kan nu logga in och efterlikna Buffalo på en mängd olika webbplatser. Kanske är han faktiskt en rakskjutare och har aldrig gått efter några ledsagare eller något liknande? Nå, nu kan du förvandla honom till en eskorterande sökande, åtminstone i utseende, genom att använda hans referenser för att imitera honom online. Föreställ dig skador som kan orsaka en politiker som felaktigt anklagats och tvingas avgå.
- Saker som gör det lättare att hacka andra människor . Du kan sedan skicka e-post till Person B med infekterade bilagor och låtsas att du känner honom. Du har läst tillräckligt med e-postmeddelanden så att du kan imitera
Mark Buffalo
till den punkt där du verkar precis som han. Du skapar e-postmeddelandet på ett sätt som gör att Person B
intet ont anar vad som verkligen händer, och nu kan du göra samma sak för Person B
, eller värre.
Och det är bara en liten samling idéer. Det finns många olika användningsområden för någon annans referenser. Salta och hash dina lösenord, använd kollisionsresistenta hashalgoritmer som bcrypt och scrypt, och förhindra SQL-injektionsattacker. Snälla gör mig inte till en eskorterande sökande! Spara Mark Buffalo!
(Jag är medveten om att vissa webbplatser kan blockera ditt försök att få åtkomst till deras tjänster när du använder en annan IP, men det finns många sätt att kringgå det, och inte alla webbplatser gör det) .
Grattis för din potentiella grupptalan om du blir hackad.