III.

De bescherming van uw identiteit

Wat weten websites over u?

U bepaalt welke informatie u doorgeeft aan de websites die u bezoekt. U moet de sites niet meer informatie geven dan ze nodig hebben om de door u gewenste dienst te leveren. Als u niet verwacht dat de sites iets bij u thuis afleveren, moet u waarschijnlijk niet uw adres geven alleen omdat de site u dat vraagt. Hetzelfde geldt voor uw telefoonnummer, uw volledige naam of zelfs uw e-mailadres. Hoe minder informatie u doorgeeft aan websites, hoe minder u verliest als iemand de informatie verkoopt of toegang krijgt tot uw account.

Voorbeeld

Wanneer gegevens uitlekken, worden ze vaak op het internet geplaatst zodat anderen ze kunnen zien. Als u de meisjesnaam van uw moeder of de naam van uw eerste huisdier hebt gegeven als antwoord op een beveiligingsvraag, is die informatie nu mogelijk beschikbaar voor iedereen die Google kan gebruiken. Dit soort beveiligingsvragen zijn inherent onveilig, aangezien gegevens zoals de naam van uw moeder, uw huisdier of uw eerste adres meestal heel gemakkelijk te achterhalen zijn.

Maar wat als de gelekte informatie uw wachtwoord is? Heeft u hetzelfde wachtwoord ergens anders gebruikt? Zo ja, dan kan iedereen uw e-mail en wachtwoord combinatie ook voor andere sites proberen. De gelekte informatie wordt vaak gebruikt in andere aanvallen nog voor ze openbaar wordt.

Wachtwoorden zijn meestal het eerste obstakel op de weg naar een aanval. In latere hoofdstukken zullen we andere elementen introduceren die ook kunnen voorkomen dat aanvallers toegang krijgen tot uw accounts. Deze aanpak van ‘diepgaande verdediging’ is een gangbare praktijk in cyberbeveiliging. Het betekent dat u meerdere lagen hebt die de activa beschermen die u wilt beschermen. Als één verdedigingslaag breekt, bijvoorbeeld uw wachtwoord, betekent dat niet dat de aanvallers vrije toegang hebben tot uw informatie.

Note
Pijlen die door meerdere geperforeerde verdedigingslagen heen gaan
Pijlen die door meerdere geperforeerde verdedigingslagen heen gaan

Diepgaande verdediging is een concept dat wordt gebruikt in de informatiebeveiliging, waarbij er meerdere lagen van beveiligingscontroles (defence) worden geplaatst in een informatietechnologiesysteem. Het is bedoeld om overtolligheid te bieden ingeval een beveiligingscontrole faalt of een beveiligingslek wordt uitgebuit, die aspecten van personele, procedurele, technische en fysieke beveiliging kan bestrijken voor de duur van de levenscyclus van het systeem

Voor accounts op het internet is een wachtwoord meestal de eerste beschermingslaag die u hebt. We gaan nu wat dieper in op hoe wachtwoorden in theorie werken voordat we ons vertrouwd maken met andere lagen die we kunnen gebruiken.

Enumeratie-aanvallen

Enumeratie-aanvallen worden gebruikt door aanvallers om geldige gebruikersnamen aan te maken als eerste stap om iemands logingegevens te verkrijgen. Dit soort aanvallen wordt vaak gebruikt bij het inloggen van gebruikers en bij 'wachtwoord vergeten'-functies. Zo kan een site in sommige gevallen onbedoeld informatie over zijn leden lekken door bij inlogpogingen verschillende berichten te geven op basis van het al dan niet bestaan van de gebruikersnaam of het e-mailadres.

Voorbeeld

Heeft u wel eens per ongeluk een verkeerde gebruikersnaam ingetikt en een foutmelding teruggekregen, 'ongeldige gebruikersnaam' of 'gebruikersnaam bestaat niet'? Als de site een soortgelijke melding heeft die afsluit wanneer alleen het wachtwoord onjuist is, dan kan de aanvaller deze informatie gebruiken om te weten of een gebruikersnaam geldig is. Hierdoor kunnen de aanvallers bijvoorbeeld enorme lijsten met e-mails opsommen en informatie krijgen over wie een account heeft op de doelsite. Daarom hebben websites best inlogfoutmeldingen die niet afzonderlijk vermelden wat er mis is met de inlogpoging, zoals 'gebruikersnaam OF wachtwoord is ongeldig'.

