Password tanker
Lange passwords er sikrere end korte, men bliver de for lange så skriver folk dem ned, så find en gylden middelvej.
Dårligt råd
Giv passwords så kort udløbstid som brugerne vil være med til. Jo oftere de skiftes jo bedre. Det er reelt det eneste forsvar der er mod password læk.
Dårligt råd
Hvis passwordet ikke indholder både store og små bogstaver, og specialtegn, så er det for nemt at gætte.
Dårligt råd
Jeg så på password sikkerhed i mere end ti år, og jeg stirrede mig blind på den slags råd.
Hvor lange skal de være, de passwords? Kan vi basere tallet på undersøgelser istedet for at lægge os op ad hvad andre har valgt? Og så videre, og så videre.
Det er nemt at blive fanget af logikken omkring de råd. Det der er galt, er ikke at de er forkerte. Det er de egentlig ikke. De er bare ikke vigtige længere. Deres relevans er rustet bort.
Her er problemet: Vi mennesker har en begrænset båndbredde når vi beviser vores identitet.
Da vi gerne vil have at vores authentikering er både hurtig og gentagelig, betyder det at det er begrænset hvor mange data vi kan generere. Man kan sige at billedmængden er forholdsvis lille, hvis man ser authentikering som en funktion fra bruger til authentikeringsdata. Den er lille nok til at en computer ret nemt kan bryde et menneskeligt password ved hjælp af brute-force plus nogle optimeringer.
"Bryde et password" kan være rent volapyk for nogle læsere. Hvad betyder det egentlig?
Normalt gemmer systemer ikke dit password som det er. Det behøver de ikke for at tjekke det senerehen. Det de gør istedet, er enten at 1: kryptere passwordet inden de gemmer det, eller at 2: udregne dets hash værdi, og så gemme den. På den måde vil kriminelle, der hacker systemet, ikke være i stand til at læse dit password direkte i dets memory. Men det til trods, kan det alligevel godt være muligt at regne passwordet ud, ud fra de data der er gemt, og det er at bryde passwordet.
Hashing er den sikreste af de to muligheder, så lad os fokusere på den. Hvordan virker det?
Når du indtaster dit password, bliver det tjekket ved først at hashe det og så sammenligne det med dets gemte hash værdi. Hvis de to værdier ikke er ens, så blev der indtastet et forkert password. Til denne slags hashing bruges en kryptografisk stærk hash funktion. Det er bare et smart navn for en envejsfunktion.
Problemet er at billedmængden er lille nok til at det er muligt, med den regnekraft som er indenfor de flestes rækkevidde, at teste alle de mulige passwords, og på denne måde "invertere" envejsfunktionen.
Der er et fint trick til at undgå denne slags invertering. Brug en beregningsmæssigt tung hash funktion. En simpel hash funktion, som en moderne SHA, er lynhurtig at regne ud. Men hvis din hash funktion er denne SHA itereret 100.000 gange, så koster den noget mærkbar regnekraft, og den er svær at brute-force.
Desværre rammer dette lige så vel én selv, så man bruger kun dette trick i setups hvor det er brugerens egen enhed der udregner hashes. Så vidt jeg ved kun til password beskyttede dokumenter.
Der er andre tricks, og de er mindre overbevisende. Du kan trække det ene sløje trick efter det andet op af hatten, men kampen er tabt på forhånd. Opgavens størrelse plus den tilgængelige regnekraft er lig med en defacto invers funktion for password hashes.
Det grundlæggende problem er den føromtalte lille mængde af data vi kan generere. Da jeg nåede til den erkendelse, indså jeg hvad der burde have været indlysende hele tiden.
Passwords er shared secrets.
Kryptering og hashing ændrer ikke grundlæggende på dette.
Den bedste sikkerhed fåes ved at dele passwordene med så få som muligt. Selvfølgelig, som alle ved, med så få personer som muligt. Men desuden, hvad især en sikkerheds arkitekt bør forstå, med så få maskiner som muligt.
Ideelt set skal den eneste maskine der ser dit password være den du indtaster det på.
Minimér password spredning.
Brug denne regel som rettesnor når du designer eller køber løsninger. Så undgår du en lang række angrebsvektorer.
Bemærk iøvrigt at løsninger designet på denne måde automatisk løser mange af de problemer som de klassiske password råd handler om. Hvis du alligevel sætter politikker ud fra de klassiske password råd, kan det faktisk være negativt for sikkerheden. Fordi du får ulemperne uden at få fordelene.