Files

33 KiB
Raw Permalink Blame History

Инструкция по финалу ЧВТ-2026: «Конструктивная информационная безопасность автономных транспортных систем»

Разбираю финальное КЗ (04-Конкурсное-задание-v2.1.docx) и критерии (05-Критерии-оценки-v2.3.xlsx) по модулям. Для каждого — что делать конкурсанту, как это делать, что проверяет эксперт, типичные ошибки и что нужно знать.


Часть 1. Общая картина финала

1.1. Ключевые отличия от региона

  • Объект: не светофор, а портовая автоматизированная система: АРПУ (кран-балка), ЖД состав, АНТС (роботы), диспетчер, контейнеры, инспекционный робот.
  • Среда: Jupyter Notebook + цифровой двойник (ЦД) + физический полигон + АСО (автоматизированная система отслеживания).
  • 6 модулей: А, Б, В, Г, Д, Е. Инвариант — А, Б, В, Е. Вариатив — Г, Д.
  • Время: 21 ч 30 мин, 3 дня.
  • Баллы: А=21, Б=16, В=15, Г=16, Д=16, Е=16. Итого 100.
  • Жёсткое ограничение: код ≤ 24 кБ на модуль. Превышение — попытка неуспешна.
  • Сдача: зачётная попытка в ЦД и/или на физполигоне, git-commit, журнал, описание ≤ 1000 символов.

1.2. Что общего у всех модулей

В каждом модуле есть блок «Сдача в зачёт и фиксация результатов»:

  • Размер кода ≤ 24 кБ.
  • Решение предоставлено в ЦД (и/или на физполигоне).
  • Журнал соответствует критериям.
  • Описание решения ≤ 1000 символов.
  • Git commit.
  • Чистое рабочее место + сон/гибернация ПК.

1.3. Уровни киберинцидентов

  • Низкий: обнаружить, сообщить связанным узлам, записать в журнал. Инцидент сам выключается по завершении задачи.
  • Средний: то же + пометка «предупреждение» + действия из описания.
  • Высокий: полная остановка затронутого устройства до устранения причины. Сам не выключается — нужны действия кода.

Для задач с пометкой «вред инфраструктуре» — реакция МБ не позднее 2 секунд после активации.

1.4. Обязательные поля журнала

  • Уровень (низкий/средний/высокий).
  • Идентификатор задачи (CybP_01…CybP_05).
  • Для ложных команд — причина отбраковки и ID устройства.
  • Для среднего уровня — пометка «предупреждение».

Часть 2. Разбор по модулям


Модуль А. Инициализация устройств, обработка входной информации

Время: 3 часа. Баллы: 21. Тип: инвариант.

Что делать конкурсанту

  1. Задача полигона (1) — Журналирование:
    • Реализовать систему журналирования действий и намерений МБ.
    • В журнал должны попадать: действия МБ, намерения, начало и конец попытки, сообщения диспетчеру.
  2. Задача полигона (2) — Подготовка к разгрузке:
    • Спозиционировать АРПУ в зоне разгрузки.
    • Спозиционировать ЖД состав в зоне разгрузки (центр зоны погрузки).
    • Передать диспетчеру сигнал готовности.
    • Запросить у диспетчера порядок разгрузки.
  3. Задача полигона (3) — Разгрузка грузового судна:
    • Считать маркировку всех 6 контейнеров через компьютерное зрение.
    • Распределить грузы по зонам (хранение / карантин) согласно указанию диспетчера.
    • Разложить контейнеры (ЖД состав / буфер зоны разгрузки).
    • Полностью освободить судно.
    • Не уронить и не вывести груз за зону разгрузки.
    • Уложиться в скорость: ≤90 с — 2.00; 91120 — 1.50; 121150 — 1.00; 151180 — 0.50; >180 — 0.