In de meeste gevallen is deze informatie op zich niet schadelijk. Als iemand echter het bestaan van een account bij een dating- of escortservice kan verifiëren, kan die informatie tegen de betrokkenen worden gebruikt.

Enumeratie-aanvallen kunnen ook worden gebruikt om phishing-aanvallen beter te richten op individuen, en ze worden ook gebruikt om brute force-aanvallen gemakkelijker te maken door het aantal mogelijke doelwitten te verminderen. De definities van phishing en brute force komen zo dadelijk ter sprake.

Enumeratie-aanvallen zijn niet beperkt tot aanmeldingsformulieren. Ze kunnen ook worden gebruikt voor het resetten van wachtwoorden of het aanmaken van accounts. Zo beschermt het aanmaken van een account meestal tegen het aanmaken van dubbele accounts en laat de gebruiker die een duplicaat wil maken, weten dat er al een account bestaat met de opgegeven e-mail of gebruikersnaam.

De volgende stap in het verkrijgen van toegang tot logingegevens is het kennen van het wachtwoord. Daarover gaan we nu meer leren.

Wachtwoorden

De meeste websites die u gebruikt, identificeren u aan de hand van een combinatie van gebruikersnaam en wachtwoord. Omdat we als online gebruikers tientallen of zelfs honderden verschillende diensten moeten gebruiken, proberen we over het algemeen goed te onthouden wachtwoorden te maken. Het probleem met gemakkelijk te onthouden wachtwoorden is dat ze meestal ook gemakkelijk te raden zijn voor aanvallers. Aangezien de meest voorkomende wachtwoorden in 2020 123456, 123456789, qwerty en wachtwoord waren, is het niet moeilijk om een enorm aantal accounts te hacken door deze wachtwoorden gewoon uit te proberen met willekeurige e-mailadressen.

De meest gebruikte wachtwoorden van 2020

  • 123456

  • 123456789

  • qwerty

  • password

  • 1234567

  • 12345678

  • 12345

  • iloveyou

  • 111111

  • 123123

De meest gebruikte voorschriften voor het instellen van wachtwoorden waren in de loop der jaren niet al te best en leerden mensen aan hoe ze slechte wachtwoorden moesten maken. Door deze slechte aanbevelingen hebben mensen wachtwoorden moeten maken die moeilijk te onthouden zijn, maar voor computers gemakkelijk te kraken.

De webcomic XKCD vat wachtwoordbeveiliging heel goed samen..

Twee sleutels met verschillende lengte
Twee sleutels met verschillende lengte

Een goed wachtwoord hoeft niet per se obscure symbolen te bevatten om veilig te zijn. Over het algemeen geldt dat hoe langer het wachtwoord is, hoe veiliger het is. Vereisten die u verplichten om symbolen, kleine letters, hoofdletters en cijfers in wachtwoorden op te nemen, houden er meestal geen rekening mee hoe moeilijk de wachtwoorden eigenlijk te kraken zijn. De eisen maken de keyspace (het aantal mogelijke wachtwoordcombinaties van een bepaalde lengte) groter, hoewel hetzelfde zou kunnen worden bereikt door een langer wachtwoord te eisen.

Laten we eens een voorbeeld bekijken:

Als de mogelijke tekenset die u kunt gebruiken voor een wachtwoord bestaat uit kleine letters in het alfabet, 26 tekens dus, en de lengte van het wachtwoord is 6 willekeurige tekens, dan zou de keyspace worden berekend als:

266= 308,915,776 mogelijke wachtwoorden.

Note

^ wordt vaak gebruikt om 'tot de macht van' aan te geven, ook wel uitgedrukt als 26. U hoeft hier geen wiskunde voor te kennen, maar als u nieuwsgierig bent, kunt u een vergelijking als 26^6 in de meeste online zoekmachines typen om het antwoord te krijgen

Als het wachtwoord 8 willekeurige tekens lang is, zou de keyspace zijn:

268= 208,827,064,576 mogelijke wachtwoorden.

Zoals u kunt zien, is de keyspace automatisch groter als de lengte van het wachtwoord slechts 2 letters langer is. Laten we een ander voorbeeld nemen van extra tekens en hoofdletters toevoegen aan de mix, waardoor het aantal bruikbare tekens voor het wachtwoord verdubbelt.

526= 19,770,609,664 mogelijke wachtwoorden.

