Skrivet av Söderbäck:
Det är en bra artikel, men exemplen som tas upp är ju inte direkt slumpvis valda ord i följd utan det är 2-3 ord i följd med lite utbytta tecken vilket motsvarar väldigt korta slumpade lösenord eller "ilovemyfriends" vilket nästan kan jämföras med 1234567890.
Alla de alternativen är ju dåliga och mindre relevanta i sammanhanget.
Ska man jämföra ordkombinationer med framslumpade strängar så behöver ju båda faktiskt vara framslumpade. Annars blir det som att klanka ned på framslumpade strängar och visa hur dåligt lösenordet qwerty är.
Med fåtalet tusen svenska ord, grundläggande engelska samt mutationer (utbytta tecken, stora små bokstäver, felstavningar osv.) av diverse slag på dessa så är det inga konstigheter att uppnå ca 10.000 ord. Kombinera dessa så att totalt 6 ord används är det inte så himla lätt att gissa längre för även om alla ord ligger i lösenordslistan så rör det sig om 10.000^6 möjliga framslumpade kombinationer vilket är 10^24 olika alternativ.
Det är ungefär lika säkert som 12-13 framslumpade tecken.
Och den här delen går faktiskt inte artikeln ovan in på.
Jag vill inte säga att ordkombinationer är perfekta för så är inte fallet. Exempelvis är det lättare att hitta en bra slumpgenerator för tecken än för motsvarande för ord med rätt ordlista.
Men jag ser fortfarande bra potentail i lösningen.
Jag gillar inte heller Schneiers tips och använder det inte själv, avsikten med länken rörde Xkcds tips. Tipset (från Schneier) fungerar (precis som det från Xkcd), men överlåter åt användaren att hitta unika meningar, vilket kan slå fel. Troligtvis är det säkrare än att låta människan agera slumpgenerator direkt, men den grundläggande problematiken är den samma. Skillnaden är bara att när människan är slumpgenerator kan även personer som inte känner personen i fråga ge sig på en attack effektivare än brute force.
Skrivet av Söderbäck:
Yes. Men för egen del är det mycket lättare att komma ihåg en märklig ordföljd än en märklig teckenföljd. Och det verkar vara ganska vanligt. 20 tecken är bra, men det är en utopi att ens mer en några enstaka procent av teknikanvändarna kommer vara så präktiga att de lär sig 20 tecken långa slumpgenererade teckenföljder :).
Är det säkert så? Har du försökt? Jag tänkte själv att det var jobbigt att komma ihåg 20-24-teckens slumpsträngar utantill och var väldigt osäker på när jag skulle makulera lappen med lösenordet. Men jag upptäckte snart att mönstret snabbt fastnar i muskelminnet, och det räcker, utan att kunna läsas upp i huvudet. Problem skulle uppstå om jag byter tangentbordslayout, men det är ju inte något man gör ofta (genomsnitt ~0 ggr/liv skulle jag säga).
Och att komma ihåg 30+ tecken med något som är fonetiskt uttalbar är ännu lättare. Men entropin sjunker förstås, därav ökningen av stränglängden.
Men, säkerhet handlar mer om protokoll än om algoritmer. De algoritmerna som finns idag är mycket säkra. Implementationen är inte alltid så säker. Men ett protokoll som skulle fungera är att helt enkelt förvägra användare att "hitta på" egna lösenord. Det handlar bara om infrastruktur. Exempelvis skulle man kunna ha en webläsare eller annat program som körs lokalt på datorn i kombination med ett nytt slags fält (i HTML eller whatever) som inte kan fyllas i manuellt, utan bara från detta plugin eller program. En site talar om för programmet att användaren behöver ett lösenord, varpå programmet skapar ett sådant. Det skulle alltså vara någon form av API som standardiserades över plattformarna. Som Schneier säger, det är inte principen med lösenord som är brutet, det är vårt sätt att välja dem.
Ett dylikt API kan kanske också byggas ut för tvåfaktorautentisering utan att webbutvecklarna behöver bekymra sig. Ett annat, enklare alternativ är förstås att siter som vill vara säkra (precis som idag) skapar slumpmässiga lösenord, bara det att användaren inte tillåts ändra dessa (att periodvis byta lösenord är en annan dålig idé. Det låter bra, men i praktiken forcerar man fram slappa lösenord och användarfrustration). Problemet här är väl att lösenordet har genererats på en site som man kanske inte litar på, samt transporterats till sin mail...
Edit: Jag tror man ska förstå både Xkcds och framförallt Schneiers tips i kontexten "välja manuellt". Schneier har en lite vurm för low-tech-möjligheter att skapa säkerhet och tar gärna upp algoritmer när sådana dyker upp, som kan utföras med papper och penna men ändå erbjuda säkerhet mot datorbaserad forcering. Om man kan kryptera ett brev med papper och penna (eller en kortlek) så måste man också komplettera med ett sätt att generera nycklar med papper och penna (eller kortlek, eller tärning eller annat lowtech). Det finns några sådana "patienskrypton", men de går väl inte direkt upp mot AES...
Och "välja manuellt" implicerar också "lätt att minnas", men det tror jag som sagt inte på själv. Har trots min förvåning upptäckt hur lätt det är att minnas en 25 tecken lång slumpsträng på ett sådant sätt att jag kan klanka ner den på ett tangentbord, även om jag inte kan läsa upp den för dig. Den sitter nämligen i samma typ av minne där jag lagrar saker som "hur man knyter skorna" och min portkod eller hur man balanserar, jonglerar eller liknande. Dvs i muskelminnet där en stor del lagras i den annars dumma lillhjärnan (cerebellum). Och det rekommenderar jag till alla: lösenord ska lagras i cerebellum. Du kommer inte på fyllan att råka uppge ditt lösenord, det sitter säkrare än ett mer "kognitivt minne" (har du någonsin glömt hur man cyklar eller knyter skorna?) och kapaciteten att minnas långa, helt meningslösa, sekvenser är stor.
Så mitt tips kvarstår: Kryptografiskt säkert generad slumpsträng -> cerebellum. Tar 4-5 försök att lära sig, sedan sitter det.