”Vår lösenordsdatabas stal igår. Men oroa dig inte: dina lösenord var krypterade. " Vi ser regelbundet uttalanden som denna online, inklusive igår, från Yahoo . Men ska vi verkligen ta dessa försäkringar till nominellt värde?
Verkligheten är att lösenordsdatabasen äventyrar är oroande, oavsett hur ett företag kan försöka snurra det. Men det finns några saker du kan göra för att isolera dig själv, oavsett hur dåligt ett företags säkerhetspraxis är.
Hur lösenord ska sparas
Så här ska företag lagra lösenord i en idealisk värld: Du skapar ett konto och anger ett lösenord. Istället för att lagra lösenordet själv genererar tjänsten en "hash" från lösenordet. Detta är ett unikt fingeravtryck som inte kan vändas. Till exempel kan lösenordet "lösenord" förvandlas till något som ser mer ut som "4jfh75to4sud7gh93247g ...". När du anger ditt lösenord för att logga in genererar tjänsten en hash från det och kontrollerar om hashvärdet matchar värdet som lagras i databasen. Tjänsten sparar aldrig någonsin ditt lösenord på hårddisken.
För att bestämma ditt faktiska lösenord måste en angripare med åtkomst till databasen förberäkna hash för vanliga lösenord och sedan kontrollera om de finns i databasen. Angripare gör detta med uppslagstabeller - enorma listor med haschar som matchar lösenord. Hashen kan sedan jämföras med databasen. Till exempel skulle en angripare känna till hash för "password1" och sedan se om några konton i databasen använder den hash. Om de är det vet angriparen att deras lösenord är "lösenord1".
För att förhindra detta bör tjänster "salta" hasharna. Istället för att skapa en hash från själva lösenordet lägger de till en slumpmässig sträng i lösenordets framsida eller ände innan de hashas. Med andra ord skulle en användare ange lösenordet "lösenord" och tjänsten skulle lägga till salt och hash ett lösenord som ser mer ut som "password35s2dg." Varje användarkonto bör ha sitt eget unika salt, och detta skulle säkerställa att varje användarkonto skulle ha olika hash-värde för sitt lösenord i databasen. Även om flera konton använde lösenordet "lösenord1" skulle de ha olika hash på grund av de olika saltvärdena. Detta skulle besegra en angripare som försökte förberäkna hash för lösenord. Istället för att kunna skapa haschar som tillämpas på alla användarkonton i hela databasen samtidigt, måste de skapa unika hash för varje användarkonto och dess unika salt. Detta skulle ta mycket mer beräkningstid och minne.
Det är därför tjänster ofta säger att inte oroa sig. En tjänst som använder korrekta säkerhetsprocedurer bör säga att de använde saltade lösenordshasher. Om de helt enkelt säger att lösenorden är "hashade" är det mer oroande. LinkedIn hashed deras lösenord, till exempel, men de saltade inte dem - så det var en stor sak när LinkedIn förlorade 6,5 miljoner hashlösenord 2012 .
Dåliga lösenordsrutiner
Det här är inte det svåraste att implementera, men många webbplatser lyckas fortfarande förstöra det på olika sätt:
- Lagring av lösenord i vanlig text : I stället för att bry sig om hashing, kan några av de värsta gärningsmännen bara dumpa lösenorden i klartextform i en databas. Om en sådan databas äventyras är dina lösenord uppenbarligen äventyrade. Det spelar ingen roll hur starka de var.
- Hashing lösenorden utan att salta dem : Vissa tjänster kan hash lösenorden och ge upp där, och väljer att inte använda salter. Sådana lösenordsdatabaser skulle vara mycket sårbara för uppslagstabeller. En angripare kan generera hash för många lösenord och sedan kontrollera om de fanns i databasen - de kunde göra detta för varje konto samtidigt om inget salt användes.
- Återanvända salter : Vissa tjänster kan använda salt, men de kan återanvända samma salt för varje lösenord för användarkonton. Detta är meningslöst - om samma salt användes för varje användare, skulle två användare med samma lösenord ha samma hash.
- Använda korta salter : Om salt med bara några siffror används, skulle det vara möjligt att generera uppslagstabeller som innehåller alla möjliga salt. Till exempel, om en enda siffra användes som ett salt, kan angriparen enkelt skapa listor med haschar som innehåller alla möjliga salt.
Företagen berättar inte alltid hela historien, så även om de säger att ett lösenord har hashats (eller hashats och saltats) använder de kanske inte de bästa metoderna. Var alltid fel vid sidan av försiktighet.
Andra bekymmer
Det är troligt att saltvärdet också finns i lösenordsdatabasen. Det här är inte så illa - om ett unikt saltvärde användes för varje användare, skulle angriparna behöva spendera stora mängder CPU-kraft för att bryta alla lösenord.
I praktiken använder så många uppenbara lösenord att det sannolikt skulle vara lätt att bestämma många användarkontons lösenord. Till exempel, om en angripare känner till din hash och de känner till ditt salt, kan de enkelt kontrollera om du använder några av de vanligaste lösenorden.
RELATERAD: Hur angripare faktiskt "hackar konton" online och hur du skyddar dig själv
Om en angripare har det för dig och vill knäcka ditt lösenord, kan de göra det med brute force så länge de vet saltvärdet - vilket de förmodligen gör. Med lokal, offline-åtkomst till lösenordsdatabaser kan angripare anställa alla brute kraftattacker de vill.
Andra personuppgifter läcker sannolikt också när en lösenordsdatabas stjäls: användarnamn, e-postadresser och mer. När det gäller Yahoo-läckaget läcktes också säkerhetsfrågor och svar ut - vilket, som vi alla vet, gör det lättare att stjäla åtkomst till någons konto.
Hjälp, vad ska jag göra?
Oavsett vad en tjänst säger när lösenordsdatabasen är stulen, är det bäst att anta att varje tjänst är helt inkompetent och agera därefter.
Återanvänd inte lösenord på flera webbplatser. Använd en lösenordshanterare som genererar unika lösenord för varje webbplats . Om en angripare lyckas upptäcka att ditt lösenord för en tjänst är ”43 ^ tSd% 7uho2 # 3” och du bara använder det lösenordet på den specifika webbplatsen, har de inte lärt sig något användbart. Om du använder samma lösenord överallt kan de komma åt dina andra konton. Detta är hur många människors konton blir "hackade".
Om en tjänst äventyras, se till att ändra lösenordet du använder där. Du bör också ändra lösenordet på andra webbplatser om du återanvänder det där - men du bör inte göra det i första hand.
Du bör också överväga med tvåfaktorautentisering , vilket skyddar dig även om en angripare lär sig ditt lösenord.
RELATERAD: Varför ska du använda en lösenordshanterare och hur du kommer igång
Det viktigaste är att inte återanvända lösenord. Komprometterade lösenordsdatabaser kan inte skada dig om du använder ett unikt lösenord överallt - om de inte lagrar något annat viktigt i databasen, till exempel ditt kreditkortsnummer.
Bildkredit: Marc Falardeau på Flickr , Wikimedia Commons