Hur starkt ett lösenord behöver vara
För ett konto du skulle bry dig om att förlora, använd ett slumpgenererat lösenord på minst 16 tecken, eller en lösenordsfras på minst 5 slumpvis valda ord, och använd det på exakt en webbplats. Det är 65 till 95 bitars entropi, med god marginal utom räckhåll för brute force, och delen "en webbplats" spelar större roll än styrkan. Nedan följer resonemanget bakom de siffrorna.
Entropi i bitar
Entropi mäter ur hur många lika sannolika möjligheter lösenordet drogs, uttryckt som en tvåpotens. 40 bitars entropi betyder en av 2^40 möjligheter, ungefär en biljon, och varje extra bit fördubblar arbetet med att gissa det. Formeln är bitar = längd x log2(teckenuppsättningens storlek), så gemena bokstäver är värda 4,7 bitar styck, bokstäver och siffror 5,95, all skrivbar ASCII 6,57, och ett ord ur en lista på 7 776 ord 12,9:
| Lösenord | Entropi |
|---|---|
| 8 gemena bokstäver | 38 bitar |
| 12 bokstäver och siffror | 71 bitar |
| 12 tecken, hela ASCII | 79 bitar |
| 16 bokstäver och siffror | 95 bitar |
| 5 slumpmässiga ord | 65 bitar |
| 6 slumpmässiga ord | 78 bitar |
Den här matematiken håller bara om lösenordet kom ur en verkligt slumpmässig process. Tr0ub4dor&3 är 11 tecken ur en uppsättning på 95 tecken, vilket formeln ger 72 bitar, men det är ett uppslagsord med förutsägbara utbyten och ett knäckningsverktyg når det långt tidigare. Entropin beskriver generatorn, inte strängen.
Vad bitarna köper dig
Gissningshastigheten beror på hur webbplatsen lagrade lösenordet. Mot ett live inloggningsformulär med hastighetsbegränsning får en angripare några försök i timmen. Mot en stulen databas beror det på hashen: en snabb sådan som MD5 eller SHA-1 kan provas i enorm takt på vanlig grafikhårdvara, medan en särskilt byggd lösenordshash som bcrypt eller Argon2 är långsammare med många tiopotenser.
Nedan är värsta fallet, en snabb osaltad hash med antagna tio miljarder gissningar per sekund. Det visar hur skarpt kurvan böjer sig, och är inte en mätning:
| Entropi | Tid att uttömma hela rymden |
|---|---|
| 40 bitar | Omkring två minuter |
| 50 bitar | Omkring ett dygn |
| 60 bitar | Några år |
| 70 bitar | Några tusen år |
| 80 bitar | Miljoner år |
I genomsnitt lyckas en angripare på halva den tiden. Den praktiska läsningen: under 50 bitar är inte värt mycket mot ett angrepp utanför tjänsten, 60 till 70 bitar duger för det mesta, och 80 bitar och uppåt förblir bekvämt.
Längd slår teckensoppa
Ta ett lösenord på 12 tecken med bokstäver och siffror (71 bitar). Att lägga till skiljetecken, och därmed vidga uppsättningen från 62 till 95 tecken, tar dig till 79 bitar. Att lägga till två bokstäver eller siffror till i stället tar dig till 83. Varje extra tecken multiplicerar sökrymden med hela alfabetet, medan en breddning av alfabetet bara tillför omkring 0,6 bitar per tecken du redan hade. Längden vinner, och fortsätter vinna.
Sammansättningsregler ("måste innehålla en versal, en siffra och ett specialtecken") pressar in folk i en smal uppsättning mönster: versalen först, siffran och utropstecknet sist. Knäckningsverktyg provar de omvandlingarna först. Det är ett skäl till att NIST:s riktlinjer för digital identitet har gått bort från sammansättningsregler och påtvingade regelbundna byten, till förmån för längd och kontroller mot listor över lösenord kända från intrång.
Återanvändning är den verkliga risken
Nästan ingen får ett konto komprometterat genom brute force. Det som händer är credential stuffing: en svag webbplats blir hackad, paren av e-postadress och lösenord publiceras, och automatiska verktyg provar varje par mot hundratals andra tjänster. Om du använde samma lösenord på din e-post som på det hackade forumet är dess styrka irrelevant. Det lämnades över, det gissades inte.
Nätfiske fungerar på samma sätt: ett lösenord på 30 tecken som skrivs in på en övertygande falsk inloggningssida är värt exakt lika mycket som password1. Så, i ordning efter vad som betyder något:
- Ett olika lösenord på varje webbplats.
- Tvåfaktorsautentisering på allt viktigt, framför allt på din e-post, eftersom den är återställningsvägen till allt annat.
- Tillräcklig längd för att knäckning utanför tjänsten ska vara hopplös.
Lösenordsfraser
En lösenordsfras är flera ord valda slumpvis ur en lista, till exempel harvest-cobalt-mural-drift-plinth. Vid 12,9 bitar per ord är fem ord 65 bitar och sex ord 78.
Två villkor får detta att fungera. Orden måste väljas slumpmässigt, med tärningar eller programvara, inte plockas av dig. Och styrkan kommer från antalet ord, inte från avgränsaren eller från att en bokstav är versal: en sångtext eller ett citat har nästan ingen entropi, eftersom det är hämtat ur en liten mängd saker folk säger.
Lösenordsfraser gör verkligen nytta för de få lösenord du skriver ur minnet: inloggningen på din enhet, huvudlösenordet till din lösenordshanterare, din diskkryptering.
Var en hanterare passar in
En lösenordshanterare förvandlar "hitta på och kom ihåg 200 unika lösenord" till "kom ihåg en lång lösenordsfras". Den genererar strängar med hög entropi och fyller i dem på rätt domän, vilket trubbar av nätfiske eftersom den inte autofyller på en snarlik adress.
Den koncentrerar risken, vilket är en verklig invändning och ändå den bättre affären: ett valv bakom en lång lösenordsfras och en andra faktor slår ett lösenord som delas över dussintals webbplatser av okänd kvalitet.
En anmärkning om hashning
Hashning är inloggningens andra sida. En välbyggd tjänst lagrar en saltad hash från en avsiktligt långsam algoritm, aldrig lösenordet självt, så att en läcka inte omedelbart ger klartext. Allmänna hashar som SHA-256 är byggda för att vara snabba, vilket gör dem utmärkta för filkontrollsummor och till ett dåligt val för lösenordslagring. Att hasha ditt eget lösenord för att "göra det starkare" åstadkommer ingenting: resultatet är bara så ogissbart som indata.