Парольная безопасность и регулярные выражения
Методическая основа для подготовки школьной команды по информационной безопасности на теме «Пароли и регулярные выражения», с упором на олимпиадные задачи (включая маски наподобие SC[a-gA-S][*|!?]OL).
Цели подготовки
- Научить читать и точно интерпретировать формальные маски (в т.ч. «самодельные», отличные от стандартных регулярок).
- Развить навыки перевода нестандартных масок в эквивалентные стандартные регулярные выражения.
- Отработать метод решения задач трех типов:
- Проверка соответствия (выбрать верные строки).
- Конструирование шаблона (сформировать маску/регекс под политику пароля).
- Подсчет количества строк, удовлетворяющих правилам (комбинаторика).
- Связать тему с практиками ИБ: политика паролей, надежность паролей, ошибки пользователей, 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 и «почему он не прав» при нестандартной семантике задания.
- Мини-олимпиада тренировки.