Как это делать

  • Журналирование: используй предоставленные библиотеки. Пиши в журнал каждое действие МБ через отдельный метод. Начало попытки — сразу после «Запустить». Конец — по таймеру / завершению задач / «Остановить».
  • Позиционирование: работай через диспетчера, запрашивая координаты и отправляя команды. Не вызывай GPIO напрямую — всё через Monitor.
  • Зрение: проверяй целостность кадра (см. CybP_01 в модуле Б — но в А ещё нет атаки, просто считай маркеры).
  • Распределение: сравнивай с указанием диспетчера, веди лог по каждому контейнеру.
  • Скорость: оптимизируй порядок разгрузки. Буфер зоны разгрузки — твой друг.

Что проверяет эксперт

  • Журнал не пустой и не состоит только из системных сообщений АСО.
  • Есть записи о старте и завершении.
  • Сообщения диспетчеру отличимы от прочих.
  • АРПУ и ЖД состав — в зоне разгрузки (АСО/визуально).
  • Сигнал готовности и запрос порядка — в журнале.
  • Все 6 маркеров считаны (2.00) или ≥3 (1.00).
  • Распределение совпало с диспетчером (все — 1.00, иначе 0).
  • Контейнеры на своих местах (все — 2.00, иначе 0).
  • Судно освобождено, груз не уронен.
  • Скорость по АСО.
  • Код ≤24 кБ, git-commit, описание ≤1000 символов, чистое место, сон ПК.

Типичные ошибки

  • Журнал только с системными сообщениями — нет действий МБ.
  • Забыл записать старт/конец попытки.
  • Сообщения диспетчеру неотличимы от общих.
  • АРПУ/ЖД не в той точке.
  • Не запросил порядок разгрузки.
  • Считал не все маркеры.
  • Распределение не совпало — 0 баллов.
  • Контейнер упал или вышел за зону — 0.
  • Превысил 24 кБ.
  • Не сделал git-commit.
  • Не перевёл ПК в сон.

Что нужно знать

  • Архитектура порта: АРПУ, ЖД состав, АНТС, диспетчер.
  • Зоны: швартовки (жёлтый), разгрузки (оранжевый), хранения (тёмно-зелёный), карантина (тёмно-красный), ЖД инспекции (розовый).
  • Протоколы обмена с диспетчером.
  • Формат маркировки контейнеров (ArUco).
  • Основы компьютерного зрения.

Модуль Б. Эксплуатация сети устройств, внедрение базового кибериммунитета

Время: 3 часа. Баллы: 16. Тип: инвариант.

Что делать конкурсанту

  1. Задача полигона (4) — Доставка первой партии грузов:
    • ЖД состав начинает движение по маршруту.
    • Останавливается по датчикам в ключевых точках.
    • Прибывает в зону хранения.
    • Оповещает диспетчера о готовности к разгрузке.
    • Без столкновений и сходов.
  2. Задача кибериммунности (1) — CybP_01 (сбой компьютерного зрения):
    • Уровень: средний.
    • В ПО зрения при чтении ArUco-маркеров с вероятностью 30% возникает сдвиг кадра.
    • МБ должен: проверить входной видеопоток, восстановить целостность кадра, записать в журнал с ID CybP_01, уровнем «средний», пометкой «предупреждение».

Как это делать

  • Доставка: используй диспетчера для маршрута. Следи за датчиками. Останавливайся в ключевых точках. Не сталкивайся с элементами полигона.
  • CybP_01: у МБ есть доступ к метаданным сырых кадров. Проверяй сдвиг по горизонтали/вертикали. Восстанавливай кадр до использования для сортировки. Записывай: ID, уровень, «предупреждение», действие МБ.
  • Важно: обработка только автопилотом не засчитывается. Нужны действия МБ.

