2016-10-28 12 views
0

現在、クライアント側のjavascriptにパスワードを渡したダイスウェアを作成しています(各クライアントは暗号で安全な疑似乱数のシードを取得します)。ダイスウェアのパスワードクライアント側を生成することは安全です

var password = this.word() + this.separtor() + this.word() + this.separtor() + this.word(); 

パスワードは、私が見つけることができるすべての強度テスターを渡す生成が、私の懸念は、攻撃者は単にブルート文字の組み合わせを使用してパスワードを強制するが、実際に私に対して私の発電機を使用しないことです。

ワードは()のみ6^4 = 1296個の組み合わせ

を持つように発電機のみ* 1296 * 1296 1296 = 2176782336の組み合わせを生成します。

は私がseperators(24個の組み合わせ)1296 * 24 * 1296 * 24 * 1296 = 1,253,826,625,536

CGIの制限ユーザーの試みを追加しましたが、いつものように、攻撃者は自分のパスワードを持つことができ、オフラインをハッシュ。

パスワードサーバー側を生成するのは、ワードリストをコンパイルしても、比較的簡単に(少なくともパスワードハッシュを持つ攻撃者にとっては)比較的簡単な場合にのみ安全です。

私はパスワードが忘れられないようにするために、私はパスフレーズに特殊文字をランダムに追加することはしませんでしたが、攻撃者はすべての文字の組み合わせを試す必要がありますか?

p.sより適切な場合は、これを暗号に移動します。

答えて

0

パスワードを覚えやすいようにするには、five辞書単語をスペースで区切って(またはまったく)入力する必要があります。

また、攻撃者がアルゴリズムと単語リストについて知っていることを前提とする必要があります。

10000語の単語リスト(8歳のネイティブ英語話者のaverage vocabulary)を使用すると、10000^5 = 10^20の組み合わせがあります。

平均的なオンライン環境では、毎秒1000回のパスワードが予想され、ハッカーにとっては何百万年ものエクササイズが行われます。これは、オフデマンド攻撃の規模がより小さいということに相当します。

関連する問題