Cyber Security Academy · Lekcja

Funkcje skrótu: SHA-256 i nie tylko

Poznają Państwo właściwości kryptograficznych funkcji skrótu: odporność na kolizje, odporność na ataki przedobrazowe oraz ich zastosowania.

Lekcja 3 z 413 kroki

Funkcje skrótu: SHA-256 i nie tylko to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 3 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 Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Czym jest kryptograficzna funkcja skrótu

Kryptograficzna funkcja skrótu przyjmuje dane wejściowe o dowolnej długości i generuje wynik o stałej długości (skrót). Musi być deterministyczna, szybka w obliczaniu, odporna na odtworzenie preobrazu (nie można jej odwrócić), odporna na kolizje (nie można znaleźć dwóch danych wejściowych o tym samym skrócie) oraz wykazywać efekt lawinowy (mała zmiana → całkowicie inny skrót).

Rodzina SHA-2

Rodzina SHA-2 (zaprojektowana przez NSA i ustandaryzowana przez NIST) obejmuje:

  • SHA-256 — wynik 256-bitowy, szeroko stosowany
  • SHA-384 — wynik 384-bitowy
  • SHA-512 — wynik 512-bitowy, szybszy na procesorach 64-bitowych

SHA-256 jest używany w Bitcoinie, certyfikatach TLS i identyfikatorach commitów Git.

Rodzina SHA-3

SHA-3 wykorzystuje całkowicie inną konstrukcję (konstrukcję gąbki Keccak) niż SHA-2. Został ustandaryzowany jako rozwiązanie zapasowe na wypadek wykrycia słabości SHA-2. SHA-3 nie jest szeroko wdrożony, ale jest używany w niektórych protokołach i urządzeniach kryptograficznych.

MD5 i SHA-1: złamane

Nie należy używać MD5 ani SHA-1 do celów związanych z bezpieczeństwem:

  • MD5: kolizję można znaleźć w kilka sekund za pomocą powszechnie dostępnego sprzętu
  • SHA-1: pierwszą praktyczną kolizję wykazano w 2017 roku (SHAttered)

Nadal nadają się do sum kontrolnych niezwiązanych z bezpieczeństwem (na przykład deduplikacji plików), ale nie do zapewniania integralności.

Zastosowania funkcji skrótu: integralność plików

Weryfikowanie pobranych plików:

sha256sum ubuntu-24.04.iso
# Compare with the hash published on the official site
# If hashes match, file is unmodified

Zastosowania funkcji skrótu: podpisy cyfrowe

Podczas podpisywania dokumentów nie szyfrujemy całego dokumentu kluczem prywatnym (byłoby to zbyt wolne). Zamiast tego:

  1. Obliczamy skrót dokumentu (szybko)
  2. Szyfrujemy skrót kluczem prywatnym (mały rozmiar, szybko)
  3. Odbiorca odszyfrowuje go kluczem publicznym i porównuje z samodzielnie obliczonym skrótem

HMAC: kluczowany skrót do zapewniania integralności

HMAC (kod uwierzytelniania wiadomości oparty na funkcji skrótu) łączy funkcję skrótu z tajnym kluczem, aby wygenerować znacznik uwierzytelniający. Służy do weryfikowania zarówno integralności, jak i autentyczności danych. Jest używany w JWT, uwierzytelnianiu API i TLS.

import hmac, hashlib
mac = hmac.new(key, message, hashlib.sha256).hexdigest()

Ataki rozszerzania długości skrótu

SHA-2 (konstrukcja Merkle’a–Damgårda) jest podatny na ataki rozszerzania długości: znając H(secret+message), można obliczyć H(secret+message+extension) bez znajomości sekretu. HMAC zapobiega temu atakowi. SHA-3 nie jest na niego podatny.

Tabele tęczowe i solenie

Tabela tęczowa zawiera wstępnie obliczone mapowania skrót → dane wejściowe, co umożliwia szybkie wyszukiwanie. Solenie temu zapobiega: dodanie unikalnej losowej wartości do każdego wejścia sprawia, że każdy skrót jest unikalny, dlatego dla każdego wpisu wymagane jest pełne wyszukiwanie brute force zamiast wyszukiwania w tabeli.

Drzewa Merkle’a

Drzewo Merkle’a to drzewo skrótów, w którym każdy węzeł nadrzędny jest skrótem jego węzłów potomnych. Jest używane w łańcuchu bloków Bitcoin, systemie Git i rejestrach Certificate Transparency do wydajnej weryfikacji dużych zbiorów danych bez konieczności pobierania wszystkiego.

Wybór właściwej funkcji skrótu

Wskazówki dotyczące wyboru:

  • Ogólna integralność/sumy kontrolne: SHA-256
  • Przechowywanie haseł: Argon2id, bcrypt (NIE bezpośrednio SHA-256)
  • Uwierzytelnianie wiadomości: HMAC-SHA-256
  • Podpisy cyfrowe: SHA-256 lub SHA-384 jako bazowa funkcja skrótu
  • Należy unikać: MD5 i SHA-1 w zastosowaniach związanych z bezpieczeństwem

Szybkie sprawdzenie: funkcje skrótu

Jaka konstrukcja zapobiega atakom rozszerzania długości, a jednocześnie wymaga tajnego klucza?

Podsumowanie lekcji

Funkcje skrótu generują skróty o stałej długości z danych wejściowych o dowolnej długości. SHA-256 i SHA-512 to obecne standardy. MD5 i SHA-1 są złamane w zastosowaniach związanych z bezpieczeństwem. HMAC dodaje tajny klucz, zapewniając uwierzytelnioną integralność. Do haseł należy używać Argon2/bcrypt. Drzewa Merkle’a rozszerzają zastosowanie skrótów, umożliwiając wydajną weryfikację dużych zbiorów danych.

Bezpłatny start

Ucz się Cyber Security 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
76
Lekcje
303

Często zadawane pytania

Czy lekcja „Funkcje skrótu: SHA-256 i nie tylko” jest bezpłatna?

Tak — pełny tekst „Funkcje skrótu: SHA-256 i nie tylko” 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 Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Funkcje skrótu: SHA-256 i nie tylko”?

Poznają Państwo właściwości kryptograficznych funkcji skrótu: odporność na kolizje, odporność na ataki przedobrazowe oraz ich zastosowania. Ćwiczysz Cyber Security 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ąć Cyber Security Academy?

Nie wymagamy żadnego doświadczenia. Cyber Security 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 3 z 4.

Ile czasu zajmuje lekcja „Funkcje skrótu: SHA-256 i nie tylko”?

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 Cyber Security Academy?

Tak. Każda lekcja Cyber Security 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. Szyfrowanie symetryczne: AES i szyfry strumieniowe
  2. Szyfrowanie asymetryczne: RSA i krzywe eliptyczne
  3. Funkcje skrótu: SHA-256 i nie tylko
  4. Podpisy cyfrowe i certyfikaty
← Powrót do Cyber Security Academy