Als u een frequente internetgebruiker bent zoals ik, is de kans groot dat u een e-mail hebt ontvangen die ongeveer als volgt luidt:

Geachte gewaardeerde klant,

Onlangs werd onze website het slachtoffer van een cyberaanval op ons bedrijfsnetwerk. Alle wachtwoorden zijn gecodeerd, maar als een voorzorgsmaatregel vragen we al onze klanten om hun wachtwoorden onmiddellijk opnieuw in te stellen.

Dank je.

Er was dus een overtreding, een deel van uw gegevens, inclusief uw gecodeerde wachtwoord, is gelekt. Staat uw account op het spel?

Kort antwoord: JA, maar waarom?

Om dit te begrijpen, moet u het concept van 'wachtwoordhashing' begrijpen.

Wat is een hash?

Een hash is slechts een manier om gegevens als een unieke tekenreeks weer te geven. Je kunt alles hashen: muziek, films, je naam of dit artikel. Metaforisch gesproken is hashen een manier om een ​​'naam' toe te kennen aan uw gegevens. Hiermee kunt u een invoer van elke lengte maken en deze in een tekenreeks veranderen die altijd dezelfde lengte heeft. Uiteraard zijn er veel methoden (algoritmen) om dit te doen.

Een paar van de meest populaire hash-algoritmen:

  • MD5 - Gegeven alle gegevens levert een unieke hash van 32 tekens op.
  • SHA1 - Gegeven alle gegevens zal een unieke hash van 40 tekens worden geretourneerd.
  • SHA256 - Gegeven alle gegevens levert een unieke hash van 64 tekens op; ontworpen door de National Security Agency.

Laten we eens kijken naar een eenvoudig voorbeeld:

Mijn naam is "Jamin Becker"

De MD5 hash-weergave van mijn naam is:

 eeb7048c69b088739908f5f5144cd1f5 

De SHA1 hash-weergave van mijn naam is:

 ae480b717c08b6ab36a85075864e35b9c528d7c5 

De SHA256 hash-weergave van mijn naam is:

 a477cc14eae5fd94fe4cb20b36ec80ac6983bad44973ae7f4f230010f01289b0 

Waarom is Hashing veilig?

De reden hashen is veilig is eenvoudig: hashing is een eenrichtingsverkeer. Ze kunnen niet worden teruggedraaid. Gegeven een string "eeb7048c69b088739908f5f5144cd1f5", is er geen manier om de MD5-hash om te keren om "Jamin Becker" terug te geven. Dit komt door de manier waarop de wiskundigen en programmeurs het MD5 hash-algoritme hebben gestructureerd en het komt terug op een fundamenteel computerwetenschappelijk probleem genaamd "P vs NP." P en NP zijn slechts twee klassen van algoritmen.

De meeste hash-algoritmen vallen onder NP, wat betekent dat ze snel kunnen worden berekend. De un-hashing-algoritmen (dwz "eeb7048c69b088739908f5f5144cd1f5" -> "Jamin Becker") vallen echter onder de P-klasse en kunnen alleen efficiënt worden opgelost in polynomiale tijd (dwz met behulp van een quantumcomputer die aanzienlijk geavanceerder is dan degene die vandaag beschikbaar zijn).

Dus waarom is dit goed voor de veiligheid?

Stel dat u zich abonneert op een website en het wachtwoord "12345" kiest. Onmiddellijk zal die website uw wachtwoord hashen, waarschijnlijk met SHA1, en het in een database opslaan. Telkens wanneer u inlogt, zal de website uw wachtwoord opnieuw instellen en vergelijken met het wachtwoord dat in de database is opgeslagen. Als ze overeenkomen, wordt u met succes geverifieerd. Als de website ooit wordt geschonden en de wachtwoorddatabase wordt gelekt, verschijnt uw wachtwoord als "8cb2237d0679ca88db6464eac60da96345513964" en niet als "12345".

Hash Attack-strategieën

Dus de aanvaller heeft de gehashte versie van mijn wachtwoord en er is geen manier om het terug te draaien naar 12345. Ik hoef me nergens zorgen over te maken, toch? FOUT!

Een methode die vaak wordt gebruikt om het wachtwoord voor platte tekst uit een hash te halen, wordt een brute force-aanval genoemd. Bij deze aanval zal de aanvaller een gigantische woordenlijst doornemen en elk woord hashen met het juiste hash-algoritme. Ze kunnen dan de hashes in de woordenlijst vergelijken met de hashes die ze uit de database hebben verkregen. Als een hash van de woordenlijst overeenkomt met die in de database, kunnen ze eenvoudig het overeenkomstige wachtwoord voor platte tekst vinden in de oorspronkelijke woordenlijst die ze hashed. Ervaren aanvallers gebruiken extreem grote woordenlijsten in combinatie met krachtige software om miljoenen wachtwoordmogelijkheden per seconde te doorlopen.

Een andere aanvalsmethode probeert het hashing-algoritme zelf te misbruiken door een hash-botsing te maken. Er treedt een hash-botsing op wanneer twee verschillende sets gegevens tot dezelfde hash besluiten en hoewel dit zeldzaam is, kan het dodelijk zijn. Hierdoor kan de aanvaller een reeks tekens genereren die niet uw wachtwoord is, maar zich toch kan aanmelden bij uw account omdat deze dezelfde hash genereert.

Conclusie

Hashing-algoritmen worden steeds geavanceerder. Wiskundigen en computerwetenschappers ontwerpen constant cryptografische hashing-algoritmen met lagere kansen op botsingen. Het is echter belangrijk om te onthouden dat, hoe sterk het hash-algoritme ook is, het altijd kan worden gekraakt met een brute force-aanval. Het goede nieuws is dat je je ook gemakkelijk kunt verdedigen tegen deze aanvallen door simpelweg best-practice wachtwoordbeleid te volgen.

  1. De grootte is van belang - hoe langer het originele wachtwoord, hoe kleiner de kans dat het op een woordenlijst verschijnt
  2. Wees niet voorspelbaar - vermijd het gebruik van woorden als "wachtwoord" en "myname123"
  3. Gebruik een combinatie van speciale tekens, cijfers, hoofdletters en kleine letters

Wat vind je van hashen? Deel uw mening in de onderstaande opmerking.

Afbeelding credit: Vergrootglas Online vingerafdruk byBigStockPhot