Bcrypt - Сколько итераций/затрат?

Я прочитал несколько статей, в которых говорится, что вы должны установить стоимость не менее 16 (2 16), но другие говорят, что 8 или около того - это нормально.

Есть ли какой-либо официальный стандарт того, насколько высокая стоимость должна быть установлена?

Ответ 1

Стоимость, которую вы должны использовать, зависит от того, насколько быстро ваше оборудование (и реализация).

Вообще говоря, стоимость 8 или 10 штрафа - нет никакой заметной задержки. Он по-прежнему представляет собой огромный уровень защиты и намного лучше, чем любой домашний раствор с использованием SHA и солей. Как только вы обновите свое оборудование, вы можете увеличить стоимость до 16. Я бы сказал, что 16 на данный момент немного высок и, вероятно, приведет к заметным (и раздражающим) задержкам. Но если 16 работает для вас, непременно пойдет на это!

Ответ 2

Вы должны установить количество итераций с максимальным значением, которое все еще "допустимо" в зависимости от используемого вами оборудования и терпения пользователей. Чем выше, тем лучше.

Весь смысл итерации заключается в том, чтобы сделать обработку пароля медленной, то есть сделать ее медленной для злоумышленника, который "пытается" использовать потенциальные пароли. Чем медленнее, тем лучше. К сожалению, повышение количества итераций делает это медленным для вас тоже...

Как правило, подумайте, что злоумышленник сломает пароли, пытаясь в среднем около 10 миллионов (10 7) потенциальных паролей. Если вы установите счетчик итераций так, чтобы хеширование паролей занимало 1 секунду для вас, и вы считаете, что атакующий может получить в десять раз больше вычислительной мощности, чем вы, тогда потребуется 10 7 * 1/10 секунд, то есть около 12 дней. Если вы установите счетчик итераций, чтобы хэширование пароля занимало всего 0,01 секунды на вашем ПК, тогда атакующий выполняется через три часа.

Ответ 3

Стоимость должна зависеть от вашего оборудования.

Вы должны проверить свои настройки затрат и нацелиться на интервал 100 .. 500 ms. Конечно, если вы работаете с высокочувствительной информацией, время может быть 1000 ms или даже больше.