Добавить KIBATS_FINAL_2026/readme.md

This commit is contained in:
2026-09-12 13:22:56 +00:00
parent e089b58570
commit c457300ef3
+483
View File
@@ -0,0 +1,483 @@
# Инструкция по финалу ЧВТ-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.