Full Stack Developer Jacco legt uit hoe wachtwoord encryptie nou precies werkt.
Versleuteling / Encryptie
Je kunt geen verhaal over wachtwoorden schrijven zonder het een klein beetje over versleuteling te hebben. Daarom een korte basis.
Voor dit voorbeeld gebruik ik “caesar cipher”, met een verschuiving van 1.
Bij een “caesar cipher” worden alle letters in het alfabet opgeschoven. Het komt er dan ongeveer zo uit te zien:
Met gebruik van bovenstaande tabel, kun je abcdefg dus “versleutelen” naar zabcdef.
Dit is ook hoe online versleutelen werkt. Al wordt er dan wel een complexer algoritme gebruikt.
Hoe werken websites hier mee
Over het algemeen gebruiken websites “eenwegs encryptie”: Het wachtwoord wordt versleuteld en er is, normaal gesproken, geen manier meer om het wachtwoord leesbaar te maken.
Het lastige hieraan is dat je je wachtwoord niet kunt controleren wanneer je het invoert.
Gelukkig is hier een oplossing voor. Hoe encryptie namelijk werkt is dat er constantheid in zit. Elke tekst geeft elke keer hetzelfde encryptie resultaat.
Dan is het wachtwoord vergelijken niet zo lastig meer. We nemen het ingevulde wachtwoord, we versleutelen het en vergelijken het dan met het wachtwoord in de database.
Brute force
Sterke wachtwoorden zijn vooral bedoeld om zogenaamde “brute forcing” te voorkomen. Of simpel gezegd: wachtwoorden proberen tot je toevallig het goede raad. Om “brute forcing” te voorkomen, gebruiken veel websites “Captcha”. Die herken je vast wel, je moet hierbij bijvoorbeeld alle plaatjes met een verkeersbord aanklikken, of een stukje tekst overtypen.
Een andere manier om brute force te voorkomen is het introduceren van “Lock-out”. Voor een bepaalde tijd kun je dan niet opnieuw inloggen. Je hebt dit ongetwijfeld een keer meegemaakt toen je de verkeerde code op je telefoon intoetste.
Het raden van wachtwoorden
Het bruteforcen van wachtwoorden gebeurt dan meestal ook op het moment dat een hacker de database van een website in handen krijgt. Dan is het mogelijk om een programma te maken wat wachtwoorden kan vergelijken. Dit kan omdat er een aantal standaard encrypties op het internet zijn, waarvan MD5 de meest gebruikte is.
Bij MD5 kijken hackers of de encryptie van “a“ gelijk is aan het wachtwoord dat ze al buitgemaakt hebben. Als de encryptie hetzelfde is, is het wachtwoord gelijk aan het wachtwoord dat ze al hebben. Is de encryptie anders, dan gaan ze verder met “b“, om zo het rijtje tot “z“ af te gaan.
Een wachtwoord van 1 teken heeft dus 26 opties, wat voor een computer niets is. Hier komen sterke wachtwoorden dan ook om de hoek kijken.
Stel, je gebruikt een wachtwoord van 2 tekens, dan wordt het aantal mogelijkheden al 676. Voor mensen is dit vrij vervelend, maar voor een computer is dit niets. De sterkte van een wachtwoord met alleen maar klein letters kan worden berekend door 26 ^ ‘het aantal karakters dat het wachtwoord lang is’.
De set iets uitbreiden
Met de bovenstaande informatie in het achterhoofd, gaan we 1 teken toevoegen aan de mogelijke set van data. Vanaf nu is een ! ook geldig. Dus nu hebben we 27 opties. Bij wachtwoord van 2 tekens betekent dit al 729 opties.
Nu gaan we ook hoofdletters toevoegen, dit brengt het totale aantal opties naar 53. Nu begint het er een beetje op te lijken. Want nu zijn er ineens 2.809 combinaties mogelijk.
Minimum length
Laten we naar iets relevantere data kijken. Vaak zie je dat een wachtwoord minimaal 8 tekens vereist. En dat geeft ons 62.259.690.411.361 opties (53^8). Raden duurt nu dus wel even, zelfs voor een computer ;-)
De valide set is vaak iets groter. Valide tekens zijn:
Nu eens kijken wat een set met 72 tekens gaat doen voor de mogelijke opties :
Onderstaande grafiek laat zien dat 8 tekens substantieel beter zijn dan 7 :
En deze lijn zal zich per teken exponentieel doorzetten, dus meer is beter.
Ok ik heb op elke website het zelfde sterke wachtwoord
Is ook niet heel handig. Want mochten hackers het voor elkaar krijgen om je wachtwoord te raden (al duurt dat dus wel even) kunnen ze nog steeds overal bij. Het is dan ook goed om verschillende wachtwoorden te gebruiken. Gelukkig kunnen we ook gebruik maken van het feit dat hackers alles automatiseren. Hierdoor help het bijvoorbeeld al om de naam van de de service te gebruiken.
Laten we gmail als voorbeeld nemen.
Stel : Je standaard wachtwoord is “wachtwoord” (niet aan te raden, maar gaat om het idee).
Dit wachtwoord is niet heel sterk. Om dit wachtwoord iets sterker te maken kunnen we de volgende dingen doen :
Nu is je wachtwoord ineens “W@chtw0ord”. Dat is al moeilijker te raden.
Nu gaan we hier de service aan toevoegen :
W@chtw0ord+Gmail
Voor het oog is dit niet heel veel lastiger. Maar, we hebben wel 6 tekens en een speciaal teken toegevoegd. Op deze manier is het mogelijk om met simpel te onthouden dingen, je wachtwoorden te variëren en een stuk lastiger te maken.