Rails 3 Devise останавливается с большим количеством «растяжек» шифрования - PullRequest
6 голосов
/ 09 мая 2011

Всякий раз, когда я помещаю config.stretches = 20 в config/initializers/devise.rb, время ожидания запросов на шифрование у сервера истекает.

Время отклика терпимо при 15 отрезках, затем быстро увеличивается при увеличении значения отрезков и становится полностью непригодным для использованияв 19. Я не знаю много о влиянии производительности, которое может иметь это значение, но это, конечно, не должно быть экспоненциальным, которое я испытываю.По-видимому, мне не нужно повышать это значение ни для чего, кроме authlogic совместимости, но оно все равно кажется неправильным.

Я проверил это с совершенно новой установкой https://github.com/plataformatec/devise_example/.

Такое поведение наблюдается наUbuntu 11.04, любая версия rails 3.0.x, 3.1.0.beta1, разработка 1.3.1 и 1.3.4, драйверы mysql, pg, sqlite.Это верно как для brcypt, так и для sha1 шифровальщиков.

Ответы [ 2 ]

6 голосов
/ 09 мая 2011

Оказалось, что я не указал параметр :encryptable в своей модели, и Devise игнорировал настройку config.encryptor в молчании и действительно использовал bcrypt, который действительно очень медленный на 20 отрезках.

6 голосов
/ 09 мая 2011

Это ожидаемое поведение (особенно для bcrypt, которое, возможно, лучше).Единственная цель этого значения - снизить производительность для повышения безопасности.

Скорость хэширования не требуется, поскольку это позволяет злоумышленнику пробовать больше вещей за заданный промежуток времени.Эта статья объясняет это: http://codahale.com/how-to-safely-store-a-password/.

В devise, stretch используется для более высокой настройки рабочего фактора, так что пароли занимают много времени при хешировании.Настраиваемый характер необходим по двум причинам: 1) разные приложения имеют разные приемлемые характеристики производительности и 2) по мере того, как компьютеры работают быстрее, вы должны иметь возможность увеличить коэффициент работы, чтобы поддерживать одинаковую производительность.

Идея состоит в том, чтоВы должны настроить это значение как можно выше, сохраняя при этом приемлемую производительность.Цель состоит не в том, чтобы заставить вход в систему занимать 60 секунд, а в том, чтобы сделать это более длительным, чем микросекунда или две.Если вы можете найти значение для натяжений, которое замедляет запросы примерно до 200 миллисекунд или около того, это, вероятно, то, где вы хотите быть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...