Door Mijzelf:
Het probleem met md5 hashes is dat het mogelijk is om collisions te genereren. Oftewel, gegeven de hash, is het mogelijk een 'bijpassend' password te maken.
Nee, dit is in de praktijk niet het probleem met MD5.
Bij elke cryptografische hashfunctie zijn collisions mogelijk, echter hoe langer de hash, hoe
moeilijker het is om collisions
te vinden. MD5 is lang genoeg om in de praktijk het vinden van collisions
van relatief korte wachtwoorden kansloos te maken.
De reden om geen MD5, maar ook geen SHA1, SHA256 etcetera te gebruiken, is dat die functies
bloedsnel zijn.
De aanvalstactiek bij wachtwoorden is vervolgens een heel andere: je gaat uit van een dictionary met ooit gelekte of voorspelbare plain text wachtwoorden, en je berekent van elk van hen de hash (met dezelde formule als de gehackte website gebruikt). Vervolgens zoek je naar dezelfde hashes in beide bestanden; "zwakke" (voorspelbare of ooit gelekte) haal je er dan meteen uit.
Het beste wapen hiertegen zijn salts en functies zoals Argon2 die opzettelijk traag zijn en veel geheugen vreten.
Wat er gekraakt is aan MD5 is een
heel specifieke soort collisions, namelijk dat het relatief eenvoudig blijkt om twee verschillende inputs te vinden -
die aan specifieke criteria voldoen- die dezelfde hash opleveren.
Gegeven een
willekeurige input (zoals een wachtwoord) is het nog steeds zo goed als kansloos om een collision te vinden.
Een risico zou wel kunnen zijn dat iemand een dusdanig wachtwoord kiest dat hij daar een MD5 collision van kent, maar dat risico lijkt mij niet zo groot.
Dit risico is
wel groot bij bijvoorbeeld digitale handtekeningen (indien MD5 wordt gebruikt). Je zou een contract vooraf zo kunnen manipuleren dat er twee
verschillende contracten zijn waarbij je eerst het "gunstige" contract voor de tegenpartij overlegt en later claimt dat dat een vervalsing is en jij het "echte" contract hebt met minder gunstige voorwaarden.
Kortom, het MD5
algoritme is niet het probleem bij wachtwoordhashes, dat zijn namelijk diens
snelheid (maar dat geldt net zo goed voor bijv. SHA256), de beschikbaarheid van dictionaries en het feit dat mensen zwakke wachtwoorden kiezen en hergebruiken.
Aanvulling 13:07 en @
Ook al Bezet: waar je, m.b.t. wachtwoordhashes, in de Wikipedia pagina naar moet kijken is
Preimage vulnerability.
Met "pre-image" wordt bedoeld dat de aanvaller geen invloed heeft op de input. De verwarring is "collision" in beide gevallen, maar een preimage collission is echt een heel andere kwetsbaarheid dan collisions waarbij de aanvaller de input kan kiezen. En dat kan de aanvaller niet bij door anderen gekozen wachtwoorden.
De verzwakking van 2^128 naar 2^123,4 is dan ook verwaarloosbaar, echt niemand gaat zoeken naar wachtwoord collisions.
[Reactie gewijzigd door Verwijderd op 22 juli 2024 13:41]