Ethical Hacking Academy · Lekcja

Haszowanie

MD5, SHA, bcrypt

Lekcja 2 z 413 kroki

Haszowanie to bezpłatna lekcja Ethical Hacking Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Ethical Hacking Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ethical Hacking Academy zawiera 4 lekcji w sumie.

Czym jest skrót?

Funkcja skrótu przyjmuje dane wejściowe o dowolnym rozmiarze i generuje wynik o stałym rozmiarze, nazywany streszczeniem. Te same dane wejściowe zawsze dają to samo streszczenie.

Co najważniejsze, tworzenie skrótu jest operacją jednokierunkową. Nie można matematycznie odtworzyć danych wejściowych na podstawie streszczenia. Właśnie to odróżnia skróty od kodowania i szyfrowania.

Właściwości dobrego skrótu

Kryptograficzna funkcja skrótu powinna być:

  • Deterministyczna: te same dane wejściowe dają ten sam wynik.
  • Szybka w obliczaniu (w przypadku ogólnych funkcji skrótu), ale najlepiej powolna w przypadku haseł.
  • Odporna na odtworzenie przedobrazu: na podstawie streszczenia nie można znaleźć danych wejściowych.
  • Odporna na kolizje: trudno znaleźć dwa dane wejściowe o tym samym streszczeniu.
  • Wykazująca efekt lawinowy: zmiana jednego bitu odwraca około połowy bitów wyniku.

MD5

MD5 generuje 128-bitowe streszczenie (32 znaki szesnastkowe). Jest szybki i historycznie często używany, ale został złamany kryptograficznie: istnieją praktyczne ataki na kolizje.

Nigdy nie należy używać MD5 do celów bezpieczeństwa. Nadal można go spotkać w sumach kontrolnych plików i starszych systemach, dlatego często jest celem podczas testów bezpieczeństwa.

echo -n 'password' | md5sum
# 5f4dcc3b5aa765d61d8327deb882cf99

Rodzina SHA

Rodzina SHA (Secure Hash Algorithm) jest bardziej odporna:

  • SHA-1: 160 bitów. Obecnie uznawany za złamany (atak kolizyjny „SHADOW HAMMER” / SHAttered). Należy go unikać.
  • SHA-2: obejmuje SHA-256 i SHA-512. Jest szeroko używany i obecnie bezpieczny.
  • SHA-3: nowsza konstrukcja oparta na Keccak, stanowiąca alternatywę dla SHA-2.
echo -n 'password' | sha256sum
# 5e884898da28047151d0e56f8dc629...

Tworzenie skrótu to nie szyfrowanie

Szyfrowanie można odwrócić za pomocą klucza. Tworzenia skrótu nie można odwrócić w ogóle. Właśnie dlatego skróty służą do przechowywania haseł: serwer nigdy nie potrzebuje oryginału.

Podczas logowania serwer tworzy skrót z wpisanego hasła i porównuje go z zapisanym skrótem. Jeśli są zgodne, użytkownik zostaje uwierzytelniony. Hasło w postaci jawnej nigdy nie jest przechowywane.

Problem: tablice tęczowe

Ponieważ funkcja skrótu jest deterministyczna, skrót wartości „password” jest taki sam dla każdego użytkownika. Atakujący zawczasu obliczają ogromne tablice przekształceń skrótu na tekst jawny, nazywane tablicami tęczowymi.

Jeśli dwóch użytkowników korzysta z tego samego hasła, ich zapisane skróty są identyczne, co ujawnia ten fakt. Same proste i szybkie funkcje skrótu, takie jak MD5 czy SHA-256, nie nadają się do przechowywania haseł.

Solenie

Salt to unikatowa, losowa wartość dodawana do każdego hasła przed obliczeniem skrótu. Dzięki temu:

  • Identyczne hasła generują różne skróty.
  • Wstępnie obliczone tablice tęczowe stają się bezużyteczne.

Salt jest przechowywany razem ze skrótem — nie jest tajny. Jego zadaniem jest zapewnienie unikatowości każdego skrótu i zmuszenie atakujących do łamania każdego z nich osobno.

stored = salt + hash(salt + password)
# salt is random and unique per user

