web-dev-qa-db-ja.com

可能なパスワードの数を計算するにはどうすればよいですか?

パスワードリセット機能が次の形式でパスワードをリセットするサイトに欠陥を発見しました

UpperCaseLetter-Number-LowerCaseLetter-Number-LowerCaseLetter-Number-UpperCaseLetter

例:A0b1c2d

このようなシステムで考えられるパスワードの組み合わせの数を特定しようとしています(「パスワード形式」と、全体の大文字/小文字の英数字キースペースを使用するランダムなものを予測できます)。

私は暗号学者ではありませんが、これは私にとって大きな弱点のようです。その仮定を裏付けるデータをいくつかお願いします:)乾杯

6
NULLZ

順列の数を取得するには、各位置での可能性の数を掛けます。

26x10x26x10x26x10x26 = 456,976,000

9
Brian Adkins

誰かが一般的なサイコロによって選択された1桁のパスワードを持っていることがわかっている場合は、6つのパスワードが考えられます。誰かがサイコロを2回振った場合、1と2の両方の位置で1から6になる可能性があるので、6 * 6 = 36個のパスワードが考えられます。数字を追加するたびに、それ自体で乗算を続けるか、より高い指数に上げます。

したがって、文字(大文字26と小文字26の可能性)と数字(10の可能性)のパスワードは62 ^の長さ、たとえば6文字のパスワードの場合は62 ^ 6、つまり570億の可能性です。

固定形式の場合は、通常のパスワードで行ったように、各位置の可能性を乗算するだけです。形式がA0a0a0Aのような場合、オプションは次のとおりです。

UC   #    low  #    low  #    UC
26 * 10 * 26 * 10 * 26 * 10 * 26 = 457 million

これはどれくらい強いですか?パスワードを解読する速さによって異なります。パスワードのMD5ハッシュのようなものがある場合(データベースがハッキングされた場合など)は、標準のソフトウェアと一般的なハードウェアで1秒あたり数十億回の試行を試すことができます。ハッシュがない場合は、代わりにWebサイトへのログインのみを試行できます。1秒あたり約10回(または状況によっては1秒あたり2回、つまり500回ですが、10億に近いものはありません) 。

私のパスワードが1、2、3、4、5、または6である場合、平均して、3回の推測の後、正しく推測されます。同じ:457百万の可能なパスワードがあり、毎秒10回の試行が可能で、月に2 626 560秒ある場合、平均で約9か月かかります。最悪の場合(運が悪く、最後の試みで推測した場合)、1.5年かかります。運が良ければ、最初の試行で正しく推測して0.1秒でクラックすることができますが、その確率は4億5700万分の1です!

2
Luc

この特定のシステムの弱点に関して、他の回答に加えて、パスワードのリセット機能は一時的なパスワードにのみ使用できることを述べておきます。ユーザーがパスワードを忘れたか、システムからロックアウトされているため、パスワードがリセットされる可能性があります。

ユーザーがパスワードのリセットを要求するので、電子メールアドレスなどのアカウント所有権の検証の他の形式では、パスワードは約5分以内しかアクティブにならないはずです。パスワードのリセットが安全に実装されている場合、パスワードのリセット時にブルートフォースを阻止しようとする10回の試行後にアカウントがロックされる可能性があります。ただし、この攻撃は、時間の制約が少ない場合はおそらく発生しません。

攻撃者が暗号化されたデータベースパスワードを入手した場合、一時的なパスワードのテーブルをブルートフォース攻撃して、ユーザーがログインする前にログインを試みる可能性があります。この場合、小さいパスワードを使用することは弱点ですが、おそらく他の弱点もあります。

2
ponsfonze