# Инструкция по финалу ЧВТ-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; 91–120 — 1.50; 121–150 — 1.00; 151–180 — 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; 40–60% — 1.75; 60–80% — 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. Доменные знания - Архитектура порта: АРПУ, ЖД, АНТС, диспетчер. - Зоны полигона. - Цели безопасности (ЦБ). - Предположения безопасности (ПБ). - Доверенные и недоверенные элементы. - ГОСТ Р 72118–2025. ### 5.3. Организационные знания - Правила сдачи в зачёт. - Ограничение 24 кБ. - Формат журнала. - Уровни инцидентов. - Работа с АСО. - Git-commit.