bcrypt: rozwiązanie stworzone do haseł

bcrypt został zaprojektowany specjalnie do przechowywania haseł. Jest celowo wolny i zawiera konfigurowalny współczynnik kosztu (współczynnik pracy), który sprawia, że wraz z rozwojem sprzętu działa coraz wolniej.

Skrót bcrypt zawiera w jednym łańcuchu algorytm, koszt i salt. Powolność jest zaletą: ogranicza szybkość, z jaką atakujący mogą zgadywać hasła.

$2b$12$R9h/cIPz0gi.URNNX3kh2OPST9/PgBkqquzi.Ss7KIUgO2t0jWMUW
# $2b$ = bcrypt, 12 = cost factor, then salt + hash

Inne wolne funkcje skrótu

Oprócz bcrypt do nowoczesnych metod tworzenia skrótów haseł należą:

  • scrypt: wymaga dużej ilości pamięci, dzięki czemu jest odporny na ataki z użyciem GPU i ASIC.
  • Argon2: zwycięzca konkursu Password Hashing Competition, z konfigurowalnymi parametrami czasu i pamięci. Obecnie jest to zalecany wybór.
  • PBKDF2: wykonuje szybką funkcję skrótu wiele tysięcy razy; jest akceptowalny, ale słabszy od powyższych rozwiązań.

HMAC i integralność

Skróty służą także do zapewniania integralności, a nie tylko do obsługi haseł. HMAC (Hash-based Message Authentication Code) łączy funkcję skrótu z tajnym kluczem, aby weryfikować zarówno integralność, jak i autentyczność wiadomości.

Sumy kontrolne plików (często SHA-256) pozwalają sprawdzić, czy pobrany plik nie został zmodyfikowany. Jako haker może Pan/Pani wykorzystać niezgodne sumy kontrolne do wykrywania zmodyfikowanych lub złośliwych plików.

Skróty w praktyce

Jako haker będzie Pan/Pani nieustannie spotykać skróty:

  • /etc/shadow w systemie Linux przechowuje posolone skróty haseł z prefiksami takimi jak $6$ (SHA-512) lub $2b$ (bcrypt).
  • Windows przechowuje skróty NTLM w bazie SAM.
  • Aplikacje internetowe przechowują skróty haseł w tabelach użytkowników.

Rozpoznanie prefiksu od razu informuje o użytym algorytmie i właściwej strategii łamania.

$6$rounds=5000$salt$hash   # SHA-512 crypt
$2b$12$saltandhash...      # bcrypt

Szybki sprawdzian

Proszę wybrać najbezpieczniejszą metodę przechowywania haseł użytkowników.

Podsumowanie

Wie już Pan/Pani, że:

  • Tworzenie skrótu to jednokierunkowa, deterministyczna transformacja o stałym rozmiarze, różniąca się od kodowania i szyfrowania.
  • MD5 i SHA-1 są złamane; do ogólnego sprawdzania integralności należy używać SHA-256.
  • Do haseł należy stosować wolne, posolone algorytmy: bcrypt, scrypt lub Argon2.
  • Salts niweczą skuteczność tablic tęczowych, a HMAC zapewnia integralność z użyciem klucza.

W następnej części pozna Pan/Pani szyfrowanie symetryczne i asymetryczne z użyciem AES i RSA.

Bezpłatny start

Ucz się Ethical Hacking Academy dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
31
Lekcje
111

Często zadawane pytania

Czy lekcja „Haszowanie” jest bezpłatna?

Tak — pełny tekst „Haszowanie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Ethical Hacking Academy, przejdź na CoddyKit PRO. Kurs Ethical Hacking Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Haszowanie”?

MD5, SHA, bcrypt Ćwiczysz Ethical Hacking Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Ethical Hacking Academy?

Nie wymagamy żadnego doświadczenia. Ethical Hacking Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Haszowanie”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Ethical Hacking Academy?

Tak. Każda lekcja Ethical Hacking Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Kodowanie a szyfrowanie
  2. Haszowanie
  3. Szyfrowanie symetryczne i asymetryczne
  4. Łamanie hashy
← Powrót do Ethical Hacking Academy