encyklopedia.space

Hash

Hash (ang. hash, pol. skrót lub wartość mieszająca) – w informatyce i kryptografii jest to wynik działania funkcji mieszającej (ang. hash function) na danych wejściowych dowolnej długości, którego długość jest stała i znacznie krótsza niż wejście. Dzięki temu hash pozwala w efektywny sposób identyfikować, porównywać i przechowywać duże ilości danych.

Definicja

Funkcja kryptograficzna lub algorytm hashujący przyjmuje dowolny ciąg bajtów i zwraca ciąg o stałej długości, zwany wartością hash lub skrótem. Typowy wynik ma postać ciągu szesnastkowego, np. 5d41402abc4b2a76b9719d911017c592 (hash MD5 słowa „hello”).

Historia

Pierwsze praktyczne zastosowania funkcji mieszających pojawiły się w latach 19701980 w kontekście szybkiego wykrywania duplikatów plików i optymalizacji baz danych. W 1991 roku powstał algorytm MD5, a w 1995 – rodzina SHA‑1, które stały się podstawą nowoczesnych systemów bezpieczeństwa.

Rodzaje funkcji hash

  • Funkcje kryptograficzne – zapewniają jednokierunkowość, silną odporność na kolizje i trudność odwrócenia. Przykłady: SHA‑256, SHA‑3, BLAKE2.
  • Funkcje niekryptograficzne – projektowane pod kątem szybkości i równomiernego rozkładu w strukturach danych. Przykłady: MurmurHash, CityHash, CRC.

Właściwości funkcji hash

  • Deterministyczność – identyczne dane wejściowe zawsze dają ten sam hash.
  • Jednokierunkowość (dotyczy funkcji kryptograficznych) – odwrócenie procesu jest praktycznie niemożliwe.
  • Rozproszenie – małe zmiany w danych wejściowych powodują drastyczną zmianę wyniku (efekt lawiny).
  • Niska kolizyjność – ryzyko powstania dwóch różnych danych o tym samym hash jest minimalne.

Zastosowania

Przechowywanie haseł

W systemach Linux i Windows hasła użytkowników nie są przechowywane w postaci jawnej, lecz jako hash wraz z solą, co zwiększa bezpieczeństwo przed atakami typu „brute‑force”.

Sprawdzanie integralności danych

Hash jest wykorzystywany do weryfikacji integralności plików (np. przy pobieraniu oprogramowania) oraz w protokołach TLS do zapewnienia integralności transmisji.

Struktury danych

W bazach danych i językach programowania hash służy do implementacji tablic mieszających, które umożliwiają szybkie wyszukiwanie, wstawianie i usuwanie elementów (średnia złożoność O(1)).

Systemy kontroli wersji

System Git identyfikuje każdy obiekt (commit, drzewo, blob) przy pomocy SHA‑1 (obecnie przechodzi na SHA‑256). Dzięki temu można łatwo wykrywać zmiany i rozwiązywać konflikty.

Technologie blockchain

W blockchain hash łączy kolejne bloki w łańcuch, zapewniając nieodwracalność i odporność na manipulacje.

Wyszukiwanie tekstu

Algorytm Rabin‑Karp używa hash do szybkiego porównywania podciągów w dużych tekstach.

Popularne algorytmy

  • MD5 – 128‑bitowy skrót, obecnie uznawany za niebezpieczny ze względu na łatwe kolizje.
  • SHA‑1 – 160‑bitowy, stopniowo wycofywany w systemach bezpieczeństwa.
  • SHA‑256 – 256‑bitowy skrót, szeroko stosowany w certyfikatach i blockchain.
  • SHA‑3 – najnowszy standard NIST, oparty na konstrukcji Keccak.
  • BLAKE2 – wysokowydajny, bezpieczny i szybki zamiennik SHA‑2.
  • CRC (Cyclic Redundancy Check) – prosty, niekryptograficzny kod wykrywania błędów.
  • MurmurHash – szybka funkcja niekryptograficzna używana w systemach bazodanowych.

Implementacje i biblioteki

W językach programowania dostępne są gotowe biblioteki:

  • Python: hashlib – obsługa MD5, SHA‑1, SHA‑256, SHA‑3 i innych.
  • Java: java.security.MessageDigest – interfejs do funkcji hash.
  • C/C++: biblioteka OpenSSL oraz libsodium (BLAKE2, SHA‑2).
  • JavaScript: crypto.subtle w przeglądarkach oraz pakiet crypto w Node.js.

Zagrożenia i słabości

Choć hash jest potężnym narzędziem, niewłaściwy wybór algorytmu może prowadzić do:

  • Kolizji – sytuacji, w której dwa różne wejścia dają identyczny hash (np. w MD5 i SHA‑1).
  • Ataków słownikowych i tęczowych (rainbow tables) – umożliwiających szybkie odgadnięcie haseł przy braku sali.
  • Użycia przestarzałych funkcji – co osłabia bezpieczeństwo systemów operacyjnych i aplikacji internetowych.

Przyszłość i alternatywy

Wraz ze wzrostem mocy obliczeniowej rozwijane są nowe funkcje, które łączą wysoką bezpieczeństwo z dużą wydajnością, np. BLAKE3 oraz SHA‑3. W systemach rozproszonych i technologiach blockchain rośnie zapotrzebowanie na hash‑funkcje odporniejsze na ataki kwantowe.

Powiązane pojęcia

Więcej informacji można znaleźć w następujących artykułach encyklopedycznych: