16 november 2005
MD5 (Message-Digest algoritm 5) is een breed verspreide cryptografische
hash-methode met een 126-bit hashwaarde. Als een internetstandaard (RFC
1321) is MD5 gebruikt in een grote hoeveelheid applicaties als
beveiligingsmechanisme. MD5 wordt ook zeer regelmatig gebruikt om de
integriteit van bestanden te toetsen. Het algoritme is ontworpen door
Ronald Rivest in 1991 om de eerdere hash-methode MD4 te vervangen. In
1996 werd in het ontwerp van MD5 een fout ontdekt; alhoewel het geen
fatale zwakheid was, begonnen cryptografen aan te bevelen andere
algoritmen te gebruiken, zoals SHA-1 (alhoewel berichten aangeven dat ook deze gebroken is). In 2004 werden meer fouten
ontdekt, die het verdere gebruik van het algoritme voor
beveiligingsdoeleinden zeer twijfelachtig maakt. De publicatie nu van
een nieuwe en snelle methode om zogenaamde ‘collisions’ te vinden vormt
het harde bewijs dat het hash-algoritme niet langer sterk genoeg is om
toe passen.
Hoewel dus al geruime tijd gewaarschuwd wordt dat MD5 zijn beste tijd
gehad heeft, zijn serieuze aanvallen in de praktijk uitgebleven. De
wetenschappers die zwakten hebben blootgelegd hadden namelijk nooit
code vrijgegeven, en meldden daarenboven dat ze gemiddeld een uur tijd
op een supercomputer nodig hadden om hun berekeningen te voltooien. Het
nu aangekondigde programma is echter veel sneller (drie kwartier op een
verouderde 1,6 GHz Pentium 4). Het is daarnaast ook nog eens vrij te
downloaden voor iedereen die interesse heeft. Wat het algoritme doet is
het zoeken naar een ‘collision’, een invoertekst die exact dezelfde
hash oplevert als het origineel. Collisions zijn mogelijk in ieder
algoritme, omdat de uitvoer een beperkt aantal combinaties heeft (128
bits in het geval van MD5), terwijl er wel oneindig veel mogelijkheden
voor de invoer bestaan. Er zijn oneindig veel data die dezelfde hash
opleveren. De kunst van het bouwen van een goed hash-algoritme is om
het vinden van een collision onmogelijk te maken, maar in het geval van
MD5 blijkt het nu dus juist heel snel te kunnen. Als een bericht of
bestand overeenkomt met de bijbehorende MD5-hash is dat straks dus geen
garantie meer dat er ondertussen niet mee geknoeid is, wat afhankelijk
van de toepassing een veiligheidsrisico kan vormen. Wat (nog) niet kan
is het zoeken van een invoerstring die een bepaalde hash oplevert,
waardoor het hashen van wachtwoorden met MD5 voorlopig nog veilig
blijft. Toch dringen beveiligingsexperts er op aan om MD5 uit te
faseren en te vervangen voor iets sterkers, zoals SHA-256. Microsoft
liet in september al weten hiermee bezig te zijn en ook de Amerikaanse
overheid (in de vorm van het NIST) is druk bezig haar strategie aan te
passen.