Bij het inloggen op een computersysteem is het gebruikelijk om eerst een gebruikersnaam en vervolgens een wachtwoord in te voeren. Dit wordt gedaan om te verzekeren dat alleen geautoriseerde personen toegang krijgen tot het computersysteem of het netwerk. Een belangrijke vraag die we onszelf kunnen stellen is: biedt deze methode voldoende zekerheid over de identiteit van de persoon die inlogt? Met andere woorden, kunnen we met absolute zekerheid zeggen dat de ingevoerde gebruikersnaam en wachtwoord daadwerkelijk behoren tot de persoon die op dat moment achter het computersysteem zit? Het antwoord hierop is nee, we kunnen dat niet met volledige zekerheid zeggen.
Er zijn verschillende redenen waarom we niet volledig kunnen vertrouwen op wachtwoorden als een middel voor digitale authenticatie om de identiteit van de persoon die inlogt te waarborgen.
Ten eerste kan de gebruikersnaam vaak eenvoudig te raden zijn, en deze is soms al vooraf ingevuld wanneer een gebruiker zich aanmeldt op het systeem. In dat geval blijft het wachtwoord als enige controlemechanisme over.
Daarnaast zijn er ook enkele nadelen verbonden aan het gebruik van wachtwoorden:
Het eerste punt van kritiek, namelijk dat wachtwoorden te gemakkelijk te raden zijn, is een veelvoorkomend probleem. Geboortedata, namen van kinderen of partners zijn populaire keuzes omdat ze eenvoudig te onthouden zijn, maar dat maakt ze ook kwetsbaar voor raden.
Het tweede bezwaar heeft te maken met het feit dat veel wachtwoorden eenvoudig te achterhalen zijn, bijvoorbeeld als ze op gele briefjes onder het toetsenbord worden bewaard.
Ten slotte is er het bezwaar dat wachtwoorden kunnen worden gekraakt, wat verwijst naar geavanceerd hacken. Er bestaan diverse methoden om wachtwoorddatabases te kopiëren en te kraken, waarbij de complexiteit van het wachtwoord (waar we later meer over zullen bespreken) een cruciale factor is.
Een uitdaging met complexe wachtwoorden is dat ze moeilijk te onthouden zijn, waardoor mensen geneigd zijn ze ergens op te schrijven. Het vinden van een juiste balans tussen sterke wachtwoorden en wachtwoorden die gemakkelijk te onthouden zijn, is vaak een lastige opgave.
Het eerder genoemde voorbeeld benadrukt ook het belang van veiligheidsbewustzijn bij computergebruikers. Het is helaas nog te vaak voorgekomen dat mensen wachtwoorden luidop bespraken binnen een bedrijfsafdeling, wat duidt op een onbedoelde lichtzinnigheid van medewerkers. In dergelijke gevallen is er slechts één oplossing: het bevorderen van veiligheidsbewustzijn bij medewerkers.
De meest eenvoudige vorm van softwarematige aanvallen op wachtwoorden is het toepassen van een brute force-aanval. Bij een brute force-aanval worden alle mogelijke combinaties systematisch uitgeprobeerd. Het begint bijvoorbeeld met de letter ‘A’, vervolgens ‘B’, en zo gaat het door totdat alle letters van het alfabet zijn uitgeprobeerd. Daarna wordt een extra letter toegevoegd, bijvoorbeeld ‘AA’, en dan ‘AB’, en zo verder. Deze brute force-aanval blijft doorgaan totdat het ingestelde aantal tekens is bereikt.
Dit proces kan zeer tijdrovend worden. Wanneer wachtwoorden bestaan uit een mix van kleine letters, hoofdletters, cijfers en leestekens, neemt het aantal mogelijke combinaties aanzienlijk toe. Hoe groter het aantal mogelijke combinaties, hoe langer het duurt om ze allemaal systematisch te proberen met een brute force-aanval.
Laten we dit illustreren aan de hand van het wachtwoord “$vxDW2SSFK0DCQc#”. Dit wachtwoord bestaat uit 16 tekens. Als we een wachtwoord samenstellen waarbij we letters (26), hoofdletters (26), cijfers (10) en leestekens (33, hoewel meestal slechts ongeveer 26 toegestaan zijn in wachtwoorden) gebruiken, hebben we 88 verschillende tekens om uit te kiezen voor elke positie.
Als we dan een wachtwoord van 16 tekens maken, zijn er in totaal 88^16 mogelijke combinaties, wat neerkomt op 88 vermenigvuldigd met zichzelf 16 keer, oftewel een totaal van 12.933.699.143.209.908.517.669.873.647.616 mogelijke combinaties. Over het algemeen geldt als vuistregel dat je meestal het juiste wachtwoord kunt “raden” binnen de helft van de mogelijke combinaties, wat betekent dat het meestal lukt binnen ongeveer 6.466.849.571.604.954.258.834.936.823.808 pogingen.
De snelheid waarmee wachtwoorden kunnen worden gekraakt, varieert sterk afhankelijk van factoren zoals het gebruikte encryptie-algoritme, de hardware en de kracht van de gebruikte brute force-software. Hierdoor is het moeilijk om een standaard snelheid vast te stellen.
Laten we als uitgangspunt nemen dat een wachtwoord wordt gekraakt op een uiterst snelle computer, die grofweg in staat is om 500.000 pogingen per seconde te proberen. In deze situatie zouden we ons wachtwoord kunnen kraken na ongeveer 3.592.694.206.447.196.810.464 uur, wat gelijkstaat aan ongeveer 410.124.909.411.780.458 jaar.
Een alternatieve elektronische aanval die op een wachtwoord kan worden toegepast, staat bekend als een “dictionary attack” of in het Nederlands een “woordenboekaanval”. Bij een dictionary attack worden, zoals de naam al impliceert, alle woorden uit een woordenboek uitgeprobeerd als mogelijke wachtwoorden. Het is helaas nog steeds een veelvoorkomend probleem dat mensen wachtwoorden gebruiken die eenvoudige alledaagse woorden zijn. Het belangrijkste voordeel van een dictionary attack voor de aanvaller is dat deze snel veelvoorkomende woordcombinaties kan proberen.
Een hybride aanval, ook wel bekend als de hybrid attack, is een aanvalsmethode die verschillende technieken combineert. Een veelvoorkomende vorm van een hybride aanval is wanneer een aanvaller een dictionary attack uitvoert, maar daarbij klinkers vervangt door cijfers of leestekens, of wanneer er cijfers of leestekens aan het begin of einde van het woord worden toegevoegd. In een meer geavanceerde hybride aanval kan de aanvaller ook persoonlijke informatie van het slachtoffer, zoals namen en geboortedatum, gebruiken en deze combineren met de dictionary attack.
Op de meeste systemen wordt het wachtwoord niet als een leesbare tekstreeks opgeslagen, maar in plaats daarvan wordt de hashwaarde van het wachtwoord opgeslagen. Zoals we eerder in dit hoofdstuk hebben besproken, is het onmogelijk om vanuit een hashwaarde het oorspronkelijke wachtwoord te achterhalen. Dit is een handige beveiligingsmaatregel, omdat wanneer een hacker onze lijst met wachtwoorden in ons computersysteem vindt, deze alleen een lijst met hashwaarden heeft.
Om dit niet-kunnen-herleiden probleem te omzeilen, maken hackers zogenaamde rainbowtabellen. Een rainbow table is een database met alle mogelijke hashwaarden voor een breed scala aan wachtwoorden. Dit resulteert in een zeer omvangrijke database.
Rainbowtabellen variëren in grootte, van bijvoorbeeld 7 MB (voor MD5-hashwaarden van 143.000 Nederlandse woorden) tot 2,5 GB (voor een groot aantal mogelijke combinaties van letters, cijfers en tekens voor een typisch Windows-wachtwoord) tot enkele terabytes (voor zeer geavanceerde mogelijkheden).