Wachtwoordgeneratie Tim Baanen - 4134524 17 juni 2015 Wachtwoorden zijn alomtegenwoordig in de omgang met computers. Het aanmaken van een veilig wachtwoord is dus van essentieel belang. We bespreken hier een aantal populaire en interessante wachtwoordsystemen, die beweren dat ze een veilig wachtwoord genereren voor algemeen gebruik. Deze systemen kunnen bestaan uit een volledig programma waar de gebruiker met een druk op de knop een nieuw wachtwoord uit ontvangt, tot een algoritme dat met de hand uitgevoerd met worden, tot een aantal suggesties over de vorm van het wachtwoord. In dit verslag worden deze systemen op het gebied van veiligheid en gebruiksvriendelijkheid beoordeeld, en een aanbeveling gedaan voor het systeem dat het beste presteert op deze gebieden.
1
Veiligheid
Ten eerste is het nodig om te bepalen wat precies als “veilig” bestempeld mag worden. We bekijken een aantal verschillende soorten aanvallen, en kijken vervolgens of deze aanvallen afgeweerd worden door de strategie¨en.
1.1
Afluisteren
Een belangrijke soort aanvallen is het afluisteren van het wachtwoorden als het gegenereerd wordt of doorgestuurd. Hiertegen maakt het aantal combinaties van het wachtwoord niet uit, maar de manier waarop het wachtwoord aangemaakt, bewaard en doorgestuurd wel. Een dienst die een wachtwoord op een server genereert en vervolgens over een onversleutelde HTTP-verbinding verstuurt is op dit gebied aanzienlijk onveiliger dan een methode die zonder enige elektronica met de hand uitgevoerd kan worden in een afgesloten hokje zonder lichtbron. In de praktijk zal een dergelijke extreme bescherming overbodig zijn, maar dit is toch een nuttig aspect om te bekijken.
1.2
Raden
Als de aanvaller het wachtwoord niet heeft kunnen afluisteren, zal hij op de een of andere manier een wachtwoord moeten raden, oftewel alle combinaties die gebruikt worden als wachtwoord checken. De mate waarin “alle combinaties” daadwerkelijk elke n-bits string voorstelt is natuurlijk afhankelijk van het soort wachtwoord. Wachtwoordsystemen hebben vrijwel altijd een lagere entropie dan een willekeurige reeks bits van dezelfde bitlengte, al is het maar om alle karakters binnen printbare ASCII te houden. De sterkte van een wachtwoord wordt in dit verslag uitgedrukt in het aantal effectieve bits, dus het aantal bits nodig voor een encodering van alle wachtwoorden uit het systeem. Als de aanvaller geen rekening houdt met deze lagere entropie, is de sterkte van het wachtwoord alleen bepaald door de hoeveelheid en soort karakters gebruikt in het wachtwoord. Omdat elk karakter in het wachtwoord apart uitgewisseld wordt in een brutekrachtaanval, hebben wachtwoorden met een lage entropie een voordeel ten opzichte van wachtwoorden met hogere entropie maar even veel effectieve bits. Brutekrachtaanvallen zijn voor een aanvaller een laatste redmiddel, maar worden al snel onpraktisch. Omdat een brutekrachtaanval minstens even veel combinaties moet doorzoeken als een aanval die het systeem kent, volstaat het om de tweede soort aanvallen te weerstaan. Daarom gaat de rest van de analyse uit van een aanvaller die, het principe van Kerckhoff volgend, altijd het systeem kent, en in het bijzonder de grammatica van de wachtwoorden uit het systeem. Het is natuurlijk ook mogelijk dat de aanvaller de verschillende generatiemethoden allemaal probeert in
1
volgorde van complexiteit. De extra mogelijkheden die hierdoor ontstaan, zijn te benaderen door een klein aantal extra bits die deze keuze encoderen, aan de wachtwoordcomplexiteit toe te voegen. Dat zal geen grote verschillen geven in de veiligheidsbeoordeling aangezien alle systemen dan een paar bits erop vooruitgaan, en kan dus verwaarloosd worden.
1.3
Inloggen of gestolen database
Als de aanvaller niets weet behalve de gebruikersnaam, is de enige manier om het wachtwoord te raden herhaaldelijk proberen in te loggen. Bij een doorsnee GNU/Linuxinstallatie zal het systeem na een mislukte loginpoging op slot gaan voor 3 seconden (plus of min 25 procent) [1] en een doorsnee goedbeveiligde website laat drie pogingen per kwartier toe. Websites die het niet zo nauw nemen met de veiligheid van hun gebruikers doen niet aan rate limiten, en laten even veel pogingen toe als de aanvaller kan versturen en zij kunnen verwerken. In die gevallen ligt het aantal pogingen in de orde van duizenden per seconden. Een gevaarlijker soort aanval is eentje waarbij de aanvaller de database met inloggegevens in zijn bezit heeft. Als de wachtwoorden ongehasht opgeslagen zijn, heeft de veiligheid van het wachtwoord natuurlijk geen nut. Ook zonder salt opslaan zorgt voor een aanzienlijk onveilig systeem, waarbij ongeveer twee derde van de complexiteit wegvalt. Alleen in een systeem waar wachtwoorden met salt gehasht worden opgeslagen, wordt de volle complexiteit van de wachtwoorden benut.
1.4
Beoordeling
Om de veiligheid op een objectieve manier te meten, is het nuttig een aantal vuistregels op te stellen die aangeven hoeveel effectieve bits nodig zijn om te beschermen tegen verschillende soorten aanvallen. Deze zijn gebaseerd op een aanvaller die een jaar de tijd heeft, en alle wachtwoorden die een systeem kan produceren afloopt. Hoewel een aanvaller met een rainbowtable in minder tijd het wachtwoord in de tabel kan vinden, zal deze uiteindelijk toch de hash van alle wachtwoorden hebben moeten berekenen. De waarden in deze opsomming zijn volgens de volgende formule bepaald: 1 jaar 2 , n = log t waar n het minimale aantal bits is om een dergelijke aanval te weerstaan en t de gemiddelde tijd (omgerekend naar jaren) per poging van de aanval. Een theoretisch maximum is 1 poging per plancktijd per atoom in het universum. De plancktijd is de tijd die licht nodig heeft om een plancklengte af te leggen, waar de plancklengte ge¨ınterpreteerd kan worden als de kleinste afstand waar deeltjes op een welgedefinieerde manier te onderscheiden zijn. [2] Omdat niets sneller kan gaan dan het licht, is de plancktijd effectief de kortste tijd die nodig is om tussen verschillende toestanden te verspringen, en geeft dus een nuttige bovengrens voor rekensnelheid. • ≥ 3 bits: iPhoneslotscherm; hooguit zes pogingen [3] • ≥ 17 bits: Goed beveiligde website; een poging per 5 minuten • ≥ 24 bits: Loginscherm GNU/Linux; een poging per 3 seconden [1] • ≥ 35 bits: Slecht beveiligde website; een poging per 1 milliseconde • ≥ 62 bits: oclHashcat op MD5; 135 miljard pogingen per seconde [4] • ≥ 68 bits: HashCoins Uranus Miner op SHA-256; 6 biljoen pogingen per seconde [5] • ≥ 84 bits: Elke Bitcoinminer tegelijk actief samen op SHA-256; 400 biljard pogingen per seconde [6] • ≥ 435 bits: theoretisch maximum; 2 vigintiljard (2 × 10123 ) pogingen per seconde
2
1.5
Mogelijkheden schatten
Om te kunnen bepalen hoe veel mogelijkheden bestaan om bijvoorbeeld “een willekeurige zin” te nemen, is het nodig een aantal schattingen te maken op het gebied van entropie. Dit gaat ervan uit dat de keuze binnen de groep waarbinnen de mogelijkheden liggen, verder onvoorspelbaar is. Als de aanvaller verwacht dat een bepaalde keuze veel gemaakt wordt, zal hij deze eerst testen, dus zijn voor de hand liggende opties in de praktijk onveiliger dan uit deze schattingen. 1.5.1
Leestekens
ASCII bevat 42 (= 128 − 34 − 52) printbare tekens die geen letters zijn. [7] Sommige websites keuren tekens als ’ en " af omdat ze bang zijn voor SQL-injectie (een duidelijk teken dat hun zaakjes niet in orde zijn), dus in de praktijk zal de keuze nog iets verder beperkt zijn. Naar beneden afgerond geeft dit 5 bits per karakter. 1.5.2
Getallen
Als de gebruiker zelf een getal moet kiezen, zal dit een relatief klein natuurlijk getal worden. Bijvoorbeeld kan dit bijvoorbeeld een jaartal of leeftijd zijn. Als de grootste gekozen getallen jaartallen zijn, zullen deze niet aanzienlijk groter zijn dan 2000. Afgerond geeft dit een schatting van 11 bits voor een getal. 1.5.3
Kleine woordenlijst
De meeste mensen zullen niet uit de volledige lijst van woorden kiezen maar een kleinere lijst van woorden die makkelijk te verzinnen zijn. Een redelijke schatting van het aantal “gewone” woorden die dagelijks gebruikt worden, is in de orde van duizenden woorden, wat ongeveer 11 bits geeft. 1.5.4
Grote woordenlijst
Als de gebruiker een ongewoon woord kiest, is dat vergelijkbaar met de keuze uit een volledige woordenlijst als wamerican 7.1-1, die 68722 verschillende woorden van minstens 5 letters bevat. [8] Afgerond geeft dat 16 effectieve bits om een woord te bepalen. 1.5.5
Woord aanpassen
Veel systemen beginnen met een woord en passen die vervolgens aan, bijvoorbeeld door letters om te wisselen, letters te vervangen met symbolen die erop lijken of het hele woord te vervangen met een woord dat erop lijkt. Een populair systeem vervangt a, e, i, o met 4, 3, 1, 0 respectievelijk. De woorden in de woordenlijst wamerican 7.1-1 hebben gemiddeld 2.7 van deze letters. [8] Een conservatieve schatting is dus 3 bits per woord voor alle aanpassingen samen. 1.5.6
Zin
Het Engels heeft een entropie van minstens een bit per letter. [9] Omdat de lengte van zinnen vrijwel onbeperkt is, is het totaal aantal mogelijkheden van een zin niet uit te drukken. Een betere schatting van het aantal bits is de lengte van een voorbeeldzin die het systeem gebruikt.
2
Gebruiksvriendelijkheid
De gebruiksvriendelijkheid van een systeem kan opgedeeld worden in de generatie en het gebruik van de wachtwoorden. Als een systeem te ingewikkelde generatieregels heeft, zal het moeilijk zijn mensen te overtuigen om het systeem te gebruiken, laat staan om elke keer een nieuw wachtwoord aan te maken voor een nieuwe toepassing. Aan de andere kant hoeft de generatiestap maar een keer uitgevoerd te worden. Elke keer dat de gebruiker een wachtwoord moet invoeren, moet de gebruiker deze hebben onthouden, zelfs als dat wachtwoord maar heel af en toe nodig is. Daarom is het een belangrijke eis dat gebruikers hun wachtwoorden eenvoudig kunnen onthouden, om bijvoorbeeld te voorkomen dat een gebruiker zijn
3
wachtwoord op een briefje opschrijft. Een willekeurige string karakters zonder regelmaat is voor mensen lastiger te onthouden dan een inhoudelijke zin, zelfs als beiden een even hoge, of hogere, entropie hebben. Net als ezelsbruggetjes makkelijker te onthouden zijn dan de originele informatie, zijn wachtwoorden die voor mensen begrijpelijke structuur hebben, makkelijker te onthouden dan een volledig arbitraire sting. Ook moet de gebruiker het wachtwoord zonder typfouten moeten kunnen invoeren. Langere wachtwoorden verhogen de kans op typfouten, net als moeilijkere karakters. Ook karakters die op elkaar lijken als de O en de 0 kunnen voor verwarring zorgen. Als een mogelijk verwarbaar karakter bijvoorbeeld een letter is in een woord, is duidelijk dat geen getal bedoeld wordt, dus zal het toch duidelijk zijn. Daarentegen vereisen veel wachtwoordvelden tegenwoordig dat wachtwoorden allerlei soorten karakters bevatten. Daardoor moeten de wachtwoorden juist zo veel moeilijke karakters bevatten, als bescherming tegen een brutekrachtaanval op bijvoorbeeld alle kleine letters. Zelfs wachtwoorden die lang genoeg zijn kunnen op deze manier afgekeurd worden. Nog erger is dat sommige wachtwoordvelden zelfs wachtwoorden verwerpen die te lang zijn. Systemen met hoge entropie zoals een rijtje willekeurige karakters zijn in deze gevallen juist voordelig op het gebied van gebruiksvriendelijkheid.
2.1
Beoordeling
Omdat gebruiksvriendelijkheid dus subjectief is en afhangt van de situatie waarin wachtwoorden uit het systeem gebruikt worden, kan een systeem in het ene geval handiger en in het andere geval juist onhandiger zijn dan andere systemen. Het is dus niet realistisch om een echte ordering van de systemen te maken. Daarom zal de beoordeling op basis van gebruiksvriendelijkheid alleen de hiervoor besproken eigenschappen opnoemen.
3
De methoden
We kunnen een aantal stromingen in de wachtwoordgeneratie onderscheiden. Sommige produceren wachtwoorden waar elk karakter onafhankelijk en willekeurig is gekozen, anderen gaan uit van een enkel woord met een aantal toevoegingen, sommige gebruiken een aantal woorden achter elkaar geplakt en sommigen gebruiken een zin. Van al deze filosofie¨en bekijken we de interessantere verkondigers en een aantal die op een opmerkelijk punt verschillen.
3.1
xkcd: Tr0ub4dor&3
In een aflevering van de webcomic xkcd worden twee wachtwoordsystemen besproken en afgewogen op het gebied van veiligheid en gebruiksvriendelijkheid. [10] Het advies van xkcd wordt veel gedeeld informatica-kringen, dus het is nuttig deze analyse te testen. Het Tr0ub4dor&3-systeem bestaat uit de keuze van een (ongewoon) woord, waar een paar karakters aan veranderd en bijgevoegd worden. Volgens xkcd heeft een wachtwoord van dit systeem een effectieve lengte van 28 bits, wat inderdaad een redelijke schatting is. We schatten ongeveer 16 bits aan entropie voor een grote woordenlijst. Daarbij komt nog de mogelijkheid van een hoofdletter, een aantal substituties en twee symbolen (inclusief getallen) toevoegen. De mogelijkheid van een hoofdletter is 1 bit en xkcd rekent 3 bits voor de aanpassingen, wat een vrij conservatieve schatting is. Ten slotte is het toevoegen van twee speciale karakters iets te laag ingeschat. Twee niet-letter printbare tekens in ASCII geeft 422 = 1764 mogelijkheden, ongeveer 10 bits (naar beneden afgerond). In totaal komen we op 32 bits, meer dan xkcd berekent maar nog steeds ongeveer even (on)veilig. Dit systeem is niet heel gedetailleerd gespecificeerd, maar de stappen zijn vrij eenvoudig te volgen. Het genereert relatief korte wachtwoorden en bovendien zijn deze gebaseerd op een bestaand woord, dus redelijk gestructureerd, dus makkelijk te onthouden. De wachtwoorden bevatten hooguit twee symbolen, en zijn makkelijk te typen, maar hebben wel alle karaktersoorten in het geval dat die vereist zijn.
3.2
xkcd: correct horse battery staple
Het alternatief dat xkcd voorstelt is het correct horse battery staple-systeem: kies vier woorden die redelijk veel voorkomen en plak die achter elkaar. xkcd gaat uit van 11 bits per woord, wat een redelijke schatting is. In totaal geeft dat een effectieve lengte van 44 bits per wachtwoord, aanzienlijk
4
veiliger dan het alternatieve systeem, zo concludeert xkcd. Dit is inderdaad een redelijke berekening, uitgaande van een klein woordenboek, maar betekent ten opzichte van het Tr0ub4dor&3-systeem een relatief kleinere verbetering van een factor 212 , in plaats van de 216 die xkcd berekent. Dit systeem is niet heel gedetailleerd gespecificeerd, maar de stappen zijn vrij eenvoudig te volgen. De wachtwoorden van dit systeem bestaan uit vier woorden en zijn dus relatief lang. Al deze woorden komen veel voor, dus zijn goed te onthouden. Ook is het makkelijk te typen omdat het alleen kleine letters gebruikt, maar hierdoor bevat het wachtwoord niet genoeg karakterklassen om overal geaccepteerd te worden.
3.3
RFC 1760 (S/KEY) en RFC 2289 (OTP)
In RFC 1760 wordt S/KEY gepresenteerd, een systeem om one-time wachtwoorden te genereren op basis van een hash van een (langer) hoofdwachtwoord. [11] OTP, een upgrade voor S/KEY, wordt in RFC 2289 gespecificeerd. [12] Het interessante aspect van dit systeem is dat het vrijwel equivalent is aan xkcd’s correct horse battery staple-systeem. Op basis van een 64-bits key (afkomstig van een hash) wordt een reeks van 6 woorden opgesteld, waarbij elk woord uit 211 mogelijkheden wordt gekozen. Samen worden dus 66 bits ge¨encodeerd met de woorden. De twee overgebleven bits worden gebruikt als controlebits, dus in totaal zijn er 64 effectieve bits. Beide edities hebben een referentieimplementatie, dus zijn erg gemakkelijk (automatisch) uit te voeren. De wachtwoorden bestaan uit zes woorden, en zijn dus relatief lang. De woorden komen veel voor, dus zijn makkelijk te onthouden. Ook is het (op de lengte na) makkelijk te typen omdat het alleen kleine letters gebruikt, maar hierdoor bevat het wachtwoord niet genoeg karakterklassen om overal geaccepteerd te worden.
3.4
RFC 4086
RFC 4086 documenteert de Best Current Practice (uit 2005) op het gebied van randomheidgeneratie, en bevat een aantal toepassingen op het gebied van wachtwoordgeneratie daarvan. [13] Het systeem gaat uit van DES toepassen op een aantal inputwaarden: de systeemklok, systeem-ID, gebruikers-ID en datum en tijd, de waarden van de registers en 8 karakters ingetypt door de systeembeheerder. Al deze waarden zijn tot op zekere hoogte voorspelbaar en zorgen voor een makkelijker te kraken wachtwoord dan de 64 bits die de RFC berekent. Op basis hiervan moet een wachtwoord gegenereerd worden, door een aantal bits uit het resultaat uit te kiezen en daarmee wachtwoordonderdelen te kiezen. Voor een wachtwoord voor dagelijks gebruik, raadt de RFC aan om 3 woorden uit een lijst van 1000 te kiezen, voor een effectieve lengte van 2 log 10003 ≈ 29 bits (naar beneden afgerond). Ook geeft de RFC de mogelijkheid van een alfanumeriek wachtwoord met 6 karakters. De effectieve lengte hiervan is 2 log 366 ≈ 31 bits (naar beneden afgerond). Beide voorstellen zijn dus relatief onveilig. Voor meer beveiliging kan de gebruiker nog eens 10 bits toevoegen, door een woord of twee symbolen aan zijn wachtwoord toe te voegen respectievelijk. Voor een heel veilig wachtwoord kan de gebruiker “zelfs” een wachtwoord van vijf woorden of tien alfanumerieke symbolen gebruiken, met in totaal 2 log 10005 ≈ 49 en 2 log 3610 ≈ 51 effectieve bits respectievelijk, wat een redelijke hoeveelheid is. De RFC is meer toegespitst op het genereren van randomheid, dus geeft geen specifieke methode voor het afleiden van het wachtwoord. Een wachtwoord bestaat uit drie tot vijf korte woorden of zes tot tien letters en getallen. Deze mogelijkheden zijn allebei relatief makkelijk in te typen, maar alleen het alfanumerieke wachtwoord is kort. De woordeneditie bevat genoeg structuur om het wachtwoord makkelijk te kunnen onthouden. Allebei de systemen genereren wachtwoorden die niet alle karakterklassen bevatten.
3.5
Diceware
Diceware is een systeem waarbij de gebruiker een wachtwoord genereert, bestaand uit woorden uit een gegeven woordenlijst. De benodigdheden zijn een dobbelsteen en de Dicewarewoordenlijst, die per 5 uitkomsten van de dobbelsteen een woord bepaalt. De aanbeveling van Diceware is om zes woorden te genereren, dus in totaal 30 keer met een dobbelsteen te gooien. [14] Dat geeft een effectieve wachtwoordlengte van 2 log 630 ≈ 77 bits (naar beneden afgerond). Brutekrachtaanvallen zijn dus vrijwel onhaalbaar op de wachtwoorden van Diceware. Bovendien is het hele algoritme met de hand (en een dobbelsteen) uitvoerbaar. Diceware genereert dus erg veilige wachtwoorden.
5
Bovendien zorgt het duidelijk vastleggen van het algoritme voor een overzichtelijk systeem dat met de hand goed gedaan kan worden maar ook als software ge¨ımplementeerd kan worden. Op het gebied van onthoudgemak bestaan de wachtwoorden uit een reeks begrijpelijke, maar niet al te veelvoorkomende, woorden. Deze woorden vormen alleen geen lopende zin, en bevatten niet alle karakterklassen.
3.6
Padding
De Gibson Research Corporation heeft een eigen aanpak verzonnen om wachtwoorden te versterken, en verkondigt (onder andere aan de lokale omroepen) dat een wachtwoord als D0g..................... veel veiliger is dan een wachtwoord als PrXyc.N(n4k77#L!eVdAfp9. De redenatie gaat ongeveer als volgt. Een aanvaller weet niet wat het wachtwoord is. Ook weet een aanvaller niet of een gegeven string lijkt op een wachtwoord, alleen of die geheel correct of geheel onjuist is. De aanvaller weet dus niet de vorm van het wachtwoord, dus moet de aanvaller elke string van de gegeven lengte doorlopen om een wachtwoord te kraken. [15] Hoewel er inderdaad meer strings van 24 karakters dan van 23 karakters zijn, zal een aanvaller meer moeite doet dan simpelweg alle strings aflopen. Dat aanvallers hun zoekruimte willen beperken begrijpt Gibson Research Corporation zelf ook: een wachtwoord met alleen kleine letters vindt de veiligheidsmeter onveiliger dan een wachtwoord met hoofdletters, cijfers en symbolen erin. De meter geeft het wachtwoord D0g een zoekruimte van 623 , dus ongeveer 17 effectieve bits (naar beneden afgerond) en D0g..................... een zoekruimte van 9524 , dus ongeveer 157 effectieve bits (naar beneden afgerond). Een verbetering van 140 bits is genoeg om elk wachtwoord tot in de verre toekomst onbreekbaar te houden. Een realistischer berekening van de veiligheid van dit systeem gaat uit van een doodgewoon wachtwoord waar we een herhalende reeks van drie symbolen achter plakken. De schatting is 5 bits per symbool en in het voorbeeld wordt de punt 21 keer herhaald, wat binnen 5 bits past. Het opvullen van het wachtwoord geeft hooguit 5 × 3 + 5 = 20 extra bits, genoeg om een wachtwoord aanzienlijk te beveiligen, maar nog veel minder dan de 140 bits die Gibson Research Corporation geeft. Dit padding-systeem bestaat uit een herhaling van een erg klein aantal symbolen, en is dus makkelijk te onthouden. Met wat oefening is intypen ook geen probleem. Het zorgt voor een nuttige uitbreiding van een vrij zwak wachtwoord naar een veilig wachtwoord.
3.7
Microsoft
Microsoft heeft een duidelijke wachtwoordrichtlijn. Deze schrijft voor om een wachtwoord te genereren door een lopende zin te nemen en deze vervolgens aan te passen door spelling te veranderen en een getal toe te voegen. [16] De zin in het voorbeeld bestaat uit vier woorden en in totaal 24 letters. Deze zin bevat dus ongeveer 24 effectieve bits. De gebruiker kan kiezen of de zin een hoofdletter en punt bevat, voor 2 bits extra. Aanpassen van woorden, weer onder de aanname van 8 mogelijkheden per woord, geeft nog eens 3 × 4 = 12 bits. Ten slotte is er nog een getal, voor 11 bits. In totaal geeft dit 49 effectieve bits. Opvallend is dat de webpagina die dit advies geeft, ook een aantal tegenstrijdige tips bevat om te zien wanneer een wachtwoord onveilig is. Zo raadt Microsoft woorden uit het woordenboek te gebruiken of woorden die fout gespeld zijn of op een andere manier veranderd, terwijl dit juist een belangrijk aspect is van het zojuist beschreven systeem. Het systeem gaat uit van een lopende zin maar is wel precies gespecificeerd. Een zin is makkelijk te onthouden en in te typen, maar wel vrij lang. De extra aanpassingen en toevoegingen maken dit wel moeilijker, maar zorgen er ook voor dat een wachtwoord alle soorten karakters bevat. Het advies dat Microsoft daar vervolgens op geeft zorgt wel voor verwarring.
3.8
PGP Passphrase FAQ
Het Pretty Good Privacy-project heeft een FAQ opgesteld om veelgestelde vragen over wachtwoorden te beantwoorden. Hierin zetten ze ook een systeem uiteen om een veilig wachtwoord te genereren. Ieder woord vervangen ze met een woord dat erop lijkt, bijvoorbeeld mine wordt vervangen met mile. Ten slotte voegen ze nog “several” willekeurige karakters toe. [17] De zin begint met 46 letters, dus evenveel effectieve bits, en alle woorden worden aangepast. Dit geeft 3 × 8 = 24 bits over de hele zin genomen.
6
Hoewel het aantal leestekens vaag is, is een redelijke aanname dat ze 4 leestekens bedoelen, dus 5×4 = 20 bits toevoegen. In totaal geeft dit een effectieve lengte van 46 + 24 + 20 = 90 bits. Het systeem gaat uit van een lopende zin en is niet precies gespecificeerd, dus moeilijk te implementeren. Een zin is makkelijk te onthouden en in te typen maar wel lang. De extra aanpassingen en toevoegingen maken dit wel moeilijker, maar zorgen er ook voor dat een wachtwoord alle soorten karakters bevat.
3.9
random.org
De website random.org biedt bits aan die afkomstig zijn uit ruis van de atmosfeer en dus echt willekeurig gegenereerd zijn. [18] Er zijn een aantal toepassingen beschikbaar, waaronder een wachtwoordgenerator. De standaardinstellingen van de generator geven een wachtwoord van 8 alfanumerieke karakters, maar vermijden karakters die op elkaar lijken. De precieze verzameling van karakters die wel meedoen wordt niet vermeld. Daarom is wat onderzoek nodig om de veiligheid van de wachtwoorden vast te stellen. De website heeft een pagina die voor een gebruiker bijhoudt hoeveel bits nog beschikbaar zijn. Na het genereren van een wachtwoord neemt deze opeenvolgend waarden aan van 544 via 497, 403, 356 tot 215. Elke keer dat een wachtwoord gegenereerd wordt, wordt dit aantal met een veelvoud van 47 verminderd. Vermoedelijk gebruikt de website 47 bits om een wachtwoord te genereren, die soms verworpen wordt. In dat geval wordt nog een poging gedaan. Het aantal effectieve bits van een wachtwoord is dus hooguit 47, en dus vrij laag. Een belangrijker probleem is dat de wachtwoorden server-side gegenereerd worden en we dus de makers van random.org moeten vertrouwen dat wachtwoorden zonder ze te bewaren of afgeluisterd door anderen worden genereerd en verstuurd. Daar staat tegenover dat de online generatie makkelijk is voor de gebruiker. De wachtwoorden bestaan uit willekeurige karakters, dus zijn moeilijk te onthouden of in te typen. Ook bevatten ze niet alle karakterklassen. Hoewel het een goed idee is om echte randomheid te gebruiken voor een wachtwoord, is de dienst van random.org geen goed voorbeeld.
3.10
passwordsgenerator.net
Om een idee te krijgen wat de standaardmethode is om een wachtwoord te genereren, is het eerste zoekresultaat een mooi voorbeeld. De website passwordsgenerator.net werd door Google (in incognitomodus) aangeboden bij het zoeken naar “password generator”. Met de standaardinstellingen wordt een wachtwoord gegenereerd met 16 willekeurige karakters van alle klassen, met een aantal symbolen die op elkaar lijken weggelaten. [19] De Javascriptcode die clientside wordt uitgevoerd, genereert met de standaardinstellingen een wacht16 woord uit (23 + 24 + 8 + 14 + 20) mogelijkheden, ongeveer 103 bits, dus erg veilig. Bovendien is de code die genereert in te zien, dus te inspecteren op gebreken, hoewel de code ingekort is, en dus moeilijk te lezen. Er is (helaas) ook een optie om het serverside te genereren, wat vereist dat de makers van passwordsgenerator.net geheel te vertrouwen zijn dat ze het gegenereerde wachtwoord geheim kunnen houden. Deze website laat gebruikers gemakkelijk online wachtwoorden genereren, maar genereert relatief lange wachtwoorden die willekeurige karakters bevatten, dus moeilijk te onthouden en in te typen zijn. Wel bevatten deze wachtwoorden alle karakterklassen.
3.11
25 populairste
De voorgaande systemen zijn allemaal bedoeld om wachtwoorden veilig te houden. In de praktijk is een aanzienlijk deel van wachtwoorden helemaal niet veilig. In 2014 besloegen de 25 populairste wachtwoorden (zoals password of 123456) ongeveer 2% van alle wachtwoorden ooit gelekt. [20] Een keuze uit deze 25 wachtwoorden is met minder dan 5 bits te beschrijven. Dit is dus een van de onveiligste systemen, maar wordt toch veel gebruikt. De wachtwoorden van dit systeem hebben blijkbaar toch een hoge gebruiksvriendelijkheid die tegen de onveiligheid opweegt.
7
4
Conclusie
Er is veel verschillend en vaak tegenstrijdig advies te vinden op het internet op het gebied van wachtwoorden. Over het algemeen is het advies grotendeels correct, maar kan ook misleidend zijn. Daarom is het een goed idee kritisch te kijken naar het advies en zelf te bepalen hoe veilig de wachtwoorden echt worden. Voor een sterk wachtwoord van ongeveer 70 bits, wat kan beschermen tegen kleinschalige aanvallen op de wachtwoordhash, is Diceware een geschikt systeem. Dergelijke wachtwoorden zijn veilig te genereren en eenvoudig verder te gebruiken. Bovendien is een wachtwoord van Diceware eenvoudig te verlengen met een aantal woorden voor nog betere beveiliging. Een erg veilig wachtwoord van ongeveer 90 bits beschermt tegen vrijwel alle brutekrachtaanvallen op een hash. Het systeem van de PGP passphrase FAQ is hier een goede aanpak voor omdat het een lang maar onthoudbaar wachtwoord geeft, hoewel het op een aantal punten onprecies is. De lengte van een wachtwoord oprekken met een rijtje symbolen zoals de Gibson Research Corporation aanraadt kan de veiligheid nog een stap omhooghalen, dus is een zinnige toevoeging. Uiteindelijk zijn al deze systemen niet bestemd tegen problemen die buiten het raden van wachtwoorden omgaan. Als het wachtwoord in de vorm van klare tekst gestolen wordt, maakt de veiligheid van het wachtwoord niet uit. Daarom is het beste advies om eerst grondig te controleren hoe met wachtwoorden omgegaan wordt en in onbetrouwbare situaties niet verder te gaan, en nooit een wachtwoord te hergebruiken.
Referenties [1] Ubuntu Manuals. “Ubuntu Manpage: pam fail delay”, Web. 2015-06-06. http://manpages.ubuntu.com/manpages/man3/pam fail delay.3.html [2] Sidharth, B. G. “Planck-scale phenomena”, Foundations of Physics Letters, 2002-12. [3] Apple Support. “Forgot passcode for your iPhone, iPad, or iPod touch, or your device is disabled ”, 2015-05-06, 2015-06-14. https://support.apple.com/en-us/HT204306 Volume 15, Issue 6, pages 577-583, 2002-12. [4] HashCat. “oclHashCat - advanced password recovery”, Web. 2015-05-30. https://hashcat.net/oclhashcat/ [5] HashCoins LLs. “Uranus v1 Miner ”, Web. 2015-05-30. https://www.hashcoins.com/buy-asic-miners/buy-uranus/ [6] Blockchain Luxembourg S.A.R.L. “Bitcoin Hash Rate”, Web. 2015-05-30. https://blockchain.info/charts/hash-rate [7] The Unicode Consortium. “The Unicode Standard, Version 7.0.0 ”, 2014. http://www.unicode.org/versions/Unicode7.0.0/ [8] Ubuntu Packages Search. “Package: wamerican (7.1-1)”, 2005-04-09, 2015-05-30. http://packages.ubuntu.com/precise/wamerican [9] Shannon, C. E. “Prediction and Entropy of Printed English”, Bell System Technical Journal, January 1951, 1950-09-15. [10] xkcd. “xkcd: Password Strength”, 2011-08-10, 2015-05-31. http://xkcd.com/936/ [11] Haller, N. “The S/KEY One-Time Password System”, RFC 1760, 1995-02. [12] Haller, N., Metz, C., Nesser, P., Straw, M. “A One-Time Password System”, RFC 2289, 1998-02. [13] Eastlake, D. (III), Schiller, J., Crocker, S. “Randomness Requirements for Security”, RFC 4086, 2005-06.
8
[14] Reinhold, A. G. “The Diceware Passphrase http://world.std.com/ reinhold/diceware.html
Home
Page”,
2015-03-28,
2015-05-28.
[15] Gibson Research Corporation. “How Big is Your Haystack? ”, Web. 2015-05-30. https://www.grc.com/haystack.htm [16] Microsoft. “Create strong passwords”, Web. 2015-06-06. https://www.microsoft.com/en-gb/security/online-privacy/passwords-create.aspx [17] Williams, R. T., Engelfriet, A. “Passphrase FAQ: Strength of the passphrase”, 2005, 2015-05-28. http://www.iusmentis.com/security/passphrasefaq/strength/#HowdoImakeastrongpassphrase [18] Randomness and Integrity Services Ltd. “Random Password Generator ”, Web. 2015-06-03. https://www.random.org/passwords/ [19] PasswordsGenerator.net. “Secure Password Generator ”, Web. 2015-06-07. http://http://passwordsgenerator.net/ [20] SplashData, Inc. “”123456”Maintains the Top Spot on SplashData’s Annual ”Worst Passwords”List”, 2015-01-20. http://splashdata.com/press/worst-passwords-of-2014.htm
9