web-dev-qa-db-ja.com

パスワード強度の要件が存在するのはなぜですか?

今ではパスワードの強度がすべてであり、数字、特殊文字、大文字などのパスワードを考え出す必要があります。使いやすさの悪夢である(Webサイトが複雑なパスワードを必要とする場合、私は開発者でさえ嫌いです)以外に、強力なパスワード(Webサイト認証用)を使用することの実際の利点は何ですか?認証を適切に処理するシステムの前提条件は次のとおりです。

  • bcryptを使用してパスワードを保存する(または少なくともsalt + hashを使用する)-攻撃者がデータベースを取得したときに元のパスワードを見つけるのは不可能
  • クールダウンが進むと、後続のパスワード試行をロック-サイトを介したブルートフォースなし
40
Bozho

LinkedInや他の最近のパスワード漏洩が明らかにしているように、ウェブサイトの最も一般的なパスワードは「パスワード」、「神」、「123456」などです。そのため、最も一般的なパスワードの本当に短いリストで総当たりすることができます。それでも、それらのパスワードを禁止するか、長いパスワードを要求することができます。可能な組み合わせは長さとともに指数関数的に増加するため、ブルートフォースを防ぐために「強力な」パスワードを要求するよりも長いパスワードを要求する方が優れています。しかし、あまりにも多くの人々が、ベストプラクティスであると信じていることを疑うことなくフォローしているため、本当に素晴らしい質問です。

28

なぜなら、パスワード強度の要件を作成したことで誰も解雇されなかったからです。管理者にとって、これらの制限はユーザーにとって非常に迷惑であり、本当のセキュリティはほとんど提供されていませんが、基本的には低リスクのアプローチです。

15
static_rtti

Xkcdの関連するイラストをいくつか示します。人が人間で努力しないので、強いと見なされるものは実際には弱いです。もう1つは、「強力な」パスワードを使用しても怠惰であるため、どこでも再利用されます。勝てない!

パスワードの強度

Password Strength

そして

パスワードの再利用

Password Reuse

9
user9818

強度の要件なしに短いパスワードを許可すると、ユーザー名に対してレインボースタイルの攻撃を行う誰かに自分をさらしてしまうことになります。例えば:

admin,password
fred,password
bob,password
...keep doing this until the cooldown window expires...
admin,god
fred,god
bob,god
...repeat as needed...

多くのシステムはこのパターンを問題としてフラグを立てるつもりはありません。ボットネットを介してそれを適切に調整した場合、実際にそれをキャッチするシステムを見たことがありません。

8
Bill

実装可能な防御策がいくつかあるのと同様に、パスワードが受ける攻撃にはいくつかの異なるタイプがあります。

bcryptやパスワードロックアウトは、考えられる防御策の2つにすぎません。
パスワード強度 は、かなりまともな記事です。

組み合わせが必要な理由に関する具体的な質問への回答-強力なパスワードの選択を強制するために利用できる唯一の手段です。強力なパスワードは、実際にはパスワードの文字間のエントロピー(変化)が高いことを意味します。エントロピーが大きいほど、暗号化に使用できるビットの範囲が広くなります(bcryptなど)。エントロピーの低い(弱い)パスワードは、暗号化に使用できるスペース全体を使用しません。 128ビットまたは256ビットの暗号化では、キーの全範囲が使用されなかったため、暗号化が大幅に少なくなると思いました。

一部の数値は、物事をより明確に説明するのに役立ちます。例では8文字のパスワードを使用します。すべての小文字のパスワードには、26の異なる組み合わせしかありません。つまり、26 ^ 8または2.1x10 ^ 11の異なる組み合わせです。
大文字を追加するとスペースが2倍になりますが(現在は26ではなく52)、さらに多くの組み合わせが購入されます。 52 ^ 8または5.3x10 ^ 13、これは約250倍のゲインです。
数字または特殊文字の追加を開始すると、キースペースでエントロピーを強制する効果を簡単に確認できます。

実際には、記憶することができる何かは一般にそれに対して多くのエントロピーを持っていないので、私たちはまだその完全なキースペースを持っていません。しかし、要件はパスワードにエントロピーをプッシュするのに役立ちます。

3
user10846
  • bcryptを使用してパスワードを保存する(または少なくともsalt + hashを使用する)-攻撃者がデータベースを取得したときに元のパスワードを見つけるのは不可能

彼らがあなたのサーバーを危険にさらしたならば、あなたは心配するはるかに悪い事柄を持っています。

類推:

泥棒が家に侵入します。ただし、すべてのキーは安全に保管されます。だから何?彼はあなたの家にいます!

  • クールダウンが進むと、後続のパスワード試行をロックします-サイトを介したブルートフォースはありません

これは、パスワードが弱い場合(例: "password")、問題の速度を低下させるだけです。そして、それが最初の試みであり、それからあなたはスクエアワンに戻る。

強力なパスワードを使用することをお勧めします(tm)

2
Darknight

他で言及されていない理由は、yoがユーザー自身よりもユーザーアカウントのセキュリティに大きな関心を持っている可能性が高いためです。

たとえば、オンラインディスカッションフォーラムなど、完全に重要ではないシステムを実行している場合、ユーザーのアカウントが侵害されてもユーザーはまったく気にしない可能性があります。ただし、ユーザーの5%が「123456」と「パスワード」を入力すると、不正使用されたアカウントを使用するスパマーに永続的な問題が発生します。学校のネットワークを運営している場合、ユーザーの大部分はアカウントが悪用されても特に気にしないかもしれませんが、上位5つの一般的なパスワードを試すと毎回数十のアカウントに確実にアクセスできる場合、悪用者は問題を引き起こします。 。

この攻撃シナリオ(見つけることができるすべてのアカウント名に簡単なパスワードを試す)の場合、データベースにアクセスする必要はありません。十分な「新しい」IPアドレスが利用可能である限り、ロックアウトは役に立ちません。

1
Peteris

あなたの解決策の問題は:

  • ハッシュ+シードを使用しても、ブルートフォースパスワード推測から保護することはできません。

  • ロックアウトはある程度保護しますが、特にロックアウト時間の増加を使用している場合は、正規ユーザーに対するサービス拒否攻撃として使用できるという問題があります。また、巧妙な攻撃者は、複数のIPアドレスを使用したり、各推測の間に時間を置いたりして、複数のアカウントをターゲットに切り替えることができます。

対照的に、強力な(推測が難しい)パスワードを要求することは、攻撃者がアカウントを解読するために(平均して)より多くの推測を使用する必要があることを意味します。

0
Stephen C