Hur skapar man ett säkert lösenord?
Lösenord, lösenord och lösenord. Trots att det nu finns flera alternativ för autentisering är lösenord något vi än så länge inte kommer undan. Men hur är det egentligen med lösenordsrekommendationer – vilka rekommendationer finns, och kan vi lita på dem? Hur ska ett bra lösenord se ut? I denna bloggpost analyserar jag de vanligaste lösenordsrekommendationerna och diskuterar varför långa lösenord inte alltid är bättre.
Så hur ser lösenordsrekommendationer oftast ut? Går vi tillbaka i tiden har rekommendationen varit att ett lösenord bör vara minst 8 tecken långt (helst ännu längre), innehålla minst en siffra och ett specialtecken1. Lösenordet bör heller inte vara baserat på lättilgänlig information om dig så som ditt husdjurs namn, eller saker som är förknippade med varandra (exempelvis ”Sommar2020”). Dessa rekommendationer har lett till att lösenord har blivit allt mer komplicerade, liknande ”3,Q`g*T3W+” eller ”\2Mbw$>K}y”.
Eftersom lösenordenslängden helst ska vara längre än 8 tecken blir lösenord som de beskrivna ovan svåra att komma ihåg. Detta leder till att användare tenderar att skriva ner lösenorden, ofta på olämpliga ställen.
Nya lösenordsrekommendationer
Numera rekommenderas främst långa lösenord2 – och längd spelar stor roll när det kommer till säkerheten. En populär metod att göra detta på är att sätta ihop ord som bildar en mening, även kallat lösenordsfras, som exempelvis ”tomtenärledigpåpåsken”. Därefter kan man byta ut en del tecken, som ett ”o” mot en nolla och ”e” mot en trea. Ett säkert lösenord kan då, enligt den här rekommendationen (som är den vanligast förekommande i dagsläget) kanske se ut som följande: ”t0mtenärl3dgpåpåsk3n”. Lättare att komma ihåg och betydligt säkrare än de tidigare exemplen. Eller?
Lösenordskomplexitet
För att svara frågan måste vi först definiera användningen av begreppet komplexitet. Komplexitet är ett begrepp som vi i detta fall kommer använda för att beskriva hur stor variation av olika tecken ett lösenord kan innehålla.
Låt säga att vi vill skapa ett 16 tecken långt lösenord bestående av bara gemener. För att beräkna komplexiteten på det här lösenordet måste vi veta hur många olika tecken det finns på varje plats. I det svenska alfabetet, och i vårt exempel, är det 28 bokstäver. Det betyder att antalet kombinationer, och ett mått på komplexiteten, blir 28^16 (tolkas som 28 upphöjt till 16). Varför? För att om lösenordet är slumpmässigt utvalt finns det alltså möjlighet för 28 olika bokstäver på varje plats i lösenordet. Sannolikheten för att första bokstaven ska vara ”a” är alltså 1/28. Lika så är sannolikheten den samma för att nästa bokstav ska vara ”a”.
Men ett lösenord med bara gemener är inte särskilt säkert och vi vill därför lägga till versaler. Det betyder att vi nu har 56 olika tecken och en komplexitet på 56^16. Vill vi även lägga till siffror har vi ytterligare 10 tecken på varje plats i lösenordet. Det betyder att vi har totalt 66^16 olika sorters lösenord. Vi kan också om vi vill lägga till specialtecken, och således öka vår symbolmängd till 98, och vår komplexitet ökar då till 98^16. Det betyder att om vi gissar en miljon lösenord i sekunden tar det oss 2.3 triljoner år att gå igenom alla lösenord.
Svåra att komma ihåg - därför baserar vi våra lösenord på ord
Låt säga att vi istället väljer att skapa ett lösenord av ord och inte slumpmässiga bokstäver. Vi väljer ”tomtenärledigpåpåsken”, vilket är 21 tecken långt. Eftersom vi bara har gemener har vi en komplexitet på 28^21, vilket är mycket mindre än det vi hade ovan trots att vi har ett längre lösenord på 21 karaktärer. Men - nu räknar vi lite fel här! Som tidigare nämnt är komplexitet ett mått på hur många olika kombinationer av olika symboler vi har i lösenordet. Det vill säga, vi tittar enbart på hur många olika symboler vi kan stoppa in i en längd på 21. Det många inte tänker på är att ord är ordnade. Det finns alltså ingen slumpmässighet på varje enskild bokstav i ett ord. Ordet ”jul” kommer exempelvis inte att helt plötsligt stavas ”jlu”, eller ”juhl”. Det betyder att vi inte har en längd på 21 på lösenordet ovan. Istället har vi en längd på 5.
Vad är då komplexiteten när vi väljer ord? Förutsatt att vi accepterar att ord är ordnade kan vi vända oss till SAOL. Enligt SAOL finns det ungefär 126 000 ord i det svenska språket. Antar vi att SAOL:s definition är korrekt är vår lösenordsfras komplexitet 126000^5. Jämför vi det med lösenordsmängden från komplexa lösenord (98^16) har lösenord som är komplexa ungefär 7.2*10^31 fler kombinationer. Det hjälper inte heller att vi i varje ord ersätter en bokstav med exempelvis en siffra, vilket dubblerar ordmängden (då ordet t0mte och tomte tolkas som två separata ord). Trots detta är det fortfarande inte tillräckligt många kombinationer för att slå ett slumpmässigt och komplext lösenord. Vi skulle behöva komma upp i 19 olika stavningar per ord för att slå vårt slumpmässiga lösenord på 16 tecken3.
Varför rekommenderas det då att använda ord istället? Jo, allt handlar om hur jämförelsen går till. Sänker vi vår lösenordslängd till 8 karaktärer (dvs 98^8) och jämför det med vår lösenordsfras byggd på ord (tomtenärledigpåpåsken), kommer vår lösenordsfras slå vårt korta och komplexa lösenord i komplexitet. Variansen på antal kombinationer blir så otroligt stor att det inte spelar någon roll om vi har ord från en ordbok. Om vi däremot kortar ner vår lösenordsfras till tre ord (ex. ”tomtenärledig”), blir vårt komplexa lösenord starkare.
Slutligen vill jag nämna anledningen till att rekommendationerna för att använda ord och bilda lösenordsfraser existerar, och varför man vill byta ”korta och komplexa lösenord” mot långa och icke komplexa lösenord. Detta är på grund av att ord oftast är lätta att komma ihåg och skapar snabbt ett långt lösenord. Vissa kan tycka – och jag håller med till en viss del – att frasen” tomtenjobbarpåjulaftonmenärledigpåpåsken” kan vara lättare att memorera, men den är också väldigt långt och på gränsen till opraktiskt att använda. Ska vi sedan, som rekommendationen lyder, byta ut några tecken i vår fras till symboler och siffror börjar det bli svårt att komma ihåg. Då kan vi lika gärna använda komplexa lösenord igen.
Vad rekommenderas då?
Oavsett vilka riktlinjer ni använder, se till att använda en lösenordshanterare. Lösenordshanterare är program som kommer ihåg dina lösenord åt dig. Det betyder att det räcker med att du skapar ett säkert lösenord, och programmet sköter resten. Det finns många lösenordshanterare och beroende på din organisations krav möter de olika behov. Exempel på lösenordshanterare är bitwarden och 1password.
1https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/password-must-meet-complexity-requirements
2https://pages.nist.gov/800-63-3/sp800-63b
398^16-(126000*19)^5 < 0