Оптимальный коэффициент работы bcrypt - PullRequest
78 голосов
/ 14 декабря 2010

Что было бы идеальным рабочим фактором bcrypt для хэширования пароля.

Если я использую коэффициент 10, для хэширования пароля на моем ноутбуке требуется около 1 с.Если мы получим очень загруженный сайт, это превращается в большую работу, просто проверяющую пароли пользователей.

Возможно, было бы лучше использовать коэффициент работы 7, уменьшив общую работу хэша паролей примерно до0,01 с за вход в систему с ноутбука?

Как вы решаете вопрос о соотношении безопасности перебора и эксплуатационных расходов?

1 Ответ

99 голосов
/ 22 января 2011

Помните, что значение хранится в пароле: $2a$(2 chars work)$(22 chars salt)(31 chars hash). Это не фиксированное значение.

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

Хитрость заключается в том, чтобы держать в будущем примерно одинаковое количество времени вместе с законом Мура. Число - log2, поэтому каждый раз, когда скорость компьютера увеличивается вдвое, добавьте 1 к номеру по умолчанию.

Решите, сколько времени вы хотите, чтобы взломать пароль пользователя. Например, для некоторых общих слов в словаре создание вашей учетной записи уже предупредило их, что их пароль был слабым. Скажем, если это одно из 1000 распространенных слов, и каждому тестирующему требуется 0,1 с, который покупает их по 100 с (ну, некоторые слова встречаются чаще ...). Если пользователь выбрал «общее словарное слово» + 2 цифры, это более двух часов. Если ваша база паролей скомпрометирована, и злоумышленник может получить только несколько сотен паролей в день, вы купили большинство своих пользователей часами или днями, чтобы безопасно сменить их пароли. Это вопрос выигрыша их времени.

http://www.postgresql.org/docs/8.3/static/pgcrypto.html несколько раз для взлома паролей, чтобы вы могли рассмотреть. Конечно, в паролях, которые они перечисляют, есть случайные буквы. Словарные слова ... Практически говоря, вы не можете спасти парня с паролем 12345.

...