Согласно Шпаргалу OWASP для хранения паролей , рекомендуется:
- Argon2 - победитель конкурса хэширования паролей и должен рассматриваться как ваш первый выбордля новых приложений:
- PBKDF2, когда требуется сертификация FIPS или корпоративная поддержка на многих платформах;
- scrypt, где необходимо сопротивление любым / всем аппаратно ускоренным атакам, но поддержка не нужна.
- bcrypt, где PBKDF2 или поддержка scrypt недоступны.
MD5 и SHA1 не защищены в большинстве случаев использования, связанных с безопасностью, поскольку можно обнаружить конфликты с этими алгоритмами.Другими словами, учитывая входные данные и их хеш-значение, можно получить другой входной сигнал с тем же хеш-значением.
Группа алгоритмов хеширования SHA-2 защищена для многих случаев использования безопасности, но не для пароляхэширование, потому что они невероятно быстрые по сравнению с вышеупомянутыми алгоритмами.А производительность - это то, чего мы не хотим для хэширования паролей, потому что это поможет злоумышленнику выполнить атаку методом перебора, попробовав широкий диапазон паролей за короткий промежуток времени.
ВышеПоэтому 4 алгоритма должны быть дорогими с точки зрения памяти, вычислительной мощности и времени.Эти значения обычно параметризованы так, что они могут быть настроены на высокое значение, поскольку новые технологии улучшают вычислительную мощность с течением времени.Поэтому при использовании этих алгоритмов важно правильно выбирать значения коэффициента работы.Установка очень низкого значения valur может помешать достижению цели.
В дополнение к этому следует также использовать соль.
Снова из того же источника OWASP:
Соли служат двум целям:
- препятствуют тому, чтобы защищенная форма открывала два идентичных идентификатора, и
- увеличивают энтропию, подаваемую на функцию защиты, не полагаясь на сложность учетных данных.
Вторая цель состоит в том, чтобы сделать предварительно вычисленные атаки поиска для отдельных учетных данных и основанные на времени атаки непопулярным населением