17

これは2つの部分からなる質問です。

パート1

まず、PHPでのパスワードのエントロピーの計算を扱います。私は経験的に健全なコード例を見つけることができず、最終的な数値を計算するための「正しい」方法を見つけるのに本当に助けを求めています。ネット上の多くの人々は独自の自家製の重み付けアルゴリズムを持っていますが、私は方程式に対する科学的な答えを本当に探しています。

パスワードエントロピーは、より大規模なセキュリティシステムの一部として、またユーザーのパスワードが侵害された場合にアクセス可能な情報とブルートフォースによってパスワードが簡単に破られる可能性がある情報に基づいてデータセキュリティ全体を分析する方法として使用します。

パート2

この質問の2番目の部分は、この数値が実際にどれほど役立つかということです。私の最終目標は、動的エンティティとしてシステム全体のセキュリティを監視するために使用できる、システム内のパスワードごとに「スコア」を生成することです。辞書攻撃やl33t置換パスワードなどについては、おそらく別のアルゴリズムで作業する必要がありますが、このような「全体的な」システム評価ではエントロピーが重要な役割を果たすと思います。ただし、他のアプローチの提案は歓迎します。

私が知っていること

上記のエントロピーを計算するための対数方程式についての言及を見たことがありますが、実際には数式として書かれていない良い例はまだ見ていません。私は実際にコード例を使用して(厳密にPHPでなくても)私を動かすことができました。

拡大

コメントをすることで、この計算の有用性をよりよく説明できることに気づきました。ユーザーのパスワードが非常に弱いレガシーシステムで作業している場合、すべてのユーザーにパスワードを新しい(強制された)強力なパスワードに変更するように強制する前に、その弱点の具体的な証拠が必要です。システム内の各ユーザーアカウントのパスワード強度スコアを保存することで、システム全体の弱点を示し、より強力なパスワードを主張するためのいくつかの異なるメトリックを構築できます。

TIA

4

3 に答える 3

12

文字列のエントロピーには、ここで指定された正式な定義があります:http: //en.wikipedia.org/wiki/Entropy_(information_theory)

その価値はどれほど役立つのでしょうか?場合によります。割り当てに対して作成したエントロピーを計算する方法(Java)は次のとおりです。

public static double entropy() {
   double h = 0, p;
   for (int i = 0; i < count.size(); i++){
      p = count.get(i)/(totalChars*1.0);
      h -= p*Math.log(p)/Math.log(2);
   }
   return h;
}

count(key、value)がに対応するマップ(char, countForChar)です。これは明らかに、このメソッドを呼び出す前に文字列を処理する必要があることを意味します。

編集2:これは同じメソッドで、PHPで書き直されています

function entropy($string) {
   $h=0;
   $size = strlen($string);
   foreach (count_chars($string, 1) as $v) {
      $p = $v/$size;
      $h -= $p*log($p)/log(2);
   }
   return $h;
}

編集3:エントロピーよりもパスワード強度の方がはるかに重要です。エントロピーは不確実性に関するものです。これは必ずしもセキュリティの向上につながるとは限りません。例えば:

のエントロピー"akj@!0aj"は2.5ですが、のエントロピー"password"は2.75です。

于 2010-07-07T19:13:14.833 に答える
1

特定のレベルのエントロピーを強制することは、CWE-521の要件です。

(1)最小および最大の長さ。
(2)混合文字セット(英数字、特殊、混合大文字)が必要です。
(3)ユーザー名を含めないでください。
(4)有効期限;
(5)パスワードの再利用はありません。

于 2010-07-07T20:24:38.703 に答える
1

エントロピーを使用するには、単一のパスワードのシャノンエントロピーを取得するだけでなく、一般的なパスワードのリストの要素として取得する必要があります。パスワードが他のパスワードと非常に似ている場合、そのエントロピーは他のパスワードと比較して低くなります。その非常にユニークな場合、それはより高くなります。

于 2014-10-04T19:11:33.863 に答える