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.
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 unmodifiedZastosowania funkcji skrótu: podpisy cyfrowe
Podczas podpisywania dokumentów nie szyfrujemy całego dokumentu kluczem prywatnym (byłoby to zbyt wolne). Zamiast tego:
- Obliczamy skrót dokumentu (szybko)
- Szyfrujemy skrót kluczem prywatnym (mały rozmiar, szybko)
- 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.
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
- Szyfrowanie symetryczne: AES i szyfry strumieniowe
- Szyfrowanie asymetryczne: RSA i krzywe eliptyczne
- Funkcje skrótu: SHA-256 i nie tylko
- Podpisy cyfrowe i certyfikaty