U ziet meteen dat de keyspace een stuk groter is dan waar we mee begonnen. Het komt echter niet eens in de buurt van de keyspace voor het langere wachtwoord met alleen kleine letters. Als we nu eens wat algemene symbolen toevoegen, te weten !, ', #, ¤, %, &, /, (, ) en =. Dit betekent dat het aantal beschikbare karakters nu 62 is.

626= 56,800,235,584 mogelijke wachtwoorden.

Met de toevoeging van de 10 extra karakters in de toegestane karakterset, hebben we de beschikbare keyspace bijna verviervoudigd. Tegelijkertijd hebben we het wachtwoord veel moeilijker te onthouden gemaakt. De keyspace is nog steeds een stuk kleiner dan met het voorbeeldwachtwoord van 8 karakters.

Een zuiver willekeurig wachtwoord verslaat ook andere soorten aanvallen, zoals woordenboekaanvallen. Woordenboekaanvallen maken gebruik van het feit dat gebruikers proberen memorabele wachtwoorden te maken door woorden of namen uit het woordenboek te gebruiken, of variaties daarop. De tweede editie van het 20-delige Oxford Engels Woordenboek bevat vermeldingen voor 171.476 woorden, dus als u een wachtwoord gebruikt met slechts één woord, kunt u het zien als het gebruik van een keyspace van 170.000 woorden. Vaak worden deze woorden niet gebruikt zoals ze zijn, maar worden ze gewijzigd op een manier die hun onthoudbaarheid behoudt.

Voorbeeld

We gaan nog een stap verder en bekijken hoe groot de keyspace is door alleen Engelse woorden te gebruiken. Laten we aannemen dat we willekeurig 3 Engelse woorden uit het woordenboek kiezen en een wachtwoord maken met de combinatie. De berekening zou zijn:

170,000^3 = 4,913,000,000,000,000

Zo’n wachtwoord zou veel beter te onthouden zijn, en als we ons alleen zorgen maken over brute force, ook veel moeilijker te kraken. Er zijn nog andere redenen waarom de keyspace niet zo groot zou kunnen zijn als men in eerste instantie zou aannemen. De meeste Engelstaligen gebruiken slechts een woordenschat van ongeveer 3.000 woorden en de wachtwoorden die op deze manier worden gekozen weerspiegelen dat. Mensen zijn ook erg slecht in toeval. Wat voor ons aanvoelt als een willekeurige combinatie van woorden, kan gemakkelijk worden beïnvloed door de context, onze gedachten of eerder gekozen woorden. Als u een wachtwoord van alleen woorden gebruikt, gebruik dan een generator in plaats van te vertrouwen op het menselijke concept van willekeur.

Meer weten over deze methode.

Een veelgebruikte manier om woorden uit het woordenboek te verdoezelen is door substituties te gebruiken of een getal aan het woord toe te voegen om een wachtwoord te creëren. Helaas worden deze wijzigingen over het algemeen goed begrepen en ondervindt een computer geen enkele moeite om alle verwachte variaties uit te proberen. Eenvoudige vervangingen zoals het vervangen van de letter 'o' door het cijfer '0' maken het wachtwoord alleen maar moeilijker te onthouden terwijl het voor de computer er nauwelijks meer werk is. Deze eenvoudige vervangingen maken de keyspace niet wezenlijk groter. Ook het toevoegen van een nummer of het huidige jaar aan het begin of het eind van het woord doet dat niet. Software om wachtwoorden te kraken en de mensen die ze maken, kennen al deze trucs en houden er rekening mee.

Entropie

De sterkte van een wachtwoord wordt meestal niet alleen gemeten aan de hand van de ruimte van mogelijke sleutels. Entropie is een term die ook in de cyberbeveiliging wordt gebruikt: het is een manier om de veronderstelde moeilijkheidsgraad van het echte kraken van het wachtwoord te meten. Entropie wordt berekend door de wiskundige functie 'log2' van de keyspace te nemen (maakt u zich geen zorgen over de wiskunde, u hoeft dit niet te doen - maar als u het echt wilt, kunt u de formule in de meeste zoekmachines typen om het op te lossen. Probeer bijvoorbeeld eens ‘log2(26^8)’ in www.google.com).

Dus, wat betekent entropie in de praktijk? Met behulp van de entropieberekening kan de sterkte van het wachtwoord worden gemeten met deze grafiek:

< 28 bits = zeer zwak; kan familieleden buiten houden

28-35 bits = zwak; kan de meeste mensen buiten houden, vaak genoeg om met een wachtwoord in te loggen op de desktop

