Door MathFox: Een andere manier op sterke wachtwoordzinnen (passphrases) te genereren is
https://en.wikipedia.org/wiki/Diceware. Maak bij voorkeur gebruik van echte dobbelstenen! Met 6 sterke woorden (neem, elke, week, witte, banaan, Edah) heb je volgens het Diceware systeem voldoende entropie.
Wat ik doe is een wachtzin van niet bestaande woorden gebruiken. Zoiets als (deze zuig ik voor deze gelegenheid uit mijn duim):
klidometoza veromaplidi kroepezonam dekzista
Zo'n wachtwoord leer ik niet in een keer uit mijn hoofd, ik schrijf het op een spiekbriefje dat ik heel zorgvuldig op een plek bewaar waar niemand eraan komt en dat ik vernietig als ik het niet meer nodig heb. Dit zal van persoon tot persoon verschillen, natuurlijk, maar onzin die ik uit kan spreken onthoud ik aanzienlijk makkelijker dan iets dat vol speciale tekens staat.
Dat zou ondoenlijk zijn als overal waar ik een wachtwoord nodig heb zoiets moet verzinnen, dan zou ik al snel vergeten welk wachtwoord ik waarvoor nodig had en weinig gebruikte wachtwoorden zou ik niet onthouden. Daarom gebruik ik een wachtwoordmanager (KeepassX in mijn geval) en heb ik zo'n wachtwoord om dat te ontsluiten, en nog een om aan te loggen op mijn eigen systeem. Ik gebruik bewust niet de in de webbrowser ingebouwde wachtwoordmanager. Dat draait in hetzelfde proces als JavaScript, Flash en andere uitvoerbare code die uit bronnen komt waarop je niet kan vertrouwen. Dat
kan goed afgeschermd zijn in je webbrowser maar ik heb meer vertrouwen in een wachtwoordmanager die in een eigen proces draait. En ik kies nadrukkelijk voor een wachtwoordmanager die ik op mijn eigen systeem installeer, ik ben ook niet kapot van wachtwoorden die in de cloud bewaard worden.
Voor de vraagsteller nog wat achtergrond. De term
entropie is al verschillende keren gevallen. Dat is een maat uit de informatieleer die aangeeft wat de
informatiedichtheid van data is. Dat is bij wachtwoorden een nuttige maat omdat hij iets zegt over hoeveel werk een aanvaller met een brute-force-methode, dus door domweg uit te gaan proberen tot het lukt, gemiddeld moet verrichten tot hij slaagt. Hoe meer entropie, hoe sterker het wachtwoord.
Als een wachtwoordmanager als Keepass of KeepassX wachtwoorden samenstelt door elk teken willekeurig uit 97 tekens te kiezen (kleine- en hoofdletters, cijfers, leestekens) dan is de entropie 6,6 bits per teken. Bij de diceware-methode zoals in de link van MathFox beschreven is de entropie 12,9 bits per
woord. Maar zo'n berekening gaat er wel van uit dat de aanvaller de beschreven woordenlijst gebruikt, of een even lange woordenlijst die de woorden in het te kraken wachtwoord bevat. Als je een woord in je wachtwoord opneemt dat
niet in de woordenlijst van de aanvaller zit dan is de entropie effectief oneindig en wordt het wachtwoord niet gekraakt. Maar als de aanvaller de letters a-z en de spatie willekeurig combineert (en je wachtzin bestaat uit kleine letters en spaties) dan heb je voor die aanvalsmethode met 4,75 bits per teken te maken.
De juiste entropieberekening is dus afhankelijk van hoe de aanvaller eigenlijk te werk gaat bij het kraken van een wachtwoord, en voor een en hetzelfde wachtwoord kunnen verschillende aanvalsmethoden verschillende uitkomsten opleveren. En je weet natuurlijk nooit wat een aanvaller precies doet.
Het type wachtzinnen dat ik gebruik staat in geen enkele woordenlijst, dus met op woordenlijsten gebaseerde aanvallen worden ze niet gekraakt. Op basis van de gebruikte tekens zou ik op de genoemde 4,75 bits entropie per teken uitkomen. Ik heb me ooit afgevraagd wat een aanval op basis van lettergrepen op zou leveren, als een van de mogelijke benaderingen die een aanvaller die zich op de uitspreekbare onzin die ik gebruik richt. Het is lastig om daar berekeningen op los te laten, maar ik heb wel eens een poging gedaan en kwam, teruggerekend naar de entropie die dat gemiddeld per teken oplevert, uit op gemiddeld 3,1 bit per teken.
(Voor wie het interesseert: ik heb me gebaseerd op een Nederlandse woordenlijst zoals spellingscontrole op Linux die gebruikt; het algoritme voor woordafbreking van LaTeX gebruikt om daar lettergrepen uit te destilleren; en aannames gedaan over het gemiddelde aantal lettergrepen per woord waarvan ik echt niet weet of die terecht zijn).