Справка с вычислением (и полноценность) энтропии пароля

Это - два вопроса о части:

Часть 1

Во-первых, имея дело с вычислением энтропии пароля в PHP. Я не мог найти любые примеры кода, которые являются опытным путем звуковыми и действительно хотели бы некоторую справку в нахождении 'правильного' способа вычислить заключительное число. У большого количества людей в сети есть их собственный домашней выпечки алгоритм взвешивания, но я действительно ищу научный ответ на уравнение.

Я буду использовать энтропию пароля как всего одна часть большей системы безопасности и как способ проанализировать нашу полную безопасность данных на основе информации, доступной, если пароль пользователя будет поставлен под угрозу и как легко пароль может быть поврежден грубой силой.

Часть 2

Вторая часть этого вопроса: как полезное желание это число действительно быть? Моя конечная цель должна генерировать 'счет' к каждому паролю в системе, которую мы можем использовать для контроля нашей полной безопасности системы как динамического объекта. Я должен буду, вероятно, работать в другом алгоритме или два для атак с подбором по словарю, l33t заменяющие пароли, и т.д. - но я действительно чувствую, что энтропия будет играть важную роль в такой 'полной' системной оценке. Я действительно приветствую предложения для других подходов все же.

Что я знаю

Я видел, что некоторое упоминание о логарифмических уравнениях для вычисления сказало, что энтропия, но я должен все же видеть хороший пример, который на самом деле не записан как математическое уравнение. Я мог действительно использовать пример кода (даже если не строго в PHP) для получения меня движение.

Расширение

В создании комментария я понял, что могу лучше объяснить полноценность этого вычисления. Когда я работаю над унаследованными системами, где у пользователей есть чрезвычайно слабые пароли, у меня должно быть некоторое конкретное доказательство той слабости, прежде чем я смогу изложить доводы для того, чтобы вынуждать всех пользователей изменить их пароли на новый (вынужденный) сильный пароль. Путем хранения надежности пароля выигрывают за каждую учетную запись пользователя в системе, которую я могу создать несколько различных метрик, чтобы показать полной системной слабости и изложить доводы для более сильных паролей.

TIA

15
задан Shane 10 July 2010 в 02:19
поделиться

2 ответа

Энтропия строки имеет формальное определение, указанное здесь: 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 - это Map, где (key, value) соответствует (char, countForChar). Это, очевидно, означает, что вы должны обработать строку до вызова этого метода.

EDIT 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;
}

EDIT 3: В надежности пароля есть гораздо больше, чем энтропия. Энтропия - это неопределенность, которая не обязательно приводит к большей безопасности. Например:

Энтропия "akj@!0aj" равна 2,5, а энтропия "password" равна 2,75

12
ответ дан 1 December 2019 в 04:40
поделиться

Принудительное обеспечение определенного уровня энтропии является требованием CWE-521.

(1) Минимальная и максимальная длина;
(2) Требуется смешанный набор символов (буквенные, цифровые, специальные, смешанный регистр);
(3) Не содержать имя пользователя;
(4) Срок действия;
(5) Не использовать пароль повторно.

1
ответ дан 1 December 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: