攻撃者が私のパスワードのハッシュを持っていると想定して、パスワードの強度を測定しようとしています。誰かがさまざまなハッシュを実行できる現実的な現代の速度を誰かが引用できますか?ほとんどのサイトがSHA-1のMD5のような不必要に弱いハッシュを使用していることを知っているので、これらのレートが最も適切です。
MD5またはSHA-1の単純な呼び出しの場合、現実的な速度は1秒あたり1〜1010億のパスワードです。これが、優れたGPUで実現できることです。さらに、ハッシングがソルト化されていない場合、攻撃者は、通常事前計算されたテーブル(例 Rainbow tables )を使用して、いくつかの攻撃セッション間で労力を共有できます。 onceただし、結果のテーブルは、わずかなコストで数千のハッシュに適用できます。
ハッシュ関数が適切な場合( この答え で説明されています)、slowdownパラメーターを使用して、関数を次のようにします。望むほど遅い。遅延は、防御側(ハッシュを使用してユーザーを認証する正直なサーバー)と攻撃側の両方に影響を与えます。たとえば、防御側が各ハッシュインスタンスに10ミリ秒相当の自分のCPUを投資する準備ができていると想像できます。つまり、防御側は1秒あたり100個のパスワードハッシュを処理できます。攻撃者は、複数のコアを備えた問題により多くのPCを投入することができ、特殊なハードウェア(GPU、FPGA ...)を使用する可能性があります。攻撃者は、パスワードハッシュにおいて防御側よりも100倍効率的である可能性があり、1秒あたり10000推測のブルートフォースパフォーマンスにつながるとしましょう。
攻撃者が特殊なハードウェアを介して取得できるブーストは機能によって異なります(たとえば、GPUはPBKD2/SHA-256の攻撃には適していますが、bcryptの攻撃には適していません)。攻撃者が問題に投入できるハードウェアの量は、外部パラメーター(予算、彼の動機...)にも依存します。遅延の増加はサーバーリソースを使用し、 サービス拒否攻撃 に対して脆弱になる可能性があるため、防御側が使用する速度はトレードオフです。