Оптимальный коэффициент работы bcrypt

Какой будет идеальный коэффициент работы bcrypt для хэширования паролей.

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

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

Как вы решаете компромисс между безопасностью грубой силы и эксплуатационными расходами?

Ответ 1

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

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

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

Определите, сколько времени вы хотите, чтобы перевести пароль пользователя. Например, для некоторого общего словарного слова создание вашей учетной записи, вероятно, уже предупредило их, что их пароль был слабым. Если это одно из 1000 распространенных слов, скажем, и для каждого из них требуется атакующий 0.1s, который покупает их 100 с (ну, некоторые слова более распространены...). Если пользователь выбрал "общее словарное слово" + 2 номера, то это более двух часов. Если ваша база данных паролей скомпрометирована, а злоумышленник может получить всего несколько сотен паролей в день, вы купили большую часть своих пользователей часов или дней, чтобы безопасно менять свои пароли. Это вопрос покупки их времени.

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