Ответ
Некриптостойкая хеш-функция — это алгоритм, который преобразует данные произвольной длины в фиксированную строку (хеш), но не предназначен для использования в криптографических целях, таких как защита паролей или цифровые подписи.
Ключевые недостатки, делающие их непригодными для безопасности:
- Уязвимость к коллизиям: Высокая вероятность того, что два разных входных набора данных дадут одинаковый хеш. Для MD5 и SHA-1 существуют практические методы генерации коллизий.
- Обратимость (предсказуемость): По хешу можно относительно быстро подобрать исходные данные или найти данные, дающие такой же хеш (атаки по прообразу и второму прообразу).
- Высокая скорость вычисления: Хотя это плюс для некриптографических задач, это минус для защиты паролей, так как позволяет быстро перебирать миллиарды вариантов (атака грубой силой).
Типичные примеры: MD5, SHA-1 (сейчас считается ослабленным).
Где они применимы в DevOps и безопасность не является приоритетом:
- Контроль целостности файлов при скачивании (например, для проверки, что файл не был повреждён при передаче, но не для защиты от злоумышленника).
- Внутренние идентификаторы в системах (хеш от содержимого файла для кэширования).
- Проверка данных в распределённых системах (например, в консистентном хешировании).
Пример (почему НЕЛЬЗЯ использовать для паролей):
# Быстрое вычисление хеша MD5 (небезопасно)
echo -n "mySecretPassword123" | md5sum
# Результат: 1a79a4d60de6718e8e5b326e338ae533
# Такой хеш мгновенно найдётся в радужных таблицах.
Что использовать вместо для безопасности:
- Для хеширования паролей: Специализированные, медленные алгоритмы с "солью" — bcrypt, scrypt, Argon2.
- Для криптографической целостности и подписей: SHA-256, SHA-512 (семейство SHA-2) или SHA-3.
- Для HMAC: В сочетании с секретным ключом.