Что проверяет эксперт

  • ЖД начал движение (журнал АСО).
  • Остановки по датчикам.
  • Прибытие в зону хранения.
  • Сообщение диспетчеру.
  • Нет столкновений/сходов.
  • CybP_01: обнаружение нарушения целостности кадра + корректирующее действие МБ до использования кадра.
  • После обработки — корректный маркер.
  • Журнал: ID CybP_01, уровень «средний», «предупреждение».
  • Логистическая цепочка не нарушена.
  • Сдача в зачёт (код ≤24 кБ, ЦД, журнал, описание, git, место, сон).

Типичные ошибки

  • ЖД не остановился по датчику.
  • Столкновение или сход.
  • CybP_01 обработан только автопилотом — 0.
  • Нет пометки «предупреждение».
  • Неверный уровень (не «средний»).
  • Неверный ID.
  • Кадр использован до восстановления — контейнер ушёл не туда.
  • Превышен размер кода.
  • Нет git-commit.

Что нужно знать

  • Протоколы движения ЖД состава.
  • Работа с датчиками положения.
  • Формат метаданных кадров.
  • ArUco-маркеры.
  • Логика уровней инцидентов.

Модуль В. Расширенная эксплуатация физического варианта системы

Время: 3 ч 30 мин. Баллы: 15. Тип: инвариант.

Что делать конкурсанту

  1. Задача полигона (5) — Разгрузка первой партии грузов АНТС:
    • Переместить 3 контейнера в свободное пространство зоны хранения.
    • Освободить от захвата, разместить за ограничительной линией.
    • Отправить сигнал диспетчеру о завершении.
    • Скорость: ≤60 с — база 0.50 + 0.50 за каждые 10 с экономии (макс. +1.50). >60 с — 0.
  2. Демонстрация на физическом полигоне (задачи 1–5):
    • Код должен работать на физическом полигоне.
    • Зачётная попытка на физстенде.
    • Без столкновений и сходов.

Как это делать

  • АНТС: используй магнитный захват. Следи за тем, чтобы ≥2 колёс были в зоне. Размещай за ограничительной линией.
  • Скорость: оптимизируй маршрут. 3 контейнера — это 3 цикла. Каждые 10 с экономии дают +0.50.
  • Физполигон: убедись, что код работает и в ЦД, и на железе. Симулятор может отличаться от физики.
  • Сдача: зачётная попытка на физстенде фиксируется АСО.

Что проверяет эксперт

  • Все 3 контейнера в зоне хранения, вне ЖД платформы, за линией (1 балл за контейнер).
  • Сигнал диспетчеру о завершении.
  • Скорость по АСО.
  • Решение работает на физполигоне (визуально + АСО).
  • Зачётная попытка на физстенде (АСО: старт, ход, штатное завершение).
  • Нет столкновений/сходов.
  • Сдача в зачёт.

Типичные ошибки

  • Контейнер не освобождён от захвата.
  • Контейнер за линией, но <2 колёс в зоне.
  • Не отправлен сигнал диспетчеру.
  • Превышено время.
  • Код работает в ЦД, но падает на физполигоне.
  • Столкновение на физполигоне.
  • Не зафиксирована зачётная попытка на стенде.

Что нужно знать

  • Управление АНТС (колеса Илона, магнитный захват).
  • Различия ЦД и физического полигона.
  • Ограничительная линия (чёрно-жёлтая).
  • Работа с АСО для фиксации попытки.

Модуль Г. Разработка продвинутых алгоритмов управления процессами

Время: 4 часа. Баллы: 16. Тип: вариатив.

Что делать конкурсанту

  1. Задача полигона (6) — Доставка и разгрузка второй партии грузов:
    • ЖД состав возвращён в зону разгрузки и спозиционирован.
    • Контейнеры из буфера перемещены на ЖД состав.
    • ЖД доставил вторую партию в зону карантина.
    • Скорость разгрузки в зоне карантина (та же логика: ≤60 с, +0.50 за 10 с экономии).
  2. Задача кибериммунности (2) — CybP_02 (перегрев двигателей ЖД состава):
    • Уровень: низкий.
    • При повышенной скорости двигатели перегреваются.
    • Выше среднего порога — снизить скорость.
    • Выше критического — экстренная остановка на 1 минуту.
    • МБ ведёт регулятор по датчику скорости и температуры.
    • В журнал — каждый аварийный случай и каждое намерение изменить скорость.

