2012-03-14 13 views
12

私はしばらくの間、bcryptのバンドワゴンにいましたが、私は簡単な不安な質問に答えるのが難しいです。大規模なWebサイトではbcryptは有効ですか?

米国では合理的に成功したWebサイトがあるとします。一般的なアメリカの営業日の平均で2〜3回の認証試行が必要なアクティビティパターンを持つ約100,000人のアクティブユーザーです(時間帯)。これは1日あたり250,000件の認証要求、つまり毎秒約5.8回の認証です。

bcryptについてのすばらしいものの1つは、ハードウェアのように時間がたつにつれてクラッカーにとどまるように調整することです。一般的なチューニングは、ハッシュ作成ごとに1/10秒をちょうどかかって取得することです。ハッシュごとに.173秒にします。私はその数を選択しました。なぜなら、たったの173秒が1秒あたり約5.8ハッシュになるからです。言い換えれば、私の仮説的なWebサーバーは、文字通り、ユーザーを認証するだけで時間を費やしています。本当に有益な仕事をしていても大丈夫です。

この問題に対処するには、bcryptをダウン(良い考えではない)に調整するか、認証を行うためだけに専用サーバーを用意する必要があります。サイトが成長し、さらに10万人のユーザーが追加されたとしましょう。突然、2つのサーバーが必要になります。もう1つは、認証だけです。あなたは一日を通して明るくて忙しい時間があるので、負荷スパイクについて考え始めることさえありません。

これは私が今見ているように、これは問題ないかもしれませんが、bcryptはまだ問題の価値があるでしょう。しかし私は私がここに何かを見逃しているかどうかを知りたいですか?微妙なもの?または、実際には、サイトの認証部分だけのサーバーファーム全体を実行している有名なWebサイトを実際に指し示すことはできますか?

+1

お金があれば実行可能です。一部のサイトでは、必要な帯域幅と処理能力がわずかに増加したため、完全なHTTPSが実行可能であるとは考えていません。しかし、他の大規模なサイトでは、HTTPSのみのポリシーを強制することは問題ありません。それはあなたの予算と優先順位にかかっています。 –

+0

これはauth専用のサーバーではありません。それはコアです。 –

+0

@Peter - 単なるコアではありません。さもなければ黒い帽子はグラフィックカードの問題でより多くのパラレルハードウェアを投げることができます。 –

答えて

5

bcryptを1/1000秒というように調整しても、単純なハッシュよりかなり遅い—すばやく汚いPerlベンチマークでは、私の新しいコンピュータでは約30万SHA-256ハッシュ/秒

はい、1000と300,000の差は約8ビットですが、それでもセキュリティマージンは8ビットですが、そうしなければCPUが速くなるにつれてその差は大きくなります。

また、bcryptの代わりにscryptを使用すると、反復回数を減らしてもメモリの硬さプロパティが保持されますが、これによりブルートが強制的に並列化されにくくなります。

+0

はい、1/10000秒でさえ良くなりますが、目標は毎秒何百万という値を計算しないようにすることです。もちろん、短時間で始めて、後でこの値を調整して、影響を見積もることができます。 – martinstoeckli

関連する問題