Задать вопрос

Чем плох md5(md5($pass)) для пароля?

BCRYPT - 0.12169909
ARGON2I - 0.46269512
md5(md5($pass)) - 0.00000405
  • Вопрос задан
  • 2428 просмотров
Подписаться 7 Простой 14 комментариев
Ответ пользователя danSamara К ответам на вопрос (5)
@danSamara
По каким критериям оцениваем?

1. По скорости - лучший.
2. По криптостойкости - худший.
3. По коллизиям - один из худших.
4. По соли - критерий неприменим.

1. Когда важна скорость, и не важны прочие критерии, например при подсчёте контрольных сумм - MD5, наверное, один из лучших. Хэшировать пароли тоже можно - например кратко живущие длинные токены с большой вариативностью - никто в здравом уме не будет подбирать хэш для 20 символов, срок жизни которых - 5-10 минут. Хотя я бы и для токенов использовал что-то другое - тот же sha, от греха подальше )

2. Криптостойкость у MD5 низкая. Вложенность (md5(md5(...))) её только уменьшает, увеличивая коллизии и не сильно влияя на скорость перебора - на современных картах она уже составляет сотни гигахэшей. Может уже перешагнули за черту терра - не сильно за трендами слежу.

3. Коллизии. Наличие коллизий, по сути, увеличивает скорость перебора. С другой стороны - не позволяет точно определить оригинальный пароль, т.к. при наличии нескольких подходящих под определённый хэш паролей невозможно определить какой именно использовал юзер. Однако ничего не мешает перебирать эти варианты на других сервисах.

4. Соль к хэшированию не имеет прямого отношения и применяется только для исключения возможности использования атакующим радужных таблиц. Однако перебор по словарю и перебор по словарю с вариантами (добавление символов до/после слов, склейка и т.д.) вполне возможен и соль на него не влияет никак. В случае MD5, опять же, это очень быстро.
Ответ написан
Комментировать