MD5 to 128-bitowy algorytm mieszający stworzony przez naukowca Ronalda L. Rivesta na początku lat 90. Skrót MD5 oznacza Message Digest Version 5.
Szyfrowanie MD5 opiera się na mieszaniu, które obejmuje tworzenie „odcisków palców” lub „sum” w celu dalszej weryfikacji ich autentyczności. Korzystając z tej metody, możesz zweryfikować integralność informacji, a także przechowywanie skrótów haseł.
Historia MD5
Historia algorytmu Message Digest Algorithm (MD5) rozpoczyna się w 1991 r., kiedy profesor MIT Ronald L. Rivest poinformował o stworzeniu nowego algorytmu, który zastąpił przestarzały algorytm MD4. Jeśli chodzi o MD4, rzeczywiście znaleziono w nim szereg niedociągnięć, jak napisał później niemiecki kryptolog Hans Dobbertin.
Rivest opisał nowy algorytm MD5 w dokumencie RFC 1321.
Prace nad algorytmem kontynuowali badacze Bert den Boer i Anton Bosselars, którzy w 1993 roku udowodnili możliwość pseudokolizji w MD5, kiedy różne wektory inicjujące mogą pasować do tych samych skrótów wiadomości.
Co więcej, w 1996 roku Hans Dobbertin twierdził, że znalazł kolizję w MD5. W tym czasie znane stały się bardziej preferowane algorytmy haszujące, takie jak kryptograficzne funkcje haszujące RIPEMD-160 - opracowane przez Hansa Dobbertina, Antona Bosselarsa i Barta Prenela, Whirlpool - opracowane przez Vincenta Raymena i Paulo Barreto oraz kryptograficzny algorytm haszujący SHA-1.
Ze względu na stosunkowo mały rozmiar skrótu (128 bitów) w MD5 mówi się o możliwości ataków urodzinowych. Projekt MD5CRK, zapoczątkowany przez Jeana-Luca Cooka w 2004 roku, miał na celu zbadanie podatności algorytmu wykorzystującego ataki urodzinowe. Jednak po pięciu miesiącach, 17 sierpnia 2004 r., projekt został wstrzymany z powodu wykrycia luki w algorytmie przez grupę chińskich kryptografów pod kierownictwem Lai Xuejia.
W marcu 2005 r. matematycy i kryptolodzy Benne de Weger, Arjen Lenstra i Wang Xiaoyun utworzyli dwa dokumenty X.509 z tym samym skrótem i różnymi kluczami publicznymi.
Rok później, w marcu 2006 roku, czeski kryptograf Vlastimil Klima opublikował algorytm, który pozwala określić kolizje na prostym komputerze w zaledwie minutę. Algorytm ten stał się znany jako metoda „tunelowania”.
W wyniku analizy wyników prac, w 2008 roku oddział National Cyber Security Administration Departamentu Bezpieczeństwa Wewnętrznego Stanów Zjednoczonych (US-CERT) zarekomendował wszystkim, którzy byli zaangażowani w rozwój oprogramowania, stron internetowych, a także użytkowników sieci, zaprzestaje stosowania algorytmu MD5, niezależnie od celu jego stosowania. Powodem takiej rekomendacji była nierzetelność, którą wykazał w trakcie jej studiowania.
W grudniu 2010 r. chińscy kryptolodzy Tao Xie i Feng Denguo odkryli kolizję wiadomości o długości 512 bitów (jeden blok). Wcześniej kolizje znajdowano tylko w wiadomościach o długości co najmniej dwóch bloków. Później Mark Stevens osiągnął podobne wyniki, publikując bloki z tym samym skrótem MD5. Opracował też algorytm uzyskiwania tego typu kolizji.
Ostatnim dokumentem, który położył kres historii rozwoju algorytmu MD5, była prośba o komentarze - RFC 6151 (RFC to oficjalny dokument opracowany przez Internet Engineering Council (IETF), który opisuje specyfikacje dla konkretnego technologii), który faktycznie rozpoznał MD5 jako niepewny algorytm haszujący. Dokument zaleca porzucenie go, wybierając jako alternatywę rodzinę algorytmów kryptograficznych SHA-2.
Omawiany algorytm MD5 jest uważany za jeden z pierwszych standardów algorytmów służących do sprawdzania integralności plików i przechowywania haseł w bazach danych aplikacji internetowych.
Ale tak naprawdę stosunkowo prosta funkcjonalność, krótka długość wyjściowa i prostota wykonywanych operacji, będąca zaletami algorytmu, determinują również jego wady - MD5 odnosi się do algorytmów podatnych na włamania i charakteryzujących się niskim stopniem ochrona przed atakami urodzinowymi.