SHA-256 срещу SHA-512: коя хеш функция да изберете?
SHA-256 и SHA-512 принадлежат и двете към семейството SHA-2, проектирано от NSA и стандартизирано от NIST. Те произвеждат отпечатък с фиксиран размер от произволни данни и днес се считат за сигурни. Разликата е в размера на отпечатъка, в производителността според архитектурата и в няколко детайла на сигурността. Ето коя да изберете и защо.
Семейството SHA-2
SHA-2 обединява няколко варианта (SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256), които споделят една и съща структура, но се различават по размера на думите и на отпечатъка. Числото указва размера на отпечатъка в битове: SHA-256 произвежда 256 бита (64 шестнадесетични символа), SHA-512 произвежда 512 (128 символа).
Можете да изчислите тези отпечатъци с нашия генератор на хешове или да разпознаете алгоритъм по отпечатък с идентификатора на хешове. Да не се бърка с MD5, остарял за сигурността (вижте нашето сравнение MD5 срещу SHA-256).
SHA-256
SHA-256 работи с думи от 32 бита и произвежда отпечатък от 256 бита. Това е най-разпространената хеш функция в света: TLS сертификати, подписи на Bitcoin, проверка на целостта на файлове, git. По-краткият ѝ отпечатък я прави удобна за съхранение, показване и предаване.
- Отпечатък: 256 бита, 64 шестнадесетични символа
- Думи: 32 бита, оптимална на 32-битови платформи и вградени системи
- Възприемане: най-широкото, универсална поддръжка
SHA-512
SHA-512 работи с думи от 64 бита и произвежда отпечатък от 512 бита. Противно на интуицията, на модерен 64-битов процесор тя често е по-бърза от SHA-256 за големи обеми, защото обработва повече данни на кръг. По-дългият ѝ отпечатък предлага и по-голям резерв за сигурност.
- Отпечатък: 512 бита, 128 шестнадесетични символа
- Думи: 64 бита, оптимална на 64-битови архитектури
- Естествена устойчивост: SHA-512 не е уязвима на атаката с разширяване на дължината, когато се използват нейните съкратени варианти (SHA-512/256)
Сравнителна таблица
| Критерий | SHA-256 | SHA-512 |
|---|---|---|
| Размер на отпечатъка | 256 бита (64 hex) | 512 бита (128 hex) |
| Размер на думите | 32 бита | 64 бита |
| Скорост на 64-битов CPU | Добра | Често по-висока |
| Скорост на 32 бита / вградени | По-висока | По-бавна |
| Резерв за сигурност | Много висок | Още по-висок |
| Разширяване на дължината | Уязвима | Уязвима (освен съкратените варианти) |
| Възприемане | Универсално | Широко |
Производителност
Производителността зависи от архитектурата. На 64-битов сървър или лаптоп SHA-512 може да надмине SHA-256 с 20 до 50 % при големи файлове, защото обработва по-големи блокове на итерация. На 32-битов микроконтролер или в ограничена среда SHA-256 си връща предимството.
На практика за малки входове (парола, идентификатор) разликата е пренебрежима. Тя става измерима само при значителни обеми или високи скорости.
Кога да изберете едното или другото
Изберете SHA-256, когато
- Целите максимална съвместимост и компактен формат
- Насочвате се към вградени системи, IoT или 32-битови платформи
- Проверявате целостта на файлове или подписвате сертификати
- Кратък отпечатък улеснява показването и съхранението
Изберете SHA-512, когато
- Хеширате големи обеми на 64-битови сървъри
- Искате възможно най-широкия резерв за сигурност
- Използвате SHA-512/256, за да устоите на разширяването на дължината, запазвайки 256 бита
Важно: нито една от двете не е подходяща за хеширане на пароли. За това използвайте bcrypt или Argon2, проектирани да са бавни и осолени.
Препоръка
За общо ползване SHA-256 е изборът по подразбиране: универсално поддържана, компактна, напълно сигурна. Изберете SHA-512, ако хеширате големи обеми на 64-битов хардуер или ако искате допълнителен резерв за сигурност. А за съхранение на пароли се обърнете към специализирана функция като Argon2id, никога само към SHA-2.
Често задавани въпроси
По-сигурна ли е SHA-512 от SHA-256?
SHA-512 предлага по-висок теоретичен резерв за сигурност благодарение на по-дългия си отпечатък, но SHA-256 вече е далеч извън обсега на текущите атаки. За почти всички приложения и двете се считат за сигурни.
Защо SHA-512 може да е по-бърза от SHA-256?
Защото манипулира думи от 64 бита и обработва по-големи блокове на кръг. На нативен 64-битов процесор това компенсира допълнителната цена и често я прави по-бърза при големи обеми. На 32 бита е обратното.
Мога ли да хеширам пароли със SHA-256 или SHA-512?
Не, това би било грешка. Тези функции са бързи, тоест лесни за атака чрез груба сила. Използвайте bcrypt или Argon2id, които са умишлено бавни и включват сол.
Какво е SHA-512/256?
Това е SHA-512, чийто отпечатък е съкратен до 256 бита, с различни начални стойности. Получавате отпечатък от 256 бита, скоростта на SHA-512 на 64 бита и естествена устойчивост на атаката с разширяване на дължината.