Хеш-функція перетворює дані будь-якого розміру — один символ або гігабайтний файл — у рядок фіксованої довжини. MD5, SHA-1 і SHA-256 — три покоління одного й того ж підходу, які відрізняються довжиною виходу та стійкістю до атак.
Що спільного в усіх хеш-функціях
Ключова властивість — детермінованість: однакові вхідні дані завжди дають однаковий хеш. Друга властивість — лавинний ефект: зміна одного біта у вхідних даних повністю змінює результат, тож за хешем неможливо зрозуміти, наскільки схожі два вхідні файли.
Чому MD5 і SHA-1 вважаються небезпечними
Для обох алгоритмів знайдені практичні способи створити два різні набори даних з однаковим хешем — так звану колізію. Це робить їх непридатними там, де важлива криптографічна стійкість (цифрові підписи, сертифікати), хоча вони й досі використовуються там, де потрібна лише швидка перевірка цілісності, а не захист від зловмисника.
SHA-256 і сімейство SHA-2
SHA-256 генерує 256-бітний хеш і на сьогодні не має відомих практичних колізій. Він використовується в блокчейнах, TLS-сертифікатах і перевірці цілісності програмного забезпечення, де важлива стійкість до навмисної підробки.
Навіщо це потрібно
- Перевіряти цілісність завантажених файлів порівнянням з опублікованим хешем.
- Створювати короткі унікальні відбитки для великих обсягів даних.
- Розуміти, чому конкретний алгоритм підходить або не підходить для конкретного завдання безпеки.
Чому SHA-3 не замінив SHA-2
SHA-3 обрали переможцем окремого конкурсу NIST на випадок, якби в SHA-2 колись знайшли фундаментальну вразливість — це «страховка» на основі принципово іншої внутрішньої конструкції (Keccak), а не наступник у сенсі заміни. Оскільки практичних атак на SHA-2 досі не знайдено, SHA-256 і SHA-512 лишаються стандартом за замовчуванням у більшості систем, а SHA-3 застосовують точково, де потрібна саме архітектурна різноманітність.