ИБшник, не умеющий программировать, будет выброшен на свалку истории!
Примерно так звучали и звучат некоторые доклады в последние годы, демонстрируя нарастающий конфликт поколений между «пиджаками» и «практиками». Одни умеют в нормативку и регламенты, другие — в кодинг и работу руками с оборудованием и софтом. И пропасть между этими двумя поколениями бы только росла, если бы не LLM, которые позволяют сегодня писать код даже тем, кто никогда не видел в глаза ни одного IDE и даже в vi не написал ни одной строчки кода. Примерно так я начал свое выступление на Kaspersky Cyberсamp, где делился примерами простой автоматизации, которая подвластна сегодня абсолютно любому ИБшнику, которому нужно решать насущные задачи, но для которых нет доступных инструментов (либо нет денег, либо продукт иностранный, либо не хочется тратить деньги на монстра, если он еще делает кучу лишнего).
Вспоминая, что одним из трех основных векторов атак в последние годы является проникновение через украденные, подобранные, перехваченные или угаданные учетные записи, встает задача комплексного управления идентификационной информацией — от выбора надежных паролей и внедрения многофакторной аутентификации до мониторинга и реагирования на утечки учеток с помощью ITDR. И вот первую задачу, выбор стойкого пароля, и хотелось бы сначала решить.
Поэтому мы с Александром Антиповым, создателем и бессменным главредом портала SecurityLab, решили запилить калькулятор стойкости паролей, который был бы отчуждаемым и мог бы быть применен во многих сценариях — на портале самообслуживания сотрудников, в форме геймификации, в формах регистрации пользователей на сайтах и т.п. Сказано — сделано, инструмент был разработан и в своей базовой конфигурации он выглядит следующим образом.

Так оценен один из моих паролей!
Это финальный вариант, который был получен после 8-й итерации работы с LLM-сервисом Claude.ai. Первая версия была чуть проще и не содержала никакого скоринга или оценки времени взлома пароля «в лоб». Но при этом и сам промпт в LLM был простым донельзя.

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

Обращу внимание, что если бы была выбрана LLM, заточенная под написание кода или какой-либо IDE с ИИ-ассистентом (Cursor.ai, VSCode с Github Copilot и т.п.), а не универсальная модель, то пришлось бы более четко описать требования к продукту (PRD). А так LLM сама поняла, какие требования надо проверять для оценки стойкости пароля и сама их запрограммировала!
На следующей итерации захотелось добавить время взлома пароля, который выбирает пользователь, чтобы сразу «визуализировать» в голове пользователя то, насколько сложной будет задача хакера, который покусится на секреты человека. Мы знаем, что раз в год компания Hive Systems обновляет свою табличку времени подбора, которую мы и загрузили в LLM. Никакой расшифровки или текстовой подачи — просто картинка с просьбой учесть указанное там время в калькуляторе.

8-я итерация работы с Claude.ai привела к финальному результату, который вы видите. Почему 8-я? В процессе LLM генерила не всегда корректный HTML-код, не вовремя закрывая или забывая закрывать теги, а то и косяча в скрипте. Но отладка также проходила внутри LLM, не требуя ручного копания в коде.

То, как работает калькулятор, вы можете увидеть в коротком видео. Полученный HTML-код с встроенным JavaScript полностью автономен и может быть запущен как локально, так и на публичном сайте или внутреннем портале.
Посмотреть калькулятор в действии и проверить собственные пароли вы можете на портале SecurityLab!
Ниже покажу несколько фрагментов созданного Claude.ai кода. Вот так выглядит вся форма для работы с паролями:

Так как калькулятор проводит скоринг надежности пароля, то при его вычислении используется 8 основных параметров — длина пароля, наличие символов в верхнем и нижнем регистрах, наличие цифр и спецсимволов, повтор символов, наличие замены похожих символов (l на 1, s на 5, o на 0 и т.п.), а также наличие пароля в Топ10 утекших паролей (по данным сервиса DLBI), включая кириллические.

Заметили, что код еще и снабжен комментариями, что нечасто бывает у программистов-людей?..
По результатам анализа калькулятор дает рекомендации, которые соответствуют и действующей у нас регуляторике:

ВАЖНО! Как и любая LLM, Claude.ai не может сама придумать что-то новое — она базирует свои ответы на датасетах, на которых ее обучали. А мы помним, что традиционные рекомендации при выборе паролей, включая и нормативку, содержат в себе советы включать в пароль цифры, спецсимволы, использовать разный регистр, иметь пароль длиной свыше 8 символов и т.п. Ровно на этих рекомендациях LLM обучалась и на них построен калькулятор!
Но согласно последним веяниям основное, от чего зависит надежность пароля, — это его длина, а не мощность алфавита. Но LLM этого не знает (пока еще) и поэтому не учитывала при написании кода. Это некритично; тем более что многие инструкции, регламенты, нормативные акты и даже популярные сервисы продолжают опираться на эти взгляды. Поэтому использование анализатора целиком и полностью соответствует традиции.
На все про все было потрачено от силы полчаса (это еще преувеличено) и получен вполне полезный инструмент для автоматизации достаточно важной задачи. На выступлении я показывал еще два примера использования LLM для автоматизации рутинных задач, о которых расскажу попозже.
Исходник скрипта выложен тут (sha256 — 86ab70b73dec05416b85e965cce9367f69e77453bcbdd7ea99511c4d0df73767, размер zip — 6,4 КБ), а посмотреть анализатор в работе можно на портале SecurityLab.