Как это делать

  • Вторая партия: АРПУ перемещает контейнеры на ЖД. ЖД едет в карантин. АНТС разгружает.
  • CybP_02: используй датчики температуры и скорости (они в доверенном домене). Пороги — в рабочих материалах. Регулятор: снижение скорости при >среднего, остановка на 1 мин при >критического.
  • Журнал: каждое намерение (разгон/торможение/удержание) + аварийные случаи. ID CybP_02, уровень «низкий».

Что проверяет эксперт

  • ЖД возвращён в зону разгрузки.
  • Контейнеры перемещены на ЖД.
  • ЖД прибыл в карантин без столкновений.
  • Скорость разгрузки.
  • CybP_02: скорость удержана по температуре, действие МБ (не только автопилот).
  • Оценка перегрева: ≤40% — 2.00; 4060% — 1.75; 6080% — 1.00; >80% — 0.
  • Журнал: аварийные случаи + намерения, ID CybP_02, уровень «низкий».
  • Сдача в зачёт.

Типичные ошибки

  • ЖД не вернулся в зону разгрузки.
  • Контейнеры не перемещены на ЖД.
  • Столкновение в карантине.
  • Превышено время разгрузки.
  • CybP_02 обработан только автопилотом.
  • Не снижена скорость при перегреве.
  • Не сделана экстренная остановка на 1 мин.
  • Нет записи о намерениях изменить скорость.
  • Неверный уровень (не «низкий»).

Что нужно знать

  • Динамика ЖД состава (инерционность, минимальная рабочая скорость).
  • Пороги температуры и скорости (в рабочих материалах).
  • Регуляторы (ПИД или простой пороговый).
  • Работа с доверенными датчиками.

Модуль Д. Внедрение продвинутых механизмов кибериммунитета

Время: 4 часа. Баллы: 16. Тип: вариатив.

Что делать конкурсанту

  1. Задача кибериммунности (3) — CybP_03 (ложные команды от недоверенных устройств):
    • Уровень: высокий.
    • Любой недоверенный элемент может отправлять ложные сообщения «под штатные».
    • У ложного пакета: код команды и ID — как у настоящего, но метаданные не сходятся или CRC8 не сходится.
    • МБ должен: проверить входящие команды, отбраковать пакет, не исполнять, сообщить диспетчеру о компрометации, записать в журнал причину и ID.
    • Пока причина не устранена — остановить затронутый контур.
    • Для «вреда инфраструктуре» — реакция ≤2 с.
  2. Задача кибериммунности (4) — CybP_04 (обновление доверенного кода после компрометации):
    • Уровень: средний.
    • После CybP_03 нельзя отключить устройство или продолжать принимать команды.
    • Единственный способ — принудительно обновить ПО до доверенной версии.
    • Локально, только на затронутом элементе, без остановки всей системы.
    • МБ остаётся работоспособен.
    • Запись: ID CybP_04, уровень «средний», «предупреждение», начало обновления, получение доверенной версии, восстановление.

Как это делать

  • CybP_03: проверяй CRC8 и метаданные. Если не сходятся — отбраковка. Сообщи диспетчеру ID скомпрометированного устройства. Останови контур. Запиши причину (метаданные / CRC8) и ID.
  • CybP_04: после остановки контура инициируй обновление. Обратись к доверенному репозиторию. Обнови только затронутый элемент. Дождись восстановления. Запиши всю цепочку: обнаружение → остановка → обновление → восстановление.

