Skip to content

About

Генератор паролей на Python: криптостойкая генерация, оценка сложности, советы по усилению, исключение «неудобных» символов. Для «Талант НТО».

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

9 Commits

Folders and files

Repository files navigation

Password-generator-plus

Консольное приложение на Python для генерации криптографически стойких паролей с многофакторным анализом надежности, фильтрацией неоднозначных символов и адаптивной системой персональных рекомендаций.

Проект разработан в рамках конкурса «Талант НТО».

Назначение и соответствие стандартам ИБ

Проект решает задачу генерации энтропийно-устойчивых паролей, исключающих предсказуемость. Алгоритм спроектирован с учетом стандартов NIST и рекомендаций OWASP по формированию парольных политик.

Архитектурные и технические особенности

1. Криптографическая безопасность (CSPRNG)

В отличие от стандартного модуля random (использующего генератор псевдослучайных чисел Вихрь Мерсенна, уязвимый к восстановлению состояния), данный проект строго использует модуль secrets. Метод secrets.choice() опирается на криптографически стойкий системный источник случайных чисел (CSPRNG), что делает генерируемые пароли устойчивыми к атакам предсказания.

2. Модульное проектирование и чистые функции

Код имеет модульную структуру (Low Coupling, High Cohesion). Бизнес-логика полностью изолирована от процессов ввода-вывода (input/print локализованы внутри функции main):

  • build_char_pool — чистая функция формирования пула доступных символов с валидацией граничных состояний.
  • generate_password — атомарная функция генерации парольной строки.
  • estimate_strength — аналитический блок оценки сложности.
  • get_advice — эвристический экспертный модуль.

3. Расширенная система оценки надежности и аудита

Сложность пароля вычисляется на основе динамического скоринга:

  • Длина пароля: Дифференцированное начисление баллов (до +4 баллов за длину $\ge 16$ символов).
  • Разнообразие алфавита: Оценка присутствия строчных, прописных букв, цифр и спецсимволов (string.punctuation) — до +4 баллов.
  • Защита от частотного анализа: Модуль использует класс Counter из библиотеки collections для выявления монотонных повторений символов (если один символ занимает более 50% длины, рейтинг пароля штрафуется на -2 балла).

4. Юзабилити и фильтрация «плохих» символов

Реализован алгоритм очистки пула символов от визуально похожих глифов (набор il1Lo0O), что предотвращает ошибки человека при ручном вводе сгенерированного пароля.

Математика и логика скоринга

Итоговый ранг пароля (слабый, средний, сильный, очень сильный) определяется по формуле:

$$\text{Score} = \text{Score}_{\text{length}} + \text{Score}_{\text{types}} - \text{Penalty}_{\text{repeat}}$$

На основе полученного балла функция get_advice генерирует индивидуальный список действий для пользователя по усилению безопасности.

Технологический стек

  • Язык: Python 3.8+
  • Стандартная библиотека (без внешних зависимостей): secrets, string, collections.Counter

Инсталляция и запуск

  1. Клонируйте репозиторий:

    git clone https://github.com
    cd secure-password-generator
  2. Запустите скрипт через консоль:

    python main.py

Критерии оценки для экспертов «Талант»

  • Качество кода: Полное соответствие PEP 8, понятный именинг переменных, обработка исключений (try-except ValueError) для предотвращения падения программы при некорректном вводе пользователя.
  • Безопасность: Отсутствие уязвимых библиотек, использование CSPRNG, строгая фильтрация пустых пулов данных.

Участие в конкурсе «Талант НТО» — 2027

Номинация: Программирование

About

Генератор паролей на Python: криптостойкая генерация, оценка сложности, советы по усилению, исключение «неудобных» символов. Для «Талант НТО».

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages