Z czego zrodziła się potrzeba używania md5?
Czy kiedykolwiek zdarzyło Ci się, iż pobrałeś plik, a później okazało się, iż on nie działa? Może w obecnych czasach nie jest to takie frustrujące, ale kiedyś, gdy Internet pobierał maksymalnie, kilka kilobajtów na sekundę potrafiło to popsuć nastrój. Jednak może nie samo to tak zwane niedziałanie pliku było najgorsze, ponieważ gorzej było, gdy ten plik był zainfekowany złośliwym oprogramowaniem. Jak z tym pierwszym przypadkiem nie mamy już problemów, bo prędkość pobierania plików z internetu wzrosła i to bardzo, to jednak przez cały czas zagraża nam wszelkiego rodzaju złośliwe oprogramowanie. I w tym miejscu pomagało nam MD5. A jak? Dowiesz się, czytając dalej.
Dla osób znających MD5, zdaję sobie sprawę z wieku tego algorytmu, a pisze o tym w pewnym celu, ale o tym na samym końcu.
Co to jest MD5 ?
Z każdego pliku, dokumentu czy też skryptu jesteśmy w stanie stworzyć unikalny kod skrótu MD5. o ile wprowadzimy do pliku jakiekolwiek zmiany, ten kod ulegnie również zmianom. Można o tym pomyśleć jak o odcisku palca. Porównując MD5 pobranego pliku z tym dostarczonym przez autora, możesz upewnić się, iż plik jest taki sam jak ten, który przesłał autor. Pomaga to potwierdzić, iż plik nie jest uszkodzony lub zainfekowany wirusem, lub innym złośliwym oprogramowaniem. W związku z tym MD5 był bardzo pożytecznym algorytmem, ponieważ sprawdza, czy plik nie został w jakiś sposób zmodyfikowany.
Znaczenie integralności pliku.
Z poprzedniego paragrafu dowiedziałeś się, iż sprawdzenie integralności plików jest bardzo ważne. Dzięki temu wszystkie pliki, jakie pobierzemy czy też posiadamy na dysku, zostaną zweryfikowane pod względem ich poprawności. o ile przystąpimy do tego należycie i gdy plik zostanie określony jako, zmodyfikowany to go nie uruchomimy. W ten sposób unikniemy problemów z różnymi awariami, jakie może on wywołać, jak i zapobiegniemy infekcjom w razie zawartego w nim złośliwego oprogramowania. Jednak warto, jest zrozumieć, iż sprawdzenie integralności plików nie jest nastawione na wyszukiwanie złośliwego oprogramowania. MD5 czy też inny tego typu algorytm służy do sprawdzenia poprawności pobranego pliku z plikiem przygotowanym i potwierdzonym przez autora. Jest to szczególnie ważne w przypadku pobierania plików z niezaufanych źródeł i używania ich w celach zawodowych lub też, gdy na danym urządzeniu znajdują się ważne dane. Sumy kontrolne z takich źródeł mogą być specjalnie spreparowane, by wyglądały autentycznie. Algorytm sprawdzający nie wykrywa złośliwego oprogramowania, on jedynie sprawdza, czy plik nie został zmieniony. Czy też będzie to spacja, czy złośliwe oprogramowanie, o ile hashe się nie zgadzają, to o tym poinformuje w identyczny sposób. Dlatego sprawdzenie autentyczności pobranych plików w środowiskach nazwijmy je krytycznymi, jest o tyle istotne, co posiadanie odpowiednio skomplikowanego hasła do konta.
Jak działa MD5?
Skrót MD5 możemy rozwinąć jako Message Digest 5. Działa on na zasadzie: w pobranym pliku jest przeprowadzana ogromna ilość operacji matematycznych mającej na celu stworzenie unikalnego ciągu liter i cyfr. Ten ciąg jest nazywany skrótem MD5. Skrót MD5 jest to wspomniany odcisk palca dla pliku, a każda zmiana w pliku spowoduje inny skrót. W ten sposób możesz porównać skrót MD5 pobranego pliku ze skrótem dostarczonym przez autora. o ile są identyczne, oznacza to, iż plik jest taki sam i nie powinien stanowić zagrożenia.
Natomiast wchodząc głębiej w to zagadnienie, MD5 określany jest jako algorytm kryptograficzny. Generuje unikalny 128-bitowy skrót (hash) dla pliku. W związku z tym, iż MD5 to algorytm jest obliczany przy użyciu bardzo złożonego wzoru matematycznego, który zapisuje / określa zawartość pliku. Dlatego, o ile dokonamy najmniejszej zmiany, dodamy na przykład kropkę w dokumencie tekstowym lub postawimy spację, ten skrót (hash) będzie już zupełnie inny.
Opisywany algorytm był bardzo często używany ze względu na swoją szybkość, prostotę oraz wydajność. W wielu krytycznych środowiskach pobierane były tylko pliki, które posiadały udostępniony skrót MD5. Natomiast warto zwrócić uwagę, iż pobrany plik powinien być rozumiany nie tylko jako taki pobrany z internetu, a jako ogólnie zgrywany do komputera. Oznacza to, iż przed otwarciem dokumentu skopiowanego na przykład z pendrive powinniśmy sprawdzić jego hash.
MD5 był używany również do przechowywania haseł, gdzie są one najpierw haszowane przy użyciu algorytmu, a następnie zapisywane w bazie danych.
Polski skrót, angielski hash
W tym miejscu chciałbym trochę odbiec od głównego tematu i spróbować się wytłumaczyć. Przyznam, iż na temat MD5 dużo czytałem, jednak były to materiały najczęściej w języku angielskim. W nich głównie korzysta się z określenia hash. Natomiast w materiałach polskich spotykałem się dość często z określeniem skrót zamiast hash. W związku z tym chciałbym wyjaśnić, iż w tym artykule niezależnie czy korzystam ze słowa hash, hashować czy też skrót/u chodzi mi o to samo, czyli o przetworzenie danych dzięki algorytmu w celu wygenerowania unikalnej wartości danych.
MD5 kiedyś, MD5 teraz
W ostatnich latach udowodniono jednak słabości tego algorytmu, dlatego też nie jest już uważany za bezpieczny i nie powinno się go używać do celów kryptograficznych. Główną przyczyną tego jest kolizja, jaka może wystąpić, gdzie dwa różne pliki mogą mieć taki sam hash. W ten sposób algorytm jest łatwy do obejścia i może być niewłaściwie wykorzystany. W ten sposób powstały nowsze i bezpieczniejsze algorytmy haszujące, takie jak SHA-256 i są w tej chwili zalecane do zastosowań kryptograficznych.
Nim skreślisz ten artykuł i dojdziesz do wniosku, iż bez sensu o tym piszę, a Ty marnujesz swój czas, daj mi szansę lub nim zaprzestaniesz dalszej lektury, przejdź do podsumowania.
Kiedy sprawdzać MD5?
Na to pytanie można odpowiedzieć, bardzo prosto — zawsze. Oczywiście o ile jest taka informacja pozostało udostępniona. Rzadziej mamy styczność z plikami zmodyfikowanymi, gdy pobieramy je ze sprawdzonych źródeł. Chyba iż ktoś modyfikuje przepływ informacji w naszej lokalnej sieci na przykład dzięki ataku MITM.
Pobieranie plików dzięki sieci wymiany peer-to-peer jest bardzo ryzykowne. Dlatego pliki z tego źródła szczególnie powinniśmy porównywać. Natomiast osobiście nigdy nie korzystałbym z narzędzi pobranych tą techniką w sytuacji, gdy system, w jakim miałbym uruchomić / zainstalować aplikację zawierałby dane poufne lub pełnił istotną funkcję dla firmy czy też działalności.
Można się jeszcze zastanawiać czy wszystkie typy plików powinniśmy sprawdzać. Może się wydawać, iż pliki, które określić możemy jako dokumenty, powinny być wyłączone z tej weryfikacji. Jednak jak już niejednokrotnie słychać było też potrafią być one modyfikowane i sprawiać jawne niebezpieczeństwo w systemach, na których są uruchamiane. Szczególnie o ile chodzi o dokumenty, które wyglądają zupełnie normalnie, a w rzeczywistości są plikami wykonywalnymi. Ta technika jest od wielu lat stosowana, dlatego na pliki typu dokumenty również należy uważać. Pomimo tego, iż zawartość dokumentu zostanie prawidłowo wyświetlona, to dodatkowo w tle zostanie uruchomiony program typu malware, który jak prawdopodobnie się domyślasz, może wyrządzić wiele złego. To zagrożenie występuje szczególnie w systemach umożliwiających uruchomienie plików wykonywalnych dzięki kliknięcia myszką jak na przykład Windows. W większości dystrybucji Linux, aby uruchomić plik wykonywalny, należy posłużyć się wierszem poleceń, dlatego podwójne kliknięcie nie zadziała, a typ pliku jawnie można zobaczyć w wierszu poleceń.
Jakie korzyści niesie za sobą sprawdzenie integralności plików?
Do korzyści, jakie płyną, ze sprawdzenia integralności plików należą:
- Pomaga to uniknąć problemów spowodowanych uszkodzonymi lub zainfekowanymi plikami.
- Pomagają we wczesnym wykrywaniu problemów z bezpieczeństwem.
- Pomagają w utrzymaniu jakości i dokładności danych.
- Pomagają w przestrzeganiu wymagań dotyczących ochrony danych i przepisów.
Dlatego, o ile chcemy zapewnić naszemu środowisku dodatkowe bezpieczeństwo, to powinniśmy zadbać o sprawdzenie integralności plików. Nie ważne czy też jest to nasz komputer domowy, czy też firmowy.
Jak dokonać sprawdzenia integralności plików
Aby sprawdzić sumę kontrolną pliku, potrzebujesz do tego celu odpowiedniego narzędzia. W większości dystrybucji Linux powinno być zainstalowane narzędzie md5sum. Wystarczy przejść do katalogu, w którym znajduje się plik, dla którego chcemy, aby została wygenerowana suma kontrolna i wpisać polecenie:
md5sum exel454cc997ba9974f579d33475e1d5b890 exel
W miejsce exel podajemy nazwę pliku, dla którego suma ma zostać wyświetlona. W ten sposób w bardzo prosty sposób możemy dokonać porównania.
Istnieje również wiele innych narzędzi, choćby dostępnych w przeglądarce internetowej, jak i również alternatyw do prezentowanego, uruchamianego dzięki wiersza poleceń. Dla przykładu w systemie Windows możesz skorzystać z FCIV, opracowanego przez firmę Microsoft.
Typowe błędy i pułapki, jakich należy unikać
Nim przejdę do podsumowania, chciałbym jeszcze wypisać w punktach błędy, jakie najczęściej możemy popełnić, sprawdzając sumy kontrolne.
- Weryfikacja sum kontrolnych plików z niesprawdzonych źródeł.
- Korzystanie z niesprawdzonego narzędzia do weryfikacji sumy kontrolnej.
- Nie sprawdzenie plików po przesłaniu.
- Aktualizowanie wartości skrótu po wprowadzeniu zmian w pliku.
- Poleganie tylko na weryfikacji sumy kontrolnej bez wykorzystania środków bezpieczeństwa takich jak antywirusy i zapory ogniowe.
Oczywiście na swojej drodze spotkasz się z wieloma innymi sytuacjami, których tutaj nie jestem w stanie opisać. Jednak te, które wymieniłem, należą do najczęstszych spotykanych.
Podsumowanie
Jeżeli przeczytałeś cały artykuł i dotarłeś do tego miejsca, to dziękuję Ci za poświęcony czas. Natomiast o ile jesteś tutaj ze względu na to, iż nie rozumiesz, po co piszę o MD5, gdy nie jest on już zalecany, to postaram się w tym miejscu to wyjaśnić.
Pierwszym powodem napisania tego materiału jest to, iż może zdarzyć się sytuacja, iż możesz zostać zapytany o to dlaczego nie korzystamy w firmie z MD5. Możliwe, iż twojego pracodawcy nie zadowoli odpowiedź typu bo nie jest już zalecane stosowanie sprawdzania dzięki tego algorytmu. Może dołożyć dodatkowe pytanie, Dlaczego ? I tu może powstać problem braku znajomości MD5. Odpowiedź znajduje się w artykule, ale nie będę Cię zmuszał do poszukiwań: Główną przyczyną tego jest kolizja jaka może wystąpić gdzie dwa różne pliki mogą mieć taki sam hash. W ten sposób algorytm jest łatwy do obejścia i może być niewłaściwie wykorzystany.
Drugim powodem jest to, iż pomimo iż niezalecane może być przez cały czas używane i to twoim zadaniem będzie przekonanie, aby z niego zrezygnować i przejść na coś bardziej bezpiecznego.
Trzecim powodem jest to, iż w pewnym sensie upiekłem dwie pieczenie na jednym ogniu. Otóż jak wstęp dotyczył tylko i wyłącznie MD5 to wiele z tego elementów, jak i pozostała część dotyczy ogólnie pojęcia sum kontrolnych.
Obecnie zalecanym algorytmem stosowanym do sprawdzania sum kontrolnych jest SHA-256. Rzadko, o ile jeszcze w ogóle, można spotkać dostępne sumy kontrolne oparte na MD5. W ramach przykładu, wejdźmy na stronę skąd możesz pobrać Kali Linux: https://www.kali.org/get-kali/#kali-virtual-machines . Link przeniesie Cię do obrazów które uruchamiasz dzięki narzędzia do wirtualizacji jakim jest na przykład Virtualbox. Odnajdź na stronie zakładkę SUM. o ile na nią klikniesz zostanie wyświetlony kod:
SHA256sum7e675a83094a2863a66872a400109e6cb10540061c359fc7cef6d4152daa4723
Prezentowany w przykładzie hash dotyczy obrazu VirtualBox. W celu weryfikacji tego typu hasha wystarczy, iż w systemie Linux wpiszesz:
sha256sum exel21d894276fbb7d1bdfdcec32b537d26dd55b8b8b6967dccba219dd331b8c9080 exel
Tak jak w przypadku narzędzia md5 w miejsce exel wpisujesz nazwę pliku.
Natomiast o ile chciałbyś automatycznie porównać dwa hashe plików możesz skorzystać z prostego skryptu napisanego przeze mnie. Znajdziesz go pod adresem https://github.com/kgodzisz/shachecksum, lub poszukać innego rozwiązania.