Создание и проверка пароля на надежность. Проверка сложности пароля и его составление

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

"password" => [ "required", "confirmed", "min:8", "regex:/^(?=\S*)(?=\S*)(?=\S*[\d])\S*$/", ];
К сожалению, такие простые правила означают, что пароль 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 носит скорее теоретический характер, по крайней мере, свою программу они не выложили в открытый доступ в каком-либо приемлемом виде. Тем не менее, смысл работы понятен: вместо эвристических правил проверки паролей веб-сайтам желательно внедрить проверку на энтропию.

Проверка пароля на надежность необходима, когда вы не уверены или сомневаетесь в его сложности и достаточной безопасности. К счастью, для этого существуют онлайн-сервисы, позволяющие проверить насколько надежен тот или иной пароль. Об этом по-подробнее.

Для чего проверять надежность пароля?

На самом деле проверка пароля на надежность необходима в первую очередь тем, кто не знает какими должны быть пароли. В статье были даны советы по созданию сложных, практически невзламываемых паролей. 3 онлайн-сервиса, рассмотренные в этой статье, помогут вам создать такой пароль.

Как проверить сложность пароля?

Существуют онлайн-сервисы, которые позволяют проверить сложность пароля, а также сколько требуется времени для его подбора злоумышленниками. Мы сегодня рассмотрим 3 таких сервиса, заслуживающих наибольшего внимания.

Сервис №1.

Данный сервис, как вы уже догадались, наверное, от Лаборатории Касперского, называется он - «Спасаем мир словом ». Сервис этот помогает создавать надежные пароли путем проверки их на сложность.

Сервис показывает, что данный пароль взламывается за 1 секунду. Так и есть, даже с помощью брутфорс (программа для подбора паролей) данный пароль переберут быстрей чем вы скажете «Ой!».

А вот более сложный пароль с использованием , цифр, и букв разного регистра:

Такой пароль будет очень сложно подобрать, в общем пароль надежный и в какой-то степени невзламываемый (неподбираемый).

Как видите сервис показывает за какое время могут взломать тот или иной пароль на различных компьютерах, это - ZX Spectrum (80-х годов), Mac Book Pro (2012), Тьяньхе-2 (суперкомпьютер, разработанный в Китае), а также с использованием сети компьютеров (ботнет).

Сервис №2.

Следующий сервис проверки надежности пароля от Microsoft. Находится он по этому адресу.

Здесь все просто, вводим нужный пароль и программа показывает насколько он надежен. Ничего лишнего. На степень надежности указывают 4 прямоугольника внизу. Один прямоугольник - это очень простой пароль, а четыре зеленых прямоугольника - значит пароль сложный.

Сервис №3.

Третий и последний сервис проверки сложности пароля на сегодня. Сайт так и называется - «Насколько надежен мой пароль? ».

Интерфейс на английском, но ничего страшного. В строке «Password» необходимо ввести пароль и сервис также покажет насколько он безопасный, этот ваш пароль.

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

Внизу еще можно увидеть примерное время, необходимое для грубого подбора (брутфорс). А также, если пароль введенный вами не является сложным и надежным, то сервис укажет на это и даст советы по созданию более надежного пароля.

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

Приветствую!
Несмотря на стремительное развитие технологий и появление альтернативных способов распознавания владельца, парольная защита не сдаёт своих позиций и остаётся весьма популярной и по сей день.

Пароль превратился в обыденность и используется для доступа к устройствам и интернет сервисам. И со временем их становится только больше. Сложившаяся ситуация, в конечном итоге, приводит к тому, что пользователи начинают использовать один и тот же пароль на используемых устройствах и сервисах.
Данный подход очень опасен и грозит серьёзными последствиями. Несомненно, скомпрометированный пароль от социальной сети не несёт таких последствий, как пароль от платёжной системы. Но если они будут идентичны, то вероятность того, что доступ будет получен и к остальным используемым сервисам очень высок.
Чтобы этого не произошло, пароли должны быть сложными (стойкими к перебору) и разными.

Принципы, используемые при создании пароля

На большинстве интернет ресурсов существуют минимальные правила для устанавливаемого пароля, которых, зачастую, недостаточно для создания действительно сложного пароля. Необходимо ещё помнить о том, что:

  • Логин и пароль не должен быть идентичным
  • Пароль не должен состоять из личной информации (дата рождения, телефон и т.д.)
  • Пароль не должен состоять исключительно из слов

К примеру, чтобы подобрать пароль, состоящий из 6 цифр – необходимо перебрать всего 1 миллион комбинаций. Современный компьютер справится с этой задачей за считанные минуты. По этой же причине не стоит полагаться на пароли, состоящие исключительно из слов и их сочетаний. Такие пароли перебираются с использованием словарей популярных слов.

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

  • Дата рождения 12071996 – 0,003 секунды
  • Имя с заглавной буквы Maksim и строчной maksim – не больше полусекунды
  • Сочетание, состоящее из букв и цифр 7s3a8f1m2a – около суток
  • На перебор следующего сочетания vSA-DFRLLz – 1 год
  • Сочетание iu2374NDHSA)DD – 204 миллиона лет

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

Правильно генерируем пароль

