Wystartowała Akademia NIS2/KSC2! Można jeszcze dołączyć do końca lipca!
Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Bezpłatne szkolenie: AI dla admina. Netflow, firewalle i segmentacja bez zgadywania
Wystartowała Akademia NIS2/KSC2! Można jeszcze dołączyć do końca lipca!
Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Bezpłatne szkolenie: AI dla admina. Netflow, firewalle i segmentacja bez zgadywania
Implementując mechanizm uwierzytelnienia wykorzystujący login i hasło dostępu można się spotkać z zagadnieniem bezpiecznego przechowywania poświadczeń logowania. Najczęściej loginem bywa adres email lub unikalny nick użytkownika. Z jego przechowywaniem nie ma problemu. Można nawet zapisywać go w postaci jawnej w bazie danych. Problemem jest natomiast przechowywanie haseł, w taki sposób, aby potencjalny atakujący pomimo ewentualnego przejęcia bazy, nie poznał używanych sekretów.
TLDR:
Z pomocą przychodzą jednokierunkowe kryptograficzne funkcje skrótu, czyli algorytmy które na podstawie danych wejściowych (hasło) generują unikalny ciąg o stałej długości (hash). Cały patent polega na tym, że na podstawie ciągu wyjściowego nie da się odtworzyć oryginalnego ciągu wejściowego. A mówiąc precyzyjniej zadanie to jest trudne obliczeniowo i przy użyciu odpowiednich algorytmów zajęłoby atakującemu dziesiątki dni jak nie setki lat.
Należy jednak pamiętać, że nie każda funkcja skrótu spełnia swoją rolę. Istnieją algorytmy takie jak MD5 czy SHA-1, które w przeszłości były bardzo popularne i powszechnie stosowane w aplikacjach. Są to proste i szybkie funkcje, które w ciągu ułamka sekundy potrafią zwrócić wynik. To, co przez lata było uważane za zaletę z biegiem lat stało się jednym z powodów ich całkowitej dyskwalifikacji w kontekście przechowywania haseł.
Współczesne komputery (nawet te ze średniej półki) są wyposażone w karty graficzne (GPU) dysponujące ogromną mocą obliczeniową. Oprócz renderowania grafiki, procesory te doskonale sprawdzają się w obliczeniach równoległych. Z tego powodu idealnie nadają się do wykonywania prostych przekształceń matematycznych, na których bazują funkcje skrótu. Nic więc dziwnego, że stały się ulubionym narzędziem cyberprzestępców do masowego łamania haseł.
Jeżeli założymy, że atakujący weszli w posiadanie skrótów wygenerowanych algorytmem MD5 lub SHA-1 to za pomocą domowej infrastruktury (np. pojedyncza karta graficzna z serii RTX 50) są w stanie przeliczać miliardy kombinacji na sekundę. Jak pokazują analizy wycieków haseł, stosowane przez użytkowników hasła mają najczęściej postać pojedynczych słów dopełnionych cyframi i znakami specjalnymi, czas potrzebny na ich złamanie zamiast setek lat wyniesie od kilku minut do kilku godzin.
Oczywiście, kluczowe znaczenie ma zastosowana technika ataku. W przypadku metody słownikowej lub hybrydowej, czas ten będzie drastycznie krótszy niż w przypadku ataku typu brute-force (przeszukanie całej przestrzeni możliwych rozwiązań). Nie można wykluczyć, że atakujący dysponują słownikami, czyli listą najczęściej używanych haseł lub danych uwierzytelniających pochodzących z wycieków. W tej sytuacji, czas potrzebny na odzyskanie haseł może być jeszcze krótszy.
Dlatego w nowoczesnych systemach wdrożono funkcje, które znacząco wydłużają czas łamania pojedynczego skrótu. Mowa o algorytmach takich jak argon2, bcrypt czy też scrypt. W przeciwieństwie do starych algorytmów celowo obciążają one procesor oraz wymagają znacznych nakładów pamięci RAM dla każdego sprawdzanego hasła. Zamiast ułamka mikrosekundy, czas liczenia pojedynczego skrótu wynosi przykładowo 0,5 s. Niby niewiele, jednak ta subtelna zmiana skutecznie zabezpiecza przed masowymi atakami z wykorzystaniem GPU. Próba sprawdzenia miliona haseł ze słownika przestaje trwać sekundy a wymaga miesięcy lub kilku lat ciągłych obliczeń, co czyni atak nieopłacalnym.
W poniższej tabeli przedstawiono czas łamania haseł w zależności od złożoności dla algorytmu argon2.

W ramach kontrastu poniżej przedstawiono zestawienie z czasem łamania haseł dla algorytmu SHA-2.

W tym miejscu warto w kilku słowach wyjaśnić czym jest algorytm argon2 i dlaczego jest tak trudny do “złamania”.
Argon2 jest funkcją wyznaczania klucza (Key Derivation Function – KDF), która w 2015 r. wygrała konkurs Password Hashing Competition. Służy do bezpiecznego przechowywania haseł użytkownika. Główną cechą algorytmu jest możliwość zdefiniowania wymaganej ilości zasobów (pamięci RAM), co znacząco wydłuża czas potrzebny na łamanie haseł za pomocą specjalistycznego sprzętu. Ponadto, cechuje się dużą elastycznością konfiguracji, tzn. pozwala dostosować czas trwania operacji oraz ilość wymaganych zasobów.
Występuje w trzech wersjach:
Współczesne ataki na skróty haseł wygenerowane “bezpiecznymi algorytmami” rzadko polegają na sprawdzeniu całej przestrzeni możliwych rozwiązań. Cyberprzestępcy wykorzystują profilowane słowniki pochodzące z wycieków oraz stosują ataki hybrydowe. Jeżeli użytkownik zastosuje przewidywalny wzorzec, nawet najlepszy algorytm nie zapewnia pełnej ochrony.
Dlatego istotne jest stosowanie odpowiednio skomplikowanych haseł, złożonych z co najmniej czterech nie powiązanych ze sobą słów oraz bezpieczne funkcje skrótu.
Źródło: specopssoft.com
~_secmike