36-59 bits = redelijk; redelijk veilige wachtwoorden voor netwerk- en bedrijfswachtwoorden

60-127 bits = sterk; kan goed zijn voor het beschermen van financiële informatie

128+ bits = zeer sterk; vaak te veel van het goede

Note

In ons vorige voorbeeld zou de entropie van het wachtwoord met 8 karakters als volgt zijn:

log2(26^8) = 37.6 bits

Een wachtwoord met 6 karakters zou een entropie hebben van:

log2(26^6) = 28.2 bits

In het bovenstaande voorbeeld komt de entropie van de 8 willekeurige tekens (37 bits) nauwelijks in de redelijke categorie. Een wachtwoord van 15 tekens (70 bits) zou sterk zijn, maar nog steeds niet in de categorie zeer sterk. De exponentiële aard van deze berekeningen betekent dat het langer maken van een wachtwoord de moeilijkheidsgraad om het te kraken enorm kan beïnvloeden.

Entropie is weliswaar nuttig, maar geen alleszeggende maatstaf. Een wachtwoord van slechts 8 tekens kan echter nog steeds als meestal onveilig worden beschouwd - we zullen in het onderstaande gedeelte bespreken waarom.

Hoe wachtwoorden gekraakt worden

Om te begrijpen hoe wachtwoorden worden gekraakt, moeten we eerst begrijpen hoe ze worden beschermd.

Wachtwoorden worden meestal opgeslagen in een database, 'versleuteld' met iets dat een eenrichtingshash-algoritme heet. Een hash-algoritme is een versleuteling die gebruikt wordt om uw wachtwoord in platte tekst om te zetten in gecodeerde tekst. Het werkt slechts in één richting. Een tekst die gehasht is met een veilig hash-algoritme kan niet worden teruggedraaid, ook al is het algoritme bekend. De resulterende uitvoer van uw wachtwoord dat door het hash-algoritme wordt verwerkt, staat bekend als een hash. Een hash is een reeks tekens bestaande uit letters en cijfers, die de gecodeerde versie van de oorspronkelijke invoertekst voorstelt.

Note

Een hash is strikt genomen geen encryptie. Encryptie is een tweerichtingsproces dat kan worden teruggedraaid, terwijl hashing eenrichtingsverkeer is. Als het hash-algoritme werkt zoals bedoeld, kan de uitvoerwaarde niet worden teruggedraaid.

U kunt meer lezen over cryptografische hashfuncties op Wikipedia

Laten we eens kijken naar een voorbeeld van een bekend, en nu als onveilig beschouwd, hash-algoritme: MD5. MD5. Als u met MD5 de tekst 'wachtwoord' zou hashen, zou u een gecodeerde uitvoer hash krijgen van '5f4dcc3b5aa765d61d8327deb882cf99'.

Een kleine verandering in de originele tekst zal een totaal andere gehashte waarde creëren. Dit is een andere waardevolle functie van een hash. U kunt niet schatten wat de hash zal zijn op basis van de invoer.

Bijvoorbeeld, een MD5 hash voor 'wachtwoore' is 'a826176c6495c5116189db91770e20ce', wat niet lijkt op de hash voor 'password'.

Wanneer een gebruiker inlogt, wordt zijn wachtwoord in klare tekst gehasht en de resulterende hash wordt vergeleken met de hashwaarde (gecodeerde versie van het gebruikerswachtwoord) die in de database is opgeslagen. Als ze overeenkomen, mag de gebruiker inloggen.

Hoe kunnen wachtwoorden worden gehackt met al deze bescherming: wachtwoorden in platte tekst die zijn versluierd tot onvoorspelbare code, via een onomkeerbaar algoritme? Wat maakt oudere hash-algoritmen zoals MD5 kwetsbaar?

Note

Een gehashte waarde (de gecodeerde versie van het originele wachtwoord) kan vooraf worden berekend en opgeslagen in een enorme lijst van wachtwoorden. Deze bestanden worden rainbow tables genoemd en zijn gemakkelijk te vinden op het internet. U kunt bijvoorbeeld gemakkelijk een bestand vinden met alle hashes die met het MD5 algoritme zijn gemaakt voor elk wachtwoord tot 10 tekens lang dat een willekeurige combinatie van kleine letters en cijfers bevat (abcdefghijklmnopqrstuvwxyz0123456789).

