MD5 je 128bitový hašovací algoritmus vytvořený vědcem Ronaldem L. Rivestem na počátku 90. let. Zkratka MD5 znamená Message Digest Version 5.
Šifrování MD5 je založeno na hašování, které zahrnuje vytváření „otisků prstů“ nebo „součtů“ za účelem dalšího ověření jejich pravosti. Pomocí této metody můžete ověřit integritu informací a také uložení hash hesel.
Historie MD5
Historie algoritmu Message Digest Algorithm (MD5) začíná v roce 1991, kdy profesor MIT Ronald L. Rivest informoval o vytvoření nového algoritmu, který nahradil zastaralý MD4. Pokud jde o MD4, skutečně se v něm našla řada nedostatků, jak později napsal německý kryptolog Hans Dobbertin.
Rivest popsal nový algoritmus MD5 v RFC 1321.
V práci na algoritmu pokračovali výzkumníci Bert den Boer a Anton Bosselars, kteří v roce 1993 prokázali možnost pseudokolizí v MD5, kdy se různé inicializační vektory mohou shodovat se stejnými výtahy zpráv.
V roce 1996 Hans Dobbertin dále tvrdil, že našel kolizi v MD5. V té době se staly známými preferovanější hašovací algoritmy, jako jsou kryptografické hašovací funkce RIPEMD-160 – vyvinuté Hansem Dobbertinem, Antonem Bosselarsem a Bartem Prenelem, Whirlpool – vyvinutý Vincentem Raymenem a Paulo Barretem a kryptografický hašovací algoritmus SHA-1.
Vzhledem k relativně malé velikosti hashe (128 bitů) v MD5 se mluvilo o možnosti narozeninových útoků. Projekt MD5CRK, zahájený Jean-Luc Cookem v roce 2004, měl za cíl studovat zranitelnost algoritmu pomocí narozeninových útoků. Ale po pěti měsících, 17. srpna 2004, byl projekt omezen kvůli objevu zranitelnosti v algoritmu skupinou čínských kryptografů vedených Lai Xuejia.
V březnu 2005 vytvořili matematici a kryptografové Benne de Weger, Arjen Lenstra a Wang Xiaoyun dva dokumenty X.509 se stejným hashem a různými veřejnými klíči.
O rok později, v březnu 2006, byl publikován algoritmem českého kryptografa Vlastimila Klímy, který umožňuje určit kolize na jednoduchém počítači během jedné minuty. Tento algoritmus se stal známým jako metoda „tunelování“.
Na základě analýzy výsledků práce v roce 2008 divize Národní správy kybernetické bezpečnosti Ministerstva vnitřní bezpečnosti USA (US-CERT) doporučila, aby každý, kdo se podílel na vývoji software, webové stránky i uživatelé sítě přestanou používat algoritmus MD5 bez ohledu na účel jeho aplikace. Důvodem takového doporučení byla nespolehlivost, kterou prokázal v procesu jeho studia.
V prosinci 2010 čínští kryptologové Tao Xie a Feng Denguo objevili kolizi zpráv o 512 bitech (jeden blok). Dříve byly kolize nalezeny pouze ve zprávách o délce dvou nebo více bloků. Později Mark Stevens dosáhl podobných výsledků publikováním bloků se stejným hashem MD5. Vyvinul také algoritmus pro získávání kolizí tohoto typu.
Konečným dokumentem, který ukončil historii vývoje algoritmu MD5, byla žádost o připomínky – RFC 6151 (RFC je oficiální dokument vyvinutý Internet Engineering Council (IETF), který popisuje specifikace pro konkrétní technologie), který ve skutečnosti rozpoznal MD5 jako nezabezpečený hashovací algoritmus. Dokument doporučuje opustit jej a jako alternativu zvolit rodinu kryptografických algoritmů SHA-2.
Diskutovaný algoritmus MD5 je považován za jeden z prvních standardů algoritmů používaných ke kontrole integrity souborů a ukládání hesel v databázích webových aplikací.
Ve skutečnosti však relativně jednoduchá funkčnost, krátká výstupní délka a jednoduchost prováděných operací, což jsou výhody algoritmu, určují také jeho nevýhody - MD5 označuje algoritmy, které jsou náchylné k hackování a mají nízký stupeň ochrana před narozeninovými útoky.