Классификация уровней стойкости паролей Данил Пистолетов, 25 июня 202425 июня 2024 Классификация уровней стойкости паролей, придуманная для моего небольшого скрипта на Python. Изначально я планировал лишь написать скрипт на Python, на котором была бы классификация уровней стойкости паролей и возможность генерации их по этой классификации. Посмотрев несколько предложенных в интернете классификаций [1-2], они были ограничены всего тремя уровнями, что я посчитал неподходящим. Обратившись к научным источникам, я в принципе не нашёл нужной информации, только статьи по аутентификации [3-4]. Поэтому решил придумать свою, она и будет описана далее. А вместе с ней затрону саму оценку стойкости пароля и опишу скрипт. Как оценить стойкость пароля? Оценить стойкость пароля можно по формуле S=K^N, где S — максимальное количество комбинаций, K — количество допустимых символов, N — длина комбинации. Для примера возьмём два числа — 0 и 1, максимальной длиной возьмём 2 символа. Эта формула говорит нам о том, что мы можем придумать 4 максимально возможные комбинации с таким условием. В данном случае это будут: 00, 11, 01, 10. Если у нас будет уже 5 символов на выбор, то можно будет найти 25 комбинаций длиной в 2 символа. Если же мы возьмём 15 возможных символов и длину в 7 символов, то получится 170 859 375 максимальных комбинаций. Чем больше будет возможных комбинаций при выбранном количестве символов и их длине, тем сложнее будет разгадать пароль. Тем не менее, следует учитывать, что взлом паролей методом грубой силы не проходит все комбинации, а останавливается на верной. Если, конечно, верной комбинацией не является последняя из возможных. Именно поэтому и рекомендуется составлять пароль не только из маленьких букв, но и разбавлять их большими буквами, цифрами и символами, что позволит повысить сложность пароля и уменьшить вероятность нахождения верной комбинации с помощью перебора всех возможных комбинаций. Классификация уровней стойкости паролей Классификация была сделана быстро и исключительно для создания скрипта, поэтому на истинность не претендует, классификаций можно придумать сколько угодно. Хотя, зная формулу выше, можно возразить на это и посчитать максимальное количество классификаций, ну да ладно. Отличные пароли — пароли, длиной 50 символов или более, содержащие не менее 5 маленьких букв, больших букв, символов и цифр. Хорошие пароли — пароли, длиной 30 символов или более, содержащие не менее 3 маленьких букв, больших букв, символов и цифр. Приемлемые пароли — пароли, длина которых более 10 символов, но не подпадающие под критерии хороших и отличных паролей. Ненадёжные пароли — пароли длиною 10 символов или менее. Недопустимые пароли — пароли состоящие из крайне известных комбинаций вроде «Qwerty» либо «12345». Если целью для взлома является конкретный человек, злоумышленник может также использовать даты рождения или другую подобную информацию, поэтому эту информацию не рекомендуется использовать в качестве пароля. При этом, не стоит забывать, что пароли играют не решающую роль. Если будут правильно подобраны средства противодействия бруту, то можно будет не париться особо насчёт самого пароля. Тем более, если хранение паролей сделано криво и они попадут в публичный доступ, никакие классификации и генераторы не помогут. Скрипт для генерации паролей и проверки их стойкости Теперь к самому скрипту. Он небольшой, состоит всего из 74 символов, полный код можно посмотреть в моём Github — тут. Суть его проста: есть два действия — оценка стойкости пароля и генерация пароля. Он классифицирует пароли по описанной выше классификации. Генерация паролей точно так же происходит по ней. Генерация создана на основе псевдослучайного выбора символов из списков и перемешивании этих символов. Без перемешивания они шли бы по порядку: сначала маленькие, потом большие, потом символы и потом цифры, что не очень хорошо. Длина паролей выбирается случайно, для этого используется метод randint. Недопустимых паролей всего 2 — «qwerty» и «12345», они лишь для примера, на деле этот список может быть очень большим. Пример работы скрипта представлен на скриншоте ниже. Для большей наглядности я сгенерировал пароли по каждому из типов и проверил их через оценку стойкости паролей от сайта 2IP. ПарольВид пароляЗатраты времени на подбор [5]Оценка пароля [5]~7cK\z61=qa=la/[№[.№^mK5#XN]9Lf4wl}36O_[[S,v}xWTD$pfy]T[*(ipe9isZsJ5N<Отличный2.3135629242187324e + 120 летНадёжный3DvA3(6K1[FeBT11dIdznEr3rkSeY8)8J0z3Хороший3.939990604412376e + 53 годаНадёжныйmerzdlnbqjzntylcccvwwhfodjyulbПриемлемый2.2301487992173596e + 25 летНадёжныйatvzyghfiНенадёжный23 минутыНенадёжныйqwertyНедопустимый0 секундНенадёжный Приведённые в таблице результаты подтверждают предложенную классификацию. Список литературы: 1. Трехуровневая система паролей // Habr : сайт. – URL: https://habr.com/ru/articles/19139/ (дата обращения: 25.06.2024) 2. Описание уровней стойкости паролей // SpaceVM : сайт. – URL: https://spacevm.ru/docs/latest/security/password_security_levels/ (дата обращения: 25.06.2024) 3. Турганбаев, А. Е. Особенности классификации способов и методов аутентификации / А. Е. Турганбаев // Интернаука. – 2019. – № 19-1(101). – С. 48-51. – EDN ABOMEM. 4. Иванова, А. С. Методики аутентификации и идентификации информационных систем образовательных организаций / А. С. Иванова, А. Р. Газизов // Научный вектор : Сборник научных трудов магистрантов / Под научной редакцией А.У. Альбекова. Том Выпуск 4. – Ростов-на-Дону : Ростовский государственный экономический университет «РИНХ», 2018. – С. 177-183. – EDN GFSNLS. 5. 2IP : сайт. – URL: https://2ip.ru/passcheck/ (дата обращения: 25.06.2024) Статьи