Regenboogtabellen worden gemaakt door wachtwoordwoordenboeken (echte woordenboeken en lijsten van veelgebruikte wachtwoorden) die op het internet te vinden zijn, door hash-algoritmen te halen. De resulterende gecodeerde hashes worden vergeleken met hun overeenkomstige originele wachtwoorden, en dan gebruikt om in te breken in gebruikersaccounts.

Zoutvat
Zoutvat

Salting en hashing

Betekent dit dat hashing voor de meeste wachtwoorden overbodig is? Zeker niet! Het goede nieuws is dat programmeurs verschillende slimme technieken kunnen gebruiken om het moeilijk te maken de hash van een wachtwoord te vinden. Een hashfunctie wordt vaak vele malen toegepast om de tijd die nodig is om een wachtwoord te controleren te verlengen en zo brute force-aanvallen te vertragen.

Een andere manier waarop programmeurs de wachtwoorden van hun gebruikers beschermen is door een techniek te gebruiken die 'salting' wordt genoemd. Hierbij wordt een speciale waarde, 'salt’ (‘zout’) aan de zuivere tekst toegevoegd nadat de gebruiker zijn wachtwoord heeft ingevoerd, maar voordat het hashen wordt toegepast, om het gebruik van een vooraf berekende lijst van hashes (rainbow tables) te voorkomen. Wanneer een salt-waarde wordt toegepast, maakt ze dit rainbow table-bestand onbruikbaar en is het een eenvoudige manier om dit soort aanvallen onuitvoerbaar te maken.

Als we bijvoorbeeld het MD5 hash-algoritme gebruiken en een gerandomiseerd salt 'xhsr2d' toevoegen aan de zuivere tekst 'wachtwoord', dan krijgen we MD5('xhsr2dpassword'), dat is 'ebf20a6c99eccaefa0bf4d88a5bd3456'. Dit is een totaal andere uitvoer dan de originele MD5-geproduceerde hash van 'wachtwoord' hierboven, die iedere hacker kan vinden in een rainbow table op het internet. Door het wachtwoord te salten, zelfs als we een rainbow table hadden met hashes voor elk mogelijk wachtwoord met kleine letters en een maximale lengte van 10, zouden we de overeenkomst met de hash niet kunnen vinden en zouden we het gebruik van vooraf berekende hashes teniet hebben gedaan.

Wat salting in de praktijk betekent, is dat aanvallers elk wachtwoord met brute force moeten aanvallen om met succes hun gecodeerde hashes in een database te kraken.

Het kraken van wachtwoorden met brute force betekent dat de kracht van computers wordt gebruikt om programmatisch verschillende hashes te proberen totdat het wachtwoord met een passende hashwaarde is gevonden. Hashfuncties berusten op de moeilijkheidsgraad van het aanmaken van twee verschillende berichten die dezelfde hashwaarde opleveren. Dit noemen we ‘collision’. Als een hashfunctie kan worden gedwongen om dezelfde waarden te genereren voor verschillende invoergegevens, wordt hij als gebroken beschouwd.

Note

Het kraken van wachtwoorden met brute force kan erg moeilijk zijn. Met moderne computers kunnen duizenden hashes per seconde worden berekend. Grafische kaarten in moderne computers zijn gespecialiseerde hardware en ze zijn zeer bedreven in het berekenen van hashes. Ze kunnen in sommige gevallen miljarden hashes per seconde bereiken.

Een lang wachtwoord van 15 kleine letters kan echter 1.677.259.342.285.725.925.376 verschillende variaties hebben, en het berekenen van zoveel hashes met de snelheid van 1 miljard hashes per seconde zal iets meer dan 50.000 jaar duren. De rekentijd daalt tot ongeveer 3,5 minuten voor een wachtwoord met een lengte van 8 karakters.

U, als gebruiker van een online dienst, kunt er meestal niet zeker van zijn dat de ontwikkelaars de mogelijke preventieve maatregelen toepassen. Dit betekent dat u ervan uit moet gaan dat rainbow tables tegen uw wachtwoorden kunnen worden gebruikt. In de praktijk betekent dit dat u de voorkeur moet geven aan langere wachtwoorden, omdat deze het gebruik van de meeste rainbow tables onpraktisch maken. Denk maar aan het voorbeeld hierboven- door 7 karakters aan uw wachtwoord toe te voegen, kunt u het leven van een hacker een stuk moeilijker maken!

Next section
IV. Hoe uw wachtwoorden veilig te maken