SHA-256 vs SHA-512: którą funkcję skrótu wybrać?
SHA-256 i SHA-512 należą obie do rodziny SHA-2, zaprojektowanej przez NSA i ustandaryzowanej przez NIST. Produkują skrót o stałym rozmiarze z dowolnych danych i są dziś uważane za bezpieczne. Różnica tkwi w rozmiarze skrótu, wydajności zależnej od architektury oraz kilku szczegółach bezpieczeństwa. Oto którą wybrać i dlaczego.
Rodzina SHA-2
SHA-2 obejmuje kilka wariantów (SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256), które dzielą tę samą strukturę, ale różnią się rozmiarem słów i skrótu. Liczba wskazuje rozmiar skrótu w bitach: SHA-256 produkuje 256 bitów (64 znaki szesnastkowe), SHA-512 produkuje 512 (128 znaków).
Możesz obliczyć te skróty naszym generatorem skrótów lub rozpoznać algorytm na podstawie skrótu za pomocą identyfikatora skrótów. Nie mylić z MD5, przestarzałym pod względem bezpieczeństwa (zobacz nasze porównanie MD5 vs SHA-256).
SHA-256
SHA-256 działa na słowach 32-bitowych i produkuje skrót 256-bitowy. To najbardziej rozpowszechniona funkcja skrótu na świecie: certyfikaty TLS, podpisy Bitcoina, weryfikacja integralności plików, git. Krótszy skrót czyni go praktycznym do przechowywania, wyświetlania i przesyłania.
- Skrót: 256 bitów, 64 znaki szesnastkowe
- Słowa: 32 bity, optymalne na platformach 32-bitowych i w systemach wbudowanych
- Adopcja: najszersza, uniwersalne wsparcie
SHA-512
SHA-512 działa na słowach 64-bitowych i produkuje skrót 512-bitowy. Wbrew intuicji, na nowoczesnym procesorze 64-bitowym jest często szybszy niż SHA-256 dla dużych wolumenów, ponieważ przetwarza więcej danych na rundę. Dłuższy skrót oferuje także wyższy margines bezpieczeństwa.
- Skrót: 512 bitów, 128 znaków szesnastkowych
- Słowa: 64 bity, optymalne na architekturach 64-bitowych
- Natywna odporność: SHA-512 nie jest podatny na atak length extension przy użyciu jego skróconych wariantów (SHA-512/256)
Tabela porównawcza
| Kryterium | SHA-256 | SHA-512 |
|---|---|---|
| Rozmiar skrótu | 256 bitów (64 hex) | 512 bitów (128 hex) |
| Rozmiar słów | 32 bity | 64 bity |
| Szybkość na CPU 64-bit | Dobra | Często wyższa |
| Szybkość na 32-bit / wbudowane | Wyższa | Wolniejsza |
| Margines bezpieczeństwa | Bardzo wysoki | Jeszcze wyższy |
| Length extension | Podatny | Podatny (poza skróconymi wariantami) |
| Adopcja | Uniwersalna | Szeroka |
Wydajność
Wydajność zależy od architektury. Na serwerze lub laptopie 64-bitowym SHA-512 może przewyższać SHA-256 o 20 do 50% na dużych plikach, ponieważ przetwarza większe bloki na iterację. Na mikrokontrolerze 32-bitowym lub w środowisku ograniczonym SHA-256 odzyskuje przewagę.
W praktyce dla małych danych wejściowych (hasło, identyfikator) różnica jest pomijalna. Staje się mierzalna dopiero przy dużych wolumenach lub wysokich przepustowościach.
Kiedy wybrać jedną lub drugą
Wybierz SHA-256, gdy
- Dążysz do maksymalnej kompatybilności i kompaktowego formatu
- Celujesz w systemy wbudowane, IoT lub platformy 32-bitowe
- Weryfikujesz integralność plików lub podpisujesz certyfikaty
- Krótki skrót ułatwia wyświetlanie i przechowywanie
Wybierz SHA-512, gdy
- Haszujesz duże wolumeny na serwerach 64-bitowych
- Chcesz najszerszy możliwy margines bezpieczeństwa
- Używasz SHA-512/256, aby oprzeć się atakowi length extension, zachowując 256 bitów
Ważne: żadna z dwóch nie jest odpowiednia do haszowania haseł. Do tego użyj bcrypt lub Argon2, zaprojektowanych tak, by były wolne i solone.
Zalecenie
Do ogólnego użytku SHA-256 jest wyborem domyślnym: uniwersalnie wspierany, kompaktowy, w pełni bezpieczny. Wybierz SHA-512, jeśli haszujesz duże wolumeny na sprzęcie 64-bitowym lub jeśli chcesz dodatkowy margines bezpieczeństwa. A do przechowywania haseł zwróć się ku dedykowanej funkcji takiej jak Argon2id, nigdy ku samemu SHA-2.
Najczęściej zadawane pytania
Czy SHA-512 jest bezpieczniejszy niż SHA-256?
SHA-512 oferuje wyższy teoretyczny margines bezpieczeństwa dzięki dłuższemu skrótowi, ale SHA-256 jest już daleko poza zasięgiem obecnych ataków. Dla niemal wszystkich zastosowań oba są uważane za bezpieczne.
Dlaczego SHA-512 może być szybszy niż SHA-256?
Ponieważ operuje na słowach 64-bitowych i przetwarza większe bloki na rundę. Na natywnym procesorze 64-bitowym kompensuje to dodatkowy koszt i często czyni go szybszym na dużych wolumenach. Na 32 bitach jest odwrotnie.
Czy mogę haszować hasła za pomocą SHA-256 lub SHA-512?
Nie, to byłby błąd. Te funkcje są szybkie, więc łatwe do zaatakowania metodą brute force. Użyj bcrypt lub Argon2id, które są celowo wolne i zawierają sól.
Czym jest SHA-512/256?
To SHA-512, którego skrót jest skrócony do 256 bitów, z innymi wartościami inicjalizującymi. Otrzymujesz skrót 256-bitowy, szybkość SHA-512 na 64 bitach i natywną odporność na atak length extension.