6

を入力するたびにconfig.stretches = 20config/initializers/devise.rbサーバーは暗号化要求でタイムアウトになります。

reposnse時間は15ストレッチで耐えられ、ストレッチ値を上げると急速に増加し、19で完全に使用できなくなります。この値が与えるパフォーマンスへの影響についてはよくわかりませんが、指数関数的であってはなりません。私が経験していることです。どうやら、authlogicの互換性を除いて、この値を上げる必要はないようですが、とにかく間違っているようです。

https://github.com/plataformatec/devise_example/の完全に新しいインストールでこれを確認しました。

この動作は、Ubuntu 11.04、3.0.x Railsバージョン、3.1.0.beta1、デバイス1.3.1および1.3.4、mysql、pg、sqliteドライバーで観察されます。brcyptこれは、暗号化装置だけでなく、暗号化装置にも当てはまりますsha1

4

2 に答える 2

6

これは予想される動作です(特に、間違いなく優れているbcryptの場合)。この値の唯一の目的は、パフォーマンスを低下させてセキュリティを強化することです。

攻撃者が特定の期間内により多くのことを試みることができるため、ハッシュ時に速度を上げる必要はありません。この記事ではこれについて説明しています:http://codahale.com/how-to-safely-store-a-password/

装置では、ストレッチを使用して作業係数を高く調整し、パスワードのハッシュに構成可能なほど長い時間がかかるようにします。構成可能な性質が必要な理由は2つあります。1)アプリケーションが異なれば許容できるパフォーマンス特性も異なります。2)コンピューターの速度が上がるにつれて、同じパフォーマンスを維持するために作業係数を増やすことができるはずです。

許容可能なパフォーマンスを維持しながら、この値をできるだけ高く設定する必要があるという考え方です。目標は、ログオンに60秒かかることではなく、1〜2マイクロ秒より長くかかるようにすることです。リクエストを約200ミリ秒程度に遅くするstretchの値を見つけることができれば、それはおそらくあなたが望む場所です。

于 2011-05-08T21:26:20.173 に答える
6

モデルでオプションを指定しなかったことが判明し:encryptable、Deviseはconfig.encryptor設定を黙って無視し、実際、20ストレッチで非常に遅いbcryptを使用していました。

于 2011-05-09T10:55:10.127 に答える