Что проверяет эксперт

  • CybP_03: проверка входящей команды + отказ в исполнении.
  • Запись с ID CybP_03 и уровнем «высокий».
  • Уведомление диспетчера с ID устройства.
  • Причина (метаданные / CRC8) и ID.
  • Ложная команда не исполнена, контур остановлен.
  • Для «вреда инфраструктуре» — ≤2 с.
  • CybP_04: запись с ID CybP_04, уровень «средний», «предупреждение».
  • Обновление из доверенного репозитория.
  • Без остановки всей системы.
  • Устройство восстановило работу.
  • Вся цепочка в журнале.
  • Сдача в зачёт.

Типичные ошибки

  • Не проверен CRC8.
  • Не проверены метаданные.
  • Ложная команда исполнена.
  • Не сообщено диспетчеру.
  • Не указана причина отбраковки.
  • Не указан ID устройства.
  • Контур не остановлен.
  • Превышено 2 с для «вреда инфраструктуре».
  • CybP_04: обновление без остановки контура (нельзя).
  • Обновление из недоверенного источника.
  • Остановлена вся система вместо одного элемента.
  • Устройство не восстановилось.
  • Неверный уровень (CybP_03 — высокий, CybP_04 — средний).

Что нужно знать

  • CRC8.
  • Метаданные пакетов.
  • Доверенные и недоверенные источники.
  • Процедура обновления ПО.
  • Безопасное состояние системы.

Модуль Е. Обеспечение комплексного выполнения задач порта

Время: 4 часа. Баллы: 16. Тип: инвариант.

Что делать конкурсанту

  1. Задача полигона (7) — Безопасное движение через ЖД переезд:
    • ЖД состав обнаружил приближение к зоне переезда.
    • Остановился перед переездом при красном сигнале.
    • Продолжил движение только при зелёном.
    • Запросил открытие шлагбаума у диспетчера.
    • Нет столкновений с инспекционным роботом.
  2. Задача кибериммунности (5) — CybP_05 (перегрузка процессора автопилота):
    • Уровень: низкий.
    • Сбой подпрограммы автопилота загружает ЦП до 100%.
    • Критический поток управления деградирует.
    • МБ: контролировать загрузку ЦП, при 100% — принудительно завершить зависшую подпрограмму.
    • Автопилот сам перезапустит подпрограмму.
    • Запись: ID CybP_05, уровень «низкий», действия МБ.

Как это делать

  • Переезд: следи за светофором. При красном — полная остановка до въезда в зону. При зелёном — запрос шлагбаума, затем движение. Не касайся инспекционного робота.
  • CybP_05: МБ имеет приоритетный доступ к мониторингу процессов. Периодически пиши уровень загрузки ЦП в журнал. При 100% — заверши подпрограмму. Дождись перезапуска автопилотом.

Что проверяет эксперт

  • Вход в зону переезда (журнал АСО).
  • Остановка при красном.
  • Движение при зелёном.
  • Запрос шлагбаума.
  • Нет столкновений с инспекционным роботом.
  • CybP_05: периодические записи уровня ЦП.
  • Обнаружение 100% (ID CybP_05, уровень «низкий»).
  • Принудительное завершение подпрограммы.
  • Критические потоки не деградировали (нет потери связи с диспетчером, нет остановки движения/захвата по таймауту).
  • Журнал с корректным ID.
  • Сдача в зачёт.

Типичные ошибки

  • Проезд на красный.
  • Не запрошен шлагбаум.
  • Столкновение с инспекционным роботом.
  • Нет записей уровня ЦП.
  • Не обнаружено 100%.
  • Не завершена подпрограмма.
  • Потеря связи с диспетчером.
  • Остановка движения/захвата по таймауту.
  • Неверный уровень (не «низкий»).

Что нужно знать

  • Логика светофора на переезде.
  • Работа с инспекционным роботом.
  • Мониторинг процессов.
  • Приоритетный доступ МБ.

Часть 3. Общие рекомендации для конкурсанта

