Хеш — значення фіксованої довжини, яке одностороння хеш-функція обчислює з даних: однаковий вхід завжди дає однаковий хеш, а відновити з нього початкові дані неможливо.
Як працюють хеш-функції
Криптографічна хеш-функція приймає дані будь-якого розміру — пароль, файл, образ диска — і видає короткий «відбиток», наприклад 256-бітне значення SHA-256. Хороша функція має три властивості: її не можна обернути, два різні входи практично ніколи не дають однаковий хеш (стійкість до колізій), а зміна одного біта на вході повністю змінює результат.
MD5 і SHA-1 вважаються зламаними: для них отримано практичні колізії, зокрема атаку SHAttered на SHA-1 2017 року. Сьогодні зазвичай використовують SHA-256, SHA-3 і BLAKE2.
Де застосовують хеші
- Перевірка цілісності — порівняння завантаженого файлу з хешем, опублікованим виробником, перевірка оновлень.
- Виявлення загроз — хеші файлів є класичним індикатором компрометації у звітах про загрози.
- Зберігання паролів — сервіси зберігають не пароль, а його хеш із випадковою сіллю.
- Цифрові підписи та блокчейн — підписують і пов’язують у ланцюжки саме хеші.
Атаки на хеші
Хешування — не шифрування, але слабкі хеші паролів однаково «зламують»: отримавши базу, зловмисники запускають брутфорс і словникові атаки на відеокартах за допомогою hashcat або використовують заздалегідь обчислені райдужні таблиці. У мережах Windows атака pass-the-hash дає змогу використати NTLM-хеш напряму, не знаючи пароля.
Рекомендації
Для паролів застосовуйте спеціально повільні алгоритми із сіллю — Argon2, bcrypt або scrypt, але не MD5 і SHA-1. Для перевірки цілісності — SHA-256 і надійніші.