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-біт і природну стійкість до атаки подовженням довжини.