Skip to main content

Att välja rätt lösenordslängder för kryptering – entropi

Blogginlägg   •  Nov 12, 2012 14:00 CET

För kompaktering betyder hög entropi på originaldatat att det kompakterade resultatet behöver nästan lika många bytes som originalet och låg entropi betyder att det kompakterade resultatet blir mycket litet relativt originalet. Inom krypteringsområdet är hög entropi på krypteringsnyckeln den viktigaste parametern för att få ett bra kryptografiskt skydd som inte kan knäckas. Kravet på hög entropi gäller både för programmatiskt framtagna slumptal som i sekvens utgör en krypteringsnyckel liksom för valet av lösenord som i sin tur används som krypteringsnycklar. Vanliga krypteringsorienterade programkomponenter granskas kontinuerligt av matematiker för att säkerställa att de slumptal som genereras alla är framtagna på ett så slumpmässigt och oförutsägbart sätt som möjligt, dvs har hög entropi.

Om en användare väljer ett lösenord med låg entropi är kryptering baserat på det lösenordet lätt att knäcka, oavsett om man använder en bra algoritm som kräver en lång nyckellängd eller inte. Det beror på bristen på slumpmässighet och att vissa bitsekvenser är vanligare än andra.

En byte innehåller 8 bitar. Vanlig text och vanliga lösenord begränsas till normalt det svenska språket och använder därför inte alla 8 bitarna, vilket ger en lägre entropi.

Exempel 1
Ett program som skall utföra en AES 256-kryptering genererar en krypteringsnyckel om 256 bitar, 32 bytes. Programmets slumptalsgenerator är mycket god om man använder välrenomnerade verktyg och entropin blir i de fallen i princip 256 bitar.

Exempel 2
Om ett lösenord med svenska tecken måste innehålla minst en versal, minst en gemen och minst en siffra och inga andra tecken så kommer en byte representera 29 + 29 + 10 = 68 unika tecken. Att representera 1 av 68 olika tecken kräver dock inte en full byte (8 bitar) för att kodas, utan endast 6,0625 bitar.

Ett lösenord har med 10 tecken enligt den valda lösenordspolicyn ovan, om alla tecken är slumpmässigt valda, en entropi om 60,6 bitar. Det är den högsta entropin ett 10 tecken långt lösenord kan ha som som följer lösenordspolicyn i Exempel 2. Normalt är lösenord baserade på det mänskliga språket, där vissa bokstäver är mer vanligt förekommande än andra och entropin blir därför betydligt lägre i praktiken. En entropi på endast 30 bitar är inte ovanligt.

Vad betyder det här för kryptering?

För att få en fullgod kryptering av något data måste lösenordets entropi vara minst lika hög som den valda krypteringsalgoritmens nyckellängd. Allt annat försvagar krypteringens skydd. Man kan alltså inte ta ett svagt lösenord och få en stark kryptering. Det bryter mot “fysikens lagar”.

Krypteringsnyckeln som slutligen används i en kryptering baserad på lösenord är härledd, dvs beräknad, från det lösenord man har angivit. Sättet man beräknar nyckeln på kan bidra till en mindre ökning av entropin genom tillförsel av känt slumpdata och tidskrävande beräkningar. Det kallas key stretching och key strengthening och kan öka entropin lite grand, typiskt inte med mer än ca 13 bitar pga både hur dessa algoritmer är utförda och återigen fysikens lagar.

Exempel 3
Om man vill säkerställa att man har en oknäckbar kryptering på 128 bitar så måste krypteringsnyckeln vara 128 bitar (bestämt av algoritmen) och ha 128 bitar entropi för att inte försvaga krypteringen. Med lösenordspolicyn i exempel 2 representeras varje tecken av 6,0625 bitar. En matchande lösenordslängd för 128-bitars kryptering enligt lösenordspolicyn och antagandet maximal key strengthening blir därför
(128 – 13) / 6,0625 = 19 tecken, om alla tecken är slumpmässigt valda.

Exempel 4
Med NISTS rekommenderade längd om minst 112 bitar säkerhet för allt som krypteras från 2013 och framåt, i övrigt som i Exempel 3, måste lösenordslängden vara minst 16,3 tecken. Det är alltså om alla tecken är slumpmässigt valda.

Exempel 5
Lösenordspolicyn i Exempel 2 kombineras ofta i organisationer med ett krav på att lösenordet är minst 9 tecken. 9 tecken ger som bäst en styrka på 9 * 6,0625 + 13 =67,6 bitar, vilket är en längd som är otillräcklig om lösenordet används för att kryptera något data som skall hemlighållas ens en kortare tid.

Vad kan man dra för slutsatser?

Skall man kryptera data skall man välja mycket komplexa och långa lösenord men allra helst inte använda lösenord alls. T.ex. kan fullvärdiga krypteringsnycklar lagras på USB-minnen eller på smarta kort för att ta bort problemet med att komma ihåg dem. Smarta kort har fördelen att de i sig skyddar alla krypteringsnycklar med en PIN som har begränsat antal försök och är relativt säkra mot tampering. När man har ett begränsat antal försök på sig kan en PIN eller ett lösenord göras mycket kort och fortfarande vara säkert. Även när man använder ett portabelt minne eller ett smart kort är det fortfarande viktigt att välja rätt algoritmer och nyckellängder för att uppnå en stark kryptering.

När gäller det här mig?

Detta problem gäller för diskkryptering såsom BitLocker, lösenordsbaserad filkryptering, lösenordsskydd på zip-filer, lösenord för lösenordsprogram som t.ex. Lastpass, Keepass eler B-folders. En vanlig fälla är att nyttja kryptoprodukter som har svagheter i lösenordsåterställningen och därför inte alls är så säkra som de ger intryck av. Det finns några välrenomnerade namn som har sådana svagheter.

Man bör också vara extra uppmärksam på att om man använder lösenordssynkronisering, Single Sing-On (SSO) eller liknande tekniker, kan lösenordet vara fullgott  i ett användningsfall men otillräckligt i ett annat. Ett typiskt exempel är synkronisering av lösenord för diskkryptering och Windowsinloggning där diskkypteringen har högre krav på styrka än Windowsinloggningen.

Du behöver inte vara orolig om ditt lösenord används för att låsa upp ett SIM-kort, ett smart kort, logga in på en server eller använder diskkryptering tillsammans med en TPM eller smart kort då en attack på ditt lösenord begränsas i hårdvara av antalet försök man har på sig och det blir därför omöjligt att göra uttömmande gissningar. En begränsning i mjukvara är däremot verkningslös då den som attackerar din kryptering kan kringgå begränsningen.

Är du osäker på om lösenordshanteringen i din verksamhet tillsammans med dina policies ger er den säkerhetsnivå ni eftersträvar så rekommenderar vi att man kontaktar en säkerhetsspecialist för en studie av era behov och er miljö.

// Jesper Andersson
Informationssäkerhetsskonsult SAFESIDE SOUTIONS AB

 

 


Kommentarer (0)

Lägg till kommentar

Kommentera