web-dev-qa-db-ja.com

パスワードのエントロピー範囲を正確に測定するにはどうすればよいですか?

私は自分にパスワードの強さを決定するコードを書く仕事を与えました、そしてそれは私たちがそれを行う多くのすでに確立された方法から脱却したいのです。無関係になります。

通常、パスワードを入力するパターンが表示され、ブール値の「文字と数字を含む7文字が必要」が表示されます。その後、「強い-弱い」スケールランキング(およびこれがパーセンテージであるバリエーション)を示す reasonless graphic がありました。 ブルートフォースまでのユーザー時間を表示 を明示的に考えると、このパターンはより良くなり、実際には大幅に改善されています 理由の表示 そのスコアが割り当てられました、

さて、私はこれらの最後の2つのアイデアのプレゼンテーションが本当に好きですが、ここでは私の主な関心事ではありません。私の質問は、このツールのプレゼンテーションとは関係ありません。

私の質問は、推定されるパスワードセキュリティの範囲を生成するプログラムは、何を考慮に入れるべきかということです。

Howsecureismypassword.netのソースを調べたところ、上位500の一般的なパスワードのリストを保持したり、関連する文字クラスごとにパスワードをグループ化したり、メタスコアをクラックの推定時間に関連付けたりするなど、いくつかのきちんとした処理を行っていることがわかります。その範囲のハッシュ値の束。これにはいくつかの問題があります。たとえば、上位500のパスワードが現在の「上位500」に反映されず、コードの作成時のものと同じです。パスワードの解読速度や、ブルート攻撃を使用しない可能性のある攻撃も同様です。力。

Passwordmeter.comでも同様の問題が見られますが、ワーストケースシナリオではなくベストケースで実行されるという意味です。

だから私の質問は

「今」の時点でのパスワードのセキュリティスコアを測定するには、何を考慮する必要がありますか?

25
Incognito

私が見たこの分野での最高の成果は、再利用可能なセキュリティのMatt Weirによるものです パスワードセキュリティメトリックに関する新しいペーパー(2010) 。彼は「シャノンエントロピー」と「推測エントロピー」の違いについて説明しています。彼はまた、ユーザーのパスワードを取得し、それを分析して、それを改善するための提案を提供する興味深い方法を持っています。

....これまでに開示されたパスワードリストでトレーニングされた文法で構文解析することにより、人間が生成したパスワードの確率を評価するために提案された方法を含む、パスワード作成ポリシーの他の方法。これにより、単純なブラックリストに比べてより堅牢な拒否機能を構築できると同時に、システムのセキュリティ制約を考慮して、パスワードを選択するときに、ユーザーに最大限の自由を提供しようとします。


更新:user185によると、2013年に改訂された2006年の NIST電子認証ガイドライン の付録Aも非常に役立ちます。これらの2つの項の計算について詳しく説明します。

」パスワードの分布に適用される場合、推測エントロピーは、大まかに言えば、選択したユーザーのパスワードを推測するために必要な平均作業量、およびmin-entropyは母集団で推測する最も簡単な単一のパスワードを推測することの難しさの尺度。


この質問は密接に関連していることに注意してください:

17
nealmcb

NIST電子認証ガイドライン の付録Aは、エントロピーとパスワードの長さの表A.1を構築するために使用する方法の詳細を示しています。

6
user185

パスワードが実際に攻撃されるさまざまな方法を説明する必要があると思います。これにはいくつかの調査が必要になります。明らかに、完全に共通のパスワードと完全に一致するパスワードで構成されるパスワードは、「非常に弱い」強度を持つ必要があります(または完全に禁止されます)。おそらく、スクリプトキディがパスワードを解読するときに必ず実行する "既定の"または一般的に使用されるWordリストを検索して、これを拡張する必要があります。データベースが漏洩した場合にユーザーに対して確実に試行される、数万(またはそれ以上)のパスワードのリストがすぐに利用できます。そのため、「共通パスワード」チェックにそれらを含めてください。

しかし、クラッカーは確かに単純な「完全一致」検索だけに限定しないので、強度メーターもそうではありません。クラッカーが使用する一般的なパターンを調査します。たとえば、パスワードディクショナリからtwo単語を組み合わせたり、数字や他の「1337話す」タイプの置換を文字で置き換えたりします(例: "p @ ssw0rd $ 4r3 4w3 $ 0m3!1")。あなたが言及したhowsecureismypassword.netサイトはここで失敗します。「passwordpassword」の評価に「345千年」を要していると評価していますが、これは不合理に間違っています。 1秒もかからないだろうと思います。考慮すべきルールはこれらだけではありません。多くのパスワードは{capital letter}{6 lowercase letters}{number}!のような非常に単純なパターンに従います。これは9つのランダムな文字よりも安全性がはるかに劣ります(ただし、単純な辞書の一致よりもわずかに優れています)。ブルートフォースに頼る前に、このような一般的なパターンをさまざまに試します。

これらの変換やWordの一致をどのように処理するかはあなた次第です。しかし、何とかして彼らは説明されるべきです。検討すべきことの1つは、オープンソースツールがこれをどのように処理したかです。

例として、 KeePassパスワードマネージャーの品質推定関数 は、パターンの数に基づいてエントロピーを計算することによってこれを処理すると報告されていますパターンが検出された場合、文字数を使用するのではなく、パスワードとそのパターンの強度を作成するために使用されます。古いバージョンのソフトウェアでは、単純なカウントベースのエントロピーは、認識されたパターンに基づいて単純にペナルティが課されました。おそらくどちらの方法でもうまくいくでしょう。トリックは、クラッキングの進歩でパターンを最新に保つことですが、少なくとも本当に基本的なものを考慮すると、特にインターフェースで何を説明する場合、ユーザーのパスワードの強度が大幅に改善される可能性があります彼らのパスワードが推測される一般的なパターン。

2
Ben