Здорово, что вас беспокоит сильное хеширование ваших паролей.Я бы порекомендовал использовать библиотеку scrypt .Колин Персиваль, который изобрел его для использования с tarsnap, написал отличное сравнение scrypt, доступного на веб-сайте tarsnap (извините, не могу опубликовать более двух ссылок из-за rep <10) для других известных и сильных PBKDF, таких какbcrypt и PBKDF2, которые отвечают на вопрос о том, почему scrypt может быть выгоднее в использовании по сравнению с другими PBKDF с технической точки зрения. </p>
Я, как правило, осторожен, чтобы запрыгнуть на подножку ради использования криптографии, которой не было вокругв то время и были хорошо проверены крипто-сообществом.Таким образом, у меня была небольшая оговорка по поводу использования scrypt, так как он все еще довольно «новый» в этом отношении.Я проконсультировался с экспертом по безопасности Стивом Гибсоном относительно вопроса через Twitter, и это был его ответ:
@ SGgrc. Есть какие-нибудь мысли по поводу использования bcrypt против scrypt для PBKD для веб-приложения? [sic]
@ geekmuse SCrypt сильнее сопротивляется аппаратному ускорению, чем BCrypt.Так что я бы сказал, если ваше приложение МОЖЕТ использовать его, используйте его.:)
@ SGgrc Сделаю - и спасибо за информацию!Мое единственное сомнение было, по-видимому, менее тщательно проверено крипто-сообществом.
@ geekmuse Понятно, и в криптографии быть консерватором никогда не ошибается.Но в настоящее время SCrypt является лучшим доступным решением для работы с памятью.
Кроме того, встроенная криптография ColdFusion (по крайней мере, Enterprise Edition) использует библиотеку RSA BeSafe, которая в настоящее время сильно подозревается в скомпрометированности из-зав АНБ (в зависимости от того, какой PRNG используется, но все же ...), поэтому вы поступаете правильно, рассматривая некоторые из недавно опубликованных алгоритмов.
Существует сценарий на основе Javaреализация доступна на Github (github.com/wg/scrypt), который должен быть вполне пригоден для использования в вашем приложении ColdFusion.
Наконец, хотя я знаю, что ваш вопрос конкретно упоминает сильную криптографию для паролей пользователей, в зависимости отчувствительности данных, которые вы храните, вы также можете серьезно подумать о шифровании конфиденциальных данных, пока они находятся в покое в базе данных.Таким образом, если ваши данные будут скомпрометированы, вы можете немного отдохнуть, зная, что они были зашифрованы в покое (если ваш ключ также не скомпрометирован, но вы захотите сохранить его в другом месте, чем ваша фактическая база данных, которая есть в вашем приложении).доступ к).