3.1. Перед чемпионатом

  • Изучи репозитории GitFlic: https://gitflic.ru/company/materialy-dlya-podgotovki-kibats-2026
  • Разберись с ЦД и АСО.
  • Потренируйся на физполигоне.
  • Выучи ГОСТ Р 72118–2025.
  • Освой Python, Jupyter, многопоточность.
  • Пойми логику уровней инцидентов.

3.2. Во время модуля

  • Читай «Важно – конкурсная информация» в Jupyter-ячейках. Это приравнивается к КЗ.
  • Не редактируй запрещённые файлы. Только mod_X_code.ipynb.
  • Следи за размером кода ≤24 кБ.
  • Пиши журнал с ID, уровнем, пометками.
  • Делай git-commit после модуля.
  • Пиши описание ≤1000 символов.
  • Убирай рабочее место и переводи ПК в сон.
  • Тестируй в ЦД и на физполигоне.
  • Не общайся с другими конкурсантами.
  • Не используй ИИ и третьих лиц.

3.3. Чего нельзя делать

  • Изменять ОС, ЦД, файлы вне разрешённых.
  • Использовать запрещённые интернет-ресурсы.
  • Проносить мобильные устройства.
  • Создавать дубликаты репозиториев.
  • Использовать заготовки ПО.
  • Покидать рабочее место без ГЭ.

Часть 4. Чек-лист для эксперта-наставника

4.1. Перед модулем

  • Проверить, что конкурсант знает легенду порта.
  • Убедиться, что конкурсант умеет работать с ЦД и АСО.
  • Проверить понимание уровней инцидентов.
  • Проверить знание формата журнала.
  • Проверить понимание ограничения 24 кБ.

4.2. Во время модуля

  • Следить за временем.
  • Напоминать про git-commit.
  • Напоминать про описание ≤1000 символов.
  • Напоминать про чистое место и сон ПК.
  • Следить, чтобы конкурсант не редактировал запрещённые файлы.
  • Следить, чтобы конкурсант не использовал запрещённые ресурсы.

4.3. После модуля

  • Проверить журнал: ID, уровни, пометки.
  • Проверить размер кода.
  • Проверить git-commit.
  • Проверить описание.
  • Проверить рабочее место.
  • Проверить сон/гибернацию ПК.

4.4. Типичные ошибки конкурсантов (сводка)

Модуль Ошибка Последствие
А Журнал пустой 0 за журналирование
А Не запрошен порядок разгрузки 0 за задачу
А Контейнер упал 0 за груз
А Превышен 24 кБ Попытка неуспешна
Б CybP_01 только автопилотом 0 за задачу
Б Нет пометки «предупреждение» 0 за журнал
В Код не работает на физполигоне 0 за демонстрацию
В Контейнер не за линией 0 за контейнер
Г CybP_02 без действий МБ 0 за задачу
Г Не снижена скорость 0 за перегрев
Д CRC8 не проверен 0 за CybP_03
Д Обновление без остановки 0 за CybP_04
Е Проезд на красный 0 за переезд
Е Нет записей ЦП 0 за CybP_05
Все Нет git-commit 0 за сдачу
Все Грязное место 0 за стандарты
Все ПК не в сне 0 за стандарты

Часть 5. Что нужно знать в целом

5.1. Технические знания

  • Python 3, Jupyter Notebook.
  • Многопоточность (threading, queue).
  • CRC8, метаданные.
  • ArUco-маркеры, компьютерное зрение.
  • Регуляторы (ПИД, пороговые).
  • Мониторинг процессов.
  • Git.

5.2. Доменные знания

  • Архитектура порта: АРПУ, ЖД, АНТС, диспетчер.
  • Зоны полигона.
  • Цели безопасности (ЦБ).
  • Предположения безопасности (ПБ).
  • Доверенные и недоверенные элементы.
  • ГОСТ Р 721182025.

5.3. Организационные знания

  • Правила сдачи в зачёт.
  • Ограничение 24 кБ.
  • Формат журнала.
  • Уровни инцидентов.
  • Работа с АСО.
  • Git-commit.