パスワードを解読するのにかかる時間を決定する素晴らしいサイトhttp://www.howsecureismypassword.net/があります。
私が欲しいのは、このような機能を実装することなので、そのためのアルゴリズムが必要です
パスワードを解読するのにかかる時間を決定する素晴らしいサイトhttp://www.howsecureismypassword.net/があります。
私が欲しいのは、このような機能を実装することなので、そのためのアルゴリズムが必要です
一般的なパスワード攻撃ベクトルを知ることで、これをどのように計算するかがわかります。数値が必要な場合は、デスクトップ コンピュータが1 秒間に40 億 (4x10 9 ) 個のパスワードをチェックできると仮定しましょう。これはほぼ正しいと思われます。
攻撃者がパスワードだけを解読しようとすることはめったにないことを認識することが重要です。代わりに、彼らは多数のアカウントのユーザー ID を持っており、できるだけ多くのアカウントのクラックを試みたいと考えています。そのため、簡単なパスワードのクラックにほとんどの時間を投資し、難しいパスワードに煩わされることはありません。
パスワードにユーザー ID を入力してみてください。驚くべきことに、これを行う人が多いのです。あなたのパスワードは即座にクラック可能です。
これは簡単です。攻撃者は、使用されている (たとえば) 10 6 個の最も一般的なパスワードのリストを保持し、それぞれを 1 回チェックするだけで済みます。これは 1 秒もかからずに実行できます。あなたのパスワードが最も一般的なパスワードのリストに含まれている場合、そのパスワードはほぼ瞬時にクラックされる可能性があります。
パスワードが辞書にない場合、もう 1 つのオプションは総当りを使用することです。この方法を使用してパスワードを解読するのにかかる時間は、(a) パスワードの長さ、および (b) パスワードを構成する記号セットによって異なります。一般式は
timeTaken = (sizeOfSymbolSet ^ passwordLength) / (4*10^9) # (seconds)
たとえば、パスワードが小文字のみで構成されている場合、記号セットのサイズは 26 です。パスワードの長さの関数として、パスワードを解読するのにかかる時間のリストを次に示します。
Length Time
4 0.1 millisecs
6 0.1 seconds
8 1 minute
10 10 hours
12 9 months
小文字と大文字、数字、記号をすべて使用すると、記号セットは 100 に近づきます。それに応じて、パスワードを解読するのに時間がかかります。
Length Time
4 25 millisecs
6 4 minutes
8 28 days
10 800 years
12 8 million years
ただし、まだ満足しすぎないでください。800 万年という数字は、パスワードとして 12 個の文字、数字、および記号をランダムに選択したと仮定しています。つまり、パスワードは次のようなものです。
t8Qkx#rxZAM@
%Kuc;p8WHmFU
xDE!XE$rLGh4
KJdx2K8BS33K
HTaeCc&t46L;
そのようなパスワードを持っている人はどれくらいいますか?
これは、創意工夫と総当たりの組み合わせに依存しています。これは最初の 2 つの方法を組み合わせたもので、一般的なパスワードではなく、一般的な「パスワード規則」に依存しています。
たとえば、多くの人が「辞書の単語の後に数字が続く」という形式のパスワードを使用しています。Oxford English Dictionary には約 2x10 5の単語があるため、「辞書の単語の後に数字が続く」というすべての組み合わせを生成するには、約 200 万の異なるパスワードが必要であり、これも 1 秒以内で簡単にチェックインできます。
他の一般的な比喩には、文字を見た目が似ている記号( o
with 0
、l
with 1
、a
with@
など) で置き換えることが含まれます。辞書の単語のリストを取得したら、これらすべての置換を生成するのは簡単です。推測では、リストの長さを 1000 倍に増やすことができますが、それでも約 1 秒でチェック可能です。
私の推測では、このサイトは、これらのアプローチの一部またはすべてを組み合わせて使用して、パスワードをクラックするのにかかる時間を計算していると思われます.
よくあなたは決して知りません:これは今日投稿されました:
チェックはすべてjavascriptで行われます。コードはgithubで入手できます
How It Worksページから、著者が何について話しているのかを知っているという印象を受けます。(あなたはそれを読みたいと思うでしょう、彼が彼のjavascript実装を書いた方法はそれ自体で興味深いです)
おそらく、いくつかの洞察、あるいはコードを借りることができます(フォークは大歓迎です、私は著作権宣言を超えるライセンスを見ませんでした)。
いいえ、パスワードで使用されているハッシュに依存するためです。ただし、クイック辞書攻撃を実行し、長さ、大文字/小文字、数字、記号、およびそれらの一般的に使用される組み合わせ (「123」など) をチェックすると、パスワードの強度についてある程度の見通しを得ることができます。