Ett lösenords komplexitet (eller styrka , styrka ) är ett mått på bedömningen av den tid som måste läggas på att gissa lösenordet eller välja det med någon metod, till exempel brute force . En uppskattning av hur många försök (tid) det i genomsnitt tar för en angripare att gissa ett lösenord. En annan definition av begreppet är en funktion av lösenordets längd, dess komplexitet och oförutsägbarhet.
Ett svagt lösenord är ett lösenord som lätt kan gissas eller tvingas fram. Ett starkt lösenord är ett lösenord som är svårt att gissa och som tar lång tid att välja med brute-force-sökning.
Användningen av komplexa lösenord ökar tiden det tar en angripare att gissa ett lösenord, men eliminerar inte behovet av att använda andra säkerhetsåtgärder. Effektiviteten av ett lösenord av en given styrka beror på designen och implementeringen av programvara för autentiseringssystem , i synnerhet på hur snabbt autentiseringssystemet kommer att svara på en angripare när han försöker gissa lösenordet, och hur säkert lösenordsinformationen lagras och överförs. Risker representeras också av vissa sätt att bryta datorsäkerheten som inte är relaterade till lösenordskomplexitet. Dessa är metoder som nätfiske , keylogging , telefonavlyssning, social ingenjörskonst , sökning efter användbar information i papperskorgen, sidokanalattacker , sårbarheter i programvara , bakdörrar , utnyttjande .
Det finns två faktorer som avgör komplexiteten hos ett lösenord:
Den första faktorn bestäms av hur lösenordet lagras och vad det används till. Den andra faktorn bestäms av lösenordets längd, teckenuppsättningen som används och hur lösenordet skapades.
Det mest uppenbara sättet att testa en gissning är att försöka använda ett gissat lösenord för att få tillgång till en lösenordsskyddad resurs. Denna metod kan dock vara långsam eller till och med omöjlig, eftersom det är ganska vanligt att system försenar eller blockerar åtkomst till ett konto efter flera försök att ange felaktiga lösenord. System som använder lösenord för autentisering måste lagra dem i någon form för avstämning med lösenord som angetts av användare. Vanligtvis, istället för ett lösenord, lagras värdet på lösenordets kryptografiska hashfunktion . Om hashfunktionen är tillräckligt komplex är det svårt att beräkna lösenordet från lösenordshashen, vilket innebär att en angripare kanske inte kan återställa lösenordet från den stulna hashen. Men kunskap om lösenords-hash och hash-funktionen tillåter en angripare att snabbt kontrollera gissade lösenord utan att komma åt det attackerade systemet.
Om ett lösenord används för att generera en kryptografisk nyckel som används för att kryptera data, kan en angripare snabbt verifiera att ett gissat lösenord är korrekt genom att se om den krypterade informationen har lyckats dekrypteras.
Om lösenordslagringssystemet inte använder ett kryptografiskt salt , kan en angripare förberäkna hashvärden för vanliga lösenord och för lösenord som är mindre än en viss längd. Med hjälp av de mottagna hasharna kan en angripare snabbt återställa lösenord från sin cache. Förberäknade lösenordshashar kan lagras effektivt med hjälp av en regnbågstabell . Sådana tabeller finns tillgängliga på Internet för vissa offentliga lösenordsautentiseringssystem.
Lösenord genereras antingen automatiskt (med hjälp av slumptalsgeneratorer ) eller av en person. Styrkan hos ett lösenord till en brute-force-attack kan beräknas exakt. I de flesta fall skapas lösenord av människor, till exempel när man skapar konton för datorsystem eller webbplatser. Människor skapar lösenord baserat på råd eller en uppsättning regler, men tenderar att följa mönster som spelar angriparen i händerna. Listor över ofta valda lösenord är vanliga för användning i program för att gissa lösenord. Ordboken för alla språk är en sådan lista, så ordboksord anses vara svaga lösenord. Flera decennier av analys av lösenord i datorsystem för flera användare har visat [1] att mer än 40 % av lösenorden är lätta att gissa med enbart datorprogram, och ännu fler kan gissas när information om en viss användare beaktas under en attack.
Automatisk lösenordsgenerering, om den görs på rätt sätt, hjälper till att undvika kopplingar mellan lösenordet och dess användare. Det är till exempel osannolikt att användarens husdjursnamn genereras av ett sådant system. För ett lösenord valt från ett tillräckligt stort utrymme av möjligheter, kan brute-force-sökning bli nästan omöjlig. Men riktigt slumpmässiga lösenord kan vara svåra att generera och generellt svåra för användaren att komma ihåg.
Lösenordskomplexitet inom datorindustrin mäts vanligtvis i termer av informationsentropi (ett begrepp från informationsteori ), mätt i bitar. Istället för antalet försök det tar att gissa lösenordet, beräknas bas 2-logaritmen för det numret, och det resulterande talet kallas antalet "entropibitar" i lösenordet. Ett lösenord med t.ex. 42-bitars komplexitet beräknat på detta sätt kommer att motsvara ett slumpmässigt genererat 42-bitars lösenord . Med andra ord, för att hitta ett lösenord med 42-bitars komplexitet med brute force, måste du skapa 2 42 lösenord och försöka använda dem; ett av 242 lösenord kommer att vara korrekt. Enligt formeln, om lösenordslängden ökas med en bit, kommer antalet möjliga lösenord att fördubblas, vilket kommer att göra angriparens uppgift dubbelt så svår. I genomsnitt måste en angripare kontrollera hälften av alla möjliga lösenord innan han hittar det rätta. Se lag om stora tal .
Slumpmässiga lösenord skapas genom att slumpmässigt välja valfritt antal tecken från vilken uppsättning som helst på ett sådant sätt att valet av ett tecken från uppsättningen är lika troligt. Komplexiteten hos ett slumpmässigt lösenord beror på entropin hos den använda slumptalsgeneratorn; pseudo-slumptalsgeneratorer används ofta . Många allmänt tillgängliga lösenordsgeneratorer använder slumptalsgeneratorer som finns i programbibliotek som erbjuder begränsad entropi. De flesta moderna operativsystem har dock kryptografiskt starka slumptalsgeneratorer som är lämpliga för lösenordsgenerering. Vanliga tärningar kan också användas för att skapa ett slumpmässigt lösenord . Program utformade för att generera slumpmässiga lösenord tenderar ofta att garantera att resultatet kommer att uppfylla den lokala lösenordspolicyn; till exempel skapa alltid ett lösenord från en blandning av bokstäver, siffror och specialtecken. Komplexiteten hos ett slumpmässigt lösenord, mätt i termer av informationsentropi, kommer att vara lika med
där N är antalet möjliga tecken och L är antalet tecken i lösenordet. H mäts i bitar.
Karaktärsuppsättning | Antal tecken, N | Entropi per symbol, H , bitar |
---|---|---|
Arabiska siffror (0-9) | tio | 3,3219 |
Hexadecimala siffror (0-9, AF) | 16 | 4 0000 |
Små latinska bokstäver (az) | 26 | 4,7004 |
Arabiska siffror och gemener latinska bokstäver (az, 0-9) | 36 | 5,1699 |
Små och stora bokstäver i det latinska alfabetet (az, AZ) | 52 | 5,7004 |
Arabiska siffror, gemener och versaler i det latinska alfabetet (az, AZ, 0-9) | 62 | 5,9542 |
Alla utskrivbara ASCII-tecken | 95 | 6,5699 |
Människor tenderar att skapa lösenord med otillräcklig entropi. Vissa magiker använder denna mänskliga egenskap för att roa och roa publiken genom att gissa de förment slumpmässiga siffror som publiken har gissat.
Till exempel visade en analys av tre miljoner mänskligt skapade lösenord med åtta tecken att bokstaven "e" användes i lösenord 1,5 miljoner gånger, medan bokstaven "f" endast användes 250 000 gånger . Med en enhetlig fördelning skulle varje tecken förekomma 900 000 gånger . Den vanligaste siffran är "1", medan de mest populära bokstäverna är "a", "e", "o" och "r" [2] .
National Institute of Standards and Technology ( NIST) föreslår att du använder följande algoritm för att uppskatta entropin för ett lösenord som skapats av en person och inte inkluderar tecken från icke-engelska alfabet:
Enligt denna algoritm kommer entropin för ett mänskligt skapat lösenord som består av 8 tecken, som inte innehåller stora bokstäver och inte innehåller icke-alfabetiska tecken, att vara cirka 4 + 7 * 2 = 18 bitar . Algoritmen bygger på antagandet att människor väljer lösenord med samma entropi som vanlig engelsk text.
Av praktiska skäl bör lösenord vara både rimlig komplexitet och funktionella för slutanvändaren, men tillräckligt komplexa för att skydda mot avsiktlig attack. Komplexa lösenord kan lätt glömmas bort och är mer benägna att skrivas ner på papper, vilket innebär en viss risk. Å andra sidan, om användarna måste memorera lösenord, kommer de att komma med enklare lösenord, vilket allvarligt kommer att öka risken för hackning.
Vissa tillförlitlighetskriterier hittades vid sökning efter nyckeln som användes för att kryptera data med brute force- metoden . Detta problem är inte detsamma, eftersom dessa metoder involverar ett astronomiskt antal försök, men resultaten kan hjälpa dig att bestämma ett lösenordsval. 1999 bröt medlemmar av Electronic Frontier Foundation 56-bitars DES -chifferet på mindre än en dag med hjälp av specialdesignad hårdvara [3] . År 2002 slutförde medlemmar i distributed.net -communityt att knäcka en 64-bitars nyckel på 4 år, 9 månader och 23 dagar [4] . Och den 12 oktober 2011 uppskattade distributed.net-communityt att det skulle ta 124,8 år att knäcka en 72-bitars nyckel med de dåvarande funktionerna [5] . På grund av den enorma komplexitet och begränsningar som är förknippade med vår förståelse av fysikens lagar, kan ingen digital dator (eller kombination av dem) förväntas kunna bryta ett 256-bitars chiffer med hjälp av brute-force [6] . På ett eller annat sätt finns det i teorin en möjlighet ( Shors algoritm ) att kvantdatorer kommer att kunna lösa sådana problem, men om detta kommer att vara möjligt i praktiken är okänt.
Som ett resultat kan man inte ge ett exakt svar på ett något annat problem, problemet med optimal lösenordskomplexitet. National Institute of Standards and Technology ( NIST) rekommenderar att du använder ett lösenord med 80-bitars entropi för bästa säkerhet, vilket kan uppnås med ett 95-teckens alfabet (det vill säga en teckenuppsättning från ASCII ) 12-tecken lösenord (12 * 6 ,5 bitar = 78).
Rekommendationer för att välja ett bra lösenord är utformade för att göra lösenordet mer motståndskraftigt mot olika knep knep [7] [8] .
Vissa rekommendationer rekommenderar att inte skriva ner lösenordet någonstans, medan andra, som noterar att det finns ett stort antal lösenordsskyddade system som användaren måste ha tillgång till, gynnar tanken på att skriva ner lösenord, om, naturligtvis, listan med lösenord kommer att finnas på en säker plats.
Vissa liknande lösenord är svagare än andra. Till exempel skillnaden mellan ett lösenord som består av ett ordboksord och ett lösenord som består av ett förvirrat ord (det vill säga ett ord där bokstäverna är ersatta av till exempel siffror av liknande stil, till exempel: "o" till "0", "h" till " 4") kan kosta en lösenordsknäckare några extra sekunder - det lägger till lite komplexitet till lösenordet. Exemplen nedan visar en mängd olika sätt att skapa svaga lösenord. Metoderna använder enkla mönster, vilket förklarar den låga entropin hos de resulterande lösenorden - lättheten att gissa dem.
Det finns många andra möjligheter för ett lösenord att vara svagt, att döma av komplexiteten hos vissa attackmönster; huvudprincipen är att lösenordet ska ha hög entropi och inte bestämmas av något smart mönster eller personlig information. Onlinetjänster tillhandahåller ofta ett lösenordsåterställningsalternativ som en hackare kan använda för att ta reda på lösenordet. Att välja ett svårt att gissa svar på en fråga hjälper till att skydda ditt lösenord.
En lösenordspolicy är en uppsättning regler utformade för att:
Vissa policyer kräver att:
Att ställa in det tidsintervall under vilket ett lösenord kan användas tjänar till att säkerställa att:
Det svåraste lösenordet att knäcka är ett som består av slumpmässiga tecken, även om längden på lösenordet och uppsättningen av giltiga tecken är kända. Ett slumpmässigt lösenord på grund av hög entropi är inte bara svårt att komma ihåg, utan det tar också lång tid att välja med brute force. Kravet på att komponera komplexa lösenord kan uppmuntra glömska användare att skriva ner lösenord på papper, mobiltelefoner, handdatorer och dela dem med andra användare. Bruce Schneier rekommenderar att du skriver ner dina lösenord.
Människor kan inte längre komma ihåg lösenord som är tillräckligt bra för att på ett tillförlitligt sätt försvara sig mot ordboksattacker, och det blir mycket säkrare om de väljer ett lösenord som är för svårt att komma ihåg och skriva ner det. Det är ganska lätt för oss alla att hålla en liten bit papper säker. Jag rekommenderar att folk skriver ner sina lösenord på ett litet papper och förvarar det tillsammans med andra värdefulla papper i en plånbok.
Originaltext (engelska)[ visaDölj] Människor kan helt enkelt inte längre komma ihåg lösenord som är tillräckligt bra för att på ett tillförlitligt sätt försvara sig mot ordboksattacker, och de är mycket säkrare om de väljer ett lösenord som är för komplicerat att komma ihåg och sedan skriver ner det. Vi är alla bra på att säkra små papperslappar. Jag rekommenderar att folk skriver ner sina lösenord på ett litet papper och förvarar det tillsammans med sina andra värdefulla små papperslappar: i sin plånbok. — Bruce Schneier 2005Lösenordspolicyer erbjuder ibland tekniker för att hjälpa människor att komma ihåg lösenord:
Människor rekommenderas vanligtvis att aldrig skriva ner sina lösenord någonstans och att aldrig använda samma lösenord för olika konton. Trots detta kan vanliga användare ha dussintals konton och kan använda samma lösenord för alla konton. För att inte komma ihåg många lösenord kan du använda speciell programvara - en lösenordshanterare, som låter dig lagra lösenord i krypterad form. Du kan också kryptera lösenordet manuellt och skriva ner krypteringen på papper, samtidigt som du kommer ihåg dekrypteringsmetoden och nyckeln. Du kan även ändra lösenord något för vanliga konton och välja komplexa och annorlunda lösenord för högvärdiga konton, som till exempel internetbank .
En lösenordshanterare är ett datorprogram som låter användaren använda flera lösenord och kan kräva att ett enda lösenord anges för att komma åt lagrade lösenord. Lösenordet till lösenordshanteraren ska naturligtvis vara så komplext som möjligt och ska inte skrivas ner någonstans.