Skip to main content

Парольная безопасность и регулярные выражения

Методическая основа для подготовки школьной команды по информационной безопасности на теме «Пароли и регулярные выражения», с упором на олимпиадные задачи (включая маски наподобие SC[a-gA-S][*|!?]OL).

Цели подготовки

  • Научить читать и точно интерпретировать формальные маски (в т.ч. «самодельные», отличные от стандартных регулярок).
  • Развить навыки перевода нестандартных масок в эквивалентные стандартные регулярные выражения.
  • Отработать метод решения задач трех типов:
    1. Проверка соответствия (выбрать верные строки).
    2. Конструирование шаблона (сформировать маску/регекс под политику пароля).
    3. Подсчет количества строк, удовлетворяющих правилам (комбинаторика).
  • Связать тему с практиками ИБ: политика паролей, надежность паролей, ошибки пользователей, Unicode-ловушки, различия движков.
  • Научить работать с инструментами (regex101 и аналоги) осознанно: понимать, когда результаты «не сходятся» из-за семантики.

Предварительные знания

  • Базовая комбинаторика (перемножение мощностей множеств, степени, выбор альтернатив).
  • Базовые понятия ИБ о паролях: политика сложности, длина, алфавиты, энтропия (на уровне интуитивного сравнения).
  • Уверенность в латинском алфавите vs кириллица и вопросах кодировки (визуальные «двойники» символов).

Модуль 1. Парольная безопасность (контекст ИБ)

  • Содержание: цели политик, сила паролей, алфавиты, длина, почему «маски»/регексы в заданиях — модель политики.
  • Навыки: распознавание плохих правил (например, «минимум одна заглавная» при общей длине 6 — слабое требование).
  • Практика: оценить «силу» нескольких политик и сравнить их.

Модуль 2. Базовый синтаксис регулярок

  • Символьные классы […], диапазоны a-z, отрицание [^…], экранирование, якоря ^ и $.
  • Группы ( … ) и (?: … ), альтернация |, квантификаторы ?, +, *, {m,n}.
  • Различия «внутри [ ]» и «снаружи [ ]» (| и * внутри класса — просто символы).
  • Практика: построить регексы под простые политики паролей и тестировать на наборах примеров.

Модуль 3. Квантификаторы и метасимволы. Жадность, классы символов

  • Жадные/ленивые квантификаторы, классы [A-Za-z0-9], \d, \w и их подводные камни в разных движках/флагах (ASCII vs Unicode).
  • Unicode-нюансы: «похожесть» символов (латинское o vs кириллическое о), нормализация.
  • Практика: кейсы с подсадными «двойниками» и различиями движков (PCRE/JS/Python/.NET).

Модуль 4. Диапазоны и альтернативы. Точная интерпретация «самодельных масок»

  • Разбор постановок, где звездочка, вертикальная черта и др. переопределены автором (как в олимпиадных задачах).
  • Перевод «самодельной маски» в стандартный регекс.
  • Практика: целевая маска SC[a-gA-S][*|!?]OL и подобные.

Модуль 5. Комбинаторика на строках и политиках

  • Подсчет числа строк, удовлетворяющих правилам (перемножение мощностей, суммирование альтернатив).
  • Ограничения длины, алфавита, «хотя бы/ровно/не более» — перевод в регекс и счет.
  • Практика: задачи на подсчет числа паролей при заданных политиках.

Модуль 6. Якоря и группы

  • больше информации

Модуль 7. Типовые ошибки, тестовые стратегии, time management

  • Чек-лист чтения условия, порядок проверки, генерация контрпримеров, мини-автотесты.
  • Работа с инструментами: regex101 и «почему он не прав» при нестандартной семантике задания.
  • Мини-олимпиада тренировки.