Многие сайты пытаются помочь пользователям установить более сложные пароли. Для этого устанавливают базовые правила, которые требуют обычно указать хотя бы одну прописную букву, одну строчную букву, одну цифру и так далее. Правила обычно примитивные вроде таких:
'password' => [
'required',
'confirmed',
'min:8',
'regex:/^(?=S*[a-z])(?=S*[A-Z])(?=S*[d])S*$/',
];
К сожалению, такие простые правила означают, что пароль Abcd1234
будет признан хорошим и качественным, так же как и Password1
. С другой стороны, пароль mu-icac-of-jaz-doad
не пройдёт валидацию.
Некоторые специалисты говорят, что это не лучший вариант.
В реальности Abcd1234
и Password1
— плохие пароли, а mu-icac-of-jaz-doad
— хороший пароль. В этом несложно убедиться.
Вот первые два пароля.
А вот два пароля, которые не пройдут проверку на надёжность.
Что же делать? Может, не стоит принуждать к использованию спецсимволов и внедрять всё новые правила, вроде запрета на повтор нескольких символов подряд, использование не одного, а двух-трёх спецсимволов и цифр, увеличение минимальной длины пароля и т д.
Вместо всего этого достаточно сделать простую вещь — просто установить ограничение на минимальную энтропию пароля, и всё! Можно использовать для этого готовый оценщик zxcvbn.
Есть и другие решения, кроме zxcvbn. Буквально на прошлой неделе на конференции по безопасности ACM Computer and Communications Security была представлена научная работа (pdf) специалистов по безопасности из научно-исследовательского подразделения Symantec Research и французского исследовательского института Eurecom. Они разработали новую программу для проверки надёжности паролей, которая оценивает примерное количество необходимых попыток брутфорса, используя метод Монте-Карло. Предлагаемый способ отличается тем, что требует минимальное количество вычислительных ресурсов на сервере, подходит для большого количества вероятностных моделей и в то же время довольно точный. Метод проверили на паролях из базы 10 млн паролей Xato, которые лежат в открытом доступе (копия на Archive.org) — он показал хороший результат. Правда, это исследование Symantec Research и Eurecom носит скорее теоретический характер, по крайней мере, свою программу они не выложили в открытый доступ в каком-либо приемлемом виде. Тем не менее, смысл работы понятен: вместо эвристических правил проверки паролей веб-сайтам желательно внедрить проверку на энтропию.
Автор: alizar