У меня сейчас есть веб-приложение 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 для будущего Интернета
ответ
Там нет «они», это только у меня :)
Вы можете установить количество итераций для SHA-256, но это не делает медленные вещи вниз как увеличение значения logrounds для bcrypt. Вы можете сделать bcrypt очень медленным, и это делает регистрацию медленнее для пользователей, но это не очень важно в целом. Но это значительно повышает стоимость перехваченных паролей, если ваша база данных скомпрометирована.
Оба bcrypt и PBKDF2 являются хорошо известными алгоритмами. Пока вы используете их в пределах границ, любой из них должен быть в порядке.
Вы можете, конечно, использовать SHA-256 для создания аналогичной схемы с использованием количества итераций и соли. Но если вы не придумаете свои собственные доказательства безопасности, тесты, сообщество и т. Д., Вы должны использовать известный или стандартизованный алгоритм, если он доступен.
PBKDF2 использует хэш-алгоритм под ним, поэтому его можно настроить для SHA-256 - если реализация позволяет.
Единственный другой выбор на данный момент - это шифрование. scrypt, возможно, безопаснее, потому что он опирается на относительно большой объем памяти. Из-за этого скручивание сложнее распараллеливать, например. используя векторную машину, такую как графический процессор.
К настоящему времени в password hashing competition закончил, и поставил некоторые интересные альтернативы, такие как победитель, Argon 2.
- 1. bcrypt или прогрессивные проходы sha256?
- 2. . NET SHA256 Vs Object.GetHashCode()
- 3. Преобразование SHA256 Пароль Hashing Class для bcrypt в PHP
- 4. Как перейти от шифрования sha256 к bcrypt для php?
- 5. BCrypt vs PBKDF2WithHmacSHA1
- 6. NodeJS: bcrypt vs native crypto
- 7. Javascript Sha256 vs PHP Sha256: Разрывы строк создают разные хэши?
- 8. Какая разница для будущего и будущего?
- 9. Java vs Python HMAC-SHA256 Несоответствие
- 10. For vs. Linq - Производительность против будущего
- 11. завершение будущего в течение будущего будущего
- 12. Реализация SHA256 для J2ME
- 13. .net реализация bcrypt
- 14. Как Bcrypt делает дешифрование медленным?
- 15. ASP.NET - Как развертывать в VS Express 2013 для Интернета?
- 16. Yslow: статические компоненты без датировки будущего будущего
- 17. Планирование Задача для будущего выполнения
- 18. Для постижение будущего с исключениями
- 19. констатируют DST для будущего Дата
- 20. android putextra для будущего оповещения
- 21. Scala: ExecutionContext для будущего понимания
- 22. Модифицированный SHA256 для ПСЧ высева
- 23. Для чего используется SHA256 OID?
- 24. CRC-64 для SHA256 hach
- 25. Шифрование паролей: PBKDF2 (с использованием sha512 x 1000) vs Bcrypt
- 26. Ruby on Rails 4 аутентификация, devise vs bcrypt
- 27. Сравнение хэша BCrypt с хэшем Bcrypt PHP
- 28. Использование bcrypt для пользовательских паролей
- 29. CNG: Когда использовать семейство функций BCrypt * vs NCrypt *
- 30. Проблемы с SSLCipherSuite для исследователя интернета
В конце фактор затрат для bcrypt и счетчик итераций PBKDF2 просто определяют постоянное замедление времени. Этот bcrypt использует логарифмический масштаб, не имеет большого значения - пока количество итераций достаточно велико, PBKDF2 может сравниться с замедлением. Коэффициент затрат bcrypt может быть проще для пользователя, но он не должен иметь значения для безопасности (учитывая, что c - счетчик итераций в PBKDF - может иметь достаточно высокое значение для данной реализации, конечно). –