2014-01-16 2 views
-1

У меня сейчас есть веб-приложение Grails, которое использует SHA-256 с уникальными солями для хранения пароля пользователя в моей базе данных. Недавно я обновил веб-приложение до самой последней версии плагина Spring Security (2.0RC2) для Grails (2.3.4). Новый плагин по умолчанию использует BCrypt. Мой вопрос в том, какой из них лучше, и зачем они переключаются на BCrypt. Я читал статьи о людях, которые любят BCrypt и людей, которые ненавидят BCrypt. Один из ближайших профессионалов, которых я вижу, заключается в том, что соление встроено в алгоритм, поэтому мне не нужно было хранить соли отдельно. Я также заметил, что вы можете установить итерации на SHA-256. Из того, что я читал, таких людей, как BCrypt, вы также можете установить итерации для него, но как это отличается от установки итераций SHA-256? Один блог сказал, что PBKDF2 был намного лучшим выбором, потому что он был протестирован. Но я также слышал то же самое о Bcrypt ...BCrypt vs. SHA-256 для будущего Интернета

ответ

3

Там нет «они», это только у меня :)

Вы можете установить количество итераций для SHA-256, но это не делает медленные вещи вниз как увеличение значения logrounds для bcrypt. Вы можете сделать bcrypt очень медленным, и это делает регистрацию медленнее для пользователей, но это не очень важно в целом. Но это значительно повышает стоимость перехваченных паролей, если ваша база данных скомпрометирована.

+1

В конце фактор затрат для bcrypt и счетчик итераций PBKDF2 просто определяют постоянное замедление времени. Этот bcrypt использует логарифмический масштаб, не имеет большого значения - пока количество итераций достаточно велико, PBKDF2 может сравниться с замедлением. Коэффициент затрат bcrypt может быть проще для пользователя, но он не должен иметь значения для безопасности (учитывая, что c - счетчик итераций в PBKDF - может иметь достаточно высокое значение для данной реализации, конечно). –

4

Оба bcrypt и PBKDF2 являются хорошо известными алгоритмами. Пока вы используете их в пределах границ, любой из них должен быть в порядке.

Вы можете, конечно, использовать SHA-256 для создания аналогичной схемы с использованием количества итераций и соли. Но если вы не придумаете свои собственные доказательства безопасности, тесты, сообщество и т. Д., Вы должны использовать известный или стандартизованный алгоритм, если он доступен.

PBKDF2 использует хэш-алгоритм под ним, поэтому его можно настроить для SHA-256 - если реализация позволяет.


Единственный другой выбор на данный момент - это шифрование. scrypt, возможно, безопаснее, потому что он опирается на относительно большой объем памяти. Из-за этого скручивание сложнее распараллеливать, например. используя векторную машину, такую ​​как графический процессор.


К настоящему времени в password hashing competition закончил, и поставил некоторые интересные альтернативы, такие как победитель, Argon 2.

Смежные вопросы