С теоретической частью мы разобрались, теперь перейдём непосредственно к генерации стойкого и надёжного пароля.
При создании сложного и стойкого пароля существенную роль играет человеческий фактор. Трудности возникают на самом начальном этапе – придумывании сложного пароля, а после – его запоминания. Ведь комбинация разрозненных символов едва ли предрасполагает к скорому запоминанию.
С проблемой генерации стойкого пароля нам помогут он-лайн сервисы. Их довольно много, из популярных русскоязычных сервисов можно отметить:
Passwordist.com
Online-Generators.ru
PassGen.ru
Работают представленные сервисы по одному принципу, от вас лишь требуется указать какие символы необходимо использовать и выбрать длину генерируемого пароля.
Отдельной особенностью сервиса Passwordist.com можно отметить возможность задать количество создаваемых паролей и генерировать варианты с лучшей читабельностью за счёт исключения похожих символов, к примеру, B и 8.

Хранение паролей

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

Среди популярных решений можно отметить программу KeePass . Данная программа бесплатна и в тоже время весьма функциональна. Помимо прочего в ней присутствует генератор паролей, благодаря которому отпадает необходимость в использовании он-лайн генератора.
Для доступа к базе сохранённых паролей необходимо будет установить мастер-пароль. Для его создания можно, к примеру, воспользоваться методикой набора слов в другой раскладке, дабы создать сложный пароль, но при этом самому не забыть его.
Локальная база с паролями на вашем компьютере априори будет менее подвержена взлому, нежели общедоступные сервисы в интернет, так что здесь со сложностью перебарщивать не стоит.

Проверка стойкости паролей

Если вы желаете проверить уже имеющиеся или вновь сгенерированные пароли на стойкость к взлому, то для этого существуют несколько он-лайн сервисов:

1) How Secure Is My Password? После того, как вы введёте пароль в соответствую форму на сайте, вы увидите сколько времени понадобится на взлом методом перебора. Срок в несколько миллионов лет можно считать превосходным.

2) Kaspersky Lab: Secure Password Check Данный сервис создан отечественным разработчиком популярного антивирусного решения. Он также демонстрирует примерное время, которое необходимо на взлом пароля методом перебора.

3) 2IP: Стойкость пароля Сервис категорично выносит вердикт для проверяемого пароля – он может быть либо надёжным, либо нет.

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

Краткий итог

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


Всем известно, что пароли бывают сложными и не очень. Например, alpine - не очень сложный пароль, и устанавливать его паролем пользователя root на миллионе подключенных к Интернету устройств -- по меньшей мере неразумно. 7_U]Ah"C же, напротив, достаточно сложный пароль. Это вам подтвердит любой продвинутый Интернет-пользователь, а некоторые даже смогут объяснить почему. Мол, и длиннее он, и символов в нем разных много: тут вам и заглавные и прописные буквы, и спец-символы всякие. В общем, сложный он, и уж точно сложнее пароля alpine .

А как сравнить сложность двух паролей, когда разница не так очевидна? Например, какой пароль сложнее: 7_U]Ah"C или xrmdCawGZ ? Хотя второй пароль, казалось бы, состоит из меньшего разнообразия символов, - букв разного регистра, - он длиннее на один символ. Достаточно ли этого, чтобы компенсировать скудность алфавита?

Алфавитом называется множество символов, из которых может состоять пароль. В нашем примере пароль 7_U]Ah"C составлен из алфавита, содержащего следующие символы:

  • Латинские буквы в обоих регистрах: a-z, A-Z (26*2=52 шт.)
  • Цифры: 0-9 (10 шт.)
  • Специальные символы: ! , " , # , $ , % ... (32 шт.)
Размер такого алфавита равен M = 52 + 10 + 32 = 94 , а сложность пароля из восьми (N=8) его символов вычисляется по формуле M**N = 94**8 .

Сложность пароля (или криптоключа) выражается в т.н. коэффициенте трудоемкости шифра (work factor). Наиболее распространенное объяснение сути КТШ звучит так: это время и компьютерные ресурсы, необходимые для взлома пароля путем полного перебора (brute force ) всех его возможных вариантов. Из комбинаторики знаем, что количество комбинаций из M (размер алфавита) по N (длина пароля) равняется M**N (M в степени N).

Сложность пароля обычно называют его битностью . Говоря, что пароль K-битный , мы имеем в виду, что его сложность сравнима со сложностью пароля из K нулей и единиц (алфавита из всего двух символов: 0 и 1). Например, 7_U]Ah"C -- 52-битный пароль: K = log2 (94**8) = log2 (6095689385410816) ~ 52 .

У пароля xrmdCawGZ более скромный алфавит: из латинских букв в обоих регистрах, всего получается 26*2 = 52 символа. Сложность, соответственно, равна M**N = 52**9 = 2779905883635712 , а битность -- K = log2 (2779905883635712 ) ~ 51 . Следовательно, первый пароль приблизительно в два раза сложнее второго, что в общем не является преимуществом.

Возникает вопрос, зачем тогда нам алфавиты из всех этих кавычек, скобочек и прочих закорючек? Не легче ли просто выдумывать длинные пароли из более привычных символов? Ответ прост: не зачем. Лучше и надежнее будет запомнить длинную пассфразу, пусть в ней и не будет экзотических знаков. В настоящее время надежной считается пассфраза битности 128 и выше. То есть, фразы из 20 букв будет вполне достаточно.

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

"password" => [ "required", "confirmed", "min:8", "regex:/^(?=\S*)(?=\S*)(?=\S*[\d])\S*$/", ];
К сожалению, такие простые правила означают, что пароль 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 носит скорее теоретический характер, по крайней мере, свою программу они не выложили в открытый доступ в каком-либо приемлемом виде. Тем не менее, смысл работы понятен: вместо эвристических правил проверки паролей веб-сайтам желательно внедрить проверку на энтропию.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: