Bcrypt - сколько итераций / стоимость? - PullRequest
10 голосов
/ 02 октября 2011

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

Существуют ли какие-либо официальные стандарты для определения стоимости?

Ответы [ 3 ]

10 голосов
/ 02 октября 2011

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

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

9 голосов
/ 02 октября 2011

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

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

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

3 голосов
/ 10 октября 2012

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

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

...