Хеш — значение фиксированной длины, которое односторонняя хеш-функция вычисляет из данных: одинаковый вход всегда даёт одинаковый хеш, а восстановить исходные данные по нему нельзя.
Как работают хеш-функции
Криптографическая хеш-функция принимает данные любого размера — пароль, файл, образ диска — и выдаёт короткий «отпечаток», например 